Skip to content

problem loading winwcp file #1812

@patriciorojasm

Description

@patriciorojasm

Hi
I normally load WinWCP files, with no problem. But this year I installed anaconda in win 7, win 11 and linux mint, and raises an error in date format.
Any idea how to fix this? I dont know if the problem is with winwcp , Anaconda or Neo.
The problem happens in Visual Code in win 7 and win 11.
The minimal code is below, and also the long error output.

file_name = "251112_030.wcp" #   list_baselines_2[0]
r_5pb = io.WinWcpIO(filename=file_name)
bl_5pb = r_5pb.read_block(lazy = False)  #blks = reader.read(lazy=False)
np_time_5pb = bl_5pb.segments[0].analogsignals[0].times.rescale('ms').magnitude

Environment:

  • OS: Linux Mint , Windows 7, Windows 11
  • Python version
  • Neo version
  • NumPy version

Output:

ValueError Traceback (most recent call last)
Cell In[8], line 2
1 file_name = "251112_030.wcp" # list_baselines_2[0]
----> 2 r_5pb = io.WinWcpIO(filename=file_name)
3 bl_5pb = r_5pb.read_block(lazy = False) #blks = reader.read(lazy=False)
4 np_time_5pb = bl_5pb.segments[0].analogsignals[0].times.rescale('ms').magnitude

File ~/anaconda3/lib/python3.13/site-packages/neo/io/winwcpio.py:18, in WinWcpIO.init(self, filename)
16 def init(self, filename):
17 WinWcpRawIO.init(self, filename=filename)
---> 18 BaseFromRaw.init(self, filename)

File ~/anaconda3/lib/python3.13/site-packages/neo/io/basefromrawio.py:77, in BaseFromRaw.init(self, *args, **kargs)
75 def init(self, *args, **kargs):
76 BaseIO.init(self, *args, **kargs)
---> 77 self.parse_header()

File ~/anaconda3/lib/python3.13/site-packages/neo/rawio/baserawio.py:211, in BaseRawIO.parse_header(self)
197 """
198 Parses the header of the file(s) to allow for faster computations
199 for all other functions
200
201 """
202 # this must create
203 # self.header['nb_block']
204 # self.header['nb_segment']
(...) 208 # self.header['spike_channels']
209 # self.header['event_channels']
--> 211 self._parse_header()
212 self._check_stream_signal_channel_characteristics()
213 self.is_header_parsed = True

File ~/anaconda3/lib/python3.13/site-packages/neo/rawio/winwcprawio.py:88, in WinWcpRawIO._parse_header(self)
86 # get rec_datetime when WCP data file version is later than 8
87 if header["VER"] > 8:
---> 88 rec_datetime = datetime.datetime.strptime(header["RTIME"], "%d/%m/%Y %H:%M:%S")
89 else:
90 rec_datetime = None

File ~/anaconda3/lib/python3.13/_strptime.py:789, in _strptime_datetime(cls, data_string, format)
786 def _strptime_datetime(cls, data_string, format="%a %b %d %H:%M:%S %Y"):
787 """Return a class cls instance based on the input string and the
788 format string."""
--> 789 tt, fraction, gmtoff_fraction = _strptime(data_string, format)
790 tzname, gmtoff = tt[-2:]
791 args = tt[:6] + (fraction,)

File ~/anaconda3/lib/python3.13/_strptime.py:555, in _strptime(data_string, format)
553 found = format_regex.match(data_string)
554 if not found:
--> 555 raise ValueError("time data %r does not match format %r" %
556 (data_string, format))
557 if len(data_string) != found.end():
558 raise ValueError("unconverted data remains: %s" %
559 data_string[found.end():])

ValueError: time data '21:35:56.41' does not match format '%d/%m/%Y %H:%M:%S'

