@@ -356,10 +356,18 @@ def rdsegment(filename, dirname, pbdir, nsig, fmt, siglen, byteoffset,
356
356
# Return each sample in signals with multiple samples/frame, without smoothing.
357
357
# Return a list of numpy arrays for each signal.
358
358
else :
359
- signals = []
359
+ signals = [None ] * len ( channels )
360
360
361
361
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
+
363
371
364
372
365
373
return signals
@@ -420,11 +428,12 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
420
428
if fmt in ['212' , '310' , '311' ]:
421
429
# Extra number of bytes to append onto the bytes read from the dat file.
422
430
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' )))
425
434
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' )))
428
437
else :
429
438
sigbytes = getdatbytes (filename , dirname , pbdir , fmt , startbyte , nreadsamples )
430
439
@@ -448,7 +457,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
448
457
sig = sig .reshape (- 1 , nsig )
449
458
450
459
# Skew the signal
451
- sig = skewsig (sig , skew , nsig , readlen )
460
+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
452
461
453
462
# Extra frames present to be smoothed. Obtain averaged uniform numpy array
454
463
elif smoothframes :
@@ -461,7 +470,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
461
470
sigflat = sigflat [blockfloorsamples :]
462
471
463
472
# Smoothed signal
464
- sig = np .zeros (int (len (sigflat )/ tsampsperframe ) , nsig )
473
+ sig = np .zeros (( int (len (sigflat )/ tsampsperframe ) , nsig ) )
465
474
466
475
# Transfer and average samples
467
476
for ch in range (nsig ):
@@ -473,7 +482,7 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
473
482
sig = (sig / sampsperframe )
474
483
475
484
# Skew the signal
476
- sig = skewsig (sig , skew , nsig , readlen )
485
+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
477
486
478
487
# Extra frames present without wanting smoothing. Return all expanded samples.
479
488
else :
@@ -490,11 +499,11 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
490
499
# Transfer over samples
491
500
for ch in range (nsig ):
492
501
# 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 ))]) )
494
503
sig .append (sigflat [ch_indices ])
495
504
496
505
# Skew the signal
497
- sig = skewsig (sig , skew , nsig , readlen , sampsperframe )
506
+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace , sampsperframe )
498
507
499
508
elif fmt == '310' :
500
509
pass
@@ -518,12 +527,15 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
518
527
sig = sigbytes .reshape (- 1 , nsig )
519
528
520
529
# Skew the signal
521
- sig = skewsig (sig , skew , nsig , readlen )
530
+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace )
522
531
523
532
524
533
# Extra frames present to be smoothed. Obtain averaged uniform numpy array
525
534
elif smoothframes :
526
535
536
+ print ('sigbytes:' )
537
+ print (sigbytes )
538
+
527
539
# Allocate memory for signal
528
540
sig = np .empty ([readlen , nsig ], dtype = 'int' )
529
541
@@ -537,6 +549,9 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
537
549
sig [:, ch ] += sigbytes [skew [ch ]* tsampsperframe + sum (([0 ] + sampsperframe )[:ch + 1 ]) + frame ::tsampsperframe ]
538
550
sig = (sig / sampsperframe )
539
551
552
+ print ('sig after smoothing:' )
553
+ print (sig )
554
+
540
555
# Extra frames present without wanting smoothing. Return all expanded samples.
541
556
else :
542
557
# List of 1d numpy arrays
@@ -549,11 +564,11 @@ def rddat(filename, dirname, pbdir, fmt, nsig,
549
564
# chansig[frame::sampsperframe[ch]] = sigbytes[skew[ch]*tsampsperframe+sum(([0] + sampsperframe)[:ch + 1]) + frame::tsampsperframe]
550
565
# sig.append(chansig)
551
566
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 ))])
553
568
sig .append (sigbytes [ch_indices ])
554
569
555
570
# Skew the signal
556
- sig = skewsig (sig , skew , nsig , readlen , sampsperframe )
571
+ sig = skewsig (sig , skew , nsig , readlen , fmt , nanreplace , sampsperframe )
557
572
558
573
# Integrity check of signal shape after reading
559
574
checksigdims (sig , readlen , nsig , sampsperframe )
@@ -753,8 +768,11 @@ def bytes2samples(sigbytes, nsamp, fmt):
753
768
754
769
755
770
# 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
+ """
758
776
if max (skew )> 0 :
759
777
760
778
# Expanded frame samples. List of arrays.
0 commit comments