brainflow 5.12.1__py3-none-any.whl → 5.13.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. brainflow/board_shim.py +7 -7
  2. brainflow/data_filter.py +62 -64
  3. brainflow/lib/BoardController.dll +0 -0
  4. brainflow/lib/BoardController32.dll +0 -0
  5. brainflow/lib/BrainBitLib.dll +0 -0
  6. brainflow/lib/BrainBitLib32.dll +0 -0
  7. brainflow/lib/BrainFlowBluetooth.dll +0 -0
  8. brainflow/lib/BrainFlowBluetooth32.dll +0 -0
  9. brainflow/lib/DataHandler.dll +0 -0
  10. brainflow/lib/DataHandler32.dll +0 -0
  11. brainflow/lib/GanglionLib.dll +0 -0
  12. brainflow/lib/GanglionLib32.dll +0 -0
  13. brainflow/lib/MLModule.dll +0 -0
  14. brainflow/lib/MuseLib.dll +0 -0
  15. brainflow/lib/MuseLib32.dll +0 -0
  16. brainflow/lib/gForceSDKWrapper.dll +0 -0
  17. brainflow/lib/gForceSDKWrapper32.dll +0 -0
  18. brainflow/lib/libBoardController.dylib +0 -0
  19. brainflow/lib/libBoardController.so +0 -0
  20. brainflow/lib/libBrainBitLib.dylib +0 -0
  21. brainflow/lib/libBrainBitLib.so +0 -0
  22. brainflow/lib/libBrainFlowBluetooth.dylib +0 -0
  23. brainflow/lib/libBrainFlowBluetooth.so +0 -0
  24. brainflow/lib/libDataHandler.dylib +0 -0
  25. brainflow/lib/libDataHandler.so +0 -0
  26. brainflow/lib/libGanglionLib.dylib +0 -0
  27. brainflow/lib/libGanglionLib.so +0 -0
  28. brainflow/lib/libMLModule.dylib +0 -0
  29. brainflow/lib/libMLModule.so +0 -0
  30. brainflow/lib/libMuseLib.dylib +0 -0
  31. brainflow/lib/libMuseLib.so +0 -0
  32. brainflow/lib/libsimpleble-c.dylib +0 -0
  33. brainflow/lib/libsimpleble-c.so +0 -0
  34. brainflow/lib/simpleble-c.dll +0 -0
  35. brainflow/lib/simpleble-c32.dll +0 -0
  36. brainflow/ml_model.py +2 -3
  37. {brainflow-5.12.1.dist-info → brainflow-5.13.1.dist-info}/METADATA +2 -2
  38. brainflow-5.13.1.dist-info/RECORD +60 -0
  39. {brainflow-5.12.1.dist-info → brainflow-5.13.1.dist-info}/WHEEL +1 -1
  40. brainflow-5.12.1.dist-info/RECORD +0 -60
  41. {brainflow-5.12.1.dist-info → brainflow-5.13.1.dist-info}/LICENSE.txt +0 -0
  42. {brainflow-5.12.1.dist-info → brainflow-5.13.1.dist-info}/top_level.txt +0 -0
  43. {brainflow-5.12.1.dist-info → brainflow-5.13.1.dist-info}/zip-safe +0 -0
brainflow/board_shim.py CHANGED
@@ -10,7 +10,6 @@ import numpy
10
10
  import pkg_resources
11
11
  from brainflow.exit_codes import BrainFlowExitCodes, BrainFlowError
12
12
  from brainflow.utils import LogLevels
13
- from nptyping import NDArray, Float64
14
13
  from numpy.ctypeslib import ndpointer
15
14
 
16
15
 
@@ -74,6 +73,7 @@ class BoardIds(enum.IntEnum):
74
73
  AAVAA_V3_BOARD = 53 #:
75
74
  EXPLORE_PLUS_8_CHAN_BOARD = 54 #:
76
75
  EXPLORE_PLUS_32_CHAN_BOARD = 55 #:
76
+ PIEEG_BOARD = 56 #:
77
77
 
78
78
 
79
79
  class IpProtocolTypes(enum.IntEnum):
@@ -777,7 +777,7 @@ class BoardShim(object):
777
777
  :type board_id: int
778
778
  :return: presets for this board id
779
779
  :rtype: List[str]
780
- :raises BrainFlowError
780
+ :raises BrainFlowError: In case of internal error or invalid args
781
781
  """
782
782
 
783
783
  num_presets = numpy.zeros(1).astype(numpy.int32)
@@ -795,7 +795,7 @@ class BoardShim(object):
795
795
 
796
796
  :return: version
797
797
  :rtype: str
798
- :raises BrainFlowError
798
+ :raises BrainFlowError: In case of internal error or invalid args
799
799
  """
800
800
  string = numpy.zeros(64).astype(numpy.ubyte)
801
801
  string_len = numpy.zeros(1).astype(numpy.int32)
@@ -1266,7 +1266,7 @@ class BoardShim(object):
1266
1266
  if res != BrainFlowExitCodes.STATUS_OK.value:
1267
1267
  raise BrainFlowError('unable to release streaming session', res)
1268
1268
 
1269
- def get_current_board_data(self, num_samples: int, preset: int = BrainFlowPresets.DEFAULT_PRESET) -> NDArray[Float64]:
1269
+ def get_current_board_data(self, num_samples: int, preset: int = BrainFlowPresets.DEFAULT_PRESET):
1270
1270
  """Get specified amount of data or less if there is not enough data, doesnt remove data from ringbuffer
1271
1271
 
1272
1272
  :param num_samples: max number of samples
@@ -1274,7 +1274,7 @@ class BoardShim(object):
1274
1274
  :param preset: preset
1275
1275
  :type preset: int
1276
1276
  :return: latest data from a board
1277
- :rtype: NDArray[Float64]
1277
+ :rtype: NDArray[Shape["*, *"], Float64]
1278
1278
  """
1279
1279
 
1280
1280
  package_length = BoardShim.get_num_rows(self._master_board_id, preset)
@@ -1345,7 +1345,7 @@ class BoardShim(object):
1345
1345
  raise BrainFlowError('unable to check session status', res)
1346
1346
  return bool(prepared[0])
1347
1347
 
1348
- def get_board_data(self, num_samples=None, preset: int = BrainFlowPresets.DEFAULT_PRESET) -> NDArray[Float64]:
1348
+ def get_board_data(self, num_samples=None, preset: int = BrainFlowPresets.DEFAULT_PRESET):
1349
1349
  """Get board data and remove data from ringbuffer
1350
1350
 
1351
1351
  :param num_samples: number of packages to get
@@ -1353,7 +1353,7 @@ class BoardShim(object):
1353
1353
  :param preset: preset
1354
1354
  :type preset: int
1355
1355
  :return: all data from a board if num_samples is None, num_samples packages or less if not None
1356
- :rtype: NDArray[Float64]
1356
+ :rtype: NDArray[Shape["*, *"], Float64]
1357
1357
  """
1358
1358
 
1359
1359
  data_size = self.get_board_data_count(preset)
brainflow/data_filter.py CHANGED
@@ -9,7 +9,6 @@ import numpy
9
9
  import pkg_resources
10
10
  from brainflow.exit_codes import BrainFlowExitCodes, BrainFlowError
11
11
  from brainflow.utils import check_memory_layout_row_major, LogLevels
12
- from nptyping import NDArray, Float64, Complex128
13
12
  from numpy.ctypeslib import ndpointer
14
13
 
15
14
 
@@ -583,12 +582,12 @@ class DataFilter(object):
583
582
  raise BrainFlowError('unable to redirect logs to a file', res)
584
583
 
585
584
  @classmethod
586
- def perform_lowpass(cls, data: NDArray[Float64], sampling_rate: int, cutoff: float, order: int, filter_type: int,
585
+ def perform_lowpass(cls, data, sampling_rate: int, cutoff: float, order: int, filter_type: int,
587
586
  ripple: float) -> None:
588
587
  """apply low pass filter to provided data
589
588
 
590
589
  :param data: data to filter, filter works in-place
591
- :type data: NDArray[Float64]
590
+ :type data: NDArray[Shape["*"], Float64]
592
591
  :param sampling_rate: board's sampling rate
593
592
  :type sampling_rate: int
594
593
  :param cutoff: cutoff frequency
@@ -611,12 +610,12 @@ class DataFilter(object):
611
610
  raise BrainFlowError('unable to perform low pass filter', res)
612
611
 
613
612
  @classmethod
614
- def perform_highpass(cls, data: NDArray[Float64], sampling_rate: int, cutoff: float, order: int, filter_type: int,
613
+ def perform_highpass(cls, data, sampling_rate: int, cutoff: float, order: int, filter_type: int,
615
614
  ripple: float) -> None:
616
615
  """apply high pass filter to provided data
617
616
 
618
617
  :param data: data to filter, filter works in-place
619
- :type data: NDArray[Float64]
618
+ :type data: NDArray[Shape["*"], Float64]
620
619
  :param sampling_rate: board's sampling rate
621
620
  :type sampling_rate: int
622
621
  :param cutoff: cutoff frequency
@@ -639,12 +638,12 @@ class DataFilter(object):
639
638
  raise BrainFlowError('unable to apply high pass filter', res)
640
639
 
641
640
  @classmethod
642
- def perform_bandpass(cls, data: NDArray[Float64], sampling_rate: int, start_freq: float,
641
+ def perform_bandpass(cls, data, sampling_rate: int, start_freq: float,
643
642
  stop_freq: float, order: int, filter_type: int, ripple: float) -> None:
644
643
  """apply band pass filter to provided data
645
644
 
646
645
  :param data: data to filter, filter works in-place
647
- :type data: NDArray[Float64]
646
+ :type data: NDArray[Shape["*"], Float64]
648
647
  :param sampling_rate: board's sampling rate
649
648
  :type sampling_rate: int
650
649
  :param start_freq: start frequency
@@ -669,12 +668,12 @@ class DataFilter(object):
669
668
  raise BrainFlowError('unable to apply band pass filter', res)
670
669
 
671
670
  @classmethod
672
- def perform_bandstop(cls, data: NDArray[Float64], sampling_rate: int, start_freq: float,
671
+ def perform_bandstop(cls, data, sampling_rate: int, start_freq: float,
673
672
  stop_freq: float, order: int, filter_type: int, ripple: float) -> None:
674
673
  """apply band stop filter to provided data
675
674
 
676
675
  :param data: data to filter, filter works in-place
677
- :type data: NDArray[Float64]
676
+ :type data: NDArray[Shape["*"], Float64]
678
677
  :param sampling_rate: board's sampling rate
679
678
  :type sampling_rate: int
680
679
  :param start_freq: start frequency
@@ -699,11 +698,11 @@ class DataFilter(object):
699
698
  raise BrainFlowError('unable to apply band stop filter', res)
700
699
 
701
700
  @classmethod
702
- def remove_environmental_noise(cls, data: NDArray[Float64], sampling_rate: int, noise_type: float) -> None:
701
+ def remove_environmental_noise(cls, data, sampling_rate: int, noise_type: float) -> None:
703
702
  """remove env noise using notch filter
704
703
 
705
704
  :param data: data to filter, filter works in-place
706
- :type data: NDArray[Float64]
705
+ :type data: NDArray[Shape["*"], Float64]
707
706
  :param sampling_rate: board's sampling rate
708
707
  :type sampling_rate: int
709
708
  :param noise_type: noise type
@@ -719,11 +718,11 @@ class DataFilter(object):
719
718
  raise BrainFlowError('unable to apply notch filter', res)
720
719
 
721
720
  @classmethod
722
- def perform_rolling_filter(cls, data: NDArray[Float64], period: int, operation: int) -> None:
721
+ def perform_rolling_filter(cls, data, period: int, operation: int) -> None:
723
722
  """smooth data using moving average or median
724
723
 
725
724
  :param data: data to smooth, it works in-place
726
- :type data: NDArray[Float64]
725
+ :type data: NDArray[Shape["*"], Float64]
727
726
  :param period: window size
728
727
  :type period: int
729
728
  :param operation: int value from AggOperation enum
@@ -739,11 +738,11 @@ class DataFilter(object):
739
738
  raise BrainFlowError('unable to smooth data', res)
740
739
 
741
740
  @classmethod
742
- def calc_stddev(cls, data: NDArray[Float64]):
741
+ def calc_stddev(cls, data):
743
742
  """calc stddev
744
743
 
745
744
  :param data: input array
746
- :type data: NDArray[Float64]
745
+ :type data: NDArray[Shape["*"], Float64]
747
746
  :return: stddev
748
747
  :rtype: float
749
748
  """
@@ -755,11 +754,11 @@ class DataFilter(object):
755
754
  return output[0]
756
755
 
757
756
  @classmethod
758
- def get_railed_percentage(cls, data: NDArray[Float64], gain: int):
757
+ def get_railed_percentage(cls, data, gain: int):
759
758
  """get railed percentage
760
759
 
761
760
  :param data: input array
762
- :type data: NDArray[Float64]
761
+ :type data: NDArray[Shape["*"], Float64]
763
762
  :param gain: gain
764
763
  :type gain: int
765
764
  :return: railed percentage
@@ -773,14 +772,14 @@ class DataFilter(object):
773
772
  return output[0]
774
773
 
775
774
  @classmethod
776
- def get_oxygen_level(cls, ppg_ir: NDArray[Float64], ppg_red: NDArray[Float64], sampling_rate: int,
775
+ def get_oxygen_level(cls, ppg_ir, ppg_red, sampling_rate: int,
777
776
  coef1=1.5958422, coef2=-34.6596622, coef3=112.6898759):
778
777
  """get oxygen level from ppg
779
778
 
780
779
  :param ppg_ir: input array
781
- :type ppg_ir: NDArray[Float64]
780
+ :type ppg_ir: NDArray[Shape["*"], Float64]
782
781
  :param ppg_red: input array
783
- :type ppg_red: NDArray[Float64]
782
+ :type ppg_red: NDArray[Shape["*"], Float64]
784
783
  :param sampling_rate: sampling rate
785
784
  :type sampling_rate: int
786
785
  :return: oxygen level
@@ -798,13 +797,13 @@ class DataFilter(object):
798
797
  return output[0]
799
798
 
800
799
  @classmethod
801
- def get_heart_rate(cls, ppg_ir: NDArray[Float64], ppg_red: NDArray[Float64], sampling_rate: int, fft_size: int):
800
+ def get_heart_rate(cls, ppg_ir, ppg_red, sampling_rate: int, fft_size: int):
802
801
  """get heart rate
803
802
 
804
803
  :param ppg_ir: input array
805
- :type ppg_ir: NDArray[Float64]
804
+ :type ppg_ir: NDArray[Shape["*"], Float64]
806
805
  :param ppg_red: input array
807
- :type ppg_red: NDArray[Float64]
806
+ :type ppg_red: NDArray[Shape["*"], Float64]
808
807
  :param sampling_rate: sampling rate
809
808
  :type sampling_rate: int
810
809
  :param fft_size: recommended 8192
@@ -824,17 +823,17 @@ class DataFilter(object):
824
823
  return output[0]
825
824
 
826
825
  @classmethod
827
- def perform_downsampling(cls, data: NDArray[Float64], period: int, operation: int) -> NDArray[Float64]:
826
+ def perform_downsampling(cls, data, period: int, operation: int):
828
827
  """perform data downsampling, it doesnt apply lowpass filter for you, it just aggregates several data points
829
828
 
830
829
  :param data: initial data
831
- :type data: NDArray[Float64]
830
+ :type data: NDArray[Shape["*"], Float64]
832
831
  :param period: downsampling period
833
832
  :type period: int
834
833
  :param operation: int value from AggOperation enum
835
834
  :type operation: int
836
835
  :return: downsampled data
837
- :rtype: NDArray[Float64]
836
+ :rtype: NDArray[Shape["*"], Float64]
838
837
  """
839
838
  check_memory_layout_row_major(data, 1)
840
839
  if not isinstance(period, int):
@@ -853,12 +852,12 @@ class DataFilter(object):
853
852
  return downsampled_data
854
853
 
855
854
  @classmethod
856
- def perform_wavelet_transform(cls, data: NDArray[Float64], wavelet: int, decomposition_level: int,
855
+ def perform_wavelet_transform(cls, data, wavelet: int, decomposition_level: int,
857
856
  extension_type=WaveletExtensionTypes.SYMMETRIC) -> Tuple:
858
857
  """perform wavelet transform
859
858
 
860
859
  :param data: initial data
861
- :type data: NDArray[Float64]
860
+ :type data: NDArray[Shape["*"], Float64]
862
861
  :param wavelet: use WaveletTypes enum
863
862
  :type wavelet: int
864
863
  :param decomposition_level: level of decomposition
@@ -881,11 +880,11 @@ class DataFilter(object):
881
880
  return wavelet_coeffs[0: sum(lengths)], lengths
882
881
 
883
882
  @classmethod
884
- def restore_data_from_wavelet_detailed_coeffs(cls, data: NDArray[Float64], wavelet, decomposition_level, level_to_restore):
883
+ def restore_data_from_wavelet_detailed_coeffs(cls, data, wavelet, decomposition_level, level_to_restore):
885
884
  """restore data from a single wavelet coeff
886
885
 
887
886
  :param data: initial data
888
- :type data: NDArray[Float64]
887
+ :type data: NDArray[Shape["*"], Float64]
889
888
  :param wavelet: use WaveletTypes enum
890
889
  :type wavelet: int
891
890
  :param decomposition_level: level of decomposition
@@ -893,7 +892,7 @@ class DataFilter(object):
893
892
  :param level_to_restore: level of coeffs
894
893
  :type level_to_restore: int
895
894
  :return:
896
- :rtype: NDArray[Float64]
895
+ :rtype: NDArray[Shape["*"], Float64]
897
896
  """
898
897
  check_memory_layout_row_major(data, 1)
899
898
 
@@ -906,11 +905,11 @@ class DataFilter(object):
906
905
  return output
907
906
 
908
907
  @classmethod
909
- def detect_peaks_z_score(cls, data: NDArray[Float64], lag=5, threshold=3.5, influence=0.1):
908
+ def detect_peaks_z_score(cls, data, lag=5, threshold=3.5, influence=0.1):
910
909
  """z score algorithm for peak detection
911
910
 
912
911
  :param data: initial data
913
- :type data: NDArray[Float64]
912
+ :type data: NDArray[Shape["*"], Float64]
914
913
  :param lag: window size for averaging
915
914
  :type lag: int
916
915
  :param threshold: in stddev units
@@ -918,7 +917,7 @@ class DataFilter(object):
918
917
  :param influence: contribution of peaks to mean value, between 0 and 1
919
918
  :type influence: float
920
919
  :return:
921
- :rtype: NDArray[Float64]
920
+ :rtype: NDArray[Shape["*"], Float64]
922
921
  """
923
922
  check_memory_layout_row_major(data, 1)
924
923
 
@@ -932,8 +931,7 @@ class DataFilter(object):
932
931
 
933
932
  @classmethod
934
933
  def perform_inverse_wavelet_transform(cls, wavelet_output: Tuple, original_data_len: int, wavelet: int,
935
- decomposition_level: int, extension_type=WaveletExtensionTypes.SYMMETRIC) -> \
936
- NDArray[Float64]:
934
+ decomposition_level: int, extension_type=WaveletExtensionTypes.SYMMETRIC):
937
935
  """perform wavelet transform
938
936
 
939
937
  :param wavelet_output: tuple of wavelet_coeffs and array with lengths
@@ -947,7 +945,7 @@ class DataFilter(object):
947
945
  :param extension_type: extension type, use WaveletExtensionTypes
948
946
  :type externsion_type: int
949
947
  :return: restored data
950
- :rtype: NDArray[Float64]
948
+ :rtype: NDArray[Shape["*"], Float64]
951
949
  """
952
950
  original_data = numpy.zeros(original_data_len).astype(numpy.float64)
953
951
  res = DataHandlerDLL.get_instance().perform_inverse_wavelet_transform(wavelet_output[0], original_data_len,
@@ -960,7 +958,7 @@ class DataFilter(object):
960
958
  return original_data
961
959
 
962
960
  @classmethod
963
- def perform_wavelet_denoising(cls, data: NDArray[Float64], wavelet: int, decomposition_level: int,
961
+ def perform_wavelet_denoising(cls, data, wavelet: int, decomposition_level: int,
964
962
  wavelet_denoising=WaveletDenoisingTypes.SURESHRINK,
965
963
  threshold=ThresholdTypes.HARD,
966
964
  extension_type=WaveletExtensionTypes.SYMMETRIC,
@@ -968,7 +966,7 @@ class DataFilter(object):
968
966
  """perform wavelet denoising
969
967
 
970
968
  :param data: data to denoise
971
- :type data: NDArray[Float64]
969
+ :type data: NDArray[Shape["*"], Float64]
972
970
  :param wavelet: use WaveletTypes enum
973
971
  :type wavelet: int
974
972
  :param decomposition_level: decomposition level
@@ -991,13 +989,13 @@ class DataFilter(object):
991
989
  raise BrainFlowError('unable to denoise data', res)
992
990
 
993
991
  @classmethod
994
- def get_csp(cls, data: NDArray[Float64], labels: NDArray[Float64]) -> Tuple:
992
+ def get_csp(cls, data, labels) -> Tuple:
995
993
  """calculate filters and the corresponding eigenvalues using the Common Spatial Patterns
996
994
 
997
995
  :param data: [epochs x channels x times]-shaped 3D array of data for two classes
998
- :type data: NDArray[Float64]
996
+ :type data: NDArray[Shape["*, *, *"], Float64]
999
997
  :param labels: n_epochs-length 1D array of zeros and ones that assigns class labels for each epoch. Zero corresponds to the first class
1000
- :type labels: NDArray[Int64]
998
+ :type labels: NDArray[Shape["*"], Float64]
1001
999
  :return: [channels x channels]-shaped 2D array of filters and [channels]-length 1D array of the corresponding eigenvalues
1002
1000
  :rtype: Tuple
1003
1001
  """
@@ -1024,14 +1022,14 @@ class DataFilter(object):
1024
1022
  return output_filters, output_eigenvalues
1025
1023
 
1026
1024
  @classmethod
1027
- def get_window(cls, window_function: int, window_len: int) -> NDArray[Float64]:
1025
+ def get_window(cls, window_function: int, window_len: int):
1028
1026
  """perform data windowing
1029
1027
 
1030
1028
  :param window_function: window function
1031
1029
  :type window: int
1032
1030
  :param window_len: len of the window function
1033
1031
  :return: numpy array, len of the array is the same as data
1034
- :rtype: NDArray[Float64]
1032
+ :rtype: NDArray[Shape["*"], Float64]
1035
1033
  """
1036
1034
  window_data = numpy.zeros(int(window_len)).astype(numpy.float64)
1037
1035
  res = DataHandlerDLL.get_instance().get_window(window_function, window_len, window_data)
@@ -1041,15 +1039,15 @@ class DataFilter(object):
1041
1039
  return window_data
1042
1040
 
1043
1041
  @classmethod
1044
- def perform_fft(cls, data: NDArray[Float64], window: int) -> NDArray[Complex128]:
1042
+ def perform_fft(cls, data, window: int):
1045
1043
  """perform direct fft
1046
1044
 
1047
1045
  :param data: data for fft, len of data must be even
1048
- :type data: NDArray[Float64]
1046
+ :type data: NDArray[Shape["*"], Float64]
1049
1047
  :param window: window function
1050
1048
  :type window: int
1051
1049
  :return: numpy array of complex values, len of this array is N / 2 + 1
1052
- :rtype: NDArray[Complex128]
1050
+ :rtype: NDArray[Shape["*"], Complex128]
1053
1051
  """
1054
1052
 
1055
1053
  check_memory_layout_row_major(data, 1)
@@ -1067,11 +1065,11 @@ class DataFilter(object):
1067
1065
  return output
1068
1066
 
1069
1067
  @classmethod
1070
- def get_psd(cls, data: NDArray[Float64], sampling_rate: int, window: int) -> Tuple:
1068
+ def get_psd(cls, data, sampling_rate: int, window: int) -> Tuple:
1071
1069
  """calculate PSD
1072
1070
 
1073
1071
  :param data: data to calc psd, len of data must be even
1074
- :type data: NDArray[Float64]
1072
+ :type data: NDArray[Shape["*"], Float64]
1075
1073
  :param sampling_rate: sampling rate
1076
1074
  :type sampling_rate: int
1077
1075
  :param window: window function
@@ -1091,11 +1089,11 @@ class DataFilter(object):
1091
1089
  return ampls, freqs
1092
1090
 
1093
1091
  @classmethod
1094
- def get_psd_welch(cls, data: NDArray[Float64], nfft: int, overlap: int, sampling_rate: int, window: int) -> Tuple:
1092
+ def get_psd_welch(cls, data, nfft: int, overlap: int, sampling_rate: int, window: int) -> Tuple:
1095
1093
  """calculate PSD using Welch method
1096
1094
 
1097
1095
  :param data: data to calc psd
1098
- :type data: NDArray[Float64]
1096
+ :type data: NDArray[Shape["*"], Float64]
1099
1097
  :param nfft: FFT Window size, must be even
1100
1098
  :type nfft: int
1101
1099
  :param overlap: overlap of FFT Windows, must be between 0 and nfft
@@ -1120,11 +1118,11 @@ class DataFilter(object):
1120
1118
  return ampls, freqs
1121
1119
 
1122
1120
  @classmethod
1123
- def detrend(cls, data: NDArray[Float64], detrend_operation: int) -> None:
1121
+ def detrend(cls, data, detrend_operation: int) -> None:
1124
1122
  """detrend data
1125
1123
 
1126
1124
  :param data: data to calc psd
1127
- :type data: NDArray[Float64]
1125
+ :type data: NDArray[Shape["*"], Float64]
1128
1126
  :param detrend_operation: Type of detrend operation
1129
1127
  :type detrend_operation: int
1130
1128
  """
@@ -1156,11 +1154,11 @@ class DataFilter(object):
1156
1154
  return band_power[0]
1157
1155
 
1158
1156
  @classmethod
1159
- def get_avg_band_powers(cls, data: NDArray, channels: List, sampling_rate: int, apply_filter: bool) -> Tuple:
1157
+ def get_avg_band_powers(cls, data, channels: List, sampling_rate: int, apply_filter: bool) -> Tuple:
1160
1158
  """calculate avg and stddev of BandPowers across all channels, bands are 1-4,4-8,8-13,13-30,30-50
1161
1159
 
1162
1160
  :param data: 2d array for calculation
1163
- :type data: NDArray
1161
+ :type data: NDArray[Shape["*, *"], Float64]
1164
1162
  :param channels: channels - rows of data array which should be used for calculation
1165
1163
  :type channels: List
1166
1164
  :param sampling_rate: sampling rate
@@ -1175,12 +1173,12 @@ class DataFilter(object):
1175
1173
  return cls.get_custom_band_powers(data, bands, channels, sampling_rate, apply_filter)
1176
1174
 
1177
1175
  @classmethod
1178
- def get_custom_band_powers(cls, data: NDArray, bands: List, channels: List, sampling_rate: int,
1176
+ def get_custom_band_powers(cls, data, bands: List, channels: List, sampling_rate: int,
1179
1177
  apply_filter: bool) -> Tuple:
1180
1178
  """calculate avg and stddev of BandPowers across selected channels
1181
1179
 
1182
1180
  :param data: 2d array for calculation
1183
- :type data: NDArray
1181
+ :type data: NDArray[Shape["*, *"], Float64]
1184
1182
  :param bands: List of typles with bands to use. E.g [(1.5, 4.0), (4.0, 8.0), (8.0, 13.0), (13.0, 30.0), (30.0, 45.0)]
1185
1183
  :type bands: List
1186
1184
  :param channels: channels - rows of data array which should be used for calculation
@@ -1218,11 +1216,11 @@ class DataFilter(object):
1218
1216
  return avg_bands, stddev_bands
1219
1217
 
1220
1218
  @classmethod
1221
- def perform_ica(cls, data: NDArray, num_components: int, channels=None) -> Tuple:
1219
+ def perform_ica(cls, data, num_components: int, channels=None) -> Tuple:
1222
1220
  """perform ICA
1223
1221
 
1224
1222
  :param data: 2d array for calculation
1225
- :type data: NDArray
1223
+ :type data: NDArray[Shape["*, *"], Float64]
1226
1224
  :param num_components: number of components
1227
1225
  :type num_components: int
1228
1226
  :param channels: channels - rows of data array which should be used for calculation, if None use all
@@ -1265,13 +1263,13 @@ class DataFilter(object):
1265
1263
  return w, k, a, s
1266
1264
 
1267
1265
  @classmethod
1268
- def perform_ifft(cls, data: NDArray[Complex128]) -> NDArray[Float64]:
1266
+ def perform_ifft(cls, data):
1269
1267
  """perform inverse fft
1270
1268
 
1271
1269
  :param data: data from fft
1272
- :type data: NDArray[Complex128]
1270
+ :type data: NDArray[Shape["*"], Complex128]
1273
1271
  :return: restored data
1274
- :rtype: NDArray[Float64]
1272
+ :rtype: NDArray[Shape["*"], Float64]
1275
1273
  """
1276
1274
  temp_re = numpy.zeros(data.shape[0]).astype(numpy.float64)
1277
1275
  temp_im = numpy.zeros(data.shape[0]).astype(numpy.float64)
@@ -1307,7 +1305,7 @@ class DataFilter(object):
1307
1305
  """write data to file, in file data will be transposed
1308
1306
 
1309
1307
  :param data: data to store in a file
1310
- :type data: 2d numpy array
1308
+ :type data: NDArray[Shape["*, *"], Float64]
1311
1309
  :param file_name: file name to store data
1312
1310
  :type file_name: str
1313
1311
  :param file_mode: 'w' to rewrite file or 'a' to append data to file
@@ -1335,7 +1333,7 @@ class DataFilter(object):
1335
1333
  :param file_name: file name to read
1336
1334
  :type file_name: str
1337
1335
  :return: 2d numpy array with data from this file, data will be transposed to original dimensions
1338
- :rtype: 2d numpy array
1336
+ :rtype: NDArray[Shape["*, *"], Float64]
1339
1337
  """
1340
1338
  try:
1341
1339
  file = file_name.encode()
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
brainflow/lib/MuseLib.dll CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
brainflow/ml_model.py CHANGED
@@ -10,7 +10,6 @@ import numpy
10
10
  import pkg_resources
11
11
  from brainflow.board_shim import BrainFlowError, LogLevels
12
12
  from brainflow.exit_codes import BrainFlowExitCodes
13
- from nptyping import NDArray
14
13
  from numpy.ctypeslib import ndpointer
15
14
 
16
15
 
@@ -262,11 +261,11 @@ class MLModel(object):
262
261
  if res != BrainFlowExitCodes.STATUS_OK.value:
263
262
  raise BrainFlowError('unable to release classifier', res)
264
263
 
265
- def predict(self, data: NDArray) -> List:
264
+ def predict(self, data) -> List:
266
265
  """calculate metric from data
267
266
 
268
267
  :param data: input array
269
- :type data: NDArray
268
+ :type data: NDArray[Shape["*"], Float64]
270
269
  :return: metric value
271
270
  :rtype: List
272
271
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: brainflow
3
- Version: 5.12.1
3
+ Version: 5.13.1
4
4
  Summary: Python Binding for BrainFlow
5
5
  Home-page: https://github.com/brainflow-dev/brainflow
6
6
  Author: Andrey Parfenov
@@ -11,7 +11,7 @@ Requires-Python: >=3.5.6
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE.txt
13
13
  Requires-Dist: numpy
14
- Requires-Dist: nptyping ==1.4.4
14
+ Requires-Dist: setuptools
15
15
 
16
16
  <p align="center">
17
17
  <img width="400" height="160" src="https://live.staticflickr.com/65535/49908747533_f359f83610_w.jpg">
@@ -0,0 +1,60 @@
1
+ brainflow/__init__.py,sha256=hLPUIdLE5O5phuo-Er2-Tyu2lGvuRL4bgDbWptWlF8s,172
2
+ brainflow/board_shim.py,sha256=5o_o7MfDJQpCOmSdMGW_WFLDoVELOihq6Bj_NnAEhV8,56930
3
+ brainflow/data_filter.py,sha256=2oWE54olofGOpF7-2aIGYcMoJUzbN-GCw6RLK4piZRY,56269
4
+ brainflow/exit_codes.py,sha256=1Epnek2ZCvpStluIpwyR_ReFAX8CRp-tyfCV_DfzBEw,1449
5
+ brainflow/ml_model.py,sha256=T1RIoFEXZ1cTOb40PyL79pTCdERU5kOKYlJN4DyhvAo,10000
6
+ brainflow/utils.py,sha256=lIkavPF0SuzGpsqxoJohyxmSdffyR8lHZzIBDiWIdPk,995
7
+ brainflow/lib/BoardController.dll,sha256=Qzad8hGU5zz_T51FnbQkV8P69Hw2tn5Q7gPk528u-uU,1824768
8
+ brainflow/lib/BoardController32.dll,sha256=Q4z4ZSNqLUOEZgTBcQ4cKmQngHA0sJd8HbCIAsTgA7M,1553920
9
+ brainflow/lib/BrainBitLib.dll,sha256=5LwYhZdAH1bBAfxVYABzvDxp5Gf3hK-y1AvSECR9Q0U,202240
10
+ brainflow/lib/BrainBitLib32.dll,sha256=zfU59cGlD3LH3dX85rqhJAHvAi3WmfoOg9I1HDM9UtE,156160
11
+ brainflow/lib/BrainFlowBluetooth.dll,sha256=3pjjpAgL1LTq37dC2te-2zkkpGotpu_SXz3W4xd92KY,459264
12
+ brainflow/lib/BrainFlowBluetooth32.dll,sha256=XAbK0t62-v_WKjpOHcTLu87v9kt6S-7AFB9i4Ac3J_g,337408
13
+ brainflow/lib/DataHandler.dll,sha256=RanPDQe_ieIqDyhmXwBX5ETVzi9wrh-h-iYvBPeKuqU,999424
14
+ brainflow/lib/DataHandler32.dll,sha256=MkTMRhiScAST2vx2ub8ZO_-rloC4cnDW1Su0vtBtFNU,807424
15
+ brainflow/lib/GanglionLib.dll,sha256=TsIurVG1bd-rLGyESPSoo0cdv9unJMofgzcqrB9SqOA,197632
16
+ brainflow/lib/GanglionLib32.dll,sha256=RQQHXd1NDuqH2_0djKiJQAqcNOTjiuRaZ4ZtIv9ZBkM,152576
17
+ brainflow/lib/MLModule.dll,sha256=zjocEUv3hbBx-63TR8iLVrKGAGgWHaipTKhAMR9BVf4,435712
18
+ brainflow/lib/MuseLib.dll,sha256=ccP9olxOz0DBhI8H9uJEkmjPRi45LP2L3SqER9Ss6sk,215552
19
+ brainflow/lib/MuseLib32.dll,sha256=tLVz0C81u28UHfUpiNyffFvqyq_L70W26gspF6lfhf8,167936
20
+ brainflow/lib/Unicorn.dll,sha256=0-4uNSkVrBI6-CM0OkmqV96L6Uc31iJ7Xb7qK_XzNUY,174080
21
+ brainflow/lib/eego-SDK.dll,sha256=_iLR51S5VFNA7R9XoqFrjqAaGZrEvI0oxqCdOGi-mAk,683520
22
+ brainflow/lib/eego-SDK32.dll,sha256=xbMG7bdTjM4D-BcRwignaPUiGn5B1ZM2eIn7x9u2YPI,590336
23
+ brainflow/lib/gForceSDKWrapper.dll,sha256=-QVBBsYgSFuManVZZGEfWe_MH-FXwrTHUYVK4qHuv8w,291328
24
+ brainflow/lib/gForceSDKWrapper32.dll,sha256=ut8LFEagoH1T91p6pkkNNco9eBwJ6NufzWtnPd-bRqc,227840
25
+ brainflow/lib/gforce32.dll,sha256=-i5O7sQS0oETjtXXMvVn4zL7wmj2xUET_blIIgyZ3FQ,278528
26
+ brainflow/lib/gforce64.dll,sha256=xkyFG6ZqNMtrmsI6Vgv1rpmS8bPCBIDZmGfypUMTldE,343040
27
+ brainflow/lib/libBoardController.dylib,sha256=qxr-h3uOGdPDDD4IIx0j2lyF-cHkQEih1GyQhpq_GdE,3355941
28
+ brainflow/lib/libBoardController.so,sha256=4eEdnBkmeuM9lsaRVqDxkMwp-GZDuXz_fr5WCOzRqOg,2138600
29
+ brainflow/lib/libBrainBitLib.dylib,sha256=HwQWSEYhep_TkcGeTchrgSKfnU7HZTYzSwAN-b5hANE,162721
30
+ brainflow/lib/libBrainBitLib.so,sha256=65fjs6SWRO3iTWElbsoIHes3kUgHq461mDLTUwUEo3M,73680
31
+ brainflow/lib/libBrainFlowBluetooth.dylib,sha256=DP-ZOha1QJplZ-OKU4P3E5Vc6EljxUTnVNuTfePrKO8,199976
32
+ brainflow/lib/libBrainFlowBluetooth.so,sha256=o6TYK5bOGg6CBDgwQHQuWrihSjG2ZEmwhdgXLAykihM,34848
33
+ brainflow/lib/libDataHandler.dylib,sha256=7s1HmRuWRX1kKFwVBHRSiYZxN9pbUYoZVoKa0NGVHfo,2257105
34
+ brainflow/lib/libDataHandler.so,sha256=EgPxsRDVFyQhjjw5O-kPjXdjikyw79eY0wlqzhTHZkg,1002080
35
+ brainflow/lib/libGanglionLib.dylib,sha256=VvSOg7klhGLiNydXUDoDZg7NUB0Req1tUhkNHDdiBFo,145537
36
+ brainflow/lib/libGanglionLib.so,sha256=AEXndZBEf4PdgzYcTmKl5klJaxFYOv_XVYbMUmmir2E,64176
37
+ brainflow/lib/libMLModule.dylib,sha256=Wdncx2kOlYv0LT108r3fmsTPd8PexSgD1-iGXUxdJP4,730142
38
+ brainflow/lib/libMLModule.so,sha256=ODjKHCDSxBLQ0w0A-gxScMR5P3F7taJCzqyGoGKV3jM,361792
39
+ brainflow/lib/libMuseLib.dylib,sha256=IYzzf95ZhRBaUYNcnpJaJiNZs7SDa_kkfXpKleAderM,241773
40
+ brainflow/lib/libMuseLib.so,sha256=VguDdYVWxXXET_WG-exxrVafqtArPYLq0N_uj61zxWA,143728
41
+ brainflow/lib/libeego-SDK.so,sha256=iChntYTOtSxbErwnZDARX_soyQtQiE7mhQc9-uRzqUs,1108192
42
+ brainflow/lib/libneurosdk-shared.dylib,sha256=u8tqrSXOfUBJ6Ln6qOnhkQsCU_ATNt28ujE901hchCM,4508910
43
+ brainflow/lib/libonnxruntime_x64.dylib,sha256=m0-DSzRR39Y3-5rrIAWPNKxlQK6QNKmyj-fc2kyCLLM,20919840
44
+ brainflow/lib/libonnxruntime_x64.so,sha256=SwQQpIw-nofytM-eg7Iub53obG_0jAcFjpQ2MYF8vCo,15086128
45
+ brainflow/lib/libsimpleble-c.dylib,sha256=m8iF-T3AZI92yjU45WtDXr7J4rR0RVeuCvn4kLzWD_Q,940977
46
+ brainflow/lib/libsimpleble-c.so,sha256=7zcU9a-h-VTR3dmsRc4VSiQy19fNexO81LwtN1vtRDM,1090024
47
+ brainflow/lib/libunicorn.so,sha256=dd92CvGljHYJjPPRKp9RhIaecF0papaH7XvOYSTNGjw,103872
48
+ brainflow/lib/libunicorn_raspberry.so,sha256=HbD94odtlROBLhrWfvu_irUNVuuMJ8LEeCHLDE_7rp8,87728
49
+ brainflow/lib/neurosdk-x64.dll,sha256=gRDzloZLQG6ZKmVHztxfGtCODOS4mZ9m0L1bNBWdi0U,1137664
50
+ brainflow/lib/neurosdk-x86.dll,sha256=Z7m1WAcJTel1Adk3ttue6t8Q8gezu6EpOzPvjZ-IaBs,949760
51
+ brainflow/lib/onnxruntime_x64.dll,sha256=HSiLxc-ICCXpquTJIXeZ0JIlfca-KxCU02GpXVMqAJo,7900072
52
+ brainflow/lib/onnxruntime_x86.dll,sha256=IlnyXK8HDCKiSJgf1UAQg5QPJhXfstzc9fKoS2M-bfI,6950312
53
+ brainflow/lib/simpleble-c.dll,sha256=GoMlNHqmTg9bmdOTvABczToZw_WQpJOlTh0OFfu1eOk,557056
54
+ brainflow/lib/simpleble-c32.dll,sha256=xuIC-4wcmuAYt_9yXPOv-Esn4hAAT4A_nUGmzlDUhAE,452096
55
+ brainflow-5.13.1.dist-info/LICENSE.txt,sha256=7pv76HozF_6Ha-gVQGgYSCJb68NvP3WVwI4XA-CHZ1Y,1093
56
+ brainflow-5.13.1.dist-info/METADATA,sha256=w3nmyGxxwaupUGIa9XDmesYH5U0X3vPfmazRAeJ8rW4,5736
57
+ brainflow-5.13.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
58
+ brainflow-5.13.1.dist-info/top_level.txt,sha256=7GjJ0gopuPbhviU8h2x0BXpiJzpS-qrJMe0vnwAFTwA,10
59
+ brainflow-5.13.1.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
60
+ brainflow-5.13.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.44.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,60 +0,0 @@
1
- brainflow/__init__.py,sha256=hLPUIdLE5O5phuo-Er2-Tyu2lGvuRL4bgDbWptWlF8s,172
2
- brainflow/board_shim.py,sha256=xdfFoGJS5Af7TtH1UMk7Ax0dtA-6cRgC5r2_YsVO7Z8,56867
3
- brainflow/data_filter.py,sha256=0EENmJGDcar-vjjveymVxqIyXcCMyptuBupI_FiuM2c,56415
4
- brainflow/exit_codes.py,sha256=1Epnek2ZCvpStluIpwyR_ReFAX8CRp-tyfCV_DfzBEw,1449
5
- brainflow/ml_model.py,sha256=dnKwWznjK44hjJGTnIeYQK_wfJNJy73TGEpoIGBaKMk,10018
6
- brainflow/utils.py,sha256=lIkavPF0SuzGpsqxoJohyxmSdffyR8lHZzIBDiWIdPk,995
7
- brainflow/lib/BoardController.dll,sha256=OGTyGmExUiwwPZOGfHLP2U-tXfum6AE3Hd9h27FfDpo,1832448
8
- brainflow/lib/BoardController32.dll,sha256=arK1KrfT84QVAH_x9pLujK1kI1MFlBJcOcdy_qFjGA8,1549824
9
- brainflow/lib/BrainBitLib.dll,sha256=dacIqEKujZcTwhEUbqwPcuXYkEd6fAlOa_JxDfn9BKs,206336
10
- brainflow/lib/BrainBitLib32.dll,sha256=VciR-7tFTUsG4tLSUwq9w3sL29GRHHjgiycvKKr2msQ,155136
11
- brainflow/lib/BrainFlowBluetooth.dll,sha256=i7X5cXPhUjgga-k-pVAlRLvpn1SceTklC_VluKTN19c,466432
12
- brainflow/lib/BrainFlowBluetooth32.dll,sha256=peHalNSbHskhzR19PHG_DLUX1aFVIfjShwTdGDHBCO8,335360
13
- brainflow/lib/DataHandler.dll,sha256=MzyzmpzDeBgjXStZmGbPV3D1FX1KZzX_kku97_KWcA4,997888
14
- brainflow/lib/DataHandler32.dll,sha256=aD2K60XypYstto7OWqyspzcI-OqBidEhDF3oSnOcb6E,807424
15
- brainflow/lib/GanglionLib.dll,sha256=6vUMijg1VkKbz7f1KhL-0pW27_RtpVckEOpQCDEE6kU,201728
16
- brainflow/lib/GanglionLib32.dll,sha256=ufgaqVuf4fHwLryOihvX3J9eskx8dW959buKAV1EUXU,152064
17
- brainflow/lib/MLModule.dll,sha256=KPkMDEuOrUW-uU5lq-NSwEnDF9DNP3wK2ELhYJhpvSI,441344
18
- brainflow/lib/MuseLib.dll,sha256=Exen3rPRBHxgLxm3Ng9vBHT-qwDJDWNLlg_95wQ9tWo,219136
19
- brainflow/lib/MuseLib32.dll,sha256=1dqsW3pQ_9epntXYIWaa7hqNRSw_QO5tSOnnMOpUU2k,166912
20
- brainflow/lib/Unicorn.dll,sha256=0-4uNSkVrBI6-CM0OkmqV96L6Uc31iJ7Xb7qK_XzNUY,174080
21
- brainflow/lib/eego-SDK.dll,sha256=_iLR51S5VFNA7R9XoqFrjqAaGZrEvI0oxqCdOGi-mAk,683520
22
- brainflow/lib/eego-SDK32.dll,sha256=xbMG7bdTjM4D-BcRwignaPUiGn5B1ZM2eIn7x9u2YPI,590336
23
- brainflow/lib/gForceSDKWrapper.dll,sha256=qLv0ALz9xcyPKwSGEN3NckS_GNmpMWB4q0sfVm-SUCw,295936
24
- brainflow/lib/gForceSDKWrapper32.dll,sha256=_9k8NBaOdQAsC4qvVSpRq7AONjAA6Oms-gKjE69QCGg,228864
25
- brainflow/lib/gforce32.dll,sha256=-i5O7sQS0oETjtXXMvVn4zL7wmj2xUET_blIIgyZ3FQ,278528
26
- brainflow/lib/gforce64.dll,sha256=xkyFG6ZqNMtrmsI6Vgv1rpmS8bPCBIDZmGfypUMTldE,343040
27
- brainflow/lib/libBoardController.dylib,sha256=L8L1bVDd8kj6z0pmZyeE3CcSPORPofX7F1OmHrShmWc,3266136
28
- brainflow/lib/libBoardController.so,sha256=_CHCk_QyTev-2llNRbSl0ricaEz7mrS-EgUcjCdwiOM,2324232
29
- brainflow/lib/libBrainBitLib.dylib,sha256=fKawnBovL5Je41IrfXV3ABM44Wc-U54Eonom2F45R4g,162616
30
- brainflow/lib/libBrainBitLib.so,sha256=ItBeU4LCRhUICzrb97BBdo8gc-JhnHgZLVNZrtUKVXI,172360
31
- brainflow/lib/libBrainFlowBluetooth.dylib,sha256=se8PE0L8Rs0S9IgGURw4WSTKFm-4VQ80TQP5SKl9KsA,180568
32
- brainflow/lib/libBrainFlowBluetooth.so,sha256=V2bObXlS66F60kfoulmVOg05Hrit-TJkcpuhklcETEM,34408
33
- brainflow/lib/libDataHandler.dylib,sha256=ORXce4OcHz0qKG0fah2PwSRPv0YLg6AH0yL_0vPICic,2176168
34
- brainflow/lib/libDataHandler.so,sha256=BcEdVm3DimI9o2r4vdJCBOM8nD-j57xoWCFbT7naLes,1126160
35
- brainflow/lib/libGanglionLib.dylib,sha256=LPmsH4uBBbNpeP3FJHLOSAs98IzH1Rin4ZnzzzCS09s,161960
36
- brainflow/lib/libGanglionLib.so,sha256=mfIBIxqIdDg12gRaQlrX_SseShNvVBGPt7Yk_ZhO780,162912
37
- brainflow/lib/libMLModule.dylib,sha256=vrj812s0dqay3X1I5L0L30Sb49kUjn0v7S1Kt-Umxjw,713080
38
- brainflow/lib/libMLModule.so,sha256=E47lslgYNWhgqfIGDG6zhB65GbNaLj7rOXgU4iLjMh8,474656
39
- brainflow/lib/libMuseLib.dylib,sha256=mdayEbOXwyhQq7e49sf6DX0f8vTURJdMf-Wd_wPfqKw,241032
40
- brainflow/lib/libMuseLib.so,sha256=V2wLfSZPvipSjEe6VP0OMSHE-WxxAAzUoQybA2sQ45g,245448
41
- brainflow/lib/libeego-SDK.so,sha256=iChntYTOtSxbErwnZDARX_soyQtQiE7mhQc9-uRzqUs,1108192
42
- brainflow/lib/libneurosdk-shared.dylib,sha256=u8tqrSXOfUBJ6Ln6qOnhkQsCU_ATNt28ujE901hchCM,4508910
43
- brainflow/lib/libonnxruntime_x64.dylib,sha256=m0-DSzRR39Y3-5rrIAWPNKxlQK6QNKmyj-fc2kyCLLM,20919840
44
- brainflow/lib/libonnxruntime_x64.so,sha256=SwQQpIw-nofytM-eg7Iub53obG_0jAcFjpQ2MYF8vCo,15086128
45
- brainflow/lib/libsimpleble-c.dylib,sha256=VZ0TU7f6sUZKm8pIO1s1xVIc-g8CziBz105wZuJQEnE,919432
46
- brainflow/lib/libsimpleble-c.so,sha256=QDt9UOqIS9NDsa5Wc06H3kcPr-QLNTS7ft3aODN14nc,1095432
47
- brainflow/lib/libunicorn.so,sha256=dd92CvGljHYJjPPRKp9RhIaecF0papaH7XvOYSTNGjw,103872
48
- brainflow/lib/libunicorn_raspberry.so,sha256=HbD94odtlROBLhrWfvu_irUNVuuMJ8LEeCHLDE_7rp8,87728
49
- brainflow/lib/neurosdk-x64.dll,sha256=gRDzloZLQG6ZKmVHztxfGtCODOS4mZ9m0L1bNBWdi0U,1137664
50
- brainflow/lib/neurosdk-x86.dll,sha256=Z7m1WAcJTel1Adk3ttue6t8Q8gezu6EpOzPvjZ-IaBs,949760
51
- brainflow/lib/onnxruntime_x64.dll,sha256=HSiLxc-ICCXpquTJIXeZ0JIlfca-KxCU02GpXVMqAJo,7900072
52
- brainflow/lib/onnxruntime_x86.dll,sha256=IlnyXK8HDCKiSJgf1UAQg5QPJhXfstzc9fKoS2M-bfI,6950312
53
- brainflow/lib/simpleble-c.dll,sha256=hdPH4DquiTuo_S7GyoZ0oDNqeK1AMerviyrJRCX2HTQ,564224
54
- brainflow/lib/simpleble-c32.dll,sha256=8w0nQbM3FVdghs6ucYrMzxNnXkxUUgqi8oEpPtpa43M,453120
55
- brainflow-5.12.1.dist-info/LICENSE.txt,sha256=7pv76HozF_6Ha-gVQGgYSCJb68NvP3WVwI4XA-CHZ1Y,1093
56
- brainflow-5.12.1.dist-info/METADATA,sha256=72A8geRhlXsfcJM35vfVdgG_AXz7SO75NMhxkNf3WqQ,5742
57
- brainflow-5.12.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
58
- brainflow-5.12.1.dist-info/top_level.txt,sha256=7GjJ0gopuPbhviU8h2x0BXpiJzpS-qrJMe0vnwAFTwA,10
59
- brainflow-5.12.1.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
60
- brainflow-5.12.1.dist-info/RECORD,,