@@ -564,12 +564,22 @@ def _write_signal(self, nwbfile, signal, electrodes):
564564 if hasattr (signal , 'proxy_for' ) and signal .proxy_for in [AnalogSignal ,
565565 IrregularlySampledSignal ]:
566566 signal = signal .load ()
567+ if issubclass (timeseries_class , pynwb .icephys .PatchClampSeries ):
568+ if signal .shape [1 ] != 1 :
569+ raise ValueError (
570+ "To store patch clamp data in NWB, please ensure that each AnalogSignal"
571+ f"contains only one channel. The current signal has { signal .shape [1 ]} channels."
572+ )
573+ # see https://github.com/NeurodataWithoutBorders/pynwb/issues/1300
574+ data = signal .ravel () # convert to 1D
575+ else :
576+ data = signal
567577 if isinstance (signal , AnalogSignal ):
568578 sampling_rate = signal .sampling_rate .rescale ("Hz" )
569579 tS = timeseries_class (
570580 name = signal .name ,
571581 starting_time = time_in_seconds (signal .t_start ),
572- data = signal ,
582+ data = data ,
573583 unit = units .dimensionality .string ,
574584 rate = float (sampling_rate ),
575585 comments = json .dumps (hierarchy ),
@@ -578,7 +588,7 @@ def _write_signal(self, nwbfile, signal, electrodes):
578588 elif isinstance (signal , IrregularlySampledSignal ):
579589 tS = timeseries_class (
580590 name = signal .name ,
581- data = signal ,
591+ data = data ,
582592 unit = units .dimensionality .string ,
583593 timestamps = signal .times .rescale ('second' ).magnitude ,
584594 comments = json .dumps (hierarchy ),
0 commit comments