Skip to content

problem loading winwcp file #1812

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](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/site-packages/neo/io/winwcpio.py#line=17), 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](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/site-packages/neo/io/basefromrawio.py#line=76), 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](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/site-packages/neo/rawio/baserawio.py#line=210), 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](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/site-packages/neo/rawio/winwcprawio.py#line=87), 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[/](http://localhost:8888/)%m[/](http://localhost:8888/)%Y %H:%M:%S")
     89 else:
     90     rec_datetime = None

File [~/anaconda3/lib/python3.13/_strptime.py:789](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/_strptime.py#line=788), 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](http://localhost:8888/lab/tree/Carla%20datos/Trenes%20Experimentos/12_11_25/~/anaconda3/lib/python3.13/_strptime.py#line=554), 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[/](http://localhost:8888/)%m[/](http://localhost:8888/)%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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions