ImagingDataset objects¶
-
class
sima.
ImagingDataset
(sequences, savedir, channel_names=None, read_only=False)¶ A multiple sequence imaging dataset.
Imaging data sets can be iterated over to generate sequences, which can in turn be iterated over to generate imaging frames.
Examples
>>> import sima ... >>> from sima.misc import example_data >>> dataset = sima.ImagingDataset.load(example_data())
Datasets can be iterated over as follows:
>>> for sequence in dataset: ... for frame in sequence: ... for plane in frame: ... for row in plane: ... for column in row: ... for channel in column: ... pass
Datasets can also be indexed and sliced.
>>> dataset[0].num_sequences 1 >>> dataset[:, 0].num_frames 1 >>> dataset[:, 0].frame_shape == dataset.frame_shape True
The resulting sliced datasets are not saved by default.
Parameters: - sequences (list of sima.Sequence) – Imaging sequences that can each be iterated over to yield the imaging data from each acquisition time.
- savedir (str) – The directory used to store the dataset. If the directory name does not end with .sima, then this extension will be appended.
- channel_names (list of str, optional) – Names for the channels. Defaults to [‘0’, ‘1’, ‘2’, ...].
-
num_sequences
¶ int
The number of sequences in the ImagingDataset.
-
frame_shape
¶ tuple of int
The shape of each frame, in order (num_planes, num_rows, num_columns, num_channels).
-
num_frames
¶ int
The total number of image frames in the ImagingDataset.
-
ROIs
¶ dict of (str, ROIList)
The sets of ROIs saved with this ImagingDataset.
-
time_averages
¶ list of ndarray
The time-averaged intensity for each channel.
-
time_std
¶ ndarray
The standard deviation of the intensity for each channel. Useful for knowing how dynamic each pixel is.
-
time_kurtosis
¶ ndarray
The kurtosis of the intensity for each channel. Better than std deviation for knowing how dynamic each pixel is.
-
classmethod
load
(path)¶ Load a saved ImagingDataset object.
-
add_ROIs
(ROIs, label=None)¶ Add a set of ROIs to the ImagingDataset.
Parameters: - ROIs (ROIList) – The regions of interest (ROIs) to be added.
- label (str, optional) – The label associated with the ROIList. Defaults to using the timestamp as a label.
Examples
Import an ROIList from a zip file containing ROIs created with NIH ImageJ.
>>> from sima.ROI import ROIList >>> from sima.misc import example_imagej_rois,example_data >>> from sima.imaging import ImagingDataset >>> dataset = ImagingDataset.load(example_data()) >>> rois = ROIList.load(example_imagej_rois(), fmt='ImageJ') >>> dataset.add_ROIs(rois, 'from_ImageJ')
-
import_transformed_ROIs
(source_dataset, method=u'affine', source_channel=0, target_channel=0, source_label=None, target_label=None, anchor_label=None, copy_properties=True, pre_processing_method=None, pre_processing_kwargs=None, **method_kwargs)¶ Calculate a transformation that maps the source ImagingDataset onto this ImagingDataset, transforms the source ROIs by this mapping, and then imports them into this ImagingDataset.
Parameters: - source_dataset (ImagingDataset) – The ImagingDataset object from which ROIs are to be imported. This dataset must be roughly of the same field-of-view as self in order to calculate an affine transformation.
- method (string, optional) – Method to use for transform calculation.
- source_channel (string or int, optional) – The channel of the source image from which to calculate an affine transformation, either an integer index or a string in source_dataset.channel_names.
- target_channel (string or int, optional) – The channel of the target image from which to calculate an affine transformation, either an integer index or a string in self.channel_names.
- source_label (string, optional) – The label of the ROIList to transform
- target_label (string, optional) – The label to assign the transformed ROIList
- anchor_label (string, optional) – If None, use automatic dataset registration. Otherwise, the label of the ROIList that contains a single ROI with vertices defining anchor points common to both datasets.
- copy_properties (bool, optional) – Copy the label, id, tags, and im_shape properties from the source ROIs to the transformed ROIs
- pre_processing_method (string, optional) – pre-processing step applied before image registration
- pre_processing_kwargs (dictionary, optional) – arguments for pre-processing of image
- **method_kwargs –
Additional arguments can be passed in specific to the particular method. For example, ‘order’ for a polynomial transform estimation.
-
delete_ROIs
(label)¶ Delete an ROI set from the rois.pkl file
Removes the file if no sets left.
Parameters: label (string) – The label of the ROI Set to remove from the rois.pkl file
-
export_averages
(filenames, fmt=u'TIFF16', scale_values=True, projection_type=u'average')¶ Save TIFF files with the time average of each channel.
For datasets with multiple frames, the resulting TIFF files have multiple pages.
Parameters: - filenames (str or list of str) – A single (.h5) output filename, or a list of (.tif) output filenames with one per channel.
- fmt ({‘TIFF8’, ‘TIFF16’, ‘HDF5’}, optional) – The format of the output files. Defaults to 16-bit TIFF.
- scale_values (bool, optional) – Whether to scale the values to use the full range of the output format. Defaults to False.
- projection_type ({‘average’, ‘std’, ‘kurtosis’}, optional) – Whether to take average z projection, the std z projection, or the kurtosis projection. std and kurtosis are useful for finding the dynamic pixels
-
export_frames
(filenames, fmt=u'TIFF16', fill_gaps=True, scale_values=False, compression=None)¶ Export imaging data from the dataset.
Parameters: - filenames (list of list of list of string or list of string) – Path to the locations where the output files will be saved. If fmt is TIFF, filenames[i][j][k] is the path to the file for sequence i, plane j, channel k. If fmt is ‘HDF5’, filenames[i] is the path to the file for the ith sequence.
- fmt ({‘TIFF8’, ‘TIFF16’, ‘HDF5’}, optional) – The format of the output files. Defaults to 16-bit TIFF.
- fill_gaps (bool, optional) – Whether to fill in unobserved rows with data from adjacent frames. Defaults to True.
- scale_values (bool, optional) – Whether to scale the values to use the full range of the output format. Defaults to False. Channels are scaled separately.
- compression ({None, ‘gzip’, ‘lzf’, ‘szip’}, optional) – If not None and ‘fmt’ is ‘HDF5’, compress the data with the specified lossless compression filter. See h5py docs for details on each compression filter.
-
export_signals
(path, fmt=u'csv', channel=0, signals_label=None)¶ Export extracted signals to a file.
Parameters: - path (str) – The name of the file that will store the exported data.
- fmt ({‘csv’}, optional) – The export format. Currently, only ‘csv’ export is available.
- channel (string or int, optional) – The channel from which to export signals, either an integer index or a string in self.channel_names.
- signals_label (str, optional) – The label of the extracted signal set to use. By default, the most recently extracted signals are used.
-
extract
(rois=None, signal_channel=0, label=None, remove_overlap=True, n_processes=1, demix_channel=None, save_summary=True)¶ Extracts imaging data from the current dataset using the supplied ROIs file.
Parameters: - rois (sima.ROI.ROIList, optional) – ROIList of rois to extract
- signal_channel (string or int, optional) – Channel containing the signal to be extracted, either an integer index or a name in self.channel_names.
- label (string or None, optional) – Text label to describe this extraction, if None defaults to a timestamp.
- remove_overlap (bool, optional) – If True, remove any pixels that overlap between masks.
- n_processes (int, optional) – Number of processes to farm out the extraction across. Should be at least 1 and at most one less then the number of CPUs in the computer. Defaults to 1.
- demix_channel (string or int, optional) – Channel to demix from the signal channel, either an integer index or a name in self.channel_names If None, do not demix signals.
- save_summary (bool, optional) – If True, additionally save a summary of the extracted ROIs.
Returns: signals – The extracted signals along with parameters and values calculated during extraction. Contains the following keys:
- raw, demixed_raw : list of arrays
The raw/demixed extracted signal. List of length num_sequences, each element is an array of shape (num_ROIs, num_frames).
- mean_frame : array
Time-averaged mean frame of entire dataset.
- overlap : tuple of arrays
Tuple of (rows, cols) such that zip(overlap) returns row, col pairs of pixel coordinates that are in more than one mask. Note: coordinates are for the **flattened* image, so ‘rows’ is always 0s.
- signal_channel : int
The index of the channel that was extracted.
- rois : list of dict
All the ROIs used for the extraction with the order matched to the order of the rows in ‘raw’. See sima.ROI.todict for details of dictionary format.
- timestamp : string
Date and time of extraction in ‘%Y-%m-%d-%Hh%Mm%Ss’ format
Return type: dict
See also
-
save
(savedir=None)¶ Save the ImagingDataset to a file.
-
segment
(strategy, label=None, planes=None)¶ Segment an ImagingDataset to generate ROIs.
Parameters: - strategy (sima.segment.SegmentationStrategy) – The strategy for segmentation.
- label (str, optional) – Label to be associated with the segmented set of ROIs.
- planes (list of int) – List of the planes that are to be segmented.
Returns: ROIs – The segmented regions of interest.
Return type:
-
signals
(channel=0)¶ Return a dictionary of extracted signals
Parameters: channel (string or int) – The channel to load signals for, either an integer index or a string in self.channel_names
-
infer_spikes
(channel=0, label=None, gamma=None, share_gamma=True, mode=u'correct', verbose=False)¶ Infer the most likely discretized spike train underlying a fluorescence trace.
Parameters: - channel (string or int, optional) – The channel to be used for spike inference.
- label (string or None, optional) – Text string indicating the signals from which spikes should be inferred. Defaults to the most recently extracted signals.
- gamma (float, optional) – Gamma is 1 - timestep/tau, where tau is the time constant of the AR(1) process. If no value is given, then gamma is estimated from the data.
- share_gamma (bool, optional) – Whether to apply the same gamma estimate to all ROIs. Defaults to True.
- mode ({‘correct’, ‘robust’, ‘psd’}, optional) – The method for estimating sigma. The ‘robust’ method overestimates the noise by assuming that gamma = 1. The ‘psd’ method estimates sigma from the PSD of the fluorescence data. Default: ‘correct’.
- verbose (bool, optional) – Whether to print status updates. Default: False.
Returns: - spikes (ndarray of float) – The inferred normalized spike count at each time-bin. Values are normalized to the maximum value over all time-bins. Shape: (num_rois, num_timebins).
- fits (ndarray of float) – The inferred denoised fluorescence signal at each time-bin. Shape: (num_rois, num_timebins).
- parameters (dict of (str, ndarray of float)) – Dictionary with values for ‘sigma’, ‘gamma’, and ‘baseline’.
Notes
We strongly recommend installing MOSEK (www.mosek.com; free for academic use) which greatly speeds up the inference.
References
- Pnevmatikakis et al. 2015. Submitted (arXiv:1409.2903).
- Machado et al. 2015. Submitted.
- Vogelstein et al. 2010. Journal of Neurophysiology. 104(6): 3691-3704.