#file_name = "251112_030.wcp" # list_baselines_2[0]
"""
r_5pb = io.WinWcpIO(filename=file_name)
bl_5pb = r_5pb.read_block(lazy = False) #blks = reader.read(lazy=False)
np_time_5pb = bl_5pb.segments[0].analogsignals[0].times.rescale('ms').magnitude
dat_r_5pb = bl_5pb.segments[0].analogsignals[0][:,2].rescale('mV').magnitude
dat_r_5pb = dat_r_5pb.ravel()
dat_f_5pb = signal.filtfilt(b,a,dat_r_5pb)
n_rec=np.size(bl_5pb.segments)"""
#fc =2000; w = fc /(20000/2); b, a = signal.bessel(8,w,"low") #, analog="True")
f5, ax = plt.subplots(1,4, figsize=(16,4))
#np_time_5pp = bl_5pb.segments[0].analogsignals[0].times.rescale('ms').magnitude
slp5b, slp5pb = [],[]
x1,x2,x3,x4 = 10,30,60,73 # tiempos para biscar el P1 (x1,x2) y el P2(x3,x4)
l = np.argmin(np.abs(np_time_5pp- x1)); m = np.argmin(np.abs(np_time_5pp- x2))
j = np.argmin(np.abs(np_time_5pp- x3)); k = np.argmin(np.abs(np_time_5pp- x4))
for i in range(n_rec):
dat_5pb = bl_5pb.segments[i].analogsignals[0][:,2].rescale('mV').magnitude
dat_5pb = dat_5pb.ravel()
dat = signal.filtfilt(b,a,dat_5pb)
ax[0].plot(np_time_5pb, dat, label=i) #ax[0].plot(np_time_5pp, dat_5pp, label=i)
ax[1].plot(np_time_5pb, dat, label=i)
#----find neg peaks------
peaksp_5b, _ = find_peaks(-dat[l:m], height=.05, distance =100)
i_p = np.argmin( dat [ peaksp_5b +l ]) #print(i, peaksp_5b +l, dat_f_5pb [ peaksp_5b +l ])
#pp5b.append(dat_f_5pb[peaksp_5b[i_p]+l]) # [0]
ax[0].plot(np_time_5pb[peaksp_5b[i_p]+l],dat[peaksp_5b[i_p]+l],"or") # [0]
#---- baseline ----
base = np.mean(dat[0:150])
dat = dat - base
amp = dat[peaksp_5b[i_p]+l] - base
thr_20 = .2amp; thr_80 = .8amp
#i_20 = np.where(dat_f_5pb >= thr_20)[0] ; idx_20 = i_20[0]
#i_80 = np.where(dat_f_5pb >= thr_80)[0] ; idx_80 = i_80[0]
idx20 = np.interp(thr_20, dat, np.arange(len(dat)))
idx80 = np.interp(thr_80, dat, np.arange(len(dat)))

# Calculate rise (y-axis) and run (x-axis)
rise = thr_80 - thr_20
run = (idx80 - idx20) * (np_time_5pb[1] - np_time_5pb[0]) # Assuming uniform time sampling

slope = rise / run
print(i, slope)

"""
peaksp_5_pb, _ = find_peaks(-dat_f_5pb[j:k], height=.05, distance =100)    
i_p = np.argmin( dat_f_5pb [ peaksp_5_pb +j ])
pp5pb.append(dat_f_5pb[peaksp_5_pb[i_p]+j]) # [0]
ax[1].plot(np_time_5pb[peaksp_5_pb[i_p] +j],dat_f_5pb[peaksp_5_pb[i_p] +j],"ob")  # [0]  

pp5b = np.asarray((pp5b))
pp5pb = np.asarray((pp5pb))

ax[0].set_ylabel("Peak 1 (mV)"); ax[1].set_ylabel("Peak 2 (mV)");
ax[0].set_xlabel("Time (ms)");ax[1].set_xlabel("Time (ms)");
ax[2].plot(-pp5b, "ro-", mec="r", mfc="w", ms=8, label="1st")
ax[2].plot(-pp5pb, "bo-", mec="b", mfc="w", ms=8, label="2nd")
ax[2].legend()
ax[2].set_xlabel("Pulse number"); ax[2].set_ylabel("Peak voltage (mV)")
p5b_rat = pp5pb/pp5b
ax[3].plot(p5b_rat, "ko-", mec="k", mfc="w", ms=8)
ax[3].set_xlabel("Pulse number"); ax[3].set_ylabel("PPR")
ax[3].axhline(1, ls="--", color="gray")

ax[0].axvline(np_time_5pb[l], ls="--", color="gray")
ax[0].axvline(np_time_5pb[m], ls="--", color="gray")
ax[1].axvline(np_time_5pb[j], ls="--", color="gray")
ax[1].axvline(np_time_5pb[k], ls="--", color="gray")
"""
ax[0].set_ylim(-.6,.3); ax[0].set_xlim(5,30); #ax[0].legend()
ax[1].set_ylim(-.6,.3); ax[1].set_xlim(55,92); #ax[1].legend()

plt.tight_layout()
Export to Excel

1
Python 3 (ipykernel) | Idle
Mode: Command
Ln 2, Col 40
251112_slice_2_time course PPR.ipynb
1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions