Skip to content

Commit 763975e

Browse files
committed
feat: add domain motion analysis module and integrate with existing structure analysis
1 parent 1efe22c commit 763975e

5 files changed

Lines changed: 761 additions & 4 deletions

File tree

sarcasm/feature_dict.py

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,135 @@
9494
'function': 'Structure.analyze_sarcomere_domains',
9595
'name': 'Domain sarcomere length [µm]'
9696
},
97+
'domain_slen_timeseries': {
98+
'description': 'Time-series of mean sarcomere length within each sarcomere domain. '
99+
'np.ndarray with shape (n_domains, n_frames).',
100+
'data type': np.ndarray,
101+
'function': 'Structure.analyze_domain_motion',
102+
'name': 'Domain sarcomere length time-series [µm]'
103+
},
104+
'domain_slen_median_timeseries': {
105+
'description': 'Time-series of median sarcomere length within each sarcomere domain. '
106+
'np.ndarray with shape (n_domains, n_frames).',
107+
'data type': np.ndarray,
108+
'function': 'Structure.analyze_domain_motion',
109+
'name': 'Domain sarcomere length median time-series [µm]'
110+
},
111+
'domain_slen_std_timeseries': {
112+
'description': 'Time-series of standard deviation of sarcomere length within each domain. '
113+
'np.ndarray with shape (n_domains, n_frames).',
114+
'data type': np.ndarray,
115+
'function': 'Structure.analyze_domain_motion',
116+
'name': 'Domain sarcomere length STD time-series [µm]'
117+
},
118+
'domain_slen_q25_timeseries': {
119+
'description': 'Time-series of 25th percentile of sarcomere length within each domain. '
120+
'np.ndarray with shape (n_domains, n_frames).',
121+
'data type': np.ndarray,
122+
'function': 'Structure.analyze_domain_motion',
123+
'name': 'Domain sarcomere length Q25 time-series [µm]'
124+
},
125+
'domain_slen_q75_timeseries': {
126+
'description': 'Time-series of 75th percentile of sarcomere length within each domain. '
127+
'np.ndarray with shape (n_domains, n_frames).',
128+
'data type': np.ndarray,
129+
'function': 'Structure.analyze_domain_motion',
130+
'name': 'Domain sarcomere length Q75 time-series [µm]'
131+
},
132+
'domain_n_vectors_timeseries': {
133+
'description': 'Time-series of number of sarcomere vectors within each domain. '
134+
'np.ndarray with shape (n_domains, n_frames).',
135+
'data type': np.ndarray,
136+
'function': 'Structure.analyze_domain_motion',
137+
'name': 'Domain vector count time-series'
138+
},
139+
'domain_contr': {
140+
'description': 'Binary contraction state for each domain over time. '
141+
'np.ndarray with shape (n_domains, n_frames). True = contracting, False = quiescent.',
142+
'data type': np.ndarray,
143+
'function': 'Structure.analyze_domain_motion',
144+
'name': 'Domain contraction state'
145+
},
146+
'domain_n_contr': {
147+
'description': 'Number of contraction cycles detected for each domain. np.ndarray with shape (n_domains,).',
148+
'data type': np.ndarray,
149+
'function': 'Structure.analyze_domain_motion',
150+
'name': 'Domain number of contractions'
151+
},
152+
'domain_labels_contr': {
153+
'description': 'Contraction cycle labels for each domain over time. '
154+
'np.ndarray with shape (n_domains, n_frames). Values 1, 2, 3, ... label each contraction cycle.',
155+
'data type': np.ndarray,
156+
'function': 'Structure.analyze_domain_motion',
157+
'name': 'Domain contraction labels'
158+
},
159+
'domain_beating_rate': {
160+
'description': 'Beating rate in Hz for each domain. np.ndarray with shape (n_domains,).',
161+
'data type': np.ndarray,
162+
'function': 'Structure.analyze_domain_motion',
163+
'name': 'Domain beating rate [Hz]'
164+
},
165+
'domain_beating_rate_variability': {
166+
'description': 'Standard deviation of inter-beat interval for each domain. np.ndarray with shape (n_domains,).',
167+
'data type': np.ndarray,
168+
'function': 'Structure.analyze_domain_motion',
169+
'name': 'Domain beating rate variability [s]'
170+
},
171+
'domain_equ': {
172+
'description': 'Equilibrium (resting) sarcomere length for each domain. np.ndarray with shape (n_domains,).',
173+
'data type': np.ndarray,
174+
'function': 'Structure.analyze_domain_motion',
175+
'name': 'Domain equilibrium sarcomere length [µm]'
176+
},
177+
'domain_contr_max': {
178+
'description': 'Maximum contraction (most negative sarcomere length change from equilibrium) '
179+
'for each domain and contraction cycle. np.ndarray with shape (n_domains, max_n_contr).',
180+
'data type': np.ndarray,
181+
'function': 'Structure.analyze_domain_motion',
182+
'name': 'Domain max contraction [µm]'
183+
},
184+
'domain_elong_max': {
185+
'description': 'Maximum elongation (most positive sarcomere length change from equilibrium) '
186+
'for each domain and contraction cycle. np.ndarray with shape (n_domains, max_n_contr).',
187+
'data type': np.ndarray,
188+
'function': 'Structure.analyze_domain_motion',
189+
'name': 'Domain max elongation [µm]'
190+
},
191+
'domain_vel_contr_max': {
192+
'description': 'Maximum shortening velocity for each domain and contraction cycle. '
193+
'np.ndarray with shape (n_domains, max_n_contr).',
194+
'data type': np.ndarray,
195+
'function': 'Structure.analyze_domain_motion',
196+
'name': 'Domain max shortening velocity [µm/s]'
197+
},
198+
'domain_vel_elong_max': {
199+
'description': 'Maximum elongation velocity for each domain and contraction cycle. '
200+
'np.ndarray with shape (n_domains, max_n_contr).',
201+
'data type': np.ndarray,
202+
'function': 'Structure.analyze_domain_motion',
203+
'name': 'Domain max elongation velocity [µm/s]'
204+
},
205+
'domain_time_to_peak': {
206+
'description': 'Time from contraction start to maximum contraction for each domain and cycle. '
207+
'np.ndarray with shape (n_domains, max_n_contr).',
208+
'data type': np.ndarray,
209+
'function': 'Structure.analyze_domain_motion',
210+
'name': 'Domain time to peak [s]'
211+
},
212+
'domain_time_to_relax': {
213+
'description': 'Time from maximum contraction to relaxation for each domain and cycle. '
214+
'np.ndarray with shape (n_domains, max_n_contr).',
215+
'data type': np.ndarray,
216+
'function': 'Structure.analyze_domain_motion',
217+
'name': 'Domain time to relaxation [s]'
218+
},
219+
'domain_time_contr': {
220+
'description': 'Duration of each contraction cycle for each domain. '
221+
'np.ndarray with shape (n_domains, max_n_contr).',
222+
'data type': np.ndarray,
223+
'function': 'Structure.analyze_domain_motion',
224+
'name': 'Domain contraction duration [s]'
225+
},
97226
'domains': {
98227
'description': 'Set of sarcomere vectors of each sarcomere domain. List with list of np.arrays for each frame, '
99228
'storing the indices of sarcomere vectors for each domain.',

0 commit comments

Comments
 (0)