emod_api.channelreports.utils module#
Helper functions, primarily for property reports, which are channel reports.
- emod_api.channelreports.utils.property_report_to_csv(source_file: str | Path, csv_file: str | Path, channels: List[str] | None = None, groupby: List[str] | None = None, transpose: bool = False) None [source]#
Write a property report to a CSV formatted file.
Optionally selected a subset of available channels. Optionally “rolling-up” IP:value sub-channels into a “parent” IP.
- Parameters:
source_file – filename of property report
channels – list of channels to output, None results in writing _all_ channels to output
groupby – list of IPs into which to aggregate remaining IPs, None indicates no grouping, [] indicates _all_ aggregated
csv_file – filename of CSV formatted result
transpose – write channels as columns rather than rows
- emod_api.channelreports.utils.accumulate_channel_data(channels: List[str], verbose: bool, groupby: List[str], channel_data: Dict) Dict[str, ndarray] [source]#
Extract selected channel(s) from property report data.
Aggregate on groupby IP(s), if provided, otherwise on channel per unique IP:value pair (e.g., “QualityOfCare:High”), per main channel (e.g., “Infected”).
- Parameters:
channels – names of channels to plot
verbose – output some “debugging”/progress information if true
groupby – IP(s) under which to aggregate other IP:value pairs
channel_data – data for channels keyed on channel name
- Returns:
tuple of dictionary of aggregated data, keyed on channel name, and of Numpy array of normalization values
- emod_api.channelreports.utils.save_to_csv(trace_values: Dict[str, ndarray], filename: str | Path, transpose: bool = False) None [source]#
Save property report to CSV. Uses underlying ChannelReport.to_csv() function.
- Parameters:
trace_values – full set of available channels, keyed on channel name
filename – destination file for CSV data
transpose – write channels as columns rather than rows
- emod_api.channelreports.utils.plot_traces(trace_values: Dict[str, ndarray], norm_values: int | ndarray | None, overlay: bool, channels: List[str], title: str, legend: bool) Figure [source]#
Plot trace data. One subplot per channel unless overlaying all variations of rolled-up IP(s) is requested.
A trace (like old-time pen and ink EKG) may represent the aggregation of several IP values so trace may not equal any particular channel data.
- Parameters:
trace_values – channel data, keyed on channel name
norm_values – normalization data for channels
overlay – whether or not to overlay all variations of a given channel on one subplot
channels – selection of channel names to plot
title – plot title
legend – whether or not to include a legend on plots
- Returns:
plt.Figure