Skip to content
Snippets Groups Projects
Commit 27b9c3f6 authored by Alán Muñoz's avatar Alán Muñoz
Browse files

fix(signal): fringe cases transition at edges

parent b206c48a
No related branches found
No related tags found
No related merge requests found
...@@ -381,31 +381,51 @@ class Signal(BridgeH5): ...@@ -381,31 +381,51 @@ class Signal(BridgeH5):
""" """
flowrate_name = "pumpinit/flowrate" flowrate_name = "pumpinit/flowrate"
pumprate_name = "pumprate" pumprate_name = "pumprate"
switchtimes_name = "switchtimes"
main_pump_id = np.concatenate( main_pump_id = np.concatenate(
( (
(np.argmax(self.meta_h5[flowrate_name]),), (np.argmax(self.meta_h5[flowrate_name]),),
np.argmax(self.meta_h5[pumprate_name], axis=0), np.argmax(self.meta_h5[pumprate_name], axis=0),
) )
) )
if not self.meta_h5[switchtimes_name][0]: # Cover for t0 switches
main_pump_id = main_pump_id[1:]
return [self.meta_h5["pumpinit/contents"][i] for i in main_pump_id] return [self.meta_h5["pumpinit/contents"][i] for i in main_pump_id]
@property @property
def nstages(self) -> int: def nstages(self) -> int:
switchtimes_name = "switchtimes" return len(self.switch_times) + 1
return self.meta_h5[switchtimes_name] + 1
@property @property
def max_span(self) -> int: def max_span(self) -> int:
return int(self.tinterval * self.ntps / 60) return int(self.tinterval * self.ntps / 60)
@property
def switch_frames(self) -> t.List[int]:
switchtimes_name = "switchtimes"
switch_frames = self.meta_h5[switchtimes_name]
return [
tp for tp in switch_frames if tp and tp < self.max_span
] # Cover for t0 switches
@property @property
def stages_span(self) -> t.Tuple[t.Tuple[str, int], ...]: def stages_span(self) -> t.Tuple[t.Tuple[str, int], ...]:
# Return consecutive stages and their corresponding number of time-points # Return consecutive stages and their corresponding number of time-points
switchtimes_name = "switchtimes" transition_tps = (0, *self.switch_frames, self.max_span)
transition_tps = (0, *self.meta_h5[switchtimes_name])
spans = [ spans = [
end - start end - start
for start, end in zip(transition_tps[:-1], transition_tps[1:]) for start, end in zip(transition_tps[:-1], transition_tps[1:])
if end <= self.max_span if end <= self.max_span
] ]
return tuple((stage, ntps) for stage, ntps in zip(self.stages, spans)) return tuple((stage, ntps) for stage, ntps in zip(self.stages, spans))
@property
def stages_span_tp(self) -> t.Tuple[t.Tuple[str, int], ...]:
return tuple(
[
(name, t_min // self.tinterval * 60)
for name, t_min in self.stages_span
]
)
...@@ -80,7 +80,7 @@ class Chainer(Signal): ...@@ -80,7 +80,7 @@ class Chainer(Signal):
stages_index = [ stages_index = [
x x
for i, (name, span) in enumerate(self.stages_span) for i, (name, span) in enumerate(self.stages_span_tp)
for x in (f"{i} { name }",) * span for x in (f"{i} { name }",) * span
] ]
data.columns = pd.MultiIndex.from_tuples( data.columns = pd.MultiIndex.from_tuples(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment