INM-6 / python-neo

Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats
http://packages.python.org/neo/
BSD 3-Clause "New" or "Revised" License
3 stars 10 forks source link

duplicate_with_new_array tries to convert units of new array #12

Open mdenker opened 9 years ago

mdenker commented 9 years ago

To reproduce:

a=AnalogSignal([1,2,3]*pq.mV)
b=a.duplicate_with_new_array([4,5,6]*pq.ms)
--> Error: cannot convert mV to ms
lphan commented 9 years ago
import quantities as pq
from neo.core import AnalogSignal

sig0 = AnalogSignal(signal=[.01, 3.3, 9.3], units='uV', sampling_rate=1*pq.Hz)

sig1 = sig0.duplicate_with_new_array_units([1,2,3], units='ms')
# sig1 = sig0.duplicate_with_new_array([1,2,3]*pq.ms)

print "sig0 = ",sig0 # sig0 =  [ 0.01  3.3   9.3 ] uV
print "sig0 type ",type(sig0) # sig0 type  <class 'neo.core.analogsignal.AnalogSignal'>

print "sig1 = ",sig1 # sig1 =  [1 2 3] ms
print "sig1 type ",type(sig1) # sig1 type  <class 'neo.core.analogsignal.AnalogSignal'>

worked, return sig1 with new units. in case with some changes in file analogsignal.py like following:

def duplicate_with_new_array_units(self, signal, units=None):
       if units is None:
            new = self.__class__(signal=signal, units=self.units, sampling_rate=self.sampling_rate)
       else:
            new = self.__class__(signal=signal, units=units, sampling_rate=self.sampling_rate)
       new._copy_data_complement(self)
       new.annotations.update(self.annotations)
       return new