@@ -356,10 +356,18 @@ def rdsegment(filename, dirname, pbdir, nsig, fmt, siglen, byteoffset,
356356 # Return each sample in signals with multiple samples/frame, without smoothing.
357357 # Return a list of numpy arrays for each signal.
358358 else :
359- signals = []
359+ signals = [None ] * len ( channels )
360360
361361 for fn in w_filename :
362- signals .append (rddat ())
362+ # Get the list of all signals contained in the dat file
363+ datsignals = rddat (fn , dirname , pbdir , w_fmt [fn ], len (datchannel [fn ]),
364+ siglen , w_byteoffset [fn ], w_sampsperframe [fn ], w_skew [fn ], sampfrom , sampto , smoothframes )
365+
366+ # Copy over the wanted signals
367+ for cn in range (len (out_datchannel [fn ])):
368+
369+ signals [out_datchannel [fn ][cn ]] = datsignals [r_w_channel [fn ][cn ]]
370+
363371
364372
365373 return signals
@@ -420,11 +428,12 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
420428 if fmt in ['212' , '310' , '311' ]:
421429 # Extra number of bytes to append onto the bytes read from the dat file.
422430 extrabytenum = totalprocessbytes - totalreadbytes
423- sigbytes = np .concatenate (getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples ),
424- np .zeros (extrabytenum , dtype = 'uint8' ))
431+
432+ sigbytes = np .concatenate ((getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples ),
433+ np .zeros (extrabytenum , dtype = 'uint8' )))
425434 else :
426- sigbytes = np .concatenate (getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples ),
427- np .zeros (extraflatsamples , dtype = np . dtype ( dataloadtypes [ fmt ] )))
435+ sigbytes = np .concatenate (( getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples ),
436+ np .zeros (extraflatsamples , dtype = 'int64' )))
428437 else :
429438 sigbytes = getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples )
430439
@@ -448,7 +457,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
448457 sig = sig .reshape (- 1 , nsig )
449458
450459 # Skew the signal
451- sig = skewsig (sig , skew , nsig , readlen )
460+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
452461
453462 # Extra frames present to be smoothed. Obtain averaged uniform numpy array
454463 elif smoothframes :
@@ -461,7 +470,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
461470 sigflat = sigflat [blockfloorsamples :]
462471
463472 # Smoothed signal
464- sig = np .zeros (int (len (sigflat )/ tsampsperframe ) , nsig )
473+ sig = np .zeros (( int (len (sigflat )/ tsampsperframe ) , nsig ) )
465474
466475 # Transfer and average samples
467476 for ch in range (nsig ):
@@ -473,7 +482,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
473482 sig = (sig / sampsperframe )
474483
475484 # Skew the signal
476- sig = skewsig (sig , skew , nsig , readlen )
485+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
477486
478487 # Extra frames present without wanting smoothing. Return all expanded samples.
479488 else :
@@ -490,11 +499,11 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
490499 # Transfer over samples
491500 for ch in range (nsig ):
492501 # Indices of the flat signal that belong to the channel
493- ch_indices = np .concatenate ([np .array (range (sampsperframe [ch ])) + tsampsperframe * framenum for framenum in range (int (len (sigflat )/ tsampsperframe ))])
502+ ch_indices = np .concatenate (( [np .array (range (sampsperframe [ch ])) + tsampsperframe * framenum for framenum in range (int (len (sigflat )/ tsampsperframe ))]) )
494503 sig .append (sigflat [ch_indices ])
495504
496505 # Skew the signal
497- sig = skewsig (sig , skew , nsig , readlen , sampsperframe )
506+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace , sampsperframe )
498507
499508 elif fmt == '310' :
500509 pass
@@ -518,12 +527,15 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
518527 sig = sigbytes .reshape (- 1 , nsig )
519528
520529 # Skew the signal
521- sig = skewsig (sig , skew , nsig , readlen )
530+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
522531
523532
524533 # Extra frames present to be smoothed. Obtain averaged uniform numpy array
525534 elif smoothframes :
526535
536+ print ('sigbytes:' )
537+ print (sigbytes )
538+
527539 # Allocate memory for signal
528540 sig = np .empty ([readlen , nsig ], dtype = 'int' )
529541
@@ -537,6 +549,9 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
537549 sig [:, ch ] += sigbytes [skew [ch ]* tsampsperframe + sum (([0 ] + sampsperframe )[:ch + 1 ]) + frame ::tsampsperframe ]
538550 sig = (sig / sampsperframe )
539551
552+ print ('sig after smoothing:' )
553+ print (sig )
554+
540555 # Extra frames present without wanting smoothing. Return all expanded samples.
541556 else :
542557 # List of 1d numpy arrays
@@ -549,11 +564,11 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
549564 # chansig[frame::sampsperframe[ch]] = sigbytes[skew[ch]*tsampsperframe+sum(([0] + sampsperframe)[:ch + 1]) + frame::tsampsperframe]
550565 # sig.append(chansig)
551566
552- ch_indices = np .concatenate ([np .array (range (sampsperframe [ch ])) + tsampsperframe * framenum for framenum in range (int (len (sigflat )/ tsampsperframe ))])
567+ ch_indices = np .concatenate ([np .array (range (sampsperframe [ch ])) + tsampsperframe * framenum for framenum in range (int (len (sigbytes )/ tsampsperframe ))])
553568 sig .append (sigbytes [ch_indices ])
554569
555570 # Skew the signal
556- sig = skewsig (sig , skew , nsig , readlen , sampsperframe )
571+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace , sampsperframe )
557572
558573 # Integrity check of signal shape after reading
559574 checksigdims (sig , readlen , nsig , sampsperframe )
@@ -753,8 +768,11 @@ def bytes2samples(sigbytes, nsamp, fmt):
753768
754769
755770# Skew the signal and shave off extra samples
756- def skewsig (sig , skew , nsig , readlen , sampsperframe = None ):
757-
771+ def skewsig (sig , skew , nsig , readlen , fmt , nanreplace , sampsperframe = None ):
772+ """
773+ fmt is just for the correct nan value.
774+ sampsperframe is only used for skewing expanded signals.
775+ """
758776 if max (skew )> 0 :
759777
760778 # Expanded frame samples. List of arrays.
0 commit comments