Skip to content
This repository was archived by the owner on Feb 26, 2025. It is now read-only.

Commit 69f1c1b

Browse files
AurelienJaquierJaquier Aurélien Tristan
and
Jaquier Aurélien Tristan
authoredApr 26, 2024
reorganised efeature documentation (#382)
Co-authored-by: Jaquier Aurélien Tristan <aurelien.jaquier@epfl.ch>
1 parent 2134768 commit 69f1c1b

File tree

1 file changed

+111
-111
lines changed

1 file changed

+111
-111
lines changed
 

‎docs/source/eFeatures.rst

+111-111
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,67 @@ the length of the first isi over the median of the rest of the isis.
589589

590590
single_burst_ratio = ISI_values[0] / numpy.mean(ISI_values)
591591

592+
`Python efeature`_ : spikes_per_burst
593+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
594+
595+
Number of spikes in each burst.
596+
597+
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
598+
599+
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
600+
601+
- **Required features**: LibV5: burst_begin_indices, LibV5: burst_end_indices
602+
- **Units**: constant
603+
- **Pseudocode**: ::
604+
605+
spike_per_bursts = []
606+
for idx_begin, idx_end in zip(burst_begin_indices, burst_end_indices):
607+
spike_per_bursts.append(idx_end - idx_begin + 1)
608+
609+
`Python efeature`_ : spikes_per_burst_diff
610+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
611+
612+
Difference of number of spikes between each burst and the next one.
613+
614+
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
615+
616+
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
617+
618+
- **Required features**: spikes_per_burst
619+
- **Units**: constant
620+
- **Pseudocode**: ::
621+
622+
spikes_per_burst[:-1] - spikes_per_burst[1:]
623+
624+
`Python efeature`_ : spikes_in_burst1_burst2_diff
625+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
626+
627+
Difference of number of spikes between the first burst and the second one.
628+
629+
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
630+
631+
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
632+
633+
- **Required features**: spikes_per_burst_diff
634+
- **Units**: constant
635+
- **Pseudocode**: ::
636+
637+
numpy.array([spikes_per_burst_diff[0]])
638+
639+
`Python efeature`_ : spikes_in_burst1_burstlast_diff
640+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
641+
642+
Difference of number of spikes between the first burst and the last one.
643+
644+
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
645+
646+
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
647+
648+
- **Required features**: spikes_per_burst
649+
- **Units**: constant
650+
- **Pseudocode**: ::
651+
652+
numpy.array([spikes_per_burst[0] - spikes_per_burst[-1]])
592653

593654
Spike shape features
594655
--------------------
@@ -1294,8 +1355,56 @@ Slope of the V, dVdt phasespace plot at the beginning of every spike
12941355
range_min_idxs = AP_begin_indices - AP_phseslope_range
12951356
AP_phaseslope = (dvdt[range_max_idxs] - dvdt[range_min_idxs]) / (v[range_max_idxs] - v[range_min_idxs])
12961357

1297-
Voltage features
1298-
----------------
1358+
`Python efeature`_ : phaseslope_max
1359+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1360+
1361+
Computes the maximum of the phase slope.
1362+
Attention, this feature is sensitive to interpolation timestep.
1363+
1364+
- **Required features**: time, voltage
1365+
- **Units**: V/s
1366+
- **Pseudocode**: ::
1367+
1368+
phaseslope = numpy.diff(voltage) / numpy.diff(time)
1369+
phaseslope_max = numpy.array([numpy.max(phaseslope)])
1370+
1371+
`Python efeature`_ : initburst_sahp
1372+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1373+
1374+
Slow AHP voltage after initial burst
1375+
1376+
The end of the initial burst is detected when the ISIs frequency gets lower than initburst_freq_threshold, in Hz.
1377+
Then the sahp is searched for the interval between initburst_sahp_start (in ms) after the last spike of the burst,
1378+
and initburst_sahp_end (in ms) after the last spike of the burst.
1379+
1380+
- **Required features**: LibV1: peak_time
1381+
- **Parameters**: initburst_freq_threshold (default=50), initburst_sahp_start (default=5), initburst_sahp_end (default=100)
1382+
- **Units**: mV
1383+
1384+
`Python efeature`_ : initburst_sahp_ssse
1385+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1386+
1387+
Slow AHP voltage from steady_state_voltage_stimend after initial burst
1388+
1389+
- **Required features**: LibV5: steady_state_voltage_stimend, initburst_sahp
1390+
- **Units**: mV
1391+
- **Pseudocode**: ::
1392+
1393+
numpy.array([initburst_sahp_value[0] - ssse[0]])
1394+
1395+
`Python efeature`_ : initburst_sahp_vb
1396+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1397+
1398+
Slow AHP voltage from voltage base after initial burst
1399+
1400+
- **Required features**: LibV5: voltage_base, initburst_sahp
1401+
- **Units**: mV
1402+
- **Pseudocode**: ::
1403+
1404+
numpy.array([initburst_sahp_value[0] - voltage_base[0]])
1405+
1406+
Subthreshold features
1407+
---------------------
12991408

13001409
.. image:: _static/figures/voltage_features.png
13011410

@@ -1806,40 +1915,6 @@ Difference between minimum and steady state during stimulation
18061915
Python features
18071916
---------------
18081917

1809-
`Python efeature`_ : initburst_sahp
1810-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1811-
1812-
Slow AHP voltage after initial burst
1813-
1814-
The end of the initial burst is detected when the ISIs frequency gets lower than initburst_freq_threshold, in Hz.
1815-
Then the sahp is searched for the interval between initburst_sahp_start (in ms) after the last spike of the burst,
1816-
and initburst_sahp_end (in ms) after the last spike of the burst.
1817-
1818-
- **Required features**: LibV1: peak_time
1819-
- **Parameters**: initburst_freq_threshold (default=50), initburst_sahp_start (default=5), initburst_sahp_end (default=100)
1820-
- **Units**: mV
1821-
1822-
`Python efeature`_ : initburst_sahp_ssse
1823-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1824-
1825-
Slow AHP voltage from steady_state_voltage_stimend after initial burst
1826-
1827-
- **Required features**: LibV5: steady_state_voltage_stimend, initburst_sahp
1828-
- **Units**: mV
1829-
- **Pseudocode**: ::
1830-
1831-
numpy.array([initburst_sahp_value[0] - ssse[0]])
1832-
1833-
`Python efeature`_ : initburst_sahp_vb
1834-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1835-
1836-
Slow AHP voltage from voltage base after initial burst
1837-
1838-
- **Required features**: LibV5: voltage_base, initburst_sahp
1839-
- **Units**: mV
1840-
- **Pseudocode**: ::
1841-
1842-
numpy.array([initburst_sahp_value[0] - voltage_base[0]])
18431918

18441919
`Python efeature`_ : depol_block_bool
18451920
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1853,68 +1928,6 @@ A hyperpolarization block is detected when, after stimulus start, the voltage st
18531928
- **Required features**: LibV5: AP_begin_voltage
18541929
- **Units**: constant
18551930

1856-
`Python efeature`_ : spikes_per_burst
1857-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1858-
1859-
Number of spikes in each burst.
1860-
1861-
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
1862-
1863-
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
1864-
1865-
- **Required features**: LibV5: burst_begin_indices, LibV5: burst_end_indices
1866-
- **Units**: constant
1867-
- **Pseudocode**: ::
1868-
1869-
spike_per_bursts = []
1870-
for idx_begin, idx_end in zip(burst_begin_indices, burst_end_indices):
1871-
spike_per_bursts.append(idx_end - idx_begin + 1)
1872-
1873-
`Python efeature`_ : spikes_per_burst_diff
1874-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1875-
1876-
Difference of number of spikes between each burst and the next one.
1877-
1878-
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
1879-
1880-
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
1881-
1882-
- **Required features**: spikes_per_burst
1883-
- **Units**: constant
1884-
- **Pseudocode**: ::
1885-
1886-
spikes_per_burst[:-1] - spikes_per_burst[1:]
1887-
1888-
`Python efeature`_ : spikes_in_burst1_burst2_diff
1889-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1890-
1891-
Difference of number of spikes between the first burst and the second one.
1892-
1893-
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
1894-
1895-
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
1896-
1897-
- **Required features**: spikes_per_burst_diff
1898-
- **Units**: constant
1899-
- **Pseudocode**: ::
1900-
1901-
numpy.array([spikes_per_burst_diff[0]])
1902-
1903-
`Python efeature`_ : spikes_in_burst1_burstlast_diff
1904-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1905-
1906-
Difference of number of spikes between the first burst and the last one.
1907-
1908-
The first spike is ignored by default. This can be changed by setting ignore_first_ISI to 0.
1909-
1910-
The burst detection can be fine-tuned by changing the setting strict_burst_factor. Defalt value is 2.0.
1911-
1912-
- **Required features**: spikes_per_burst
1913-
- **Units**: constant
1914-
- **Pseudocode**: ::
1915-
1916-
numpy.array([spikes_per_burst[0] - spikes_per_burst[-1]])
1917-
19181931
`Python efeature`_ : impedance
19191932
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19201933

@@ -1944,19 +1957,6 @@ with impedance_max_freq being a setting with 50.0 as a default value.
19441957
else:
19451958
return None
19461959

1947-
`Python efeature`_ : phaseslope_max
1948-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1949-
1950-
Computes the maximum of the phase slope.
1951-
Attention, this feature is sensitive to interpolation timestep.
1952-
1953-
- **Required features**: time, voltage
1954-
- **Units**: V/s
1955-
- **Pseudocode**: ::
1956-
1957-
phaseslope = numpy.diff(voltage) / numpy.diff(time)
1958-
phaseslope_max = numpy.array([numpy.max(phaseslope)])
1959-
19601960

19611961

19621962
.. _LibV1: https://github.com/BlueBrain/eFEL/blob/master/efel/cppcore/LibV1.cpp

0 commit comments

Comments
 (0)