Detection Parameters¤
To detect action potentials, SanPy uses a number of parameters. These can all be configured using the detection parameter plugin or programmatically with the API sanpy/detectionParams.
Note: To update this table use sanpy/bDetection.py
Parameter | Default Value | Units | Human Readable | Description |
---|---|---|---|---|
detectionName | default | Detection Preset Name | The name of detection preset | |
userSaveName | Saved Detection Params | The name of saved user detection params | ||
detectionType | dvdt | Detection Type | Detect using derivative (dvdt) or membrane potential (mV) | |
dvdtThreshold | 20 | dVdt | dV/dt Threshold | "dV/dt threshold for a spike, will be backed up to dvdt_percentOfMax and have xxx error when this fails" |
mvThreshold | -20 | mV | mV Threshold | mV threshold for spike AND minimum spike mV when detecting with dV/dt |
startSeconds | s | Start(s) | Start seconds of analysis | |
stopSeconds | s | Stop(s) | Stop seconds of analysis | |
cellType | Cell Type | Cell Type | ||
sex | Sex | Sex | ||
condition | Condition | Condition | ||
dvdt_percentOfMax | 0.1 | Percent | dV/dt Percent of max | "For dV/dt detection, the final TOP is when dV/dt drops to this percent from dV/dt AP peak" |
onlyPeaksAbove_mV | mV | Accept Peaks Above (mV) | Only accept APs with peaks above this value (mV) | |
onlyPeaksBelow_mV | mV | Accept Peaks Below (mV) | Only accept APs below this value (mV) | |
doBackupSpikeVm | False | Boolean | Backup Vm Spikes | "If true, APs detected with just mV will be backed up until Vm falls to xxx" |
refractory_ms | 170 | ms | Minimum AP interval (ms) | APs with interval (wrt previous AP) less than this will be removed |
peakWindow_ms | 100 | ms | Peak Window (ms) | Window after TOP (ms) to seach for AP peak (mV) |
dvdtPreWindow_ms | 10 | ms | dV/dt Pre Window (ms) | Window (ms) to search before each TOP for real threshold crossing |
dvdtPostWindow_ms | 20 | ms | dV/dt Post Window (ms) | Window (ms) to search after each AP peak for minimum in dv/dt |
mdp_ms | 250 | ms | Pre AP MDP window (ms) | Window (ms) before an AP to look for MDP |
avgWindow_ms | 5 | ms | MDP averaging window (ms) | Window (ms) to calculate MDP (mV) as a mean rather than mV at single point for MDP |
lowEddRate_warning | 8 | EDD slope | EDD slope warning | Generate warning when EED slope is lower than this value. |
halfHeights | "[10, 20, 50, 80, 90]" | AP Durations (%) | AP Durations as percent of AP height (AP Peak (mV) - TOP (mV)) | |
halfWidthWindow_ms | 200 | ms | Half Width Window (ms) | Window (ms) after TOP to look for AP Durations |
preSpikeClipWidth_ms | 200 | ms | Pre AP Clip Width (ms) | The pre duration of generated AP clips (Before AP) |
postSpikeClipWidth_ms | 500 | ms | Post AP Clip Width (ms) | The post duration of generated AP clips (After AP) |
fastAhpWindow_ms | 8 | ms | Fast AHP Window (ms) | Window (ms) after peak to look for a fast AHP |
medianFilter | 0 | points | Median Filter Points | "Number of points in median filter, must be odd, 0 for no filter" |
SavitzkyGolay_pnts | 5 | points | SavitzkyGolay Points | "Number of points in SavitzkyGolay filter, must be odd, 0 for no filter" |
SavitzkyGolay_poly | 2 | SavitzkyGolay Poly Deg | The degree of the polynomial for Savitzky-Golay filter | |
verbose | False | Boolean | Verbose | Verbose Detection Reporting |
Detection Errors¤
When SanPy encounters errors during spike detection, they are stored for each spike in ['errors']. Each error has a name like 'dvdtPercent' as follows
- dvdtPercent: Error searching for percent (10%) of dvdt max. When this occurs, the TOP (mV) of a spike will be more depolarized than it should be.
- preMin: Error searching for spike pre min, the MDP before a spike. This can occur on the first spike if it is close to the beginning of the recording.
- postMin:
- fitEDD: Error while fitting slope of EDD.
- preSpikeDvDt: Error while searching for peak in max ap upstroke (dV/dt) between spike threshold (TOP) and the peak in the first derivative of Vm (dV/dt).
- cycleLength: Usually occurs on last spike when looking for next MDP.
- spikeWidth: Error finding a particular spike with (AP_Dur). Usually occurs when spikes are too broad, can increase detection parameter
hwWindow_ms
.
Analysis results¤
Once spikes are detected, SanPy has the following analysis results. The Stat
column is a human readable version. The name
column is the variable name used in the code and is saved as a column when analysis results are saved to a csv file.
Note: To generate this use bAnalysisUtil._print()
Stat | name | units | yStat | yStatUnits | xStat | xStatUnits | |
---|---|---|---|---|---|---|---|
0 | Spike Time (s) | thresholdSec | s | thresholdVal | mV | thresholdSec | s |
1 | Spike Number | spikeNumber | spikeNumber | ||||
2 | Sweep Spike Number | sweepSpikeNumber | sweepSpikeNumber | ||||
3 | Sweep Number | sweep | sweep | ||||
4 | Epoch | epoch | epoch | ||||
5 | Epoch DAC | epochLevel | epochLevel | ||||
6 | Epoch Spike Number | epoch | epoch | ||||
7 | Take Off Potential (mV) | thresholdVal | mV | thresholdVal | mV | thresholdPnt | Points |
8 | Spike Frequency (Hz) | spikeFreq_hz | Hz | spikeFreq_hz | Hz | thresholdPnt | Points |
9 | Inter-Spike-Interval (ms) | isi_ms | ms | isi_ms | ms | thresholdPnt | Points |
10 | Cycle Length (ms) | cycleLength_ms | ms | cycleLength_ms | ms | thresholdPnt | Points |
11 | AP Peak (mV) | peakVal | mV | peakVal | mV | peakPnt | Points |
12 | AP Height (mV) | peakHeight | mV | peakHeight | mV | peakPnt | Points |
13 | Time To Peak (ms) | timeToPeak_ms | ms | peakVal | mV | peakPnt | Points |
14 | Pre AP Min (mV) | preMinVal | mV | preMinVal | mV | preMinPnt | Points |
15 | Post AP Min (mV) | postMinVal | mV | postMinVal | mV | postMinPnt | Points |
16 | Fast AHP (mV) | fastAhpValue | mV | fastAhpValue | mV | fastAhpPnt | Points |
17 | Early Diastolic Depol Rate (dV/s) | earlyDiastolicDurationRate | dV/s | earlyDiastolicDurationRate | dV/s | ||
18 | Early Diastolic Duration (ms) | earlyDiastolicDuration_ms | ms | earlyDiastolicDuration_ms | dV/s | thresholdPnt | Points |
19 | Diastolic Duration (ms) | diastolicDuration_ms | ms | diastolicDuration_ms | dV/s | thresholdPnt | Points |
20 | Max AP Upstroke (mV) | preSpike_dvdt_max_val | mV | preSpike_dvdt_max_val | dV/s | preSpike_dvdt_max_pnt | Points |
21 | Max AP Upstroke (dV/dt) | preSpike_dvdt_max_val2 | dV/dt | preSpike_dvdt_max_val2 | dV/dt | preSpike_dvdt_max_pnt | Points |
22 | Max AP Repolarization (mV) | postSpike_dvdt_min_val | mV | postSpike_dvdt_min_val | mV | postSpike_dvdt_min_pnt | Points |
23 | AP Duration (ms) | apDuration_ms | ms | apDuration_ms | ms | thresholdPnt | Points |
24 | Half Width 10 (ms) | widths_10 | nan | widths_10 | ms | ||
25 | Half Width 20 (ms) | widths_20 | nan | widths_20 | ms | ||
26 | Half Width 50 (ms) | widths_50 | nan | widths_50 | ms | ||
27 | Half Width 80 (ms) | widths_80 | nan | widths_80 | ms | ||
28 | Half Width 90 (ms) | widths_90 | nan | widths_90 | ms | ||
29 | User Time To Peak (ms) | user_timeToPeak_ms |
Analysis results (full)¤
Note: To update this table, use sanpy/bAnalysisResults.py
Name | type | default | units | depends on detection | error | description | |
---|---|---|---|---|---|---|---|
0 | spikeNumber | int | None | Spike number across all sweeps. Zero based. | |||
1 | include | bool | True | Boolean indication include or not. Can be set by user/programmatically after analysis. | |||
2 | detectionType | None | Type of detection, either vm or dvdt. See enum sanpy.bDetection.detectionTypes | ||||
3 | sweep | int | 0 | Sweep number of analyzed sweep. Zero based. | |||
4 | epoch | int | NaN | Stimulus epoch number the spike occured in. Zero based. | |||
5 | epochLevel | float | NaN | Epoch level (DAC) stimulus during the spike. | |||
6 | sweepSpikeNumber | int | None | Spike number within the sweep. Zero based. | |||
7 | userType | int | 0 | Integer indication user type. Can be set by user/programmatically after analysis. | |||
8 | errors | list | [] | List of dictionary to hold detection errors for this spike | |||
9 | analysisDate | str | Date of analysis in yyyymmdd format. | ||||
10 | analysisTime | str | Time of analysis in hh:mm:ss 24 hours format. | ||||
11 | modDate | str | Modification date if AP is modified after detection. | ||||
12 | modTime | str | Modification time if AP is modified after detection. | ||||
13 | analysisVersion | str | Analysis version when analysis was run. See sanpy.analysisVersion | ||||
14 | interfaceVersion | str | Interface version string when analysis was run. See sanpy.interfaceVersion | ||||
15 | file | str | Name of raw data file analyzed | ||||
16 | cellType | str | User specified cell type | ||||
17 | sex | str | User specified sex | ||||
18 | condition | str | User specified condition | ||||
19 | dvdtThreshold | float | NaN | dvdt | dvdtThreshold | AP Threshold in derivative dv/dt | |
20 | mvThreshold | float | NaN | mV | mvThreshold | AP Threshold in primary recording mV | |
21 | medianFilter | int | 0 | medianFilter | Median filter to generate filtered vm and dvdt. Value 0 indicates no filter. | ||
22 | halfHeights | list | [] | halfHeights | List of int to specify half-heights like [10, 20, 50, 80, 90]. | ||
23 | thresholdPnt | int | NaN | point | AP threshold point | ||
24 | thresholdSec | float | NaN | sec | AP threshold seconds | ||
25 | thresholdVal | float | NaN | mV | Value of Vm at AP threshold point. | ||
26 | thresholdVal_dvdt | float | NaN | dvdt | Value of dvdt at AP threshold point. | ||
27 | dacCommand | float | NaN | mV | Value of DAC command at AP threshold point. | ||
28 | peakPnt | int | NaN | point | (onlyPeaksAbove_mV, peakWindow_ms) | AP peak point. | |
29 | peakSec | float | NaN | sec | AP peak seconds. | ||
30 | peakVal | float | NaN | mV | Value of Vm at AP peak point. | ||
31 | peakHeight | float | NaN | mV | Difference between peakVal minus thresholdVal. | ||
32 | timeToPeak_ms | float | NaN | ms | Time to peak (ms) after TOP. | ||
33 | fastAhpPnt | int | NaN | point | fastAhpWindow_ms | fast AHP point. | |
34 | fastAhpSec | float | NaN | sec | fast AHP seconds. | ||
35 | fastAhpValue | float | NaN | mV | Value of Vm at fast AHP point. | ||
36 | preMinPnt | int | NaN | point | mdp_ms | Minimum before an AP taken from predefined window. | |
37 | preMinVal | float | NaN | mV | Minimum before an AP taken from predefined window. | ||
38 | preLinearFitPnt0 | int | NaN | point | Point where pre linear fit starts. Used for EDD Rate | ||
39 | preLinearFitPnt1 | int | NaN | point | Point where pre linear fit stops. Used for EDD Rate | ||
40 | earlyDiastolicDuration_ms | float | NaN | ms | Time (ms) between start/stop of EDD. | ||
41 | preLinearFitVal0 | float | NaN | mv | |||
42 | preLinearFitVal1 | float | NaN | mv | |||
43 | earlyDiastolicDurationRate | float | NaN | mv/S | Early diastolic duration rate, the slope of the linear fit between start/stop of EDD. | ||
44 | lateDiastolicDuration | float | NaN | Depreciated | |||
45 | preSpike_dvdt_max_pnt | int | NaN | point | Point corresponding to peak in dv/dt before an AP. | ||
46 | preSpike_dvdt_max_val | float | NaN | mV | Value of Vm at peak of dv/dt before an AP. | ||
47 | preSpike_dvdt_max_val2 | float | NaN | dv/dt | Value of dv/dt at peak of dv/dt before an AP. | ||
48 | postSpike_dvdt_min_pnt | int | NaN | point | dvdtPostWindow_ms | Point corresponding to min in dv/dt after an AP. | |
49 | postSpike_dvdt_min_val | float | NaN | mV | Value of Vm at minimum of dv/dt after an AP. | ||
50 | postSpike_dvdt_min_val2 | float | NaN | dvdt | Value of dv/dt at minimum of dv/dt after an AP. | ||
51 | isi_pnts | int | NaN | point | refractory_ms | Inter-Spike-Interval (points) with respect to previous AP. | |
52 | isi_ms | float | NaN | ms | Inter-Spike-Interval (ms) with respect to previous AP. | ||
53 | spikeFreq_hz | float | NaN | Hz | AP frequency with respect to previous AP. | ||
54 | cycleLength_pnts | int | NaN | point | Points between APs with respect to previous AP. | ||
55 | cycleLength_ms | int | NaN | point | Time (ms) between APs with respect to previous AP. | ||
56 | diastolicDuration_ms | float | NaN | ms | Time (ms) between minimum before AP (preMinPnt) and AP time (thresholdPnt). | ||
57 | widths | list | [] | A list of dict to hold half-height information for each half-height in detection halfHeights. | |||
58 | widths_10 | int | NaN | percent | halfWidthWindow_ms | Width (ms) at half-height 10 %. | |
59 | widths_20 | int | NaN | percent | halfWidthWindow_ms | Width (ms) at half-height 20 %. | |
60 | widths_50 | int | NaN | percent | halfWidthWindow_ms | Width (ms) at half-height 50 %. | |
61 | widths_80 | int | NaN | percent | halfWidthWindow_ms | Width (ms) at half-height 80 %. | |
62 | widths_90 | int | NaN | percent | halfWidthWindow_ms | Width (ms) at half-height 90 %. |
What spike parameters are detected?¤
For cardiac myocyte analysis, SanPy follows the nomenclature from this paper:
- MDP and Vmax were defined as the most negative and positive membrane potentials, respectively
- Take-off potential (TOP) was defined as the membrane potential when the first derivative of voltage with respect to time (dV/dt) reached 10% of its maximum value
- Cycle length was defined as the interval between MDPs in successive APs
- The maximum rates of the AP upstroke and repolarization were taken as the maximum and minimum values of the first derivative (dV/dtmax and dV/dtmin, respectively)
- [[[REMOVED 20210501]]] Action potential duration (APD) was defined as the interval between the TOP and the subsequent MDP
- APD_50 and APD_90 were defined as the interval between the TOP and 50% and 90% repolarization, respectively
- The diastolic duration was defined as the interval between MDP and TOP
- The early diastolic depolarization rate was estimated as the slope of a linear fit between 10% and 50% of the diastolic duration and the early diastolic duration was the corresponding time interval
- The nonlinear late diastolic depolarization phase was estimated as the duration between 1% and 10% dV/dt