eegdash 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of eegdash might be problematic. Click here for more details.
- eegdash/SignalStore/__init__.py +0 -0
- eegdash/SignalStore/signalstore/__init__.py +3 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/abstract_read_adapter.py +13 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/domain_modeling/schema_read_adapter.py +16 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/domain_modeling/vocabulary_read_adapter.py +19 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/handmade_records/excel_study_organizer_read_adapter.py +114 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/axona/axona_read_adapter.py +912 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/ReadIntanSpikeFile.py +140 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/intan_read_adapter.py +29 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/__init__.py +0 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/data_to_result.py +62 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/get_bytes_per_data_block.py +36 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/notch_filter.py +50 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/qstring.py +41 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/read_header.py +135 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/intanutil/read_one_data_block.py +45 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhd_format/load_intan_rhd_format.py +204 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/__init__.py +0 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/data_to_result.py +60 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/get_bytes_per_data_block.py +37 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/notch_filter.py +50 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/qstring.py +41 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/read_header.py +153 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/intanutil/read_one_data_block.py +47 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/intan/load_intan_rhs_format/load_intan_rhs_format.py +213 -0
- eegdash/SignalStore/signalstore/adapters/read_adapters/recording_acquisitions/neurodata_without_borders/neurodata_without_borders_read_adapter.py +14 -0
- eegdash/SignalStore/signalstore/operations/__init__.py +4 -0
- eegdash/SignalStore/signalstore/operations/handler_executor.py +22 -0
- eegdash/SignalStore/signalstore/operations/handler_factory.py +41 -0
- eegdash/SignalStore/signalstore/operations/handlers/base_handler.py +44 -0
- eegdash/SignalStore/signalstore/operations/handlers/domain/property_model_handlers.py +79 -0
- eegdash/SignalStore/signalstore/operations/handlers/domain/schema_handlers.py +3 -0
- eegdash/SignalStore/signalstore/operations/helpers/abstract_helper.py +17 -0
- eegdash/SignalStore/signalstore/operations/helpers/neuroscikit_extractor.py +33 -0
- eegdash/SignalStore/signalstore/operations/helpers/neuroscikit_rawio.py +165 -0
- eegdash/SignalStore/signalstore/operations/helpers/spikeinterface_helper.py +100 -0
- eegdash/SignalStore/signalstore/operations/helpers/wrappers/neo_wrappers.py +21 -0
- eegdash/SignalStore/signalstore/operations/helpers/wrappers/nwb_wrappers.py +27 -0
- eegdash/SignalStore/signalstore/store/__init__.py +8 -0
- eegdash/SignalStore/signalstore/store/data_access_objects.py +1181 -0
- eegdash/SignalStore/signalstore/store/datafile_adapters.py +131 -0
- eegdash/SignalStore/signalstore/store/repositories.py +928 -0
- eegdash/SignalStore/signalstore/store/store_errors.py +68 -0
- eegdash/SignalStore/signalstore/store/unit_of_work.py +97 -0
- eegdash/SignalStore/signalstore/store/unit_of_work_provider.py +67 -0
- eegdash/SignalStore/signalstore/utilities/data_adapters/spike_interface_adapters/si_recording.py +1 -0
- eegdash/SignalStore/signalstore/utilities/data_adapters/spike_interface_adapters/si_sorter.py +1 -0
- eegdash/SignalStore/signalstore/utilities/testing/data_mocks.py +513 -0
- eegdash/SignalStore/signalstore/utilities/tools/dataarrays.py +49 -0
- eegdash/SignalStore/signalstore/utilities/tools/mongo_records.py +25 -0
- eegdash/SignalStore/signalstore/utilities/tools/operation_response.py +78 -0
- eegdash/SignalStore/signalstore/utilities/tools/purge_orchestration_response.py +21 -0
- eegdash/SignalStore/signalstore/utilities/tools/quantities.py +15 -0
- eegdash/SignalStore/signalstore/utilities/tools/strings.py +38 -0
- eegdash/SignalStore/signalstore/utilities/tools/time.py +17 -0
- eegdash/SignalStore/tests/conftest.py +799 -0
- eegdash/SignalStore/tests/data/valid_data/data_arrays/make_fake_data.py +59 -0
- eegdash/SignalStore/tests/unit/store/conftest.py +0 -0
- eegdash/SignalStore/tests/unit/store/test_data_access_objects.py +1235 -0
- eegdash/SignalStore/tests/unit/store/test_repositories.py +1309 -0
- eegdash/SignalStore/tests/unit/store/test_unit_of_work.py +7 -0
- eegdash/SignalStore/tests/unit/test_ci_cd.py +8 -0
- eegdash/__init__.py +1 -0
- eegdash/aws_ingest.py +29 -0
- eegdash/data_utils.py +213 -0
- eegdash/main.py +17 -0
- eegdash/signalstore_data_utils.py +280 -0
- eegdash-0.0.1.dist-info/LICENSE +20 -0
- eegdash-0.0.1.dist-info/METADATA +72 -0
- eegdash-0.0.1.dist-info/RECORD +72 -0
- eegdash-0.0.1.dist-info/WHEEL +5 -0
- eegdash-0.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import pint
|
|
2
|
+
import numpy as np
|
|
3
|
+
import xarray as xr
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
registry = pint.UnitRegistry()
|
|
8
|
+
pint.set_application_registry(registry)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
if __name__ == "__main__":
|
|
12
|
+
registry = pint.UnitRegistry()
|
|
13
|
+
pint.set_application_registry(registry)
|
|
14
|
+
|
|
15
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
def to_snake_case(s):
|
|
4
|
+
|
|
5
|
+
def preprocess_caps(s):
|
|
6
|
+
"""Preprocesses the string to make it easier to convert to snake case.
|
|
7
|
+
Transforms sequnces of caps (acronyms, etc.) so that
|
|
8
|
+
(1) if the sequence is at the end of the string, only the first letter is capitalized,
|
|
9
|
+
(2) if the sequence is in the middle of the string, only the first and last letters are capitalized.
|
|
10
|
+
Also replaces any dashes with underscores, then removes any non-alphanumeric characters remaining (except underscores).
|
|
11
|
+
"""
|
|
12
|
+
# Convert any dashes to underscores
|
|
13
|
+
s = s.replace('-', '_')
|
|
14
|
+
# Remove non-alphanumeric characters, except underscores
|
|
15
|
+
s = re.sub(r'[^a-zA-Z0-9_]', '', s)
|
|
16
|
+
# Transform sequences of standard PascalCase / camelCase
|
|
17
|
+
s = re.sub(r'([A-Z])([A-Z]+)(?=[A-Z][a-z])', lambda m: m.group(1) + m.group(2).lower(), s)
|
|
18
|
+
s = re.sub(r'([A-Z]+)(?=[A-Z]|$)', lambda m: m.group(1).capitalize(), s)
|
|
19
|
+
return s
|
|
20
|
+
|
|
21
|
+
def to_snake(s):
|
|
22
|
+
"""Converts a camel case string to snake case,
|
|
23
|
+
assuming that the string has already been preprocessed."""
|
|
24
|
+
return re.sub(r'(?<!^)(?=[A-Z])', '_', s).lower()
|
|
25
|
+
|
|
26
|
+
preprocessed = preprocess_caps(s)
|
|
27
|
+
|
|
28
|
+
snake = to_snake(preprocessed)
|
|
29
|
+
|
|
30
|
+
return re.sub(r'__+', '_', snake) # Remove any double underscores
|
|
31
|
+
|
|
32
|
+
def contains_regex_characters(pattern):
|
|
33
|
+
# List of regex special characters that you want to check for
|
|
34
|
+
# You can add more characters to this list if needed
|
|
35
|
+
regex_special_chars = r".^$*+?{}[]\|()"
|
|
36
|
+
|
|
37
|
+
# If any special character is in the pattern, it's likely intended as a regex
|
|
38
|
+
return any(char in pattern for char in regex_special_chars)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from datetime import datetime, timezone, timedelta
|
|
2
|
+
|
|
3
|
+
def time_millis(time):
|
|
4
|
+
# `timestamp()` returns seconds as a float, so we multiply by 1000 and trunc to int to get
|
|
5
|
+
# millis.
|
|
6
|
+
return int(time.timestamp() * 1000)
|
|
7
|
+
|
|
8
|
+
def timenow_millis(datetime_override):
|
|
9
|
+
# `timestamp()` returns seconds as a float, so we multiply by 1000 and trunc to int to get
|
|
10
|
+
# millis.
|
|
11
|
+
return int(datetime_override.now().timestamp() * 1000)
|
|
12
|
+
|
|
13
|
+
def timeago_millis(time_ago: timedelta):
|
|
14
|
+
# `total_seconds()` returns seconds as a float, so we multiply by 1000 and trunc to int to get
|
|
15
|
+
# millis.
|
|
16
|
+
return int(time_ago.total_seconds()) * 1000
|
|
17
|
+
|