From de0016397bb1e3af8191875339b6ca8b2664d0c2 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Fri, 29 Sep 2023 09:50:43 -0700 Subject: [PATCH 01/16] Add ability to split memmap from large rec file between multiple iterators --- src/spikegadgets_to_nwb/convert_ephys.py | 33 ++++- .../spike_gadgets_raw_io.py | 140 ++++++++++++++++++ 2 files changed, 172 insertions(+), 1 deletion(-) diff --git a/src/spikegadgets_to_nwb/convert_ephys.py b/src/spikegadgets_to_nwb/convert_ephys.py index 00d1e92..ebd8b29 100644 --- a/src/spikegadgets_to_nwb/convert_ephys.py +++ b/src/spikegadgets_to_nwb/convert_ephys.py @@ -10,12 +10,13 @@ from spikegadgets_to_nwb import convert_rec_header -from .spike_gadgets_raw_io import SpikeGadgetsRawIO +from .spike_gadgets_raw_io import SpikeGadgetsRawIO, SpikeGadgetsRawIOPartial MICROVOLTS_PER_VOLT = 1e6 VOLTS_PER_MICROVOLT = 1e-6 MILLISECONDS_PER_SECOND = 1e3 NANOSECONDS_PER_SECOND = 1e9 +MAXIMUM_ITERATOR_SIZE = int(30000 * 5) # * 60 * 60 # 1 hour of data at 30 kHz class RecFileDataChunkIterator(GenericDataChunkIterator): @@ -83,6 +84,36 @@ def __init__( else: self.nwb_hw_channel_order = nwb_hw_channel_order + """split excessively large iterators into smaller ones + """ + iterator_size = [neo_io._raw_memmap.shape[0] for neo_io in self.neo_io] + iterator_size.reverse() + for i, size in enumerate( + iterator_size + ): # iterate backwards so can insert new iterators + if size > MAXIMUM_ITERATOR_SIZE: + # split into smaller iterators + sub_iterators = [] + j = 0 + previous_multiplex_state = None + iterator_loc = len(iterator_size) - i - 1 + while j < size: + sub_iterators.append( + SpikeGadgetsRawIOPartial( + self.neo_io[iterator_loc], + start_index=j, + stop_index=j + MAXIMUM_ITERATOR_SIZE, + previous_multiplex_state=previous_multiplex_state, + ) + ) + if self.n_multiplexed_channel > 0: + previous_multiplex_state = sub_iterators[ + -1 + ].get_analogsignal_multiplexed()[-1] + j += MAXIMUM_ITERATOR_SIZE + self.neo_io.pop(iterator_loc) + self.neo_io[iterator_loc:iterator_loc] = sub_iterators + # NOTE: this will read all the timestamps from the rec file, which can be slow if timestamps is not None: self.timestamps = timestamps diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index 40bf435..2512dcd 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -692,3 +692,143 @@ def access_coordinates(self, index): # if list of indeces else: return self.mapped_index[index] + + +class SpikeGadgetsRawIOPartial(SpikeGadgetsRawIO): + extensions = ["rec"] + rawmode = "one-file" + + def __init__( + self, + full_io: SpikeGadgetsRawIO, + start_index: int, + stop_index: int, + previous_multiplex_state: np.ndarray = None, + ): + """Initialize a partial SpikeGadgetsRawIO object. + + Parameters + ---------- + full_io : SpikeGadgetsRawIO + The SpikeGadgetsRawIO for the complete rec file + start_index : int + Where this partial file starts in the complete file + stop_index : int + Where this partial file stops in the complete file + previous_multiplex_state : np.ndarray, optional + The last multiplex state in the previous partial file. + If None, will default to behavior of SpikeGadgetsRawIO. + Use None if first partial iterator for the rec file or if not accessing multiplex data. + By default None + """ + # initialization from the base class + BaseRawIO.__init__(self) + self.filename = full_io.filename + self.selected_streams = full_io.selected_streams + self.interpolate_dropped_packets = full_io.interpolate_dropped_packets + + # define some key information + self.interpolate_index = None + self.previous_multiplex_state = previous_multiplex_state + + # copy conserved information from parsed_header from full_io + self.header = full_io.header + self.system_time_at_creation = full_io.system_time_at_creation + self.timestamp_at_creation = full_io.timestamp_at_creation + self._sampling_rate = full_io._sampling_rate + self.sysClock_byte = full_io.sysClock_byte + self._timestamp_byte = full_io._timestamp_byte + self._mask_channels_ids = full_io._mask_channels_ids + self._mask_channels_bytes = full_io._mask_channels_bytes + self._mask_channels_bits = full_io._mask_channels_bits + self.multiplexed_channel_xml = full_io.multiplexed_channel_xml + self._multiplexed_byte_start = full_io._multiplexed_byte_start + self._mask_streams = full_io._mask_streams + self.selected_streams = full_io.selected_streams + self._generate_minimal_annotations() + + # crop key information to range of interest + header_size = None + with open(self.filename, mode="rb") as f: + while True: + line = f.readline() + if b"" in line: + header_size = f.tell() + break + + if header_size is None: + ValueError( + "SpikeGadgets: the xml header does not contain ''" + ) + + raw_memmap = np.memmap(self.filename, mode="r", offset=header_size, dtype=" np.ndarray: + """ + Overide of the superclass to use the last state of the previous file segment + to define the first state of the current file segment. + """ + print("compute multiplex cache", self.filename) + if channel_names is None: + # read all multiplexed channels + channel_names = list(self.multiplexed_channel_xml.keys()) + else: + for ch_name in channel_names: + if ch_name not in self.multiplexed_channel_xml: + raise ValueError(f"Channel name '{ch_name}' not found in file.") + + # because of the encoding scheme, it is easiest to read all the data in sequence + # one packet at a time + num_packet = self._raw_memmap.shape[0] + analog_multiplexed_data = np.empty( + (num_packet, len(channel_names)), dtype=np.int16 + ) + + # precompute the static data offsets + data_offsets = np.empty((len(channel_names), 3), dtype=int) + for j, ch_name in enumerate(channel_names): + ch_xml = self.multiplexed_channel_xml[ch_name] + data_offsets[j, 0] = int( + self._multiplexed_byte_start + int(ch_xml.attrib["startByte"]) + ) + data_offsets[j, 1] = int(ch_xml.attrib["interleavedDataIDByte"]) + data_offsets[j, 2] = int(ch_xml.attrib["interleavedDataIDBit"]) + interleaved_data_id_byte_values = self._raw_memmap[:, data_offsets[:, 1]] + interleaved_data_id_bit_values = ( + interleaved_data_id_byte_values >> data_offsets[:, 2] + ) & 1 + # calculate which packets encode for which channel + initialize_stream_mask = np.logical_or( + (np.arange(num_packet) == 0)[:, None], interleaved_data_id_bit_values == 1 + ) + # read the data into int16 + data = ( + self._raw_memmap[:, data_offsets[:, 0]] + + self._raw_memmap[:, data_offsets[:, 0] + 1] * 256 + ) + # initialize the first row + # if no previous state, assume first segment. Default to superclass behavior + analog_multiplexed_data[0] = data[0] + if not self.previous_multiplex_state is None: + # if previous state, use it to initialize elements of first row not updated in that packet + ind = np.where(initialize_stream_mask[0])[0] + analog_multiplexed_data[0][ind] = self.previous_multiplex_state[ind] + # for packets that do not have an update for a channel, use the previous value + for i in range(1, num_packet): + analog_multiplexed_data[i] = np.where( + initialize_stream_mask[i], data[i], analog_multiplexed_data[i - 1] + ) + return analog_multiplexed_data + + def get_digitalsignal(self, stream_id, channel_id): + dio_change_times, change_dir_trim = super().get_digitalsignal( + stream_id, channel_id + ) + # clip the setting of the first state + return dio_change_times[1:], change_dir_trim[1:] From cade841a82a6756666b66a8dace062907565f10d Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Fri, 29 Sep 2023 09:57:40 -0700 Subject: [PATCH 02/16] Update add epochs test to use rec_dci, which will split large rec files between iterators --- .../tests/test_convert_intervals.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index 1d763cf..ee5b1c9 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -30,12 +30,10 @@ def test_add_epochs(): file_info = get_file_info(Path(path)) rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" # get all streams for all files - neo_io = [ - SpikeGadgetsRawIO(filename=file) - for file in file_info[file_info.file_extension == ".rec"].full_path - ] - [neo_io.parse_header() for neo_io in neo_io] - add_epochs(nwbfile, file_info, 20230622, "sample", neo_io) + rec_dci = RecFileDataChunkIterator( + file_info[file_info.file_extension == ".rec"].full_path.to_list() + ) + add_epochs(nwbfile, file_info, 20230622, "sample", rec_dci.neo_io) epochs_df = nwbfile.epochs.to_dataframe() # load old nwb versio io = NWBHDF5IO(rec_to_nwb_file, "r") From 5a58a5aab64b28309ecef58a4229d5caa381414a Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Mon, 2 Oct 2023 13:42:36 -0700 Subject: [PATCH 03/16] Correct indentation --- src/spikegadgets_to_nwb/convert_ephys.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/spikegadgets_to_nwb/convert_ephys.py b/src/spikegadgets_to_nwb/convert_ephys.py index ebd8b29..e2bc6ca 100644 --- a/src/spikegadgets_to_nwb/convert_ephys.py +++ b/src/spikegadgets_to_nwb/convert_ephys.py @@ -16,7 +16,7 @@ VOLTS_PER_MICROVOLT = 1e-6 MILLISECONDS_PER_SECOND = 1e3 NANOSECONDS_PER_SECOND = 1e9 -MAXIMUM_ITERATOR_SIZE = int(30000 * 5) # * 60 * 60 # 1 hour of data at 30 kHz +MAXIMUM_ITERATOR_SIZE = int(30000 * 60 * 30) # 30 min of data at 30 kHz class RecFileDataChunkIterator(GenericDataChunkIterator): @@ -111,9 +111,9 @@ def __init__( -1 ].get_analogsignal_multiplexed()[-1] j += MAXIMUM_ITERATOR_SIZE - self.neo_io.pop(iterator_loc) - self.neo_io[iterator_loc:iterator_loc] = sub_iterators - + self.neo_io.pop(iterator_loc) + self.neo_io[iterator_loc:iterator_loc] = sub_iterators + print("# iterators:", len(self.neo_io)) # NOTE: this will read all the timestamps from the rec file, which can be slow if timestamps is not None: self.timestamps = timestamps From e85c73f67ad83fe2029c4bb67943e70d57658bdb Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Mon, 2 Oct 2023 15:01:32 -0700 Subject: [PATCH 04/16] Restrict selection of rec files to sample dataset --- src/spikegadgets_to_nwb/tests/test_convert_intervals.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index ee5b1c9..31d0bb3 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -29,6 +29,8 @@ def test_add_epochs(): # running locally file_info = get_file_info(Path(path)) rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" + file_info = file_info[file_info.animal == "sample"] + # assert file_info[file_info.file_extension == ".rec"].full_path.to_list() == [] # get all streams for all files rec_dci = RecFileDataChunkIterator( file_info[file_info.file_extension == ".rec"].full_path.to_list() From 1f7fd569be0114bc18c495f50fda257122f119c7 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 4 Oct 2023 13:43:01 -0700 Subject: [PATCH 05/16] Reduce concatenations in add_dio --- src/spikegadgets_to_nwb/convert_dios.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/spikegadgets_to_nwb/convert_dios.py b/src/spikegadgets_to_nwb/convert_dios.py index e67c5d0..8161c53 100644 --- a/src/spikegadgets_to_nwb/convert_dios.py +++ b/src/spikegadgets_to_nwb/convert_dios.py @@ -72,15 +72,18 @@ def add_dios(nwbfile: NWBFile, recfile: list[str], metadata: dict) -> None: for channel_name in channel_name_map: # merge streams from multiple files - all_timestamps = np.array([], dtype=np.float64) - all_state_changes = np.array([], dtype=np.uint8) + all_timestamps = [] + all_state_changes = [] for io in neo_io: timestamps, state_changes = io.get_digitalsignal( stream_name, prefix + channel_name ) - all_timestamps = np.concatenate((all_timestamps, timestamps)) - all_state_changes = np.concatenate((all_state_changes, state_changes)) - + all_timestamps.append(timestamps) + all_state_changes.append(state_changes) + all_timestamps = np.concatenate(all_timestamps) + all_state_changes = np.concatenate(all_state_changes) + assert isinstance(all_timestamps[0], np.float64) + assert isinstance(all_timestamps, np.ndarray) ts = TimeSeries( name=channel_name_map[channel_name], description=channel_name, From 1549d4cb00031288401ccea013e673b5bf730b3c Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 4 Oct 2023 15:49:31 -0700 Subject: [PATCH 06/16] Add method to read multiplexed data without loading full series --- src/spikegadgets_to_nwb/convert_ephys.py | 9 +- .../spike_gadgets_raw_io.py | 87 +++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) diff --git a/src/spikegadgets_to_nwb/convert_ephys.py b/src/spikegadgets_to_nwb/convert_ephys.py index b0fb33a..4104d6d 100644 --- a/src/spikegadgets_to_nwb/convert_ephys.py +++ b/src/spikegadgets_to_nwb/convert_ephys.py @@ -107,9 +107,16 @@ def __init__( ) ) if self.n_multiplexed_channel > 0: + partial_size = sub_iterators[-1]._raw_memmap.shape[0] previous_multiplex_state = sub_iterators[ -1 - ].get_analogsignal_multiplexed()[-1] + ].get_analogsignal_multiplexed_partial( + i_start=partial_size - 10, + i_stop=partial_size, + padding=30000, + )[ + -1 + ] j += MAXIMUM_ITERATOR_SIZE self.neo_io.pop(iterator_loc) self.neo_io[iterator_loc:iterator_loc] = sub_iterators diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index e9de235..bbf9d71 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -537,6 +537,93 @@ def get_analogsignal_multiplexed(self, channel_names=None) -> np.ndarray: ) return analog_multiplexed_data + def get_analogsignal_multiplexed_partial( + self, + i_start: int, + i_stop: int, + channel_names: list = None, + padding: int = 30000, + ) -> np.ndarray: + """Alternative method to access part of the multiplexed data. + Not memory efficient for many calls because it reads a buffer chunk before the requested data. + Better than get_analogsignal_multiplexed when need one call to specific time region + + Parameters + ---------- + i_start : int + index start + i_stop : int + index stop + channel_names : list[str], optional + channels to get, by default None will get all multiplex channels + padding : int, optional + how many packets before the desired series to load to ensure every channel receives update before requested, + by default 30000 + + Returns + ------- + np.ndarray + multiplex data + + Raises + ------ + ValueError + _description_ + """ + print("compute multiplex cache", self.filename) + if channel_names is None: + # read all multiplexed channels + channel_names = list(self.multiplexed_channel_xml.keys()) + else: + for ch_name in channel_names: + if ch_name not in self.multiplexed_channel_xml: + raise ValueError(f"Channel name '{ch_name}' not found in file.") + # determine which packets to get from data + padding = min(padding, i_start) + i_start = i_start - padding + if i_stop is None: + i_stop = self._raw_memmap.shape[0] + + # Make object to hold data + num_packet = i_stop - i_start + analog_multiplexed_data = np.empty( + (num_packet, len(channel_names)), dtype=np.int16 + ) + + # precompute the static data offsets + data_offsets = np.empty((len(channel_names), 3), dtype=int) + for j, ch_name in enumerate(channel_names): + ch_xml = self.multiplexed_channel_xml[ch_name] + data_offsets[j, 0] = int( + self._multiplexed_byte_start + int(ch_xml.attrib["startByte"]) + ) + data_offsets[j, 1] = int(ch_xml.attrib["interleavedDataIDByte"]) + data_offsets[j, 2] = int(ch_xml.attrib["interleavedDataIDBit"]) + interleaved_data_id_byte_values = self._raw_memmap[ + i_start:i_stop, data_offsets[:, 1] + ] + interleaved_data_id_bit_values = ( + interleaved_data_id_byte_values >> data_offsets[:, 2] + ) & 1 + # calculate which packets encode for which channel + initialize_stream_mask = np.logical_or( + (np.arange(num_packet) == 0)[:, None], interleaved_data_id_bit_values == 1 + ) + # read the data into int16 + data = ( + self._raw_memmap[i_start:i_stop, data_offsets[:, 0]] + + self._raw_memmap[i_start:i_stop, data_offsets[:, 0] + 1] * 256 + ) + # initialize the first row + analog_multiplexed_data[0] = data[0] + # for packets that do not have an update for a channel, use the previous value + # this method assumes that every channel has an update within the buffer + for i in range(1, num_packet): + analog_multiplexed_data[i] = np.where( + initialize_stream_mask[i], data[i], analog_multiplexed_data[i - 1] + ) + return analog_multiplexed_data[padding:] + def get_digitalsignal(self, stream_id, channel_id): # stream_id = self.header["signal_streams"][stream_index]["id"] From cb52f19631e2e1f7277e40d93396ae738c374018 Mon Sep 17 00:00:00 2001 From: Eric Denovellis Date: Fri, 27 Oct 2023 14:55:07 -0700 Subject: [PATCH 07/16] Revert "Merge branch 'main' into split_iterator" This reverts commit dc56f90e7ac1e82e22280053abace1722b9c318a, reversing changes made to 1549d4cb00031288401ccea013e673b5bf730b3c. --- .github/workflows/test_package_build.yml | 9 +- environment.yml | 3 +- pyproject.toml | 3 +- src/spikegadgets_to_nwb/convert.py | 75 +- src/spikegadgets_to_nwb/convert_analog.py | 1 + src/spikegadgets_to_nwb/convert_dios.py | 24 +- src/spikegadgets_to_nwb/convert_intervals.py | 16 +- src/spikegadgets_to_nwb/convert_position.py | 390 +- src/spikegadgets_to_nwb/convert_yaml.py | 21 +- .../metadata_validation.py | 75 - src/spikegadgets_to_nwb/nwb_schema.json | 35971 ---------------- .../spike_gadgets_raw_io.py | 11 +- .../tests/integration-tests/__init__.py | 0 .../test_metadata_validation_it.py | 190 - src/spikegadgets_to_nwb/tests/test_convert.py | 66 +- .../tests/test_convert_analog.py | 21 +- .../tests/test_convert_dios.py | 47 +- .../tests/test_convert_ephys.py | 103 +- .../tests/test_convert_intervals.py | 60 +- .../tests/test_convert_position.py | 90 +- .../tests/test_convert_rec_header.py | 48 +- .../tests/test_convert_yaml.py | 90 +- .../test_data/20230622_sample_metadata.yml | 13 +- .../tests/test_data/nonptp_metadata.yml | 1225 - .../test_data/test_metadata_dict_samples.py | 212 - .../tests/test_metadata_validation.py | 25 - .../tests/test_spikegadgets_io.py | 12 +- src/spikegadgets_to_nwb/tests/utils.py | 23 - 28 files changed, 473 insertions(+), 38351 deletions(-) delete mode 100644 src/spikegadgets_to_nwb/metadata_validation.py delete mode 100644 src/spikegadgets_to_nwb/nwb_schema.json delete mode 100644 src/spikegadgets_to_nwb/tests/integration-tests/__init__.py delete mode 100644 src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py delete mode 100644 src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml delete mode 100644 src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py delete mode 100644 src/spikegadgets_to_nwb/tests/test_metadata_validation.py delete mode 100644 src/spikegadgets_to_nwb/tests/utils.py diff --git a/.github/workflows/test_package_build.yml b/.github/workflows/test_package_build.yml index 880a840..a49a53e 100644 --- a/.github/workflows/test_package_build.yml +++ b/.github/workflows/test_package_build.yml @@ -46,8 +46,6 @@ jobs: strategy: matrix: package: ['wheel', 'sdist', 'archive', 'editable'] - env: - DOWNLOAD_DIR: ${{ github.workspace }}/test_data steps: - name: Download sdist and wheel artifacts if: matrix.package != 'archive' @@ -68,7 +66,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-python@v4 with: - python-version: "3.11" + python-version: 3 - name: Display Python version run: python -c "import sys; print(sys.version)" - name: Update pip @@ -92,14 +90,19 @@ jobs: UCSF_BOX_TOKEN: ${{ secrets.UCSF_BOX_TOKEN }} UCSF_BOX_USER: ${{ secrets.UCSF_BOX_USER }} WEBSITE: ftps://ftp.box.com/spikegadgets_to_nwb_test_data/ + DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: | wget --recursive --no-verbose --no-host-directories --no-directories --user $UCSF_BOX_USER --password $UCSF_BOX_TOKEN -P $DOWNLOAD_DIR $WEBSITE tree $DOWNLOAD_DIR - name: Run tests without coverage if: matrix.package != 'editable' + env: + DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: pytest --doctest-modules -v --pyargs spikegadgets_to_nwb - name: Run tests with coverage if: matrix.package == 'editable' + env: + DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: pytest --cov=src --cov-report=xml --doctest-modules -v --pyargs spikegadgets_to_nwb - name: Upload coverage reports to Codecov if: matrix.package == 'editable' diff --git a/environment.yml b/environment.yml index 95ccd1b..63dcffa 100644 --- a/environment.yml +++ b/environment.yml @@ -15,9 +15,8 @@ dependencies: - pytest-cov - pip - pyyaml -- jsonschema - ffmpeg - pip: - ndx-franklab-novela - neo - - hdmf==3.8.1 + - hdmf=3.8.1 diff --git a/pyproject.toml b/pyproject.toml index 04f93e3..4d3b5b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,9 +10,8 @@ requires-python = ">=3.8" license = { file = "LICENSE" } authors = [ { name = "Sam Bray", email = "sam.bray@ucsf.edu" }, - { name = "Eric Denovellis", email = "eric.denovellis@ucsf.edu" }, { name = "Ryan Ly", email = "rly@lbl.gov" }, - { name = "Philip Adenekan", email = "phil.adenekan@ucsf.edu" }, + { name = "Eric Denovellis", email = "eric.denovellis@ucsf.edu" }, { name = "Loren Frank", email = "loren.frank@ucsf.edu" }, ] classifiers = [ diff --git a/src/spikegadgets_to_nwb/convert.py b/src/spikegadgets_to_nwb/convert.py index e2ec922..6318a61 100644 --- a/src/spikegadgets_to_nwb/convert.py +++ b/src/spikegadgets_to_nwb/convert.py @@ -10,13 +10,9 @@ from spikegadgets_to_nwb.convert_dios import add_dios from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator, add_raw_ephys from spikegadgets_to_nwb.convert_intervals import add_epochs, add_sample_count -from spikegadgets_to_nwb.convert_position import ( - add_associated_video_files, - add_position, -) +from spikegadgets_to_nwb.convert_position import add_position from spikegadgets_to_nwb.convert_rec_header import ( add_header_device, - detect_ptp_from_header, make_hw_channel_map, make_ref_electrode_map, read_header, @@ -109,34 +105,7 @@ def create_nwbs( video_directory: str = "", convert_video: bool = False, n_workers: int = 1, - query_expression: str | None = None, ): - """ - Convert SpikeGadgets data to NWB format. - - Parameters - ---------- - path : Path - Path to the SpikeGadgets data file. - header_reconfig_path : Path, optional - Path to the header reconfiguration file, by default None. - probe_metadata_paths : list[Path], optional - List of paths to the probe metadata files, by default None. - output_dir : str, optional - Output directory for the NWB files, by default "/home/stelmo/nwb/raw". - video_directory : str, optional - Directory containing the video files, by default "". - convert_video : bool, optional - Whether to convert the video files, by default False. - n_workers : int, optional - Number of workers to use for parallel processing, by default 1. - query_expression : str, optional - Pandas query expression to filter the data, by default None. - e.g. "animal == 'sample' and epoch == 1" - See https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html. - - """ - if not isinstance(path, Path): path = Path(path) @@ -146,9 +115,6 @@ def create_nwbs( file_info = get_file_info(path) - if query_expression is not None: - file_info = file_info.query(query_expression) - if n_workers > 1: def pass_func(args): @@ -259,9 +225,6 @@ def _create_nwb( nwb_file, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) add_header_device(nwb_file, rec_header) - add_associated_video_files( - nwb_file, metadata, session_df, video_directory, convert_video - ) logger.info("ADDING EPHYS DATA") ### add rec file data ### @@ -280,32 +243,26 @@ def _create_nwb( add_analog_data(nwb_file, rec_filepaths, timestamps=rec_dci_timestamps) logger.info("ADDING SAMPLE COUNTS") add_sample_count(nwb_file, rec_dci) + logger.info("ADDING POSITION") + ### add position ### + add_position( + nwb_file, + metadata, + session_df, + rec_header, + video_directory=video_directory, + convert_video=convert_video, + ) + + # add epochs logger.info("ADDING EPOCHS") add_epochs( nwbfile=nwb_file, - session_df=session_df, + file_info=session_df, + date=session[0], + animal=session[1], neo_io=rec_dci.neo_io, ) - logger.info("ADDING POSITION") - ### add position ### - ptp_enabled = detect_ptp_from_header(rec_header) - if ptp_enabled: - add_position( - nwb_file, - metadata, - session_df, - ) - else: - add_position( - nwb_file, - metadata, - session_df, - ptp_enabled=ptp_enabled, - rec_dci_timestamps=rec_dci_timestamps, - sample_count=nwb_file.processing["sample_count"] - .data_interfaces["sample_count"] - .data, - ) # write file logger.info(f"WRITING: {output_dir}/{session[1]}{session[0]}.nwb") diff --git a/src/spikegadgets_to_nwb/convert_analog.py b/src/spikegadgets_to_nwb/convert_analog.py index f0c2ad1..0bdfb3e 100644 --- a/src/spikegadgets_to_nwb/convert_analog.py +++ b/src/spikegadgets_to_nwb/convert_analog.py @@ -1,3 +1,4 @@ +from warnings import warn from xml.etree import ElementTree import numpy as np diff --git a/src/spikegadgets_to_nwb/convert_dios.py b/src/spikegadgets_to_nwb/convert_dios.py index b28341e..8161c53 100644 --- a/src/spikegadgets_to_nwb/convert_dios.py +++ b/src/spikegadgets_to_nwb/convert_dios.py @@ -70,24 +70,26 @@ def add_dios(nwbfile: NWBFile, recfile: list[str], metadata: dict) -> None: prefix = "ECU_" break - # compile data for all dio channels in all files - all_timestamps = [np.array([], dtype=np.float64) for i in channel_name_map] - all_state_changes = [np.array([], dtype=np.float64) for i in channel_name_map] - for io in neo_io: - for i, channel_name in enumerate(channel_name_map): + for channel_name in channel_name_map: + # merge streams from multiple files + all_timestamps = [] + all_state_changes = [] + for io in neo_io: timestamps, state_changes = io.get_digitalsignal( stream_name, prefix + channel_name ) - all_timestamps[i] = np.concatenate((all_timestamps[i], timestamps)) - all_state_changes[i] = np.concatenate((all_state_changes[i], state_changes)) - # Add each channel as a behavioral event time series - for i, channel_name in enumerate(channel_name_map): + all_timestamps.append(timestamps) + all_state_changes.append(state_changes) + all_timestamps = np.concatenate(all_timestamps) + all_state_changes = np.concatenate(all_state_changes) + assert isinstance(all_timestamps[0], np.float64) + assert isinstance(all_timestamps, np.ndarray) ts = TimeSeries( name=channel_name_map[channel_name], description=channel_name, - data=all_state_changes[i], + data=all_state_changes, unit="-1", # TODO change to "N/A", - timestamps=all_timestamps[i], # TODO adjust timestamps + timestamps=all_timestamps, # TODO adjust timestamps ) beh_events.add_timeseries(ts) diff --git a/src/spikegadgets_to_nwb/convert_intervals.py b/src/spikegadgets_to_nwb/convert_intervals.py index e76843a..709d76b 100644 --- a/src/spikegadgets_to_nwb/convert_intervals.py +++ b/src/spikegadgets_to_nwb/convert_intervals.py @@ -14,7 +14,9 @@ def add_epochs( nwbfile: NWBFile, - session_df: pd.DataFrame, + file_info: pd.DataFrame, + date: int, + animal: str, neo_io: List[SpikeGadgetsRawIO], ): """add epochs to nwbfile @@ -33,13 +35,11 @@ def add_epochs( neo_io iterators for each rec file. Contains time information """ logger = logging.getLogger("convert") - for epoch in set(session_df.epoch): - rec_file_list = session_df[ - (session_df.epoch == epoch) & (session_df.file_extension == ".rec") + session_info = file_info[(file_info.date == date) & (file_info.animal == animal)] + for epoch in set(session_info.epoch): + rec_file_list = session_info[ + (session_info.epoch == epoch) & (session_info.file_extension == ".rec") ] - if len(rec_file_list) == 0: - logger.info(f"no rec files for epoch {epoch}, No epoch interval created") - continue start_time = None end_time = None logger.info(list(rec_file_list.full_path)) @@ -58,7 +58,7 @@ def add_epochs( ) else: file_end_time = np.max( - io.get_systime_from_trodes_timestamps(n_time - 1, n_time) + io._get_systime_from_trodes_timestamps(n_time - 1, n_time) ) if end_time is None or file_end_time > end_time: end_time = float(file_end_time) diff --git a/src/spikegadgets_to_nwb/convert_position.py b/src/spikegadgets_to_nwb/convert_position.py index eedbc58..a2ae0d8 100644 --- a/src/spikegadgets_to_nwb/convert_position.py +++ b/src/spikegadgets_to_nwb/convert_position.py @@ -3,6 +3,7 @@ import re import subprocess from pathlib import Path +from xml.etree import ElementTree import numpy as np import pandas as pd @@ -12,6 +13,8 @@ from scipy.ndimage import label from scipy.stats import linregress +from spikegadgets_to_nwb.convert_rec_header import detect_ptp_from_header + NANOSECONDS_PER_SECOND = 1e9 @@ -124,7 +127,7 @@ def get_framerate(timestamps: np.ndarray) -> float: Parameters ---------- timestamps : np.ndarray - An array of timestamps for each frame in the video, units = nanoseconds. + An array of timestamps for each frame in the video. Returns ------- @@ -147,7 +150,7 @@ def find_acquisition_timing_pause( Parameters ---------- timestamps : np.ndarray - An array of timestamps for each frame in the video. Expects units=nanoseconds. + An array of timestamps for each frame in the video. min_duration : float, optional The minimum duration of the pause in seconds, by default 0.4. max_duration : float, optional @@ -158,7 +161,7 @@ def find_acquisition_timing_pause( Returns ------- pause_mid_time : float - The midpoint time of the timing pause in nanoseconds. + The midpoint time of the timing pause. """ timestamps = np.asarray(timestamps) @@ -371,69 +374,20 @@ def correct_timestamps_for_camera_to_mcu_lag( corrected_camera_systime = ( regression_result.intercept + frame_count * regression_result.slope ) - # corrected_camera_systime /= NANOSECONDS_PER_SECOND + corrected_camera_systime /= NANOSECONDS_PER_SECOND return corrected_camera_systime -def find_camera_dio_channel(nwb_file): - dio_camera_name = [ - key - for key in nwb_file.processing["behavior"] - .data_interfaces["behavioral_events"] - .time_series - if "camera ticks" in key - ] - if len(dio_camera_name) > 1: - raise ValueError( - "Multiple camera dio channels found by name. Not implemented for multiple cameras without PTP yet." - ) - - if len(dio_camera_name) == 0: - raise ValueError( - "No camera dio channel found by name. Check metadata YAML. Name must contain 'camera ticks'" - ) - - return ( - nwb_file.processing["behavior"] - .data_interfaces["behavioral_events"] - .time_series[dio_camera_name[0]] - .timestamps - ) - - -def get_video_timestamps(video_timestamps_filepath: Path) -> np.ndarray: - """ - Get video timestamps. - - Parameters - ---------- - video_timestamps_filepath : Path - Path to the video timestamps file. - - Returns - ------- - np.ndarray - An array of video timestamps. - """ - # Get video timestamps - video_timestamps = ( - pd.DataFrame(read_trodes_datafile(video_timestamps_filepath)["data"]) - .set_index("PosTimestamp") - .rename(columns={"frameCount": "HWframeCount"}) - ) - return ( - np.asarray(video_timestamps.HWTimestamp, dtype=np.float64) - / NANOSECONDS_PER_SECOND - ) +def find_camera_dio_channel(dios): + raise NotImplementedError def get_position_timestamps( position_timestamps_filepath: Path, position_tracking_filepath=None | Path, - rec_dci_timestamps=None | np.ndarray, - dio_camera_timestamps=None | np.ndarray, - sample_count=None | np.ndarray, + mcu_neural_timestamps=None | np.ndarray, + dios=None, ptp_enabled: bool = True, ): logger = logging.getLogger("convert") @@ -507,57 +461,57 @@ def get_position_timestamps( )[0][0] + 1 ) + original_video_timestamps = video_timestamps.copy() video_timestamps = video_timestamps.iloc[pause_mid_ind:] logger.info( "Camera frame rate estimated from MCU timestamps:" f" {1 / np.median(np.diff(video_timestamps.index)):0.1f} frames/s" ) - return video_timestamps + return video_timestamps, original_video_timestamps else: - try: - pause_mid_time = ( - find_acquisition_timing_pause( - dio_camera_timestamps * NANOSECONDS_PER_SECOND - ) - / NANOSECONDS_PER_SECOND - ) - frame_rate_from_dio = get_framerate( - dio_camera_timestamps[dio_camera_timestamps > pause_mid_time] - ) - logger.info( - "Camera frame rate estimated from DIO camera ticks:" - f" {frame_rate_from_dio:0.1f} frames/s" - ) - except IndexError: - pause_mid_time = -1 + dio_camera_ticks = find_camera_dio_channel(dios) + is_valid_tick = np.isin(dio_camera_ticks, mcu_neural_timestamps.index) + dio_systime = np.asarray( + mcu_neural_timestamps.loc[dio_camera_ticks[is_valid_tick]] + ) + # The DIOs and camera frames are initially unaligned. There is a + # half second pause at the start to allow for alignment. + pause_mid_time = find_acquisition_timing_pause(dio_systime) + # Estimate the frame rate from the DIO camera ticks as a sanity check. + frame_rate_from_dio = get_framerate(dio_systime[dio_systime > pause_mid_time]) + logger.info( + "Camera frame rate estimated from DIO camera ticks:" + f" {frame_rate_from_dio:0.1f} frames/s" + ) frame_count = np.asarray(video_timestamps.HWframeCount) - is_valid_camera_time = np.isin(video_timestamps.index, sample_count) - - camera_systime = rec_dci_timestamps[ - np.digitize(video_timestamps.index[is_valid_camera_time], sample_count) - ] + camera_systime, is_valid_camera_time = estimate_camera_time_from_mcu_time( + video_timestamps, mcu_neural_timestamps + ) ( - dio_camera_timestamps, + dio_systime, frame_count, is_valid_camera_time, camera_systime, ) = remove_acquisition_timing_pause_non_ptp( - dio_camera_timestamps, + dio_systime, frame_count, camera_systime, is_valid_camera_time, pause_mid_time, ) + original_video_timestamps = video_timestamps.copy() video_timestamps = video_timestamps.iloc[is_valid_camera_time] + frame_rate_from_camera_systime = get_framerate(camera_systime) logger.info( - "Camera frame rate estimated from camera sys time:" + "Camera frame rate estimated from MCU timestamps:" f" {frame_rate_from_camera_systime:0.1f} frames/s" ) + camera_to_mcu_lag = estimate_camera_to_mcu_lag( - camera_systime, dio_camera_timestamps, len(non_repeat_timestamp_labels_id) + camera_systime, dio_systime, len(non_repeat_timestamp_labels_id) ) corrected_camera_systime = [] for id in non_repeat_timestamp_labels_id: @@ -570,73 +524,22 @@ def get_position_timestamps( ) ) corrected_camera_systime = np.concatenate(corrected_camera_systime) - - video_timestamps = video_timestamps.set_index( - pd.Index(corrected_camera_systime, name="time") - ) - return video_timestamps.groupby( - video_timestamps.index - ).first() # TODO: Figure out why duplicate timesteps make it to this point and why this line is necessary - - -def find_camera_dio_channel_per_epoch( - nwb_file: NWBFile, epoch_start: float, epoch_end: float -): - """Find the camera dio channel for a given epoch. - Searches through dio channels with "camera ticks" in the name. - Selects first one with at least 100 ticks in the epoch. - - Parameters - ---------- - nwb_file : NWBFile - The NWBFile to find the dio channel in. - epoch_start : float - timestamp of the start of the epoch - epoch_end : float - timestamp of the end of the epoch - - Returns - ------- - dio_camera_timestamps : np.ndarray - The dio timestamps for the camera restricted to the epoch of interest - - Raises - ------ - ValueError - Error if dio's are not added to the nwbfile - ValueError - Error if no camera dio channel is found - """ - dio_camera_list = [ - key - for key in nwb_file.processing["behavior"]["behavioral_events"].time_series - if "camera ticks" in key - ] - if not dio_camera_list: - raise ValueError( - "No camera dio channel found by name. Check metadata YAML. Name must contain 'camera ticks'" + video_timestamps.iloc[ + is_valid_camera_time + ].index = corrected_camera_systime.index + return ( + video_timestamps.set_index(pd.Index(corrected_camera_systime, name="time")), + original_video_timestamps, ) - for camera in dio_camera_list: - dio_camera_timestamps = ( - nwb_file.processing["behavior"]["behavioral_events"] - .time_series[camera] - .timestamps - ) - epoch_ind = np.logical_and( - dio_camera_timestamps >= epoch_start, dio_camera_timestamps <= epoch_end - ) - if np.sum(epoch_ind) > 100: - return dio_camera_timestamps[epoch_ind] - raise ValueError("No camera dio has sufficient ticks for this epoch") def add_position( nwb_file: NWBFile, metadata: dict, session_df: pd.DataFrame, - ptp_enabled: bool = True, - rec_dci_timestamps: np.ndarray | None = None, - sample_count: np.ndarray | None = None, + rec_header: ElementTree.ElementTree, + video_directory: str, + convert_video: bool = False, ): """ Add position data to an NWBFile. @@ -649,12 +552,12 @@ def add_position( Metadata about the experiment. session_df : pd.DataFrame A DataFrame containing information about the session. - ptp_enabled : bool, optional - Whether PTP was enabled, by default True. - rec_dci_timestamps : np.ndarray, optional - The recording timestamps, by default None. Only used if ptp not enabled. - sample_count : np.ndarray, optional - The trodes sample count, by default None. Only used if ptp not enabled. + rec_header : ElementTree.ElementTree + The recording header. + video_directory : str + The directory containing the video files. + convert_video : bool, optional + Whether to convert the video files to NWB format, by default False. """ logger = logging.getLogger("convert") @@ -685,21 +588,29 @@ def add_position( epoch_to_camera_ids = pd.concat(df).set_index("epoch").sort_index() position = Position(name="position") + ptp_enabled = detect_ptp_from_header(rec_header) # Make a processing module for behavior and add to the nwbfile if not "behavior" in nwb_file.processing: nwb_file.create_processing_module( name="behavior", description="Contains all behavior-related data" ) - # get epoch data to seperate dio timestamps into epochs - if (not ptp_enabled) and (not len(nwb_file.epochs)): - raise ValueError( - "add_epochs() must be run before add_position() for non-ptp data" - ) - if not ptp_enabled: - epoch_df = nwb_file.epochs.to_dataframe() + + # make processing module for video files + nwb_file.create_processing_module( + name="video_files", description="Contains all associated video files data" + ) + # make a behavioral Event object to hold videos + video = BehavioralEvents(name="video") for epoch in session_df.epoch.unique(): + position_timestamps_filepath = session_df.loc[ + np.logical_and( + session_df.epoch == epoch, + session_df.file_extension == ".cameraHWSync", + ) + ].full_path.to_list()[0] + try: position_tracking_filepath = session_df.loc[ np.logical_and( @@ -707,21 +618,6 @@ def add_position( session_df.file_extension == ".videoPositionTracking", ) ].full_path.to_list()[0] - # find the matching hw timestamps filepath - video_index = position_tracking_filepath.split(".")[-2] - video_hw_df = session_df.loc[ - np.logical_and( - session_df.epoch == epoch, - session_df.file_extension == ".cameraHWSync", - ) - ] - position_timestamps_filepath = video_hw_df[ - [ - full_path.split(".")[-3] == video_index - for full_path in video_hw_df.full_path - ] - ].full_path.to_list()[0] - except IndexError: position_tracking_filepath = None @@ -729,23 +625,10 @@ def add_position( logger.info(f"\tposition_timestamps_filepath: {position_timestamps_filepath}") logger.info(f"\tposition_tracking_filepath: {position_tracking_filepath}") - # restrict dio camera timestamps to the current epoch - if not ptp_enabled: - epoch_start = epoch_df[epoch_df.index == epoch - 1]["start_time"].iloc[0] - epoch_end = epoch_df[epoch_df.index == epoch - 1]["stop_time"].iloc[0] - dio_camera_timestamps_epoch = find_camera_dio_channel_per_epoch( - nwb_file=nwb_file, epoch_start=epoch_start, epoch_end=epoch_end - ) - else: - dio_camera_timestamps_epoch = None - - position_df = get_position_timestamps( + position_df, original_video_timestamps = get_position_timestamps( position_timestamps_filepath, position_tracking_filepath, ptp_enabled=ptp_enabled, - rec_dci_timestamps=rec_dci_timestamps, - dio_camera_timestamps=dio_camera_timestamps_epoch, - sample_count=sample_count, ) # TODO: Doesn't handle multiple cameras currently @@ -767,7 +650,14 @@ def add_position( timestamps=np.asarray(position_df.index), ) else: - logging.warning(f"No position tracking data found for epoch {epoch}") + position.create_spatial_series( + name=f"series_{epoch}", + description=", ".join(["xloc", "yloc"]), + data=np.asarray([]), + conversion=meters_per_pixel, + reference_frame="Upper left corner of video frame", + timestamps=np.asarray(position_df.index), + ) # add the video frame index as a new processing module if "position_frame_index" not in nwb_file.processing: @@ -800,10 +690,41 @@ def add_position( ) ) + # add the video file data + # find the video metadata for this epoch + video_metadata = None + for vid_ in metadata["associated_video_files"]: + if vid_["task_epochs"][0] == epoch: + video_metadata = vid_ + break + if video_metadata is None: + raise KeyError(f"Missing video metadata for epoch {epoch}") + + if convert_video: + video_file_name = convert_h264_to_mp4( + os.path.join(video_directory, video_metadata["name"]) + ) + else: + video_file_name = os.path.join(video_directory, video_metadata["name"]) + + video.add_timeseries( + ImageSeries( + device=nwb_file.devices[ + "camera_device " + str(video_metadata["camera_id"]) + ], + name=video_metadata["name"], + timestamps=np.asarray(position_df.index), + external_file=[video_file_name], + format="external", + starting_frame=[0], + description="video of animal behavior from epoch", + ) + ) nwb_file.processing["behavior"].add(position) + nwb_file.processing["video_files"].add(video) -def convert_h264_to_mp4(file: str, video_directory: str) -> str: +def convert_h264_to_mp4(file: str) -> str: """ Converts h264 file to mp4 file using ffmpeg. @@ -811,8 +732,6 @@ def convert_h264_to_mp4(file: str, video_directory: str) -> str: ---------- file : str The path to the input h264 file. - video_directory : str - Where to save the output mp4 file. Returns ------- @@ -826,7 +745,6 @@ def convert_h264_to_mp4(file: str, video_directory: str) -> str: """ new_file_name = file.replace(".h264", ".mp4") - new_file_name = video_directory + "/" + new_file_name.split("/")[-1] logger = logging.getLogger("convert") if os.path.exists(new_file_name): return new_file_name @@ -842,95 +760,3 @@ def convert_h264_to_mp4(file: str, video_directory: str) -> str: f"Video conversion FAILED. {file} has NOT been converted to {new_file_name}" ) raise e - - -def copy_video_to_directory(file: str, video_directory: str) -> str: - """Copies video file to video directory without conversion""" - new_file_name = video_directory + "/" + file.split("/")[-1] - logger = logging.getLogger("convert") - if os.path.exists(new_file_name): - return new_file_name - try: - # Construct the ffmpeg command - subprocess.run(f"cp {file} {new_file_name}", shell=True) - logger.info(f"Video copy completed. {file} has been copied to {new_file_name}") - return new_file_name - except subprocess.CalledProcessError as e: - logger.error( - f"Video copy FAILED. {file} has NOT been copied to {new_file_name}" - ) - raise e - - -def add_associated_video_files( - nwb_file: NWBFile, - metadata: dict, - session_df: pd.DataFrame, - video_directory: str, - convert_video: bool = False, -): - # make processing module for video files - nwb_file.create_processing_module( - name="video_files", description="Contains all associated video files data" - ) - # make a behavioral Event object to hold videos - video = BehavioralEvents(name="video") - # add the video file data - for video_metadata in metadata["associated_video_files"]: - epoch = video_metadata["task_epochs"][0] - # get the video file path - video_path = None - for file in session_df[session_df.file_extension == ".h264"].full_path: - if video_metadata["name"].rsplit(".", 1)[0] in file: - video_path = file - break - if video_path is None: - raise FileNotFoundError( - f"Could not find video file {video_metadata['name']} in session_df" - ) - - # get timestamps for this video - # find the matching hw timestamps filepath - video_index = video_path.split(".")[-2] - video_hw_df = session_df.loc[ - np.logical_and( - session_df.epoch == epoch, - session_df.file_extension == ".cameraHWSync", - ) - ] - if not len(video_hw_df): - raise ValueError( - f"No cameraHWSync found for epoch {epoch}, video {video_index} in session_df" - ) - video_timestamps_filepath = video_hw_df[ - [ - full_path.split(".")[-3] == video_index - for full_path in video_hw_df.full_path - ] - ].full_path.to_list()[0] - # get the timestamps - video_timestamps = get_video_timestamps(video_timestamps_filepath) - - if convert_video: - video_file_name = convert_h264_to_mp4(video_path, video_directory) - else: - video_file_name = copy_video_to_directory(video_path, video_directory) - - video.add_timeseries( - ImageSeries( - device=nwb_file.devices[ - "camera_device " + str(video_metadata["camera_id"]) - ], - name=video_metadata["name"], - timestamps=video_timestamps, - external_file=[video_file_name.split("/")[-1]], - format="external", - starting_frame=[0], - description="video of animal behavior from epoch", - ) - ) - if video_metadata is None: - raise KeyError(f"Missing video metadata for epoch {epoch}") - - nwb_file.processing["video_files"].add(video) - return diff --git a/src/spikegadgets_to_nwb/convert_yaml.py b/src/spikegadgets_to_nwb/convert_yaml.py index 6cd4d1e..c0bd4a0 100644 --- a/src/spikegadgets_to_nwb/convert_yaml.py +++ b/src/spikegadgets_to_nwb/convert_yaml.py @@ -20,9 +20,6 @@ from pynwb.ecephys import ElectrodeGroup from pynwb.file import ProcessingModule, Subject -import spikegadgets_to_nwb.metadata_validation -from spikegadgets_to_nwb import __version__ - def load_metadata( metadata_path: str, probe_metadata_paths: list[str] @@ -41,16 +38,8 @@ def load_metadata( tuple[dict, list[dict]] the yaml generator metadata and list of probe metadatas """ - metadata = None with open(metadata_path, "r") as stream: metadata = yaml.safe_load(stream) - ( - is_metadata_valid, - metadata_errors, - ) = spikegadgets_to_nwb.metadata_validation.validate(metadata) - if not is_metadata_valid: - logger = logging.getLogger("convert") - logger.exception("".join(metadata_errors)) probe_metadata = [] for path in probe_metadata_paths: with open(path, "r") as stream: @@ -93,8 +82,6 @@ def initialize_nwb(metadata: dict, first_epoch_config: ElementTree) -> NWBFile: session_id=metadata["session_id"], # notes=self.link_to_notes, TODO experiment_description=metadata["experiment_description"], - source_script="spikegadgets_to_nwb " + __version__, - source_script_file_name="convert.py", ) return nwbfile @@ -405,13 +392,15 @@ def add_associated_files(nwbfile: NWBFile, metadata: dict) -> None: # read file content content = "" try: - with open(file["path"], "r") as open_file: + with open(file["path"] + file["name"], "r") as open_file: content = open_file.read() except FileNotFoundError as err: - logger.info(f"ERROR: associated file {file['path']} does not exist") + logger.info( + f"ERROR: associated file {file['path']+file['name']} does not exist" + ) logger.info(str(err)) except IOError as err: - logger.info(f"ERROR: Cannot read file at {file['path']}") + logger.info(f"ERROR: Cannot read file at {file['path']+file['name']}") logger.info(str(err)) # convert task epoch values into strings task_epochs = "".join([str(element) + ", " for element in file["task_epochs"]]) diff --git a/src/spikegadgets_to_nwb/metadata_validation.py b/src/spikegadgets_to_nwb/metadata_validation.py deleted file mode 100644 index 8856e8e..0000000 --- a/src/spikegadgets_to_nwb/metadata_validation.py +++ /dev/null @@ -1,75 +0,0 @@ -import copy -import datetime -import os - -import jsonschema -import yaml - - -def _get_nwb_json_schema_path() -> str: - """Get the NWB JSON Schema file path - - Returns - ------- - str - NWB Schema file Path - """ - current_path = os.path.dirname(os.path.abspath(__file__)) - json_schema_file = "/./nwb_schema.json" - return f"{current_path}{os.path.normpath(json_schema_file)}" - - -def _get_json_schema() -> str: - """Get JSON Schema - - Returns - ------- - str - JSON Schema content - """ - json_schema = None - json_schema_path = _get_nwb_json_schema_path() - with open(json_schema_path, "r") as stream: - json_schema = yaml.safe_load(stream) - return json_schema - - -def validate(metadata: dict) -> tuple: - """Validates metadata - - Parameters - ---------- - metadata : dict - metadata documenting the particulars of a session - - Returns - ------- - tuple - information of the validity of the metadata data and any errors - """ - assert metadata is not None # metadata cannot be null - assert isinstance(metadata, dict) # cannot proceed if metadata is not a dictionary - - # date_of_birth is set to a datetime by the YAML-to-dict converter. - # This code converts date_of_birth to string - metadata_content = copy.deepcopy(metadata) or {} - if ( - metadata_content["subject"] - and metadata_content["subject"]["date_of_birth"] - and type(metadata_content["subject"]["date_of_birth"]) is datetime.datetime - ): - metadata_content["subject"]["date_of_birth"] = ( - metadata_content["subject"]["date_of_birth"].utcnow().isoformat() - ) - - schema = _get_json_schema() - validator = jsonschema.Draft202012Validator(schema) - metadata_validation_errors = validator.iter_errors(metadata_content) - errors = [] - - for metadata_validation_error in metadata_validation_errors: - errors.append(metadata_validation_error.message) - - is_valid = len(errors) == 0 - - return is_valid, errors diff --git a/src/spikegadgets_to_nwb/nwb_schema.json b/src/spikegadgets_to_nwb/nwb_schema.json deleted file mode 100644 index f7f82f4..0000000 --- a/src/spikegadgets_to_nwb/nwb_schema.json +++ /dev/null @@ -1,35971 +0,0 @@ -{ - "definitions": {}, - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://lorenfranklab.github.io/rec_to_nwb_yaml_creator/v1.0.0", - "title": "Spikegadgets to NWB Validator", - "type": "object", - "description": "Spikegadgets to NWB Validator YAML schema version", - "required": [ - "experimenter_name", - "lab", - "institution", - "data_acq_device", - "times_period_multiplier", - "raw_data_to_volts" - ], - "properties": { - "experimenter_name": { - "$id": "#root/experimenter_name", - "title": "experimenter_name", - "type": "array", - "default": [], - "examples": [ - "Jennifer Guidera", - "Alison Comrie" - ], - "minItems": 1, - "uniqueItems": true, - "description": "Name of experimenter performing current session", - "items": { - "$id": "#root/experimenter_name/items", - "title": "items", - "type": "string", - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - }, - "lab": { - "$id": "#root/lab", - "title": "lab", - "type": "string", - "default": "", - "examples": [ - "Frank" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Laboratory where the experiment is conducted" - }, - "institution": { - "$id": "#root/institution", - "title": "institution", - "type": "string", - "default": "University of California, San Francisco", - "examples": [ - "Air Force Institute of Technology Graduate School of Engineering & Management", - "Albert Einstein College of Medicine", - "American University", - "Arizona State University Campus Immersion", - "Arizona State University Digital Immersion", - "Arkansas State University", - "Augusta University", - "Auburn University", - "Azusa Pacific University", - "Ball State University", - "Baylor College of Medicine", - "Baylor University", - "Binghamton University", - "Boise State University", - "Boston College", - "Boston University", - "Bowling Green State University", - "Brandeis University", - "Brigham Young University", - "Brown University", - "California Institute of Technology", - "California State University, East Bay", - "California State University, Fresno", - "California State University, Fullerton", - "California State University, Long Beach", - "California State University, San Bernardino", - "Carnegie Mellon University", - "Case Western Reserve University", - "Catholic University of America", - "Central Michigan University", - "Chapman University", - "Claremont Graduate University", - "Clark Atlanta University", - "Clark University", - "Clarkson University", - "Clemson University", - "Cleveland State University", - "College of William and Mary", - "Colorado School of Mines", - "Colorado State University", - "Columbia University", - "Cornell University", - "Creighton University", - "CUNY City College", - "Dartmouth College", - "DePaul University", - "Drexel University", - "Duke University", - "Duquesne University", - "East Carolina University", - "East Tennessee State University", - "Eastern Michigan University", - "Eastern Virginia Medical School", - "Emory University", - "Florida Agricultural and Mechanical University", - "Florida Atlantic University", - "Florida Institute of Technology", - "Florida International University", - "Florida State University", - "Fordham University", - "George Mason University", - "George Washington University", - "Georgetown University", - "Georgia Institute of Technology", - "Georgia Southern University", - "Georgia State University", - "Graduate Center, CUNY", - "Harvard University", - "Howard University", - "Icahn School of Medicine at Mount Sinai", - "Idaho State University", - "Illinois Institute of Technology", - "Illinois State University", - "Indiana University – Purdue University Indianapolis", - "Indiana University Bloomington", - "Indiana University of Pennsylvania", - "Iowa State University", - "Jackson State University", - "James Madison University", - "Johns Hopkins University", - "Kansas State University", - "Kennesaw State University", - "Kent State University", - "Lehigh University", - "Loma Linda University", - "Long Island University", - "Louisiana State University", - "Louisiana Tech University", - "Loyola Marymount University", - "Loyola University Chicago", - "Marquette University", - "Marshall University", - "Massachusetts Institute of Technology", - "Mayo Clinic College of Medicine and Science", - "Medical College of Wisconsin", - "Medical University of South Carolina", - "Mercer University", - "Miami University", - "Michigan State University", - "Michigan Technological University", - "Middle Tennessee State University", - "Mississippi State University", - "Missouri University of Science and Technology", - "Montana State University", - "Montclair State University", - "Morgan State University", - "New Jersey Institute of Technology", - "New Mexico State University", - "New York University", - "North Carolina A & T State University", - "North Carolina State University", - "North Dakota State University", - "Northeastern University", - "Northern Arizona University", - "Northern Illinois University", - "Northwestern University", - "Nova Southeastern University", - "Oakland University", - "Ohio State University", - "Ohio University", - "Oklahoma State University–Stillwater", - "Old Dominion University", - "Oregon Health & Science University", - "Oregon State University", - "Pennsylvania State University", - "Portland State University", - "Prairie View A&M University", - "Princeton University", - "Purdue University", - "Rensselaer Polytechnic Institute", - "Rice University", - "Rochester Institute of Technology", - "Rockefeller University", - "Rowan University", - "Rutgers University–Camden", - "Rutgers University–New Brunswick", - "Rutgers University–Newark", - "Saint Louis University", - "Sam Houston State University", - "San Diego State University", - "San Francisco State University", - "Seton Hall University", - "South Dakota State University", - "Southern Illinois University Carbondale", - "Southern Methodist University", - "Southern University", - "Stanford University", - "Stevens Institute of Technology", - "Stony Brook University", - "SUNY College of Environmental Science and Forestry", - "Syracuse University", - "Tarleton State University", - "Teachers College at Columbia University", - "Temple University", - "Tennessee State University", - "Tennessee Technological University", - "Texas A&M University", - "Texas A&M University–Corpus Christi", - "Texas A&M University–Kingsville", - "Texas Christian University", - "Texas Southern University", - "Texas State University", - "Texas Tech University", - "Texas Tech University Health Sciences Center", - "The New School", - "Thomas Jefferson University", - "Tufts University", - "Tulane University", - "Uniformed Services University of the Health Sciences", - "University at Albany, SUNY", - "University at Buffalo", - "University of Akron Main Campus", - "University of Alabama", - "University of Alabama at Birmingham", - "University of Alabama in Huntsville", - "University of Alaska Fairbanks", - "University of Arizona", - "University of Arkansas", - "University of Arkansas at Little Rock", - "University of Arkansas for Medical Sciences", - "University of California, Berkeley", - "University of California, Davis", - "University of California, Irvine", - "University of California, Los Angeles", - "University of California, Merced", - "University of California, Riverside", - "University of California, San Diego", - "University of California, San Francisco", - "University of California, Santa Barbara", - "University of California, Santa Cruz", - "University of Central Florida", - "University of Chicago", - "University of Cincinnati", - "University of Colorado Boulder", - "University of Colorado Colorado Springs", - "University of Colorado Denver", - "University of Connecticut", - "University of Dayton", - "University of Delaware", - "University of Denver", - "University of Florida", - "University of Georgia", - "University of Hawaii at Manoa", - "University of Houston", - "University of Idaho", - "University of Illinois Chicago", - "University of Illinois Urbana-Champaign", - "University of Iowa", - "University of Kansas", - "University of Kentucky", - "University of Louisiana at Lafayette", - "University of Louisville", - "University of Maine", - "University of Maryland, Baltimore", - "University of Maryland, Baltimore County", - "University of Maryland, College Park", - "University of Maryland, Eastern Shore", - "University of Massachusetts Amherst", - "University of Massachusetts Boston", - "University of Massachusetts Chan Medical School", - "University of Massachusetts Dartmouth", - "University of Massachusetts Lowell", - "University of Memphis", - "University of Miami", - "University of Michigan", - "University of Minnesota", - "University of Mississippi", - "University of Missouri", - "University of Missouri–Kansas City", - "University of Missouri–St. Louis", - "University of Montana", - "University of Nebraska at Omaha", - "University of Nebraska Medical Center", - "University of Nebraska–Lincoln", - "University of Nevada, Las Vegas", - "University of Nevada, Reno", - "University of New England", - "University of New Hampshire", - "University of New Mexico", - "University of New Orleans", - "University of North Carolina at Chapel Hill", - "University of North Carolina at Charlotte", - "University of North Carolina at Greensboro", - "University of North Carolina Wilmington", - "University of North Dakota", - "University of North Florida", - "University of North Texas", - "University of Notre Dame", - "University of Oklahoma", - "University of Oklahoma Health Sciences Center", - "University of Oregon", - "University of Pennsylvania", - "University of Pittsburgh", - "University of Puerto Rico at Río Piedras", - "University of Rhode Island", - "University of Rochester", - "University of San Diego", - "University of South Alabama", - "University of South Carolina", - "University of South Dakota", - "University of South Florida", - "University of Southern California", - "University of Southern Mississippi", - "University of Tennessee", - "University of Tennessee Health Science Center", - "University of Texas at Arlington", - "University of Texas at Austin", - "University of Texas at Dallas", - "University of Texas at El Paso", - "University of Texas at San Antonio", - "University of Texas Health Science Center at Houston", - "University of Texas Health Science Center at San Antonio", - "University of Texas Medical Branch", - "University of Texas Southwestern Medical Center", - "University of Toledo", - "University of Tulsa", - "University of Utah", - "University of Vermont", - "University of Virginia", - "University of Washington", - "University of Wisconsin–Madison", - "University of Wisconsin–Milwaukee", - "University of Wyoming", - "Utah State University", - "Vanderbilt University", - "Villanova University", - "Virginia Commonwealth University", - "Virginia Tech", - "Wake Forest University", - "Washington State University", - "Washington University in St. Louis", - "Wayne State University", - "Weill Cornell Medicine", - "West Chester University of Pennsylvania", - "West Virginia University", - "Western Michigan University", - "Wichita State University", - "Worcester Polytechnic Institute", - "Wright State University", - "Yale University" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Type to search for institution ..." - }, - "experiment_description": { - "$id": "#root/experiment_description", - "title": "experiment_description", - "type": "string", - "default": "", - "examples": [ - "spatial alternation memory task" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Research work being conducted" - }, - "session_description": { - "$id": "#root/session_description", - "title": "session_description", - "type": "string", - "default": "", - "examples": [ - "spatial alternation memory task" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Aspect of research being conducted" - }, - "session_id": { - "$id": "#root/session_id", - "title": "session_id", - "type": "string", - "default": "", - "examples": [ - "J16_20210606" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Current session's identification code/number" - }, - "keywords": { - "$id": "#root/keywords", - "title": "keywords", - "type": "array", - "default": [], - "examples": [ - "J16_20210606" - ], - "minItems": 1, - "uniqueItems": true, - "description": "keywords", - "items": { - "$id": "#root/keywords/items", - "title": "items", - "type": "string", - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - }, - "subject": { - "$id": "#root/subject", - "title": "subject", - "type": "object", - "required": [ - "description", - "genotype", - "sex", - "species", - "subject_id", - "weight", - "date_of_birth" - ], - "properties": { - "description": { - "$id": "#root/subject/description", - "title": "description", - "type": "string", - "default": "", - "examples": [ - "Long Evans Rat" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Summary of animal model/patient/specimen being examined" - }, - "genotype": { - "$id": "#root/subject/genotype", - "title": "genotype", - "type": "string", - "default": "", - "examples": [ - "Wild Type" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Genetic summary of animal model/patient/specimen" - }, - "sex": { - "$id": "#root/subject/sex", - "title": "sex", - "type": "string", - "enum": [ - "M", - "F", - "U", - "O" - ], - "default": "M", - "examples": [ - "M", - "F", - "U", - "O" - ], - "description": "Gender of animal model/patient" - }, - "species": { - "$id": "#root/subject/species", - "title": "species", - "type": "string", - "default": "", - "examples": [ - "Rat" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Category of animal model/patient" - }, - "subject_id": { - "$id": "#root/subject/subject_id", - "title": "subject_id", - "type": "string", - "default": "", - "examples": [ - "J16" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Identification code/number of animal model/patient" - }, - "weight": { - "$id": "#root/subject/weight", - "title": "weight", - "type": "number", - "default": "100", - "minimum": 0, - "description": "Mass of animal model/patient in grams" - }, - "date_of_birth": { - "$id": "#root/subject/date_of_birth", - "title": "date_of_birth", - "type": "string", - "default": "", - "pattern": "(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)", - "description": "date of birth of animal model/patient, in ISO 8061 format" - } - } - }, - "data_acq_device": { - "$id": "#root/data_acq_device", - "title": "data_acq_device", - "type": "array", - "minItems": 1, - "default": [], - "items": { - "$id": "#root/data_acq_device/items", - "title": "items", - "type": "object", - "required": [ - "name", - "system", - "amplifier", - "adc_circuit" - ], - "properties": { - "name": { - "$id": "#root/data_acq_device/items/name", - "title": "name", - "type": "string", - "default": "", - "description": "Data acquisition device name", - "examples": [ - "Spike Gadgets" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "system": { - "$id": "#root/data_acq_device/items/system", - "title": "system", - "type": "string", - "default": "", - "description": "Data acquisition information like version or id", - "examples": [ - "MCU" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "amplifier": { - "$id": "#root/data_acq_device/items/amplifier", - "title": "amplifier", - "type": "string", - "default": "", - "description": "Amplifier device", - "examples": [ - "intan" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "adc_circuit": { - "$id": "#root/data_acq_device/items/adc_circuit", - "title": "adc_circuit", - "type": "string", - "default": "", - "description": "adc circuit", - "examples": [ - "intan" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - } - } - }, - "associated_files": { - "$id": "#root/associated_files", - "title": "associated_files", - "type": "array", - "default": [], - "items": { - "$id": "#root/associated_files/items", - "title": "Items", - "type": "object", - "required": [ - "name", - "description", - "path", - "task_epochs" - ], - "properties": { - "name": { - "$id": "#root/associated_files/items/name", - "title": "name", - "type": "string", - "default": "", - "description": "File name", - "examples": [ - "stateScriptLog_r1" - ], - "pattern": "(.|\\s)*\\S(.|\\s)*$" - }, - "description": { - "$id": "#root/associated_files/items/description", - "title": "description", - "type": "string", - "default": "", - "description": "Purpose of file", - "examples": [ - "stateScriptLog epoch r1" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "path": { - "$id": "#root/associated_files/items/path", - "title": "path", - "type": "string", - "default": "", - "description": "File location", - "examples": [ - "/nimbus/jguidera/J16/raw/20210606/20210606_J16_02_r1.stateScriptLog" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "task_epochs": { - "$id": "#root/associated_files/items/task_epochs", - "title": "task_epochs", - "type": "integer", - "default": 0, - "description": "task epoch" - } - } - } - }, - "units": { - "$id": "#root/units", - "title": "units", - "type": "object", - "required": [ - "analog", - "behavioral_events" - ], - "properties": { - "analog": { - "$id": "#root/units/analog", - "title": "analog", - "type": "string", - "default": "", - "description": "analog", - "examples": [ - "unspecified" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "behavioral_events": { - "$id": "#root/units/behavioral_events", - "title": "behavioral_events", - "type": "string", - "default": "", - "description": "behavioral_events", - "examples": [ - "unspecified" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - } - }, - "times_period_multiplier": { - "$id": "#root/times_period_multiplier", - "title": "times_period_multiplier", - "type": "number", - "examples": [ - 1.5 - ], - "default": 0.0 - }, - "raw_data_to_volts": { - "$id": "#root/raw_data_to_volts", - "title": "raw_data_to_volts", - "type": "number", - "examples": [ - 1.95e-7 - ], - "default": 0.0 - }, - "default_header_file_path": { - "$id": "#root/default_header_file_path", - "title": "default_header_file_path", - "type": "string", - "default": "", - "examples": [ - "default_header.xml" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "cameras": { - "$id": "#root/cameras", - "title": "cameras", - "type": "array", - "default": [], - "items": { - "$id": "#root/cameras/items", - "title": "Items", - "type": "object", - "required": [ - "id", - "meters_per_pixel", - "manufacturer", - "model", - "lens", - "camera_name" - ], - "properties": { - "id": { - "$id": "#root/cameras/items/id", - "title": "id", - "type": "integer", - "examples": [ - 0 - ], - "default": 0, - "description": "camera id" - }, - "meters_per_pixel": { - "$id": "#root/cameras/items/meters_per_pixel", - "title": "meters_per_pixel", - "type": "number", - "examples": [ - 0.000842 - ], - "default": 0.0, - "description": "meter per pixel" - }, - "manufacturer": { - "$id": "#root/cameras/items/manufacturer", - "title": "manufacturer", - "type": "string", - "default": "", - "examples": [ - "Manta" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Manufacturer" - }, - "model": { - "$id": "#root/cameras/items/model", - "title": "model", - "type": "string", - "default": "", - "examples": [ - "unknown" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Model" - }, - "lens": { - "$id": "#root/cameras/items/lens", - "title": "lens", - "type": "string", - "default": "", - "examples": [ - "unknown" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Len" - }, - "camera_name": { - "$id": "#root/cameras/items/camera_name", - "title": "camera_name", - "type": "string", - "default": "", - "examples": [ - "HomeBox_camera" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Camera Name" - } - } - } - }, - "tasks": { - "$id": "#root/tasks", - "title": "tasks", - "type": "array", - "default": [], - "items": { - "$id": "#root/tasks/items", - "title": "items", - "type": "object", - "required": [ - "task_name", - "task_description", - "task_environment", - "camera_id", - "task_epochs" - ], - "properties": { - "task_name": { - "$id": "#root/tasks/items/task_name", - "title": "task_name", - "type": "string", - "default": "", - "examples": [ - "home" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Task name" - }, - "task_description": { - "$id": "#root/tasks/items/task_description", - "title": "task_description", - "type": "string", - "default": "", - "examples": [ - "The animal rests in a box" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Task description" - }, - "task_environment": { - "$id": "#root/tasks/items/task_environment", - "title": "task_environment", - "type": "string", - "default": "", - "examples": [ - "HomeBox" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "description": "Task environment" - }, - "camera_id": { - "$id": "#root/tasks/items/camera_id", - "title": "camera_id", - "type": "array", - "description": "Comma separated camera ids, from camera list", - "examples": [], - "default": [], - "items": { - "$id": "#root/tasks/items/camera_id/items", - "title": "Items", - "uniqueItems": true, - "type": "integer", - "examples": [ - 0 - ], - "default": 0 - } - }, - "task_epochs": { - "$id": "#root/tasks/items/task_epochs", - "title": "task_epochs", - "type": "array", - "description": "Comma separated numbers of task epochs", - "examples": [], - "default": [], - "items": { - "$id": "#root/tasks/items/task_epochs/items", - "title": "Items", - "type": "integer", - "uniqueItems": true, - "examples": [ - 18 - ], - "default": 0 - } - } - } - } - }, - "associated_video_files": { - "$id": "#root/associated_video_files", - "title": "associated_video_files", - "type": "array", - "default": [], - "items": { - "$id": "#root/associated_video_files/items", - "title": "Items", - "type": "object", - "required": [ - "name", - "camera_id", - "task_epochs" - ], - "properties": { - "name": { - "$id": "#root/associated_video_files/items/name", - "title": "name", - "type": "string", - "default": "", - "description": "File name", - "examples": [ - "20210606_J16_01_s1.1.h264" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "camera_id": { - "$id": "#root/associated_video_files/items/camera_id", - "title": "camera_id", - "type": "integer", - "description": "camera id from camera list", - "default": 0 - }, - "task_epochs": { - "$id": "#root/associated_video_files/items/task_epochs", - "title": "task_epochs", - "type": "integer", - "default": 0, - "description": "task epoch" - } - } - } - }, - "behavioral_events": { - "$id": "#root/behavioral_events", - "title": "behavioral_events", - "type": "array", - "default": [], - "items": { - "$id": "#root/behavioral_events/items", - "title": "Items", - "type": "object", - "required": [ - "description", - "name" - ], - "properties": { - "description": { - "$id": "#root/behavioral_events/items/description", - "title": "description", - "type": "string", - "default": "Din1", - "examples": [ - "Din", - "Dout", - "Accel", - "Gyro", - "Mag" - ], - "description": "Behavioral Events", - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "name": { - "$id": "#root/behavioral_events/items/name", - "title": "name", - "type": "string", - "default": "Home box camera", - "examples": [ - "Home box camera", - "Poke", - "Light", - "Pump", - "Run Camera Ticks", - "Sleep" - ], - "description": "Type of behavioral events", - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - } - } - }, - "device": { - "$id": "#root/device", - "title": "device", - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "$id": "#root/device/items/name", - "title": "name", - "type": "array", - "minItems": 1, - "default": "Trodes", - "description": "Selected recording device", - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - } - }, - "electrode_groups": { - "$id": "#root/electrode_groups", - "title": "electrode_groups", - "type": "array", - "default": [], - "items": { - "$id": "#root/electrode_groups/items", - "title": "Items", - "type": "object", - "required": [ - "id", - "location", - "device_type", - "description", - "targeted_location", - "targeted_x", - "targeted_y", - "targeted_z", - "units" - ], - "properties": { - "id": { - "$id": "#root/electrode_groups/items/id", - "title": "id", - "type": "integer", - "examples": [ - 0 - ], - "default": 0, - "minimum": 0, - "description": "electrode/probe identification code/number" - }, - "location": { - "$id": "#root/electrode_groups/items/location", - "title": "location", - "type": "string", - "default": "Cornu ammonis 1 (CA1)", - "description": "Exact location of electrode/probe", - "examples": [ - "Brain (Brain)", - "White matter (wmt)", - "Olfactory white matter (olf)", - "lateral olfactory tract (lot)", - "corpus callosum and associated subcortical white matter (cc-ec-cing-dwm)", - "Anterior commissure (ac)", - "anterior commissure, anterior limb (aca)", - "anterior commissure, posterior limb (acp)", - "anterior commissure, intrabulbar part (aci)", - "Hippocampal white matter (hiw)", - "alveus of the hippocampus (alv)", - "ventral hippocampal commissure (vhc)", - "fornix (f)", - "fimbria of the hippocampus (fi)", - "Corticofugal pathways (cfp)", - "corticofugal tract and corona radiata (ic-cp-lfp-py)", - "pyramidal decussation (pyx)", - "Medial lemniscus (ml)", - "medial lemniscus, unspecified (ml-u)", - "medial lemniscus decussation (mlx)", - "Thalamic tracts (tht)", - "External medullary lamina (eml)", - "external medullary lamina, unspecified (eml-u)", - "external medullary lamina, auditory radiation (eml-ar)", - "internal medullary lamina (iml)", - "intramedullary thalamic area (ima)", - "superior cerebellar peduncle and prerubral field (scp-pr)", - "pretectothalamic lamina (ptl)", - "mammillotegmental tract (mtg)", - "commissural stria terminalis (cst)", - "fasciculus retroflexus (fr)", - "stria medullaris thalami (sm)", - "stria terminalis (st)", - "habenular commissure (hbc)", - "posterior commissure (pc)", - "Facial nerve (7n)", - "facial nerve, unspecified (7n-u)", - "ascending fibers of the facial nerve (asc7)", - "genu of the facial nerve (g7)", - "Optic fiber system and supraoptic decussation (ofs)", - "optic nerve (2n)", - "optic tract and optic chiasm (opt-och)", - "supraoptic decussation (sox)", - "White matter of the tectum (tew)", - "commissure of the superior colliculus (csc)", - "brachium of the superior colliculus (bsc)", - "inferior colliculus, commissure (cic)", - "inferior colliculus, brachium (bic)", - "Cerebellar and precerebellar white matter (cbt)", - "inferior cerebellar peduncle (icp)", - "middle cerebellar peduncle (mcp)", - "transverse fibers of the pons (tfp)", - "White matter of the brainstem (bsw)", - "Lateral lemniscus (ll)", - "lateral lemniscus, commissure (ll-c)", - "lateral lemniscus, unspecified (ll-u)", - "acoustic striae (as)", - "trapezoid body (tz)", - "spinal trigeminal tract (sp5t)", - "Gray matter (GM)", - "Telencephalon (Tel)", - "Laminated pallium (LamP)", - "Olfactory bulb (OB)", - "Glomerular layer of the accessory olfactory bulb (GlA)", - "Glomerular layer of the olfactory bulb (Gl)", - "Olfactory bulb, unspecified (OB-u)", - "Nucleus of the lateral olfactory tract (NLOT)", - "Cerebral cortex (Cx)", - "Hippocampal region (HR)", - "Hippocampal formation (HF)", - "Fasciola cinereum (FC)", - "Subiculum (SUB)", - "Cornu Ammonis (CA)", - "Cornu ammonis 1 (CA1)", - "Cornu ammonis 2 (CA2)", - "Cornu ammonis 3 (CA3)", - "Dentate gyrus (DG)", - "Parahippocampal region (PHR)", - "Postrhinal cortex (POR)", - "Presubiculum (PrS)", - "Parasubiculum (PaS)", - "Perirhinal cortex (PER)", - "Perirhinal area 35 (PER35)", - "Perirhinal area 36 (PER36)", - "Entorhinal cortex (EC)", - "Medial entorhinal cortex (MEC)", - "Lateral entorhinal cortex (LEC)", - "Piriform cortex (PIR)", - "Piriform cortex, layer 1 (PIR1)", - "Piriform cortex, layer 2 (PIR2)", - "Piriform cortex, layer 3 (PIR3)", - "Cingulate region (CgR)", - "Cingulate cortex (Cg)", - "Cingulate area 1 (Cg1)", - "Cingulate area 2 (Cg2)", - "Retrosplenial cortex (RS)", - "Retrosplenial dysgranular area (RSD)", - "Retrosplenial granular area (RSG)", - "Insular region (INS)", - "Agranular insular cortex (AI)", - "Agranular insular cortex, ventral area (AI-v)", - "Agranular insular cortex dorsal area (AI-d)", - "Agranular insular cortex, posterior area (AI-p)", - "Dysgranular insular cortex (DI)", - "Granular insular cortex (GI)", - "Frontal region (Front)", - "Frontal association cortex (FrA)", - "Orbitofrontal cortex (Orb)", - "Medial orbital area (MO)", - "Ventral orbital area (VO)", - "Ventrolateral orbital area (VLO)", - "Lateral orbital area (LO)", - "Dorsolateral orbital area (DLO)", - "Mediofrontal cortex (MFC)", - "Prelimbic area (PrL)", - "Infralimbic area (IL)", - "Motor cortex (M)", - "Primary motor area (M1)", - "Secondary motor area (M2)", - "Frontal association area 3 (Fr3)", - "Parietal region (Par)", - "Somatosensory cortex (SS)", - "Primary somatosensory area (S1)", - "Primary somatosensory area, face representation (S1-f)", - "Primary somatosensory area, barrel field (S1-bf)", - "Primary somatosensory area, dysgranular zone (S1-dz)", - "Primary somatosensory area, forelimb representation (S1-fl)", - "Primary somatosensory area, hindlimb representation (S1-hl)", - "Primary somatosensory area, trunk representation (S1-tr)", - "Secondary somatosensory area (S2)", - "Posterior parietal cortex (PPC)", - "Parietal association cortex, medial area (mPPC)", - "Parietal association cortex, lateral area (lPPC)", - "Parietal association cortex, posterior area (PtP)", - "Occipital region (Oc)", - "Visual cortex (Vis)", - "Primary visual area (V1)", - "Secondary visual area (V2)", - "Secondary visual area, medial part (V2M)", - "Secondary visual area, lateral part (V2L)", - "Temporal region (Te)", - "Temporal association cortex (TeA)", - "Auditory cortex (Au)", - "Primary auditory area (Au1)", - "Secondary auditory area (Au2)", - "Secondary auditory area, dorsal part (Au2-d)", - "Secondary auditory area, ventral part (Au2-v)", - "Non-laminated pallium (N-LamP)", - "Claustrum (CLA)", - "Endopiriform nucleus (Endo)", - "Amygdaloid area, unspecified (Am-u)", - " Subpallium (SubPAL)", - "Striatum (Str)", - "Caudate putamen (CPu)", - "Nucleus accumbens (NAc)", - "Nucleus accumbens, core (NAc-c)", - "Nucleus accumbens, shell (NAc-sh)", - "Ventral striatal region, unspecified (VSR-u)", - "Pallidum (PAL)", - "Globus pallidus external (GPe)", - "Globus pallidus external, medial part (GPe-m)", - "Globus pallidus external, lateral part (GPe-l)", - "Entopeduncular nucleus (EP)", - "Ventral pallidum (VP)", - "Basal forebrain region (BRF)", - "Basal forebrain region, unspecified (BFR-u)", - "Bed nucleus of the stria terminalis (BNST)", - "Septal region (Sep)", - "Subthalamic nucleus (STh)", - "Diencephalon (Dien)", - "Prethalamus (Thal-Pre)", - "Reticular (pre)thalamic nucleus (RT)", - "Reticular (pre)thalamic nucleus, unspecified (RT-u)", - "Reticular (pre)thalamic nucleus, auditory segment (RT-a)", - "Zona incerta (ZI)", - "Zona incerta, dorsal part (ZI-d)", - "Zona incerta, ventral part (ZI-v)", - "Zona incerta, rostral part (ZI-r)", - "Zona incerta, caudal part (ZI-c)", - "Zona incerta, A13 dopamine cells (ZI-A13)", - "Zona incerta, A11 dopamine cells (ZI-A11)", - "Fields of Forel (FoF)", - "Pregeniculate nucleus (PrG)", - "Subgeniculate nucleus (SubG)", - "Intergeniculate leaflet (IGL)", - "Epithalamus (Thal-EPI)", - "Lateral habenular nucleus (LHb)", - "Medial habenular nucleus (MHb)", - "Nucleus of the stria medullaris (SMn)", - "Pineal gland (PG)", - "Dorsal thalamus (Thal-D)", - "Anterior nuclei of the dorsal thalamus (ANT)", - "Anterodorsal thalamic nucleus (AD)", - "Anteroventral thalamic nucleus (AV)", - "Anteroventral thalamic nucleus, dorsomedial part (AV-dm)", - "Anteroventral thalamic nucleus, ventrolateral part (AV-vl)", - "Anteromedial thalamic nucleus (AM)", - "Interanteromedial thalamic nucleus (IAM)", - "Paraventricular thalamic nuclei (anterior and posterior) (PV)", - "Intermediodorsal thalamic nucleus (IMD)", - "Parataenial thalamic nucleus (PT)", - "Subparafascicular nucleus (SPF)", - "Posterior intralaminar nucleus (PIL)", - "Ventral midline group of the dorsal thalamus (V-MID)", - "Rhomboid thalamic nucleus (Rh)", - "Reuniens thalamic nucleus (Re)", - "Retroreuniens thalamic nucleus (RRe)", - "Xiphoid thalamic nucleus (Xi)", - "Mediodorsal nucleus of the dorsal thalamus (MD)", - "Mediodorsal thalamic nucleus, lateral part (MD-l)", - "Mediodorsal thalamic nucleus, central part (MD-c)", - "Mediodorsal thalamic nucleus, medial part (MD-m)", - "Ventral nuclei of the dorsal thalamus (VENT)", - "Ventral anterior thalamic nucleus (VA)", - "Ventromedial thalamic nucleus (VM)", - "Ventrolateral thalamic nucleus (VL)", - "Angular thalamic nucleus (Ang)", - "Ventral posterior thalamic nucleus (VPN)", - "Ventral posteromedial thalamic nucleus (VPM)", - "Ventral posterolateral thalamic nucleus (VPL)", - "Ventral posterior nucleus of the thalamus, parvicellular part (VP-pc)", - "Submedius thalamic nucleus (SMT)", - "Intralaminar nuclei of the dorsal thalamus (ILM)", - "Paracentral thalamic nucleus (PCN)", - "Central medial thalamic nucleus (CM)", - "Central lateral thalamic nucleus (CL)", - "Parafascicular thalamic nucleus (PF)", - "Ethmoid-Limitans nucleus (Eth)", - "Posterior complex of the dorsal thalamus (PoC)", - "Posterior thalamic nucleus (Po)", - "Posterior thalamic nuclear group, triangular part (Po-t)", - "Lateral posterior (pulvinar) complex of the dorsal thalamus (LP)", - "Lateral posterior thalamic nucleus, mediorostral part (LP-mr)", - "Lateral posterior thalamic nucleus, mediocaudal part (LP-mc)", - "Lateral posterior thalamic nucleus, lateral part (LP-l)", - "Laterodorsal thalamic nuclei of the dorsal thalamus (LD)", - "Laterodorsal thalamic nucleus, dorsomedial part (LD-dm)", - "Laterodorsal thalamic nucleus, ventrolateral part (LD-vl)", - "Dorsal lateral geniculate nucleus (DLG)", - "Medial geniculate complex of the dorsal thalamus (MG)", - "Medial geniculate body, ventral division (MG-v)", - "Medial geniculate body, dorsal division (MG-d)", - "Medial geniculate body, marginal zone (MG-mz)", - "Medial geniculate body, medial division (MG-m)", - "Medial geniculate body, suprageniculate nucleus (MG-sg)", - "Hypothalamus (HY)", - "Hypothalamic region, unspecified (HTh-u)", - "Pretectum (PreT)", - "Pretectal region (PRT)", - "Nucleus sagulum (Sag)", - "Mesencephalon (Mes)", - "Midbrain (MB)", - "Tectum (Tc)", - "Inferior colliculus (IC)", - "Inferior colliculus, dorsal cortex (DCIC)", - "Inferior colliculus, central nucleus (CNIC)", - "Inferior colliculus, external cortex (ECIC)", - "Superior colliculus (Su)", - "Superficial gray layer of the superior colliculus (SuG)", - "Deeper layers of the superior colliculus (SuD)", - "Tegmentum (Tg)", - "Substantia nigra (SN)", - "Substantia nigra, reticular part (SN-r)", - "Substantia nigra, compact part (SN-c)", - "Substantia nigra, lateral part (SN-l)", - "Ventral tegmental area (VTA)", - "Peripeduncular nucleus (PP)", - "Interpeduncular nucleus (IP)", - "Periaqueductal gray (PAG)", - "Brainstem, unspecified (BS-u)", - "Rhombencephalon (Rho)", - "Metencephalon (Met)", - "Pontine nuclei (Pn)", - "Cerebellum (Cb)", - "Molecular cell layer of the cerebellum (Cb-m)", - "Cerebellum, unspecified (Cb-u)", - "Myelencephalon (Myel)", - "Cochlear nucleus, ventral part (VCN)", - "Ventral cochlear nucleus, anterior part (AVCN)", - "Ventral cochlear nucleus, posterior part (PVCN)", - "Ventral cochlear nucleus, cap area (Cap)", - "Ventral cochlear nucleus, granule cell layer (GCL)", - "Cochlear nucleus, dorsal part (DCN)", - "Dorsal cochlear nucleus, molecular layer (DCNM)", - "Dorsal cochlear nucleus, fusiform and granule layer (DCNFG)", - "Dorsal cochlear nucleus, deep core (DCND)", - "Spinal trigeminal nucleus (Sp5n)", - "Periventricular gray (PVG)", - "Superior olivary complex (SO)", - "Nucleus of the trapezoid body (NTB)", - "Superior paraolivary nucleus (SPN)", - "Medial superior olive (MSO)", - "Lateral superior olive (LSO)", - "Superior periolivary region (SPR)", - "Ventral periolivary nuclei (VPO)", - "Nuclei of the lateral lemniscus (NLL)", - "Lateral lemniscus, ventral nucleus (VLL)", - "Lateral lemniscus, intermediate nucleus (ILL)", - "Lateral lemniscus, dorsal nucleus (DLL)", - "Inferior olive (IO)", - "Ventricular system (V)", - "ventricular system, unspecified (V-u)", - "4th ventricle (4V)", - "central canal (CC)", - "spinal cord (SpC)", - "Inner ear (IE)", - "vestibular apparatus (VeA)", - "cochlea (Co)", - "cochlear nerve (8cn)", - "vestibular nerve (8vn)", - "spiral ganglion (SpG)" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "device_type": { - "$id": "#root/electrode_groups/items/device_type", - "title": "device_type", - "type": "string", - "default": "", - "examples": [ - "", - "tetrode_12.5", - "A1x32-6mm-50-177-H32_21mm", - "128c-4s8mm6cm-20um-40um-sl", - "128c-4s6mm6cm-15um-26um-sl", - "32c-2s8mm6cm-20um-40um-dl", - "64c-4s6mm6cm-20um-40um-dl", - "64c-3s6mm6cm-20um-40um-sl" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$", - "enum": [ - "tetrode_12.5", - "A1x32-6mm-50-177-H32_21mm", - "128c-4s8mm6cm-20um-40um-sl", - "128c-4s6mm6cm-15um-26um-sl", - "32c-2s8mm6cm-20um-40um-dl", - "64c-4s6mm6cm-20um-40um-dl", - "64c-3s6mm6cm-20um-40um-sl" - ] - }, - "description": { - "$id": "#root/electrode_groups/items/description", - "title": "description", - "type": "string", - "default": "", - "description": "electrode groups description", - "examples": [ - "tetrode" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "targeted_location": { - "$id": "#root/electrode_groups/items/targeted_location", - "title": "targeted_location", - "type": "string", - "default": "Cornu ammonis 1 (CA1)", - "description": "Planned location of electrode/probe", - "examples": [ - "Brain (Brain)", - "White matter (wmt)", - "Olfactory white matter (olf)", - "lateral olfactory tract (lot)", - "corpus callosum and associated subcortical white matter (cc-ec-cing-dwm)", - "Anterior commissure (ac)", - "anterior commissure, anterior limb (aca)", - "anterior commissure, posterior limb (acp)", - "anterior commissure, intrabulbar part (aci)", - "Hippocampal white matter (hiw)", - "alveus of the hippocampus (alv)", - "ventral hippocampal commissure (vhc)", - "fornix (f)", - "fimbria of the hippocampus (fi)", - "Corticofugal pathways (cfp)", - "corticofugal tract and corona radiata (ic-cp-lfp-py)", - "pyramidal decussation (pyx)", - "Medial lemniscus (ml)", - "medial lemniscus, unspecified (ml-u)", - "medial lemniscus decussation (mlx)", - "Thalamic tracts (tht)", - "External medullary lamina (eml)", - "external medullary lamina, unspecified (eml-u)", - "external medullary lamina, auditory radiation (eml-ar)", - "internal medullary lamina (iml)", - "intramedullary thalamic area (ima)", - "superior cerebellar peduncle and prerubral field (scp-pr)", - "pretectothalamic lamina (ptl)", - "mammillotegmental tract (mtg)", - "commissural stria terminalis (cst)", - "fasciculus retroflexus (fr)", - "stria medullaris thalami (sm)", - "stria terminalis (st)", - "habenular commissure (hbc)", - "posterior commissure (pc)", - "Facial nerve (7n)", - "facial nerve, unspecified (7n-u)", - "ascending fibers of the facial nerve (asc7)", - "genu of the facial nerve (g7)", - "Optic fiber system and supraoptic decussation (ofs)", - "optic nerve (2n)", - "optic tract and optic chiasm (opt-och)", - "supraoptic decussation (sox)", - "White matter of the tectum (tew)", - "commissure of the superior colliculus (csc)", - "brachium of the superior colliculus (bsc)", - "inferior colliculus, commissure (cic)", - "inferior colliculus, brachium (bic)", - "Cerebellar and precerebellar white matter (cbt)", - "inferior cerebellar peduncle (icp)", - "middle cerebellar peduncle (mcp)", - "transverse fibers of the pons (tfp)", - "White matter of the brainstem (bsw)", - "Lateral lemniscus (ll)", - "lateral lemniscus, commissure (ll-c)", - "lateral lemniscus, unspecified (ll-u)", - "acoustic striae (as)", - "trapezoid body (tz)", - "spinal trigeminal tract (sp5t)", - "Gray matter (GM)", - "Telencephalon (Tel)", - "Laminated pallium (LamP)", - "Olfactory bulb (OB)", - "Glomerular layer of the accessory olfactory bulb (GlA)", - "Glomerular layer of the olfactory bulb (Gl)", - "Olfactory bulb, unspecified (OB-u)", - "Nucleus of the lateral olfactory tract (NLOT)", - "Cerebral cortex (Cx)", - "Hippocampal region (HR)", - "Hippocampal formation (HF)", - "Fasciola cinereum (FC)", - "Subiculum (SUB)", - "Cornu Ammonis (CA)", - "Cornu ammonis 1 (CA1)", - "Cornu ammonis 2 (CA2)", - "Cornu ammonis 3 (CA3)", - "Dentate gyrus (DG)", - "Parahippocampal region (PHR)", - "Postrhinal cortex (POR)", - "Presubiculum (PrS)", - "Parasubiculum (PaS)", - "Perirhinal cortex (PER)", - "Perirhinal area 35 (PER35)", - "Perirhinal area 36 (PER36)", - "Entorhinal cortex (EC)", - "Medial entorhinal cortex (MEC)", - "Lateral entorhinal cortex (LEC)", - "Piriform cortex (PIR)", - "Piriform cortex, layer 1 (PIR1)", - "Piriform cortex, layer 2 (PIR2)", - "Piriform cortex, layer 3 (PIR3)", - "Cingulate region (CgR)", - "Cingulate cortex (Cg)", - "Cingulate area 1 (Cg1)", - "Cingulate area 2 (Cg2)", - "Retrosplenial cortex (RS)", - "Retrosplenial dysgranular area (RSD)", - "Retrosplenial granular area (RSG)", - "Insular region (INS)", - "Agranular insular cortex (AI)", - "Agranular insular cortex, ventral area (AI-v)", - "Agranular insular cortex dorsal area (AI-d)", - "Agranular insular cortex, posterior area (AI-p)", - "Dysgranular insular cortex (DI)", - "Granular insular cortex (GI)", - "Frontal region (Front)", - "Frontal association cortex (FrA)", - "Orbitofrontal cortex (Orb)", - "Medial orbital area (MO)", - "Ventral orbital area (VO)", - "Ventrolateral orbital area (VLO)", - "Lateral orbital area (LO)", - "Dorsolateral orbital area (DLO)", - "Mediofrontal cortex (MFC)", - "Prelimbic area (PrL)", - "Infralimbic area (IL)", - "Motor cortex (M)", - "Primary motor area (M1)", - "Secondary motor area (M2)", - "Frontal association area 3 (Fr3)", - "Parietal region (Par)", - "Somatosensory cortex (SS)", - "Primary somatosensory area (S1)", - "Primary somatosensory area, face representation (S1-f)", - "Primary somatosensory area, barrel field (S1-bf)", - "Primary somatosensory area, dysgranular zone (S1-dz)", - "Primary somatosensory area, forelimb representation (S1-fl)", - "Primary somatosensory area, hindlimb representation (S1-hl)", - "Primary somatosensory area, trunk representation (S1-tr)", - "Secondary somatosensory area (S2)", - "Posterior parietal cortex (PPC)", - "Parietal association cortex, medial area (mPPC)", - "Parietal association cortex, lateral area (lPPC)", - "Parietal association cortex, posterior area (PtP)", - "Occipital region (Oc)", - "Visual cortex (Vis)", - "Primary visual area (V1)", - "Secondary visual area (V2)", - "Secondary visual area, medial part (V2M)", - "Secondary visual area, lateral part (V2L)", - "Temporal region (Te)", - "Temporal association cortex (TeA)", - "Auditory cortex (Au)", - "Primary auditory area (Au1)", - "Secondary auditory area (Au2)", - "Secondary auditory area, dorsal part (Au2-d)", - "Secondary auditory area, ventral part (Au2-v)", - "Non-laminated pallium (N-LamP)", - "Claustrum (CLA)", - "Endopiriform nucleus (Endo)", - "Amygdaloid area, unspecified (Am-u)", - " Subpallium (SubPAL)", - "Striatum (Str)", - "Caudate putamen (CPu)", - "Nucleus accumbens (NAc)", - "Nucleus accumbens, core (NAc-c)", - "Nucleus accumbens, shell (NAc-sh)", - "Ventral striatal region, unspecified (VSR-u)", - "Pallidum (PAL)", - "Globus pallidus external (GPe)", - "Globus pallidus external, medial part (GPe-m)", - "Globus pallidus external, lateral part (GPe-l)", - "Entopeduncular nucleus (EP)", - "Ventral pallidum (VP)", - "Basal forebrain region (BRF)", - "Basal forebrain region, unspecified (BFR-u)", - "Bed nucleus of the stria terminalis (BNST)", - "Septal region (Sep)", - "Subthalamic nucleus (STh)", - "Diencephalon (Dien)", - "Prethalamus (Thal-Pre)", - "Reticular (pre)thalamic nucleus (RT)", - "Reticular (pre)thalamic nucleus, unspecified (RT-u)", - "Reticular (pre)thalamic nucleus, auditory segment (RT-a)", - "Zona incerta (ZI)", - "Zona incerta, dorsal part (ZI-d)", - "Zona incerta, ventral part (ZI-v)", - "Zona incerta, rostral part (ZI-r)", - "Zona incerta, caudal part (ZI-c)", - "Zona incerta, A13 dopamine cells (ZI-A13)", - "Zona incerta, A11 dopamine cells (ZI-A11)", - "Fields of Forel (FoF)", - "Pregeniculate nucleus (PrG)", - "Subgeniculate nucleus (SubG)", - "Intergeniculate leaflet (IGL)", - "Epithalamus (Thal-EPI)", - "Lateral habenular nucleus (LHb)", - "Medial habenular nucleus (MHb)", - "Nucleus of the stria medullaris (SMn)", - "Pineal gland (PG)", - "Dorsal thalamus (Thal-D)", - "Anterior nuclei of the dorsal thalamus (ANT)", - "Anterodorsal thalamic nucleus (AD)", - "Anteroventral thalamic nucleus (AV)", - "Anteroventral thalamic nucleus, dorsomedial part (AV-dm)", - "Anteroventral thalamic nucleus, ventrolateral part (AV-vl)", - "Anteromedial thalamic nucleus (AM)", - "Interanteromedial thalamic nucleus (IAM)", - "Paraventricular thalamic nuclei (anterior and posterior) (PV)", - "Intermediodorsal thalamic nucleus (IMD)", - "Parataenial thalamic nucleus (PT)", - "Subparafascicular nucleus (SPF)", - "Posterior intralaminar nucleus (PIL)", - "Ventral midline group of the dorsal thalamus (V-MID)", - "Rhomboid thalamic nucleus (Rh)", - "Reuniens thalamic nucleus (Re)", - "Retroreuniens thalamic nucleus (RRe)", - "Xiphoid thalamic nucleus (Xi)", - "Mediodorsal nucleus of the dorsal thalamus (MD)", - "Mediodorsal thalamic nucleus, lateral part (MD-l)", - "Mediodorsal thalamic nucleus, central part (MD-c)", - "Mediodorsal thalamic nucleus, medial part (MD-m)", - "Ventral nuclei of the dorsal thalamus (VENT)", - "Ventral anterior thalamic nucleus (VA)", - "Ventromedial thalamic nucleus (VM)", - "Ventrolateral thalamic nucleus (VL)", - "Angular thalamic nucleus (Ang)", - "Ventral posterior thalamic nucleus (VPN)", - "Ventral posteromedial thalamic nucleus (VPM)", - "Ventral posterolateral thalamic nucleus (VPL)", - "Ventral posterior nucleus of the thalamus, parvicellular part (VP-pc)", - "Submedius thalamic nucleus (SMT)", - "Intralaminar nuclei of the dorsal thalamus (ILM)", - "Paracentral thalamic nucleus (PCN)", - "Central medial thalamic nucleus (CM)", - "Central lateral thalamic nucleus (CL)", - "Parafascicular thalamic nucleus (PF)", - "Ethmoid-Limitans nucleus (Eth)", - "Posterior complex of the dorsal thalamus (PoC)", - "Posterior thalamic nucleus (Po)", - "Posterior thalamic nuclear group, triangular part (Po-t)", - "Lateral posterior (pulvinar) complex of the dorsal thalamus (LP)", - "Lateral posterior thalamic nucleus, mediorostral part (LP-mr)", - "Lateral posterior thalamic nucleus, mediocaudal part (LP-mc)", - "Lateral posterior thalamic nucleus, lateral part (LP-l)", - "Laterodorsal thalamic nuclei of the dorsal thalamus (LD)", - "Laterodorsal thalamic nucleus, dorsomedial part (LD-dm)", - "Laterodorsal thalamic nucleus, ventrolateral part (LD-vl)", - "Dorsal lateral geniculate nucleus (DLG)", - "Medial geniculate complex of the dorsal thalamus (MG)", - "Medial geniculate body, ventral division (MG-v)", - "Medial geniculate body, dorsal division (MG-d)", - "Medial geniculate body, marginal zone (MG-mz)", - "Medial geniculate body, medial division (MG-m)", - "Medial geniculate body, suprageniculate nucleus (MG-sg)", - "Hypothalamus (HY)", - "Hypothalamic region, unspecified (HTh-u)", - "Pretectum (PreT)", - "Pretectal region (PRT)", - "Nucleus sagulum (Sag)", - "Mesencephalon (Mes)", - "Midbrain (MB)", - "Tectum (Tc)", - "Inferior colliculus (IC)", - "Inferior colliculus, dorsal cortex (DCIC)", - "Inferior colliculus, central nucleus (CNIC)", - "Inferior colliculus, external cortex (ECIC)", - "Superior colliculus (Su)", - "Superficial gray layer of the superior colliculus (SuG)", - "Deeper layers of the superior colliculus (SuD)", - "Tegmentum (Tg)", - "Substantia nigra (SN)", - "Substantia nigra, reticular part (SN-r)", - "Substantia nigra, compact part (SN-c)", - "Substantia nigra, lateral part (SN-l)", - "Ventral tegmental area (VTA)", - "Peripeduncular nucleus (PP)", - "Interpeduncular nucleus (IP)", - "Periaqueductal gray (PAG)", - "Brainstem, unspecified (BS-u)", - "Rhombencephalon (Rho)", - "Metencephalon (Met)", - "Pontine nuclei (Pn)", - "Cerebellum (Cb)", - "Molecular cell layer of the cerebellum (Cb-m)", - "Cerebellum, unspecified (Cb-u)", - "Myelencephalon (Myel)", - "Cochlear nucleus, ventral part (VCN)", - "Ventral cochlear nucleus, anterior part (AVCN)", - "Ventral cochlear nucleus, posterior part (PVCN)", - "Ventral cochlear nucleus, cap area (Cap)", - "Ventral cochlear nucleus, granule cell layer (GCL)", - "Cochlear nucleus, dorsal part (DCN)", - "Dorsal cochlear nucleus, molecular layer (DCNM)", - "Dorsal cochlear nucleus, fusiform and granule layer (DCNFG)", - "Dorsal cochlear nucleus, deep core (DCND)", - "Spinal trigeminal nucleus (Sp5n)", - "Periventricular gray (PVG)", - "Superior olivary complex (SO)", - "Nucleus of the trapezoid body (NTB)", - "Superior paraolivary nucleus (SPN)", - "Medial superior olive (MSO)", - "Lateral superior olive (LSO)", - "Superior periolivary region (SPR)", - "Ventral periolivary nuclei (VPO)", - "Nuclei of the lateral lemniscus (NLL)", - "Lateral lemniscus, ventral nucleus (VLL)", - "Lateral lemniscus, intermediate nucleus (ILL)", - "Lateral lemniscus, dorsal nucleus (DLL)", - "Inferior olive (IO)", - "Ventricular system (V)", - "ventricular system, unspecified (V-u)", - "4th ventricle (4V)", - "central canal (CC)", - "spinal cord (SpC)", - "Inner ear (IE)", - "vestibular apparatus (VeA)", - "cochlea (Co)", - "cochlear nerve (8cn)", - "vestibular nerve (8vn)", - "spiral ganglion (SpG)" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - }, - "targeted_x": { - "$id": "#root/electrode_groups/items/targeted_x", - "title": "targeted_x", - "type": "number", - "description": "Medial/Latetal", - "examples": [ - 2.6 - ], - "default": 0.0 - }, - "targeted_y": { - "$id": "#root/electrode_groups/items/targeted_y", - "title": "targeted_y", - "type": "number", - "description": "Anterior/Posterior", - "examples": [ - -3.8 - ], - "default": 0.0 - }, - "targeted_z": { - "$id": "#root/electrode_groups/items/targeted_z", - "title": "targeted_z", - "type": "number", - "description": "Ventral/Dorsal", - "examples": [ - 0 - ], - "default": 0 - }, - "units": { - "$id": "#root/electrode_groups/items/units", - "title": "units", - "type": "string", - "default": "mm", - "examples": [ - "pm", - "nm", - "μm", - "mm", - "cm", - "in", - "yd", - "ft" - ], - "pattern": "^(.|\\s)*\\S(.|\\s)*$" - } - } - } - }, - "ntrode_electrode_group_channel_map": { - "$id": "#root/ntrode_electrode_group_channel_map", - "title": "ntrode_electrode_group_channel_map", - "type": "array", - "default": [], - "items": { - "$id": "#root/ntrode_electrode_group_channel_map/items", - "title": "Items", - "type": "object", - "required": [ - "ntrode_id", - "electrode_group_id", - "bad_channels", - "map" - ], - "properties": { - "ntrode_id": { - "$id": "#root/ntrode_electrode_group_channel_map/items/ntrode_id", - "title": "ntrode_id", - "type": "integer", - "examples": [ - 1 - ], - "default": 0 - }, - "electrode_group_id": { - "$id": "#root/ntrode_electrode_group_channel_map/items/electrode_group_id", - "title": "electrode_group_id", - "type": "integer", - "examples": [ - 0 - ], - "default": 0 - }, - "bad_channels": { - "$id": "#root/ntrode_electrode_group_channel_map/items/bad_channels", - "title": "bad_channels", - "type": "array", - "default": [], - "examples": [], - "uniqueItems": true, - "description": "Comma separated list of bad channels", - "items": { - "$id": "#root/ntrode_electrode_group_channel_map/items/bad_channels/items", - "title": "Items", - "type": "integer", - "examples": [ - 0 - ], - "default": 0 - } - }, - "map": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map", - "title": "map", - "type": "object", - "properties": { - "0": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/0", - "title": "0", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 0 - }, - "1": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/1", - "title": "1", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 1 - }, - "2": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/2", - "title": "2", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 2 - }, - "3": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/3", - "title": "3", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 3 - }, - "4": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/4", - "title": "4", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 4 - }, - "5": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/5", - "title": "5", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 5 - }, - "6": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/6", - "title": "6", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 6 - }, - "7": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/7", - "title": "7", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 7 - }, - "8": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/8", - "title": "8", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 8 - }, - "9": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/9", - "title": "9", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 9 - }, - "10": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/10", - "title": "10", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 10 - }, - "11": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/11", - "title": "11", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 11 - }, - "12": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/12", - "title": "12", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 12 - }, - "13": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/13", - "title": "13", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 13 - }, - "14": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/14", - "title": "14", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 14 - }, - "15": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/15", - "title": "15", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 15 - }, - "16": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/16", - "title": "16", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 16 - }, - "17": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/17", - "title": "17", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 17 - }, - "18": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/18", - "title": "18", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 18 - }, - "19": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/19", - "title": "19", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 19 - }, - "20": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/20", - "title": "20", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 20 - }, - "21": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/21", - "title": "21", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 21 - }, - "22": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/22", - "title": "22", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 22 - }, - "23": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/23", - "title": "23", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 23 - }, - "24": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/24", - "title": "24", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 24 - }, - "25": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/25", - "title": "25", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 25 - }, - "26": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/26", - "title": "26", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 26 - }, - "27": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/27", - "title": "27", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 27 - }, - "28": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/28", - "title": "28", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 28 - }, - "29": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/29", - "title": "29", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 29 - }, - "30": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/30", - "title": "30", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 30 - }, - "31": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/31", - "title": "31", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 31 - }, - "32": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/32", - "title": "32", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 32 - }, - "33": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/33", - "title": "33", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 33 - }, - "34": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/34", - "title": "34", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 34 - }, - "35": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/35", - "title": "35", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 35 - }, - "36": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/36", - "title": "36", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 36 - }, - "37": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/37", - "title": "37", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 37 - }, - "38": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/38", - "title": "38", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 38 - }, - "39": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/39", - "title": "39", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 39 - }, - "40": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/40", - "title": "40", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 40 - }, - "41": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/41", - "title": "41", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 41 - }, - "42": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/42", - "title": "42", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 42 - }, - "43": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/43", - "title": "43", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 43 - }, - "44": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/44", - "title": "44", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 44 - }, - "45": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/45", - "title": "45", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 45 - }, - "46": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/46", - "title": "46", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 46 - }, - "47": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/47", - "title": "47", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 47 - }, - "48": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/48", - "title": "48", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 48 - }, - "49": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/49", - "title": "49", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 49 - }, - "50": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/50", - "title": "50", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 50 - }, - "51": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/51", - "title": "51", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 51 - }, - "52": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/52", - "title": "52", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 52 - }, - "53": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/53", - "title": "53", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 53 - }, - "54": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/54", - "title": "54", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 54 - }, - "55": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/55", - "title": "55", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 55 - }, - "56": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/56", - "title": "56", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 56 - }, - "57": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/57", - "title": "57", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 57 - }, - "58": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/58", - "title": "58", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 58 - }, - "59": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/59", - "title": "59", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 59 - }, - "60": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/60", - "title": "60", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 60 - }, - "61": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/61", - "title": "61", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 61 - }, - "62": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/62", - "title": "62", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 62 - }, - "63": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/63", - "title": "63", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 63 - }, - "64": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/64", - "title": "64", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 64 - }, - "65": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/65", - "title": "65", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 65 - }, - "66": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/66", - "title": "66", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 66 - }, - "67": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/67", - "title": "67", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 67 - }, - "68": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/68", - "title": "68", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 68 - }, - "69": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/69", - "title": "69", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 69 - }, - "70": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/70", - "title": "70", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 70 - }, - "71": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/71", - "title": "71", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 71 - }, - "72": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/72", - "title": "72", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 72 - }, - "73": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/73", - "title": "73", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 73 - }, - "74": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/74", - "title": "74", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 74 - }, - "75": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/75", - "title": "75", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 75 - }, - "76": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/76", - "title": "76", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 76 - }, - "77": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/77", - "title": "77", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 77 - }, - "78": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/78", - "title": "78", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 78 - }, - "79": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/79", - "title": "79", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 79 - }, - "80": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/80", - "title": "80", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 80 - }, - "81": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/81", - "title": "81", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 81 - }, - "82": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/82", - "title": "82", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 82 - }, - "83": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/83", - "title": "83", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 83 - }, - "84": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/84", - "title": "84", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 84 - }, - "85": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/85", - "title": "85", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 85 - }, - "86": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/86", - "title": "86", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 86 - }, - "87": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/87", - "title": "87", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 87 - }, - "88": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/88", - "title": "88", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 88 - }, - "89": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/89", - "title": "89", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 89 - }, - "90": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/90", - "title": "90", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 90 - }, - "91": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/91", - "title": "91", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 91 - }, - "92": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/92", - "title": "92", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 92 - }, - "93": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/93", - "title": "93", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 93 - }, - "94": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/94", - "title": "94", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 94 - }, - "95": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/95", - "title": "95", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 95 - }, - "96": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/96", - "title": "96", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 96 - }, - "97": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/97", - "title": "97", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 97 - }, - "98": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/98", - "title": "98", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 98 - }, - "99": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/99", - "title": "99", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 99 - }, - "100": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/100", - "title": "100", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 100 - }, - "101": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/101", - "title": "101", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 101 - }, - "102": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/102", - "title": "102", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 102 - }, - "103": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/103", - "title": "103", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 103 - }, - "104": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/104", - "title": "104", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 104 - }, - "105": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/105", - "title": "105", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 105 - }, - "106": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/106", - "title": "106", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 106 - }, - "107": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/107", - "title": "107", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 107 - }, - "108": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/108", - "title": "108", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 108 - }, - "109": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/109", - "title": "109", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 109 - }, - "110": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/110", - "title": "110", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 110 - }, - "111": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/111", - "title": "111", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 111 - }, - "112": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/112", - "title": "112", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 112 - }, - "113": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/113", - "title": "113", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 113 - }, - "114": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/114", - "title": "114", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 114 - }, - "115": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/115", - "title": "115", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 115 - }, - "116": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/116", - "title": "116", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 116 - }, - "117": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/117", - "title": "117", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 117 - }, - "118": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/118", - "title": "118", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 118 - }, - "119": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/119", - "title": "119", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 119 - }, - "120": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/120", - "title": "120", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 120 - }, - "121": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/121", - "title": "121", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 121 - }, - "122": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/122", - "title": "122", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 122 - }, - "123": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/123", - "title": "123", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 123 - }, - "124": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/124", - "title": "124", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 124 - }, - "125": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/125", - "title": "125", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 125 - }, - "126": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/126", - "title": "126", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 126 - }, - "127": { - "$id": "#root/ntrode_electrode_group_channel_map/items/map/127", - "title": "127", - "type": "integer", - "examples": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127 - ], - "minimum": 0, - "default": 127 - } - } - } - } - } - } - } -} \ No newline at end of file diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index 0ce43fe..bbf9d71 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -687,7 +687,7 @@ def get_digitalsignal(self, stream_id, channel_id): if self.sysClock_byte: timestamps = self.get_regressed_systime(i_start, i_stop) else: - timestamps = self.get_systime_from_trodes_timestamps(i_start, i_stop) + timestamps = self.get_analogsignal_timestamps(i_start, i_stop) dio_change_times = timestamps[np.where(change_dir)[0] + 1] # insert the first timestamp with the first value @@ -701,7 +701,6 @@ def get_digitalsignal(self, stream_id, channel_id): return dio_change_times, change_dir_trim - @functools.lru_cache(maxsize=1) def get_regressed_systime(self, i_start, i_stop=None): NANOSECONDS_PER_SECOND = 1e9 # get values @@ -714,15 +713,13 @@ def get_regressed_systime(self, i_start, i_stop=None): adjusted_timestamps = intercept + slope * trodestime_index return (adjusted_timestamps) / NANOSECONDS_PER_SECOND - @functools.lru_cache(maxsize=1) def get_systime_from_trodes_timestamps(self, i_start, i_stop=None): MILLISECONDS_PER_SECOND = 1e3 # get values trodestime = self.get_analogsignal_timestamps(i_start, i_stop) - initial_time = self.get_analogsignal_timestamps(0, 1)[0] - return (trodestime - initial_time) * (1.0 / self._sampling_rate) + int( - self.system_time_at_creation - ) / MILLISECONDS_PER_SECOND + return (trodestime - int(self.timestamp_at_creation)) * ( + 1.0 / self._sampling_rate + ) + int(self.system_time_at_creation) / MILLISECONDS_PER_SECOND def _interpolate_raw_memmap( self, diff --git a/src/spikegadgets_to_nwb/tests/integration-tests/__init__.py b/src/spikegadgets_to_nwb/tests/integration-tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py b/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py deleted file mode 100644 index 4d9d904..0000000 --- a/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py +++ /dev/null @@ -1,190 +0,0 @@ -import pytest -import os -from spikegadgets_to_nwb.metadata_validation import ( - validate, -) -from spikegadgets_to_nwb.tests.test_data.test_metadata_dict_samples import ( - basic_data, - basic_data_with_optional_arrays, - empty_experimenter_name, - string_as_experimenter_name, - empty_lab, - empty_institution, - empty_experiment_description, - empty_session_description, - empty_session_id, - empty_keywords, - keywords_array_with_empty_item, - not_array_keywords, - empty_subject, - subject_with_empty_values, - subject_with_invalid_sex, - subject_with_invalid_date, - empty_data_acq_device, - data_acq_device_with_no_values, - empty_units, - invalid_times_period_multiplier, - invalid_raw_data_to_volts, - invalid_default_header_file_path, - empty_device_name, - basic_ntrode_electrode_group_channel_map, -) - - -@pytest.mark.parametrize("metadata", [(None), ("")]) -def test_metadata_validation_only_accepts_right_data_type(metadata): - with pytest.raises(AssertionError) as e: - validate(metadata) - - -@pytest.mark.parametrize("metadata", [(basic_data), (basic_data_with_optional_arrays)]) -def test_metadata_validation_verification_on_valid_data(metadata): - is_valid, errors = validate(metadata) - - assert is_valid, "".join(errors) - - -@pytest.mark.parametrize( - "metadata, key, expected", - [ - (empty_experimenter_name, "experimenter_name", ["[] is too short"]), - ( - string_as_experimenter_name, - "experimenter_name", - [ - "'' is not of type 'array'", - ], - ), - (empty_lab, "lab", ["does not match"]), - (empty_institution, "institution", ["does not match"]), - ( - empty_experiment_description, - "experiment_description", - ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], - ), - ( - empty_session_description, - "session_description", - ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], - ), - ( - empty_session_id, - "session_id", - ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], - ), - ( - empty_keywords, - "keywords", - [ - "[] is too short", - ], - ), - ( - keywords_array_with_empty_item, - "keywords", - [ - "", - ], - ), - (not_array_keywords, "keywords", ["is not of type 'array'"]), - ( - subject_with_empty_values, - "subject1", - [ - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "is not one of ['M', 'F', 'U', 'O']", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "-1 is less than the minimum of 0", - "does not match '(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d\\\\.\\\\d+)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d)'", - ], - ), - ( - empty_subject, - "subject", - [ - "'description' is a required property", - "'genotype' is a required property", - "'sex' is a required property", - "'species' is a required property", - "'subject_id' is a required property", - "'weight' is a required property", - "'date_of_birth' is a required property", - ], - ), - (subject_with_invalid_sex, "subject", ["is not one of ['M', 'F', 'U', 'O']"]), - ( - subject_with_invalid_date, - "subject", - [ - "'2023-01-04' does not match '(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d\\\\.\\\\d+)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d)'" - ], - ), - ( - data_acq_device_with_no_values, - "data_acq_device1", - [ - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", - ], - ), - (empty_data_acq_device, "data_acq_device", ["[] is too short"]), - ( - empty_units, - "units", - [ - "'analog' is a required property", - "'behavioral_events' is a required property", - ], - ), - ( - invalid_times_period_multiplier, - "times_period_multiplier", - [ - "'a' is not of type 'number'", - ], - ), - ( - invalid_raw_data_to_volts, - "raw_data_to_volts", - ["'a' is not of type 'number'"], - ), - ( - invalid_default_header_file_path, - "default_header_file_path", - ["None is not of type 'string'"], - ), - (empty_device_name, "device_name", ["'name' is a required property"]), - ( - basic_ntrode_electrode_group_channel_map, - "ntrode_electrode_group_channel_map", - ( - [ - "'a' is not of type 'integer'", - "'z' is not of type 'integer'", - "'z' is not of type 'integer'", - "'0' is not of type 'integer'", - "'0' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", - "'t' is not of type 'integer'", - "'t' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", - "'a' is not of type 'integer'", - "'a' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", - "-3 is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", - "-3 is less than the minimum of 0", - ] - ), - ), - ], -) -def test_metadata_validation_verification_on_invalid_data(metadata, key, expected): - is_valid, errors = validate(metadata) - - assert len(errors) == len(expected), f"Not all the errors are occurring in - {key}" - assert not is_valid, f"{key} should be invalid" - for index, error in enumerate(errors): - assert ( - expected[index] in error - ), f"Expected error not found - ${expected[index]}" diff --git a/src/spikegadgets_to_nwb/tests/test_convert.py b/src/spikegadgets_to_nwb/tests/test_convert.py index 7206ed9..5861158 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert.py +++ b/src/spikegadgets_to_nwb/tests/test_convert.py @@ -1,17 +1,25 @@ -import numpy as np import os from pathlib import Path + +import numpy as np +import pandas as pd from pynwb import NWBHDF5IO -import shutil from spikegadgets_to_nwb.convert import _create_nwb, get_included_probe_metadata_paths from spikegadgets_to_nwb.data_scanner import get_file_info -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) MICROVOLTS_PER_VOLT = 1e6 def test_get_file_info(): + try: + # running on github + data_path = Path(os.environ.get("DOWNLOAD_DIR")) + except (TypeError, FileNotFoundError): + # running locally + data_path = Path(path) path_df = get_file_info(data_path) path_df = path_df[ path_df.animal == "sample" @@ -46,41 +54,53 @@ def test_get_included_probe_metadat_paths(): def test_convert(): - probe_metadata = [data_path / "tetrode_12.5.yml"] + try: + # running on github + data_path = Path(os.environ.get("DOWNLOAD_DIR")) + yml_data_path = Path(path + "/test_data") + yml_path_df = get_file_info(yml_data_path) + yml_path_df = yml_path_df[yml_path_df.file_extension == ".yml"] + append_yml_df = True + except (TypeError, FileNotFoundError): + # running locally + data_path = Path(path + "/test_data") + append_yml_df = False + probe_metadata = [Path(path + "/test_data/tetrode_12.5.yml")] + # make session_df path_df = get_file_info(data_path) - # exclude the reconfig yaml file - path_df = path_df[ - path_df.full_path - != str(data_path / "20230622_sample_metadataProbeReconfig.yml") - ] + if append_yml_df: + path_df = path_df[ + path_df.file_extension != ".yml" + ] # strip ymls, fixes github runner issue where yamls only sometimes present between jobs + path_df = pd.concat([path_df, yml_path_df]) + path_df = path_df[ + path_df.full_path + != yml_data_path.as_posix() + "/20230622_sample_metadataProbeReconfig.yml" + ] + else: + path_df = path_df[ + path_df.full_path + != data_path.as_posix() + "/20230622_sample_metadataProbeReconfig.yml" + ] session_df = path_df[(path_df.animal == "sample")] assert len(session_df[session_df.file_extension == ".yml"]) == 1 - # make temporary directory for video files - video_directory = data_path / "temp_video_directory_full_convert" - if not os.path.exists(video_directory): - os.makedirs(video_directory) - _create_nwb( session=("20230622", "sample", "1"), session_df=session_df, probe_metadata_paths=probe_metadata, output_dir=str(data_path), - video_directory=str(video_directory), ) - - output_file_path = data_path / "sample20230622.nwb" - assert output_file_path.exists() - rec_to_nwb_file = data_path / "minirec20230622_.nwb" - with NWBHDF5IO(output_file_path) as io: + assert "sample20230622.nwb" in os.listdir(str(data_path)) + with NWBHDF5IO(str(data_path) + "/sample20230622.nwb") as io: nwbfile = io.read() - with NWBHDF5IO(rec_to_nwb_file) as io2: + with NWBHDF5IO(str(data_path) + "/minirec20230622_.nwb") as io2: old_nwbfile = io2.read() + # run nwb comparison compare_nwbfiles(nwbfile, old_nwbfile) # cleanup - os.remove(output_file_path) - shutil.rmtree(video_directory) + os.remove(str(data_path) + "/sample20230622.nwb") def check_module_entries(test, reference): diff --git a/src/spikegadgets_to_nwb/tests/test_convert_analog.py b/src/spikegadgets_to_nwb/tests/test_convert_analog.py index 9df75c9..7111a82 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_analog.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_analog.py @@ -1,19 +1,30 @@ import os + import pynwb from spikegadgets_to_nwb import convert_rec_header, convert_yaml from spikegadgets_to_nwb.convert_analog import add_analog_data, get_analog_channel_names from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def test_add_analog_data(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) - rec_file = data_path / "20230622_sample_01_a1.rec" - rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file - rec_header = convert_rec_header.read_header(rec_file) + nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) + + try: + # running on github + rec_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + rec_header = convert_rec_header.read_header(rec_file) + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" + except: + # running locally + rec_file = path + "/test_data/20230622_sample_01_a1.rec" + rec_header = convert_rec_header.read_header(rec_file) + rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" # make file with data nwbfile = convert_yaml.initialize_nwb(metadata, rec_header) analog_channel_names = get_analog_channel_names(rec_header) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_dios.py b/src/spikegadgets_to_nwb/tests/test_convert_dios.py index 3c0b66f..8d566e3 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_dios.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_dios.py @@ -1,22 +1,32 @@ -import numpy as np import os + +import numpy as np import pynwb from spikegadgets_to_nwb import convert_yaml from spikegadgets_to_nwb.convert_dios import add_dios from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def test_add_dios_single_rec(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, _ = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - recfile = [data_path / "20230622_sample_01_a1.rec"] - rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file + try: + # running on github + recfile = [os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec"] + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" + except (TypeError, FileNotFoundError): + # running locally + recfile = [path + "/test_data/20230622_sample_01_a1.rec"] + rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" add_dios(nwbfile, recfile, metadata) @@ -61,16 +71,27 @@ def test_add_dios_single_rec(): def test_add_dios_two_epoch(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, _ = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - recfile = [ - data_path / "20230622_sample_01_a1.rec", - data_path / "20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file + try: + # running on github + recfile = [ + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" + except (TypeError, FileNotFoundError): + # running locally + recfile = [ + path + "/test_data/20230622_sample_01_a1.rec", + path + "/test_data/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" add_dios(nwbfile, recfile, metadata) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_ephys.py b/src/spikegadgets_to_nwb/tests/test_convert_ephys.py index bf0ef0b..aac211c 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_ephys.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_ephys.py @@ -1,27 +1,38 @@ -import numpy as np import os -from pathlib import Path + +import numpy as np import pynwb from spikegadgets_to_nwb import convert_rec_header, convert_yaml from spikegadgets_to_nwb.convert_ephys import add_raw_ephys from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree -from spikegadgets_to_nwb.tests.utils import data_path MICROVOLTS_PER_VOLT = 1e6 +path = os.path.dirname(os.path.abspath(__file__)) def test_add_raw_ephys_single_rec(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - trodesconf_file = data_path / "20230622_sample_01_a1.rec" - # "reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) + try: + # running on github + trodesconf_file = ( + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + ) # "/test_data/reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) + except: + # running locally + trodesconf_file = ( + path + "/test_data/20230622_sample_01_a1.rec" + ) # "/test_data/reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -34,14 +45,22 @@ def test_add_raw_ephys_single_rec(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - recfile = [data_path / "20230622_sample_01_a1.rec"] - rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file + try: + # running on github + recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" + except (TypeError, FileNotFoundError): + # running locally + recfile = path + "/test_data/20230622_sample_01_a1.rec" + rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( nwbfile, - recfile, + [ + recfile, + ], map_row_ephys_data_to_row_electrodes_table, ) @@ -90,13 +109,15 @@ def test_add_raw_ephys_single_rec(): def test_add_raw_ephys_single_rec_probe_configuration(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadataProbeReconfig.yml" - probe_metadata = [data_path / "128c-4s6mm6cm-15um-26um-sl.yml"] + metadata_path = path + "/test_data/20230622_sample_metadataProbeReconfig.yml" + probe_metadata = [ + path + "/test_data/128c-4s6mm6cm-15um-26um-sl.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - trodesconf_file = data_path / "reconfig_probeDevice.trodesconf" + trodesconf_file = path + "/test_data/reconfig_probeDevice.trodesconf" rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( @@ -110,16 +131,24 @@ def test_add_raw_ephys_single_rec_probe_configuration(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - recfile = [data_path / "20230622_sample_01_a1.rec"] - rec_to_nwb_file = ( - data_path / "probe_reconfig_20230622_155936.nwb" - ) # comparison file + try: + # running on github + recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + rec_to_nwb_file = ( + os.environ.get("DOWNLOAD_DIR") + "/probe_reconfig_20230622_155936.nwb" + ) + except (TypeError, FileNotFoundError): + # running locally + recfile = path + "/test_data/20230622_sample_01_a1.rec" + rec_to_nwb_file = path + "/test_data/probe_reconfig_20230622_155936.nwb" map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( nwbfile, - recfile, + [ + recfile, + ], map_row_ephys_data_to_row_electrodes_table, ) @@ -169,14 +198,22 @@ def test_add_raw_ephys_single_rec_probe_configuration(): def test_add_raw_ephys_two_epoch(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - trodesconf_file = data_path / "20230622_sample_01_a1.rec" - rec_header = convert_rec_header.read_header(trodesconf_file) + try: + # running on github + trodesconf_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + rec_header = convert_rec_header.read_header(trodesconf_file) + except: + # running locally + trodesconf_file = path + "/test_data/20230622_sample_01_a1.rec" + rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -189,12 +226,20 @@ def test_add_raw_ephys_two_epoch(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - recfile = [ - data_path / "20230622_sample_01_a1.rec", - data_path / "20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file - + try: + # running on github + recfile = [ + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" + except (TypeError, FileNotFoundError): + # running locally + recfile = [ + path + "/test_data/20230622_sample_01_a1.rec", + path + "/test_data/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index 83a13d9..31d0bb3 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -1,5 +1,7 @@ -import numpy as np import os +from pathlib import Path + +import numpy as np from pynwb import NWBHDF5IO from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator @@ -8,27 +10,34 @@ from spikegadgets_to_nwb.data_scanner import get_file_info from spikegadgets_to_nwb.spike_gadgets_raw_io import SpikeGadgetsRawIO from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def test_add_epochs(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = load_metadata(metadata_path, []) nwbfile = initialize_nwb(metadata, default_test_xml_tree()) - file_info = get_file_info(data_path) - rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file - # get all streams for all files - neo_io = [ - SpikeGadgetsRawIO(filename=file) - for file in file_info[file_info.file_extension == ".rec"].full_path - ] - [neo_io.parse_header() for neo_io in neo_io] - + try: + # running on github + file_info = get_file_info(Path(os.environ.get("DOWNLOAD_DIR"))) + rec_to_nwb_file = ( + os.environ.get("DOWNLOAD_DIR") + "/probe_reconfig_20230622_155936.nwb" + ) + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" + except (TypeError, FileNotFoundError): + # running locally + file_info = get_file_info(Path(path)) + rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" file_info = file_info[file_info.animal == "sample"] - file_info = file_info[file_info.date == 20230622] - add_epochs(nwbfile, file_info, neo_io) + # assert file_info[file_info.file_extension == ".rec"].full_path.to_list() == [] + # get all streams for all files + rec_dci = RecFileDataChunkIterator( + file_info[file_info.file_extension == ".rec"].full_path.to_list() + ) + add_epochs(nwbfile, file_info, 20230622, "sample", rec_dci.neo_io) epochs_df = nwbfile.epochs.to_dataframe() - # load old nwb version + # load old nwb versio io = NWBHDF5IO(rec_to_nwb_file, "r") old_nwbfile = io.read() old_epochs_df = old_nwbfile.epochs.to_dataframe() @@ -41,14 +50,23 @@ def test_add_epochs(): def test_add_sample_count(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = load_metadata(metadata_path, []) nwbfile = initialize_nwb(metadata, default_test_xml_tree()) - recfile = [ - data_path / "20230622_sample_01_a1.rec", - data_path / "20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file + try: + # running on github + recfile = [ + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" + except (TypeError, FileNotFoundError): + # running locally + recfile = [ + path + "/test_data/20230622_sample_01_a1.rec", + path + "/test_data/20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" # make recfile data chunk iterator rec_dci = RecFileDataChunkIterator(recfile) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_position.py b/src/spikegadgets_to_nwb/tests/test_convert_position.py index bada810..6a32276 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_position.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_position.py @@ -4,13 +4,9 @@ import numpy as np import pandas as pd import pytest -from pynwb import NWBHDF5IO, TimeSeries +from pynwb import NWBHDF5IO from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml -from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator -from spikegadgets_to_nwb.convert_intervals import add_sample_count -from spikegadgets_to_nwb.convert_dios import add_dios -from spikegadgets_to_nwb.convert_intervals import add_epochs from spikegadgets_to_nwb.convert_position import ( add_position, correct_timestamps_for_camera_to_mcu_lag, @@ -24,10 +20,10 @@ parse_dtype, read_trodes_datafile, remove_acquisition_timing_pause_non_ptp, - find_camera_dio_channel, ) from spikegadgets_to_nwb.data_scanner import get_file_info -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def test_parse_dtype_standard(): @@ -198,15 +194,23 @@ def test_correct_timestamps_for_camera_to_mcu_lag(): def test_add_position(): - probe_metadata = [data_path / "tetrode_12.5.yml"] + try: + # running on github + data_path = Path(os.environ.get("DOWNLOAD_DIR")) + except (TypeError, FileNotFoundError): + # running locally + data_path = Path(path + "/test_data") + probe_metadata = [Path(path + "/test_data/tetrode_12.5.yml")] # make session_df path_df = get_file_info(data_path) session_df = path_df[(path_df.animal == "sample")] # get metadata - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) rec_file = session_df[ (session_df.epoch == 1) & (session_df.file_extension == ".rec") @@ -218,10 +222,11 @@ def test_add_position(): # run add_position and prerequisite functions convert_yaml.add_cameras(nwbfile, metadata) - add_position(nwbfile, metadata, session_df, rec_header) + add_position(nwbfile, metadata, session_df, rec_header, video_directory="") # Check that the objects were properly added assert "position" in nwbfile.processing["behavior"].data_interfaces + assert "video_files" in nwbfile.processing assert "non_repeat_timestamp_labels" in nwbfile.processing assert "position_frame_index" in nwbfile.processing @@ -282,66 +287,3 @@ def test_add_position(): assert validated, f"Could not find matching series for {series}" # cleanup os.remove(filename) - - -from spikegadgets_to_nwb.convert_position import read_trodes_datafile - - -def test_add_position_non_ptp(): - # make session_df - path_df = get_file_info(data_path) - session_df = path_df[(path_df.animal == "ginny")] - # get metadata - metadata_path = data_path / "nonptp_metadata.yml" - metadata, _ = convert_yaml.load_metadata(metadata_path, []) - # load the prepped non-ptp nwbfile - with NWBHDF5IO(data_path / "non_ptp_prep.nwb", "a", load_namespaces=True) as io: - nwbfile = io.read() - add_position( - nwbfile, - metadata, - session_df, - ptp_enabled=False, - rec_dci_timestamps=nwbfile.processing["sample_count"][ - "sample_count" - ].timestamps[:] - / 1e9, - sample_count=nwbfile.processing["sample_count"] - .data_interfaces["sample_count"] - .data[:], - ) - # read in position data to compare to - ref_pos = pd.read_pickle(data_path / "position_df.pkl") - # check that the data is the same - for series in [ - "led_0_series_1", - "led_0_series_2", - "led_1_series_1", - "led_1_series_2", - ]: - # check series in new nwbfile - assert ( - series - in nwbfile.processing["behavior"]["position"].spatial_series.keys() - ) - # get the data for this series - t_new = nwbfile.processing["behavior"]["position"][series].timestamps[:] - pos_new = nwbfile.processing["behavior"]["position"][series].data[:] - assert t_new.size == pos_new.shape[0] - assert pos_new.shape[1] == 2 - validated = False - for name in ref_pos.name.to_list(): - t_ref = ref_pos[ref_pos.name == name].timestamps.values[0] - - if t_new.size == t_ref.size and np.allclose( - t_ref, t_new, atol=1, rtol=0 - ): - pos_ref = ref_pos[ref_pos.name == name].data.to_list()[0] - if np.allclose( - pos_ref[:100, :2], pos_new[:100], atol=1e-6, rtol=0 - ) or np.allclose( - pos_ref[:100, 2:], pos_new[:100], atol=1e-6, rtol=0 - ): - validated = True - break - assert validated, f"Could not find matching series for {series}" diff --git a/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py b/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py index b39f776..0c5da8c 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py @@ -5,7 +5,8 @@ from ndx_franklab_novela import HeaderDevice from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def default_test_xml_tree() -> ElementTree: @@ -16,23 +17,39 @@ def default_test_xml_tree() -> ElementTree: ElementTree root xml tree for intial nwb generation """ - trodesconf_file = data_path / "20230622_sample_01_a1.rec" - # "reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) + try: + # running on github + trodesconf_file = ( + os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + ) # "/test_data/reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) + except: + # running locally + trodesconf_file = ( + path + "/test_data/20230622_sample_01_a1.rec" + ) # "/test_data/reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) return rec_header def test_add_header_device(): # Set up test data - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - recfile = data_path / "20230622_sample_01_a1.rec" - # Call the function to be tested - convert_rec_header.add_header_device( - nwbfile, convert_rec_header.read_header(recfile) - ) + try: + # running on github + recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + convert_rec_header.add_header_device( + nwbfile, convert_rec_header.read_header(recfile) + ) + except (TypeError, FileNotFoundError): + # running locally + recfile = path + "/test_data/20230622_sample_01_a1.rec" + convert_rec_header.add_header_device( + nwbfile, convert_rec_header.read_header(recfile) + ) # Perform assertions to check the results # Check if the device was added correctly @@ -63,7 +80,7 @@ def test_add_header_device(): assert header_device.file_path == "" # Check if error raised if improper header file is passed - recfile = data_path / "bad_header.trodesconf" + recfile = path + "/test_data/bad_header.trodesconf" with pytest.raises( ValueError, match="SpikeGadgets: the xml header does not contain ''", @@ -78,9 +95,14 @@ def test_detect_ptp(): def test_validate_yaml_header_electrode_map(): # get metadata and rec_header - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) - recfile = data_path / "20230622_sample_01_a1.rec" + try: + # running on github + recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + except (TypeError, FileNotFoundError): + # running locally + recfile = path + "/test_data/20230622_sample_01_a1.rec" rec_header = convert_rec_header.read_header(recfile) # correct matching diff --git a/src/spikegadgets_to_nwb/tests/test_convert_yaml.py b/src/spikegadgets_to_nwb/tests/test_convert_yaml.py index ce44d36..d68f8ad 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_yaml.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_yaml.py @@ -1,7 +1,6 @@ -from datetime import datetime import logging import os -import shutil +from datetime import datetime from hdmf.common.table import DynamicTable, VectorData from ndx_franklab_novela import Probe, Shank, ShanksElectrode @@ -9,15 +8,12 @@ from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree -from spikegadgets_to_nwb.data_scanner import get_file_info -from spikegadgets_to_nwb.convert_position import add_associated_video_files -from spikegadgets_to_nwb.tests.utils import data_path -from ndx_franklab_novela import CameraDevice +path = os.path.dirname(os.path.abspath(__file__)) def test_initial_nwb_creation(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # check that things were added in @@ -38,7 +34,7 @@ def test_initial_nwb_creation(): def test_subject_creation(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_subject(nwb_file, metadata) @@ -54,7 +50,7 @@ def test_subject_creation(): def test_camera_creation(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_cameras(nwb_file, metadata) @@ -68,7 +64,7 @@ def test_camera_creation(): def test_acq_device_creation(): - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_acquisition_devices(nwb_file, metadata) @@ -82,13 +78,20 @@ def test_acq_device_creation(): def test_electrode_creation(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadata.yml" - probe_metadata = [data_path / "tetrode_12.5.yml"] + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + probe_metadata = [ + path + "/test_data/tetrode_12.5.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using rec data - recfile = data_path / "20230622_sample_01_a1.rec" + try: + # running on github + recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" + except (TypeError, FileNotFoundError): + # running locally + recfile = path + "/test_data/20230622_sample_01_a1.rec" rec_header = convert_rec_header.read_header(recfile) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -153,8 +156,10 @@ def test_electrode_creation(): def test_electrode_creation_reconfigured(): # load metadata yml and make nwb file - metadata_path = data_path / "20230622_sample_metadataProbeReconfig.yml" - probe_metadata = [data_path / "128c-4s6mm6cm-15um-26um-sl.yml"] + metadata_path = path + "/test_data/20230622_sample_metadataProbeReconfig.yml" + probe_metadata = [ + path + "/test_data/128c-4s6mm6cm-15um-26um-sl.yml", + ] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) @@ -163,7 +168,7 @@ def test_electrode_creation_reconfigured(): metadata["ntrode_electrode_group_channel_map"][-1]["map"]["31"] = 126 # create the hw_channel map using the reconfig header - trodesconf_file = data_path / "reconfig_probeDevice.trodesconf" + trodesconf_file = path + "/test_data/reconfig_probeDevice.trodesconf" rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -230,7 +235,7 @@ def test_electrode_creation_reconfigured(): def test_add_tasks(): # Set up test data - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) @@ -284,12 +289,12 @@ def test_add_associated_files(capsys): # Create a logger logger = convert.setup_logger("convert", "testing.log") # Set up test data - metadata_path = data_path / "20230622_sample_metadata.yml" + metadata_path = path + "/test_data/20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # Change path of files to be relative to this directory for assoc_meta in metadata["associated_files"]: - assoc_meta["path"] = str(data_path / assoc_meta["name"]) + assoc_meta["path"] = path + "/test_data/" # call the function to test convert_yaml.add_associated_files(nwbfile, metadata) assert "associated_files" in nwbfile.processing @@ -311,7 +316,7 @@ def test_add_associated_files(capsys): # Test printed errormessage for missing file # Change path of files to be relative to this directory - metadata["associated_files"][0]["path"] = "bad_path.txt" + metadata["associated_files"][0]["path"] = "" metadata["associated_files"][0]["name"] = "bad_path.txt" metadata["associated_files"].pop(1) convert_yaml.add_associated_files(nwbfile, metadata) @@ -326,42 +331,9 @@ def test_add_associated_files(capsys): break assert printed_warning - -def test_add_associated_video_files(): - # Set up test data - metadata_path = data_path / "20230622_sample_metadata.yml" - metadata, _ = convert_yaml.load_metadata(metadata_path, []) - nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - convert_yaml.add_cameras(nwbfile, metadata) - - # make session_df - path_df = get_file_info(data_path) - session_df = path_df[(path_df.animal == "sample")] - - # make temp video directory - video_directory = data_path / "temp_video_directory" - if not os.path.exists(video_directory): - os.makedirs(video_directory) - - # Call the function to be tested - add_associated_video_files( - nwbfile, metadata, session_df, video_directory=str(video_directory) - ) - assert "video_files" in nwbfile.processing - assert "video" in nwbfile.processing["video_files"].data_interfaces - assert len(nwbfile.processing["video_files"]["video"].time_series) == 2 - - for video, video_meta in zip( - nwbfile.processing["video_files"]["video"].time_series, - metadata["associated_video_files"], - ): - video = nwbfile.processing["video_files"]["video"][video] - assert video.name == video_meta["name"] - assert video.format == "external" - assert video.timestamps_unit == "seconds" - assert video.timestamps is not None - assert isinstance(video.device, CameraDevice) - assert (video_directory / video.external_file[0]).exists() - - # cleanup - shutil.rmtree(video_directory) + def test_add_associated_video_files(): + # Set up test data + metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata, _ = convert_yaml.load_metadata(metadata_path, []) + nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) + return diff --git a/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml b/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml index 990c3f8..9531e6b 100644 --- a/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml +++ b/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml @@ -62,11 +62,20 @@ associated_files: path: path/ task_epochs: 2 associated_video_files: - - name: 20230622_sample_01_a1.1.h264 + - name: video1 camera_id: 0 task_epochs: 1 - - name: 20230622_sample_02_a1.1.h264 + - name: video3 camera_id: 0 + task_epochs: 3 + - name: video5 + camera_id: 0 + task_epochs: 5 + - name: video2 + camera_id: 1 + task_epochs: 2 + - name: video4 + camera_id: 1 task_epochs: 2 units: analog: "-1" diff --git a/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml b/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml deleted file mode 100644 index f0a8663..0000000 --- a/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml +++ /dev/null @@ -1,1225 +0,0 @@ - -experiment_description: Hippocampus content feedback -experimenter_name: Michael Coulter -institution: University of California, San Francisco -lab: Loren Frank -raw_data_to_volts: 1.95e-07 -session_description: Hippocampus content feedback -session_id: ginny_20211027 -subject: - description: Long Evans Rat - genotype: Wild Type - sex: Male - species: Rat - subject_id: ginny - weight: Unknown - date_of_birth: 2000-01-01T00:00:00.000Z - -associated_files: -- description: Statescript log run 1 - name: statescript_r1 - path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_02_r1.stateScriptLog - task_epochs: - - 2 -- description: Statescript log run 2 - name: statescript_r2 - path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_04_r2.stateScriptLog - task_epochs: - - 4 -- description: Statescript log run 3 - name: statescript_r3 - path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_06_r3.stateScriptLog - task_epochs: - - 6 - -associated_video_files: -- name: 20211027_ginny_01_s1.1.h264 - camera_id : 0 - task_epochs: 1 -- name: 20211027_ginny_03_s2.1.h264 - camera_id : 0 - task_epochs: 3 -- name: 20211027_ginny_05_s3.1.h264 - camera_id : 0 - task_epochs: 5 -- name: 20211027_ginny_07_s4.1.h264 - camera_id : 0 - task_epochs: 7 -- name: 20211027_ginny_02_r1.1.h264 - camera_id : 1 - task_epochs: 2 -- name: 20211027_ginny_04_r2.1.h264 - camera_id : 1 - task_epochs: 4 -- name: 20211027_ginny_06_r3.1.h264 - camera_id : 1 - task_epochs: 6 - -tasks: -- camera_id: - - 1 - task_description: training session - task_epochs: - - 2 - - 4 - - 6 - task_name: Content feedback - task_environment: n/a -- camera_id: - - 0 - task_description: sleep - task_epochs: - - 1 - - 3 - - 5 - - 7 - task_name: Sleep - task_environment: n/a -times_period_multiplier: 1.5 -units: - analog: unspecified - behavioral_events: unspecified - -cameras: -- camera_name: MEC_sleep_camera - id: 0 - lens: unknown2 - manufacturer: unknown2 - meters_per_pixel: 0.00055 - model: unknown2 -- camera_name: MEC_run_camera - id: 1 - lens: unknown - manufacturer: unknown - meters_per_pixel: 0.0022 - model: unknown - -behavioral_events: -- name: Arm1_poke - description: Din13 -- name: Arm2_poke - description: Din9 -- name: CenterWell_poke - description: Din7 -- name: BackWell_poke - description: Din10 -- name: Arm1_light - description: Dout13 -- name: Arm2_light - description: Dout9 -- name: CenterWell_light - description: Dout7 -- name: BackWell_light - description: Dout10 -- name: Arm1_milk_pump - description: Dout11 -- name: Arm2_milk_pump - description: Dout12 -- name: CenterWell_milk_pump - description: Dout14 -- name: BackWell_milk_pump - description: Dout8 -- name: CamerasyncRun camera ticks - description: Din15 -- name: CamerasyncSleep camera ticks - description: Din16 - -data_acq_device: -- adc_circuit: Intan - amplifier: Intan - system: SpikeGadgets -default_header_file_path: default_header.xml -device: - name: - - Trodes -electrode_groups: -- description: tetrode - device_type: tetrode_12.5 - id: 0 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 1 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 2 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 3 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 4 - location: '' - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 5 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 6 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 7 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 8 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 9 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 10 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 11 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 12 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 13 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 14 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 15 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 16 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 17 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 18 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 19 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 20 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 21 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 22 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 23 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 24 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 25 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 26 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 27 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 28 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 29 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 30 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 31 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 32 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 33 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 34 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 35 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 36 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 37 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 38 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 39 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 40 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 41 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 42 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 43 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 44 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 45 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 46 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 47 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 48 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 49 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 50 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 51 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 52 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 53 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 54 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 55 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 56 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 57 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 58 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 59 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 60 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 61 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 62 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um -- description: tetrode - device_type: tetrode_12.5 - id: 63 - location: ca1 - targeted_location: CA1 - targeted_x: 0.0 - targeted_y: 0.0 - targeted_z: 0.0 - units: um - -ntrode_electrode_group_channel_map: -- bad_channels: [] - electrode_group_id: 0 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 1 -- bad_channels: [0] - electrode_group_id: 1 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 2 -- bad_channels: [] - electrode_group_id: 2 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 3 -- bad_channels: [] - electrode_group_id: 3 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 4 -- bad_channels: [] - electrode_group_id: 4 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 5 -- bad_channels: [] - electrode_group_id: 5 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 6 -- bad_channels: [] - electrode_group_id: 6 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 7 -- bad_channels: [] - electrode_group_id: 7 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 8 -- bad_channels: [] - electrode_group_id: 8 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 9 -- bad_channels: [] - electrode_group_id: 9 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 10 -- bad_channels: [] - electrode_group_id: 10 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 11 -- bad_channels: [] - electrode_group_id: 11 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 12 -- bad_channels: [] - electrode_group_id: 12 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 13 -- bad_channels: [] - electrode_group_id: 13 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 14 -- bad_channels: [] - electrode_group_id: 14 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 15 -- bad_channels: [] - electrode_group_id: 15 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 16 -- bad_channels: [] - electrode_group_id: 16 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 17 -- bad_channels: [] - electrode_group_id: 17 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 18 -- bad_channels: [] - electrode_group_id: 18 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 19 -- bad_channels: [] - electrode_group_id: 19 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 20 -- bad_channels: [] - electrode_group_id: 20 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 21 -- bad_channels: [] - electrode_group_id: 21 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 22 -- bad_channels: [] - electrode_group_id: 22 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 23 -- bad_channels: [] - electrode_group_id: 23 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 24 -- bad_channels: [] - electrode_group_id: 24 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 25 -- bad_channels: [] - electrode_group_id: 25 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 26 -- bad_channels: [] - electrode_group_id: 26 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 27 -- bad_channels: [] - electrode_group_id: 27 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 28 -- bad_channels: [] - electrode_group_id: 28 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 29 -- bad_channels: [] - electrode_group_id: 29 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 30 -- bad_channels: [] - electrode_group_id: 30 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 31 -- bad_channels: [] - electrode_group_id: 31 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 32 -- bad_channels: [] - electrode_group_id: 32 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 33 -- bad_channels: [] - electrode_group_id: 33 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 34 -- bad_channels: [] - electrode_group_id: 34 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 35 -- bad_channels: [] - electrode_group_id: 35 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 36 -- bad_channels: [0] - electrode_group_id: 36 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 37 -- bad_channels: [] - electrode_group_id: 37 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 38 -- bad_channels: [] - electrode_group_id: 38 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 39 -- bad_channels: [] - electrode_group_id: 39 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 40 -- bad_channels: [2] - electrode_group_id: 40 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 41 -- bad_channels: [] - electrode_group_id: 41 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 42 -- bad_channels: [] - electrode_group_id: 42 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 43 -- bad_channels: [] - electrode_group_id: 43 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 44 -- bad_channels: [] - electrode_group_id: 44 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 45 -- bad_channels: [] - electrode_group_id: 45 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 46 -- bad_channels: [] - electrode_group_id: 46 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 47 -- bad_channels: [] - electrode_group_id: 47 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 48 -- bad_channels: [] - electrode_group_id: 48 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 49 -- bad_channels: [] - electrode_group_id: 49 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 50 -- bad_channels: [] - electrode_group_id: 50 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 51 -- bad_channels: [] - electrode_group_id: 51 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 52 -- bad_channels: [] - electrode_group_id: 52 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 53 -- bad_channels: [] - electrode_group_id: 53 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 54 -- bad_channels: [] - electrode_group_id: 54 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 55 -- bad_channels: [] - electrode_group_id: 55 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 56 -- bad_channels: [] - electrode_group_id: 56 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 57 -- bad_channels: [] - electrode_group_id: 57 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 58 -- bad_channels: [] - electrode_group_id: 58 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 59 -- bad_channels: [] - electrode_group_id: 59 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 60 -- bad_channels: [] - electrode_group_id: 60 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 61 -- bad_channels: [] - electrode_group_id: 61 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 62 -- bad_channels: [] - electrode_group_id: 62 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 63 -- bad_channels: [] - electrode_group_id: 63 - map: - '0': 0 - '1': 1 - '2': 2 - '3': 3 - ntrode_id: 64 diff --git a/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py b/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py deleted file mode 100644 index 6cad848..0000000 --- a/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py +++ /dev/null @@ -1,212 +0,0 @@ -import pytest -import copy - -basic_data = { - "experimenter_name": ["michael jackson"], - "lab": "Loren Frank Lab", - "institution": "University of California, San Francisco", - "experiment_description": "making of thriller", - "session_description": "make an album like the nutcracker", - "session_id": "6", - "keywords": ["best"], - "subject": { - "description": "Long-Evans Rat", - "genotype": "Wild Type", - "sex": "M", - "species": "Rattus norvegicus", - "subject_id": "1", - "date_of_birth": "2023-07-24T00:00:00.000Z", - "weight": 100, - }, - "data_acq_device": [ - { - "name": "SpikeGadgets", - "system": "SpikeGadgets", - "amplifier": "Intan", - "adc_circuit": "Intan", - } - ], - "cameras": [], - "tasks": [], - "associated_files": [], - "associated_video_files": [], - "units": {"analog": "1", "behavioral_events": "1"}, - "times_period_multiplier": 1, - "raw_data_to_volts": 1, - "default_header_file_path": "epic/michaeljackson/thriller", - "behavioral_events": [], - "device": {"name": ["Trodes"]}, - "electrode_groups": [], - "ntrode_electrode_group_channel_map": [], -} - -basic_data_with_optional_arrays = { - "experimenter_name": ["michael jackson"], - "lab": "Loren Frank Lab", - "institution": "University of California, San Francisco", - "experiment_description": "making of thriller", - "session_description": "make an album like the nutcracker", - "session_id": "6", - "keywords": ["best"], - "subject": { - "description": "Long-Evans Rat", - "genotype": "Wild Type", - "sex": "M", - "species": "Rattus norvegicus", - "subject_id": "1", - "date_of_birth": "2023-07-24T00:00:00.000Z", - "weight": 100, - }, - "data_acq_device": [ - { - "name": "SpikeGadgets", - "system": "SpikeGadgets", - "amplifier": "Intan", - "adc_circuit": "Intan", - } - ], - "cameras": [ - { - "id": 10, - "meters_per_pixel": 1, - "manufacturer": "Epic Record", - "model": "555", - "lens": "MJ lens", - "camera_name": "MJ cam", - }, - ], - "tasks": [], - "associated_files": [ - { - "name": "Michael Jackson", - "description": "Thriller25", - "path": "Hard work", - "task_epochs": 0, - }, - { - "name": "Michael Jackson2", - "description": "HIStory", - "path": "Making/a/statement", - "task_epochs": 1, - }, - ], - "associated_video_files": [ - { - "name": "Michael Jackson", - "camera_id": 1, - "task_epochs": 1, - } - ], - "units": {"analog": "1", "behavioral_events": "1"}, - "times_period_multiplier": 1, - "raw_data_to_volts": 1, - "default_header_file_path": "epic/michaeljackson/thriller", - "behavioral_events": [ - { - "description": "Din555", - "name": "M. Joe Jackson", - } - ], - "device": {"name": ["Trodes"]}, - "electrode_groups": [], - "ntrode_electrode_group_channel_map": [], -} - -empty_experimenter_name = copy.deepcopy(basic_data) -empty_experimenter_name["experimenter_name"] = [] - -string_as_experimenter_name = copy.deepcopy(basic_data) -string_as_experimenter_name["experimenter_name"] = "" - -empty_lab = copy.deepcopy(basic_data) -empty_lab["lab"] = "" - -empty_institution = copy.deepcopy(basic_data) -empty_institution["institution"] = "" - -empty_experiment_description = copy.deepcopy(basic_data) -empty_experiment_description["experiment_description"] = "" - -empty_session_description = copy.deepcopy(basic_data) -empty_session_description["session_description"] = "" - -empty_session_id = copy.deepcopy(basic_data) -empty_session_id["session_id"] = "" - -empty_keywords = copy.deepcopy(basic_data) -empty_keywords["keywords"] = [] - -keywords_array_with_empty_item = copy.deepcopy(basic_data) -keywords_array_with_empty_item["keywords"] = [""] - -not_array_keywords = copy.deepcopy(basic_data) -not_array_keywords["keywords"] = "test" - -subject_with_empty_values = copy.deepcopy(basic_data) -subject_with_empty_values["subject"] = { - "description": "", - "genotype": "", - "sex": "", - "species": "", - "subject_id": "", - "date_of_birth": "", - "weight": -1, -} - -empty_subject = copy.deepcopy(basic_data) -empty_subject["subject"] = {} - -subject_with_invalid_sex = copy.deepcopy(basic_data) -subject_with_invalid_sex["subject"] = { - "description": "Long-Evans Rat", - "genotype": "Wild Type", - "sex": "m", - "species": "Rattus norvegicus", - "subject_id": "1", - "date_of_birth": "2023-07-24T00:00:00.000Z", - "weight": 100, -} - -subject_with_invalid_date = copy.deepcopy(basic_data) -subject_with_invalid_date["subject"] = { - "description": "Long-Evans Rat", - "genotype": "Wild Type", - "sex": "M", - "species": "Rattus norvegicus", - "subject_id": "1", - "date_of_birth": "2023-01-04", - "weight": 100, -} - -data_acq_device_with_no_values = copy.deepcopy(basic_data) -data_acq_device_with_no_values["data_acq_device"] = [ - {"name": "", "system": "", "amplifier": "", "adc_circuit": ""} -] - -empty_data_acq_device = copy.deepcopy(basic_data) -empty_data_acq_device["data_acq_device"] = [] - -empty_units = copy.deepcopy(basic_data) -empty_units["units"] = {} - -invalid_times_period_multiplier = copy.deepcopy(basic_data) -invalid_times_period_multiplier["times_period_multiplier"] = "a" - -invalid_raw_data_to_volts = copy.deepcopy(basic_data) -invalid_raw_data_to_volts["raw_data_to_volts"] = "a" - -invalid_default_header_file_path = copy.deepcopy(basic_data) -invalid_default_header_file_path["default_header_file_path"] = None - -empty_device_name = copy.deepcopy(basic_data) -empty_device_name["device"] = {} - -basic_ntrode_electrode_group_channel_map = copy.deepcopy(basic_data) -basic_ntrode_electrode_group_channel_map["ntrode_electrode_group_channel_map"] = [ - { - "ntrode_id": "a", - "electrode_group_id": "z", - "bad_channels": ["z"], - "map": {"0": "0", "1": "t", "2": "a", "3": -3}, - } -] diff --git a/src/spikegadgets_to_nwb/tests/test_metadata_validation.py b/src/spikegadgets_to_nwb/tests/test_metadata_validation.py deleted file mode 100644 index 003e858..0000000 --- a/src/spikegadgets_to_nwb/tests/test_metadata_validation.py +++ /dev/null @@ -1,25 +0,0 @@ -import copy -import datetime -from unittest.mock import MagicMock, patch -from spikegadgets_to_nwb.metadata_validation import ( - validate, - _get_nwb_json_schema_path, -) -from spikegadgets_to_nwb.tests.test_data import test_metadata_dict_samples - - -def test_path_to_json_schema_is_correct(): - path = _get_nwb_json_schema_path() - json_schema_file = "nwb_schema.json" - - assert json_schema_file in path - - -@patch("spikegadgets_to_nwb.metadata_validation._get_json_schema") -@patch("jsonschema.Draft202012Validator") -def test_verify_validation_called(jsonValidator, getSchema): - basic_test_data = copy.deepcopy(test_metadata_dict_samples.basic_data) - basic_test_data["subject"]["date_of_birth"] = datetime.datetime.now().isoformat() - validate(basic_test_data) - assert getSchema.call_count == 1 - assert jsonValidator.call_count == 1 diff --git a/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py b/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py index 4aff4a5..7054c1f 100644 --- a/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py +++ b/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py @@ -1,13 +1,23 @@ +import os +from pathlib import Path + import numpy as np from spikegadgets_to_nwb.spike_gadgets_raw_io import InsertedMemmap, SpikeGadgetsRawIO -from spikegadgets_to_nwb.tests.utils import data_path + +path = os.path.dirname(os.path.abspath(__file__)) def test_spikegadgets_raw_io_interpolation(): # Interpolation of dropped timestamp only done for ephys data and systime # get the path to the rec file + try: + # running on github + data_path = Path(os.environ.get("DOWNLOAD_DIR")) + except (TypeError, FileNotFoundError): + # running locally + data_path = Path(path + "/test_data") rec_file = data_path / "20230622_sample_01_a1.rec" # create the SpikeGadgetsRawIO object diff --git a/src/spikegadgets_to_nwb/tests/utils.py b/src/spikegadgets_to_nwb/tests/utils.py deleted file mode 100644 index f97acbf..0000000 --- a/src/spikegadgets_to_nwb/tests/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Set the path to the bulk test data dir and copies the yaml/config files there""" -import os -from pathlib import Path -import shutil - - -yaml_path = Path(__file__).resolve().parent / "test_data" - -data_path = os.environ.get("DOWNLOAD_DIR", None) -if data_path is not None: - # running from the GitHub Action workflow - data_path = Path(data_path) - shutil.copytree( - yaml_path, - data_path, - dirs_exist_ok=True, - ignore=shutil.ignore_patterns(*os.listdir(data_path)), # ignore existing - ) -else: - # running locally -- bulk test data is the same directory as the test yaml files - data_path = yaml_path - -del yaml_path From 173534ab721072eef6b96727be135cbee088178b Mon Sep 17 00:00:00 2001 From: Eric Denovellis Date: Fri, 27 Oct 2023 14:57:02 -0700 Subject: [PATCH 08/16] Revert "Revert "Merge branch 'main' into split_iterator"" This reverts commit cb52f19631e2e1f7277e40d93396ae738c374018. --- .github/workflows/test_package_build.yml | 9 +- environment.yml | 3 +- pyproject.toml | 3 +- src/spikegadgets_to_nwb/convert.py | 75 +- src/spikegadgets_to_nwb/convert_analog.py | 1 - src/spikegadgets_to_nwb/convert_dios.py | 24 +- src/spikegadgets_to_nwb/convert_intervals.py | 16 +- src/spikegadgets_to_nwb/convert_position.py | 390 +- src/spikegadgets_to_nwb/convert_yaml.py | 21 +- .../metadata_validation.py | 75 + src/spikegadgets_to_nwb/nwb_schema.json | 35971 ++++++++++++++++ .../spike_gadgets_raw_io.py | 11 +- .../tests/integration-tests/__init__.py | 0 .../test_metadata_validation_it.py | 190 + src/spikegadgets_to_nwb/tests/test_convert.py | 66 +- .../tests/test_convert_analog.py | 21 +- .../tests/test_convert_dios.py | 47 +- .../tests/test_convert_ephys.py | 103 +- .../tests/test_convert_intervals.py | 60 +- .../tests/test_convert_position.py | 90 +- .../tests/test_convert_rec_header.py | 48 +- .../tests/test_convert_yaml.py | 90 +- .../test_data/20230622_sample_metadata.yml | 13 +- .../tests/test_data/nonptp_metadata.yml | 1225 + .../test_data/test_metadata_dict_samples.py | 212 + .../tests/test_metadata_validation.py | 25 + .../tests/test_spikegadgets_io.py | 12 +- src/spikegadgets_to_nwb/tests/utils.py | 23 + 28 files changed, 38351 insertions(+), 473 deletions(-) create mode 100644 src/spikegadgets_to_nwb/metadata_validation.py create mode 100644 src/spikegadgets_to_nwb/nwb_schema.json create mode 100644 src/spikegadgets_to_nwb/tests/integration-tests/__init__.py create mode 100644 src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py create mode 100644 src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml create mode 100644 src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py create mode 100644 src/spikegadgets_to_nwb/tests/test_metadata_validation.py create mode 100644 src/spikegadgets_to_nwb/tests/utils.py diff --git a/.github/workflows/test_package_build.yml b/.github/workflows/test_package_build.yml index a49a53e..880a840 100644 --- a/.github/workflows/test_package_build.yml +++ b/.github/workflows/test_package_build.yml @@ -46,6 +46,8 @@ jobs: strategy: matrix: package: ['wheel', 'sdist', 'archive', 'editable'] + env: + DOWNLOAD_DIR: ${{ github.workspace }}/test_data steps: - name: Download sdist and wheel artifacts if: matrix.package != 'archive' @@ -66,7 +68,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-python@v4 with: - python-version: 3 + python-version: "3.11" - name: Display Python version run: python -c "import sys; print(sys.version)" - name: Update pip @@ -90,19 +92,14 @@ jobs: UCSF_BOX_TOKEN: ${{ secrets.UCSF_BOX_TOKEN }} UCSF_BOX_USER: ${{ secrets.UCSF_BOX_USER }} WEBSITE: ftps://ftp.box.com/spikegadgets_to_nwb_test_data/ - DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: | wget --recursive --no-verbose --no-host-directories --no-directories --user $UCSF_BOX_USER --password $UCSF_BOX_TOKEN -P $DOWNLOAD_DIR $WEBSITE tree $DOWNLOAD_DIR - name: Run tests without coverage if: matrix.package != 'editable' - env: - DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: pytest --doctest-modules -v --pyargs spikegadgets_to_nwb - name: Run tests with coverage if: matrix.package == 'editable' - env: - DOWNLOAD_DIR: ${{ github.workspace }}/src/spikegadgets_to_nwb/tests/test_data run: pytest --cov=src --cov-report=xml --doctest-modules -v --pyargs spikegadgets_to_nwb - name: Upload coverage reports to Codecov if: matrix.package == 'editable' diff --git a/environment.yml b/environment.yml index 63dcffa..95ccd1b 100644 --- a/environment.yml +++ b/environment.yml @@ -15,8 +15,9 @@ dependencies: - pytest-cov - pip - pyyaml +- jsonschema - ffmpeg - pip: - ndx-franklab-novela - neo - - hdmf=3.8.1 + - hdmf==3.8.1 diff --git a/pyproject.toml b/pyproject.toml index 4d3b5b8..04f93e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,8 +10,9 @@ requires-python = ">=3.8" license = { file = "LICENSE" } authors = [ { name = "Sam Bray", email = "sam.bray@ucsf.edu" }, - { name = "Ryan Ly", email = "rly@lbl.gov" }, { name = "Eric Denovellis", email = "eric.denovellis@ucsf.edu" }, + { name = "Ryan Ly", email = "rly@lbl.gov" }, + { name = "Philip Adenekan", email = "phil.adenekan@ucsf.edu" }, { name = "Loren Frank", email = "loren.frank@ucsf.edu" }, ] classifiers = [ diff --git a/src/spikegadgets_to_nwb/convert.py b/src/spikegadgets_to_nwb/convert.py index 6318a61..e2ec922 100644 --- a/src/spikegadgets_to_nwb/convert.py +++ b/src/spikegadgets_to_nwb/convert.py @@ -10,9 +10,13 @@ from spikegadgets_to_nwb.convert_dios import add_dios from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator, add_raw_ephys from spikegadgets_to_nwb.convert_intervals import add_epochs, add_sample_count -from spikegadgets_to_nwb.convert_position import add_position +from spikegadgets_to_nwb.convert_position import ( + add_associated_video_files, + add_position, +) from spikegadgets_to_nwb.convert_rec_header import ( add_header_device, + detect_ptp_from_header, make_hw_channel_map, make_ref_electrode_map, read_header, @@ -105,7 +109,34 @@ def create_nwbs( video_directory: str = "", convert_video: bool = False, n_workers: int = 1, + query_expression: str | None = None, ): + """ + Convert SpikeGadgets data to NWB format. + + Parameters + ---------- + path : Path + Path to the SpikeGadgets data file. + header_reconfig_path : Path, optional + Path to the header reconfiguration file, by default None. + probe_metadata_paths : list[Path], optional + List of paths to the probe metadata files, by default None. + output_dir : str, optional + Output directory for the NWB files, by default "/home/stelmo/nwb/raw". + video_directory : str, optional + Directory containing the video files, by default "". + convert_video : bool, optional + Whether to convert the video files, by default False. + n_workers : int, optional + Number of workers to use for parallel processing, by default 1. + query_expression : str, optional + Pandas query expression to filter the data, by default None. + e.g. "animal == 'sample' and epoch == 1" + See https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html. + + """ + if not isinstance(path, Path): path = Path(path) @@ -115,6 +146,9 @@ def create_nwbs( file_info = get_file_info(path) + if query_expression is not None: + file_info = file_info.query(query_expression) + if n_workers > 1: def pass_func(args): @@ -225,6 +259,9 @@ def _create_nwb( nwb_file, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) add_header_device(nwb_file, rec_header) + add_associated_video_files( + nwb_file, metadata, session_df, video_directory, convert_video + ) logger.info("ADDING EPHYS DATA") ### add rec file data ### @@ -243,26 +280,32 @@ def _create_nwb( add_analog_data(nwb_file, rec_filepaths, timestamps=rec_dci_timestamps) logger.info("ADDING SAMPLE COUNTS") add_sample_count(nwb_file, rec_dci) - logger.info("ADDING POSITION") - ### add position ### - add_position( - nwb_file, - metadata, - session_df, - rec_header, - video_directory=video_directory, - convert_video=convert_video, - ) - - # add epochs logger.info("ADDING EPOCHS") add_epochs( nwbfile=nwb_file, - file_info=session_df, - date=session[0], - animal=session[1], + session_df=session_df, neo_io=rec_dci.neo_io, ) + logger.info("ADDING POSITION") + ### add position ### + ptp_enabled = detect_ptp_from_header(rec_header) + if ptp_enabled: + add_position( + nwb_file, + metadata, + session_df, + ) + else: + add_position( + nwb_file, + metadata, + session_df, + ptp_enabled=ptp_enabled, + rec_dci_timestamps=rec_dci_timestamps, + sample_count=nwb_file.processing["sample_count"] + .data_interfaces["sample_count"] + .data, + ) # write file logger.info(f"WRITING: {output_dir}/{session[1]}{session[0]}.nwb") diff --git a/src/spikegadgets_to_nwb/convert_analog.py b/src/spikegadgets_to_nwb/convert_analog.py index 0bdfb3e..f0c2ad1 100644 --- a/src/spikegadgets_to_nwb/convert_analog.py +++ b/src/spikegadgets_to_nwb/convert_analog.py @@ -1,4 +1,3 @@ -from warnings import warn from xml.etree import ElementTree import numpy as np diff --git a/src/spikegadgets_to_nwb/convert_dios.py b/src/spikegadgets_to_nwb/convert_dios.py index 8161c53..b28341e 100644 --- a/src/spikegadgets_to_nwb/convert_dios.py +++ b/src/spikegadgets_to_nwb/convert_dios.py @@ -70,26 +70,24 @@ def add_dios(nwbfile: NWBFile, recfile: list[str], metadata: dict) -> None: prefix = "ECU_" break - for channel_name in channel_name_map: - # merge streams from multiple files - all_timestamps = [] - all_state_changes = [] - for io in neo_io: + # compile data for all dio channels in all files + all_timestamps = [np.array([], dtype=np.float64) for i in channel_name_map] + all_state_changes = [np.array([], dtype=np.float64) for i in channel_name_map] + for io in neo_io: + for i, channel_name in enumerate(channel_name_map): timestamps, state_changes = io.get_digitalsignal( stream_name, prefix + channel_name ) - all_timestamps.append(timestamps) - all_state_changes.append(state_changes) - all_timestamps = np.concatenate(all_timestamps) - all_state_changes = np.concatenate(all_state_changes) - assert isinstance(all_timestamps[0], np.float64) - assert isinstance(all_timestamps, np.ndarray) + all_timestamps[i] = np.concatenate((all_timestamps[i], timestamps)) + all_state_changes[i] = np.concatenate((all_state_changes[i], state_changes)) + # Add each channel as a behavioral event time series + for i, channel_name in enumerate(channel_name_map): ts = TimeSeries( name=channel_name_map[channel_name], description=channel_name, - data=all_state_changes, + data=all_state_changes[i], unit="-1", # TODO change to "N/A", - timestamps=all_timestamps, # TODO adjust timestamps + timestamps=all_timestamps[i], # TODO adjust timestamps ) beh_events.add_timeseries(ts) diff --git a/src/spikegadgets_to_nwb/convert_intervals.py b/src/spikegadgets_to_nwb/convert_intervals.py index 709d76b..e76843a 100644 --- a/src/spikegadgets_to_nwb/convert_intervals.py +++ b/src/spikegadgets_to_nwb/convert_intervals.py @@ -14,9 +14,7 @@ def add_epochs( nwbfile: NWBFile, - file_info: pd.DataFrame, - date: int, - animal: str, + session_df: pd.DataFrame, neo_io: List[SpikeGadgetsRawIO], ): """add epochs to nwbfile @@ -35,11 +33,13 @@ def add_epochs( neo_io iterators for each rec file. Contains time information """ logger = logging.getLogger("convert") - session_info = file_info[(file_info.date == date) & (file_info.animal == animal)] - for epoch in set(session_info.epoch): - rec_file_list = session_info[ - (session_info.epoch == epoch) & (session_info.file_extension == ".rec") + for epoch in set(session_df.epoch): + rec_file_list = session_df[ + (session_df.epoch == epoch) & (session_df.file_extension == ".rec") ] + if len(rec_file_list) == 0: + logger.info(f"no rec files for epoch {epoch}, No epoch interval created") + continue start_time = None end_time = None logger.info(list(rec_file_list.full_path)) @@ -58,7 +58,7 @@ def add_epochs( ) else: file_end_time = np.max( - io._get_systime_from_trodes_timestamps(n_time - 1, n_time) + io.get_systime_from_trodes_timestamps(n_time - 1, n_time) ) if end_time is None or file_end_time > end_time: end_time = float(file_end_time) diff --git a/src/spikegadgets_to_nwb/convert_position.py b/src/spikegadgets_to_nwb/convert_position.py index a2ae0d8..eedbc58 100644 --- a/src/spikegadgets_to_nwb/convert_position.py +++ b/src/spikegadgets_to_nwb/convert_position.py @@ -3,7 +3,6 @@ import re import subprocess from pathlib import Path -from xml.etree import ElementTree import numpy as np import pandas as pd @@ -13,8 +12,6 @@ from scipy.ndimage import label from scipy.stats import linregress -from spikegadgets_to_nwb.convert_rec_header import detect_ptp_from_header - NANOSECONDS_PER_SECOND = 1e9 @@ -127,7 +124,7 @@ def get_framerate(timestamps: np.ndarray) -> float: Parameters ---------- timestamps : np.ndarray - An array of timestamps for each frame in the video. + An array of timestamps for each frame in the video, units = nanoseconds. Returns ------- @@ -150,7 +147,7 @@ def find_acquisition_timing_pause( Parameters ---------- timestamps : np.ndarray - An array of timestamps for each frame in the video. + An array of timestamps for each frame in the video. Expects units=nanoseconds. min_duration : float, optional The minimum duration of the pause in seconds, by default 0.4. max_duration : float, optional @@ -161,7 +158,7 @@ def find_acquisition_timing_pause( Returns ------- pause_mid_time : float - The midpoint time of the timing pause. + The midpoint time of the timing pause in nanoseconds. """ timestamps = np.asarray(timestamps) @@ -374,20 +371,69 @@ def correct_timestamps_for_camera_to_mcu_lag( corrected_camera_systime = ( regression_result.intercept + frame_count * regression_result.slope ) - corrected_camera_systime /= NANOSECONDS_PER_SECOND + # corrected_camera_systime /= NANOSECONDS_PER_SECOND return corrected_camera_systime -def find_camera_dio_channel(dios): - raise NotImplementedError +def find_camera_dio_channel(nwb_file): + dio_camera_name = [ + key + for key in nwb_file.processing["behavior"] + .data_interfaces["behavioral_events"] + .time_series + if "camera ticks" in key + ] + if len(dio_camera_name) > 1: + raise ValueError( + "Multiple camera dio channels found by name. Not implemented for multiple cameras without PTP yet." + ) + + if len(dio_camera_name) == 0: + raise ValueError( + "No camera dio channel found by name. Check metadata YAML. Name must contain 'camera ticks'" + ) + + return ( + nwb_file.processing["behavior"] + .data_interfaces["behavioral_events"] + .time_series[dio_camera_name[0]] + .timestamps + ) + + +def get_video_timestamps(video_timestamps_filepath: Path) -> np.ndarray: + """ + Get video timestamps. + + Parameters + ---------- + video_timestamps_filepath : Path + Path to the video timestamps file. + + Returns + ------- + np.ndarray + An array of video timestamps. + """ + # Get video timestamps + video_timestamps = ( + pd.DataFrame(read_trodes_datafile(video_timestamps_filepath)["data"]) + .set_index("PosTimestamp") + .rename(columns={"frameCount": "HWframeCount"}) + ) + return ( + np.asarray(video_timestamps.HWTimestamp, dtype=np.float64) + / NANOSECONDS_PER_SECOND + ) def get_position_timestamps( position_timestamps_filepath: Path, position_tracking_filepath=None | Path, - mcu_neural_timestamps=None | np.ndarray, - dios=None, + rec_dci_timestamps=None | np.ndarray, + dio_camera_timestamps=None | np.ndarray, + sample_count=None | np.ndarray, ptp_enabled: bool = True, ): logger = logging.getLogger("convert") @@ -461,57 +507,57 @@ def get_position_timestamps( )[0][0] + 1 ) - original_video_timestamps = video_timestamps.copy() video_timestamps = video_timestamps.iloc[pause_mid_ind:] logger.info( "Camera frame rate estimated from MCU timestamps:" f" {1 / np.median(np.diff(video_timestamps.index)):0.1f} frames/s" ) - return video_timestamps, original_video_timestamps + return video_timestamps else: - dio_camera_ticks = find_camera_dio_channel(dios) - is_valid_tick = np.isin(dio_camera_ticks, mcu_neural_timestamps.index) - dio_systime = np.asarray( - mcu_neural_timestamps.loc[dio_camera_ticks[is_valid_tick]] - ) - # The DIOs and camera frames are initially unaligned. There is a - # half second pause at the start to allow for alignment. - pause_mid_time = find_acquisition_timing_pause(dio_systime) + try: + pause_mid_time = ( + find_acquisition_timing_pause( + dio_camera_timestamps * NANOSECONDS_PER_SECOND + ) + / NANOSECONDS_PER_SECOND + ) + frame_rate_from_dio = get_framerate( + dio_camera_timestamps[dio_camera_timestamps > pause_mid_time] + ) + logger.info( + "Camera frame rate estimated from DIO camera ticks:" + f" {frame_rate_from_dio:0.1f} frames/s" + ) + except IndexError: + pause_mid_time = -1 - # Estimate the frame rate from the DIO camera ticks as a sanity check. - frame_rate_from_dio = get_framerate(dio_systime[dio_systime > pause_mid_time]) - logger.info( - "Camera frame rate estimated from DIO camera ticks:" - f" {frame_rate_from_dio:0.1f} frames/s" - ) frame_count = np.asarray(video_timestamps.HWframeCount) - camera_systime, is_valid_camera_time = estimate_camera_time_from_mcu_time( - video_timestamps, mcu_neural_timestamps - ) + is_valid_camera_time = np.isin(video_timestamps.index, sample_count) + + camera_systime = rec_dci_timestamps[ + np.digitize(video_timestamps.index[is_valid_camera_time], sample_count) + ] ( - dio_systime, + dio_camera_timestamps, frame_count, is_valid_camera_time, camera_systime, ) = remove_acquisition_timing_pause_non_ptp( - dio_systime, + dio_camera_timestamps, frame_count, camera_systime, is_valid_camera_time, pause_mid_time, ) - original_video_timestamps = video_timestamps.copy() video_timestamps = video_timestamps.iloc[is_valid_camera_time] - frame_rate_from_camera_systime = get_framerate(camera_systime) logger.info( - "Camera frame rate estimated from MCU timestamps:" + "Camera frame rate estimated from camera sys time:" f" {frame_rate_from_camera_systime:0.1f} frames/s" ) - camera_to_mcu_lag = estimate_camera_to_mcu_lag( - camera_systime, dio_systime, len(non_repeat_timestamp_labels_id) + camera_systime, dio_camera_timestamps, len(non_repeat_timestamp_labels_id) ) corrected_camera_systime = [] for id in non_repeat_timestamp_labels_id: @@ -524,22 +570,73 @@ def get_position_timestamps( ) ) corrected_camera_systime = np.concatenate(corrected_camera_systime) - video_timestamps.iloc[ - is_valid_camera_time - ].index = corrected_camera_systime.index - return ( - video_timestamps.set_index(pd.Index(corrected_camera_systime, name="time")), - original_video_timestamps, + + video_timestamps = video_timestamps.set_index( + pd.Index(corrected_camera_systime, name="time") + ) + return video_timestamps.groupby( + video_timestamps.index + ).first() # TODO: Figure out why duplicate timesteps make it to this point and why this line is necessary + + +def find_camera_dio_channel_per_epoch( + nwb_file: NWBFile, epoch_start: float, epoch_end: float +): + """Find the camera dio channel for a given epoch. + Searches through dio channels with "camera ticks" in the name. + Selects first one with at least 100 ticks in the epoch. + + Parameters + ---------- + nwb_file : NWBFile + The NWBFile to find the dio channel in. + epoch_start : float + timestamp of the start of the epoch + epoch_end : float + timestamp of the end of the epoch + + Returns + ------- + dio_camera_timestamps : np.ndarray + The dio timestamps for the camera restricted to the epoch of interest + + Raises + ------ + ValueError + Error if dio's are not added to the nwbfile + ValueError + Error if no camera dio channel is found + """ + dio_camera_list = [ + key + for key in nwb_file.processing["behavior"]["behavioral_events"].time_series + if "camera ticks" in key + ] + if not dio_camera_list: + raise ValueError( + "No camera dio channel found by name. Check metadata YAML. Name must contain 'camera ticks'" ) + for camera in dio_camera_list: + dio_camera_timestamps = ( + nwb_file.processing["behavior"]["behavioral_events"] + .time_series[camera] + .timestamps + ) + epoch_ind = np.logical_and( + dio_camera_timestamps >= epoch_start, dio_camera_timestamps <= epoch_end + ) + if np.sum(epoch_ind) > 100: + return dio_camera_timestamps[epoch_ind] + raise ValueError("No camera dio has sufficient ticks for this epoch") def add_position( nwb_file: NWBFile, metadata: dict, session_df: pd.DataFrame, - rec_header: ElementTree.ElementTree, - video_directory: str, - convert_video: bool = False, + ptp_enabled: bool = True, + rec_dci_timestamps: np.ndarray | None = None, + sample_count: np.ndarray | None = None, ): """ Add position data to an NWBFile. @@ -552,12 +649,12 @@ def add_position( Metadata about the experiment. session_df : pd.DataFrame A DataFrame containing information about the session. - rec_header : ElementTree.ElementTree - The recording header. - video_directory : str - The directory containing the video files. - convert_video : bool, optional - Whether to convert the video files to NWB format, by default False. + ptp_enabled : bool, optional + Whether PTP was enabled, by default True. + rec_dci_timestamps : np.ndarray, optional + The recording timestamps, by default None. Only used if ptp not enabled. + sample_count : np.ndarray, optional + The trodes sample count, by default None. Only used if ptp not enabled. """ logger = logging.getLogger("convert") @@ -588,29 +685,21 @@ def add_position( epoch_to_camera_ids = pd.concat(df).set_index("epoch").sort_index() position = Position(name="position") - ptp_enabled = detect_ptp_from_header(rec_header) # Make a processing module for behavior and add to the nwbfile if not "behavior" in nwb_file.processing: nwb_file.create_processing_module( name="behavior", description="Contains all behavior-related data" ) - - # make processing module for video files - nwb_file.create_processing_module( - name="video_files", description="Contains all associated video files data" - ) - # make a behavioral Event object to hold videos - video = BehavioralEvents(name="video") + # get epoch data to seperate dio timestamps into epochs + if (not ptp_enabled) and (not len(nwb_file.epochs)): + raise ValueError( + "add_epochs() must be run before add_position() for non-ptp data" + ) + if not ptp_enabled: + epoch_df = nwb_file.epochs.to_dataframe() for epoch in session_df.epoch.unique(): - position_timestamps_filepath = session_df.loc[ - np.logical_and( - session_df.epoch == epoch, - session_df.file_extension == ".cameraHWSync", - ) - ].full_path.to_list()[0] - try: position_tracking_filepath = session_df.loc[ np.logical_and( @@ -618,6 +707,21 @@ def add_position( session_df.file_extension == ".videoPositionTracking", ) ].full_path.to_list()[0] + # find the matching hw timestamps filepath + video_index = position_tracking_filepath.split(".")[-2] + video_hw_df = session_df.loc[ + np.logical_and( + session_df.epoch == epoch, + session_df.file_extension == ".cameraHWSync", + ) + ] + position_timestamps_filepath = video_hw_df[ + [ + full_path.split(".")[-3] == video_index + for full_path in video_hw_df.full_path + ] + ].full_path.to_list()[0] + except IndexError: position_tracking_filepath = None @@ -625,10 +729,23 @@ def add_position( logger.info(f"\tposition_timestamps_filepath: {position_timestamps_filepath}") logger.info(f"\tposition_tracking_filepath: {position_tracking_filepath}") - position_df, original_video_timestamps = get_position_timestamps( + # restrict dio camera timestamps to the current epoch + if not ptp_enabled: + epoch_start = epoch_df[epoch_df.index == epoch - 1]["start_time"].iloc[0] + epoch_end = epoch_df[epoch_df.index == epoch - 1]["stop_time"].iloc[0] + dio_camera_timestamps_epoch = find_camera_dio_channel_per_epoch( + nwb_file=nwb_file, epoch_start=epoch_start, epoch_end=epoch_end + ) + else: + dio_camera_timestamps_epoch = None + + position_df = get_position_timestamps( position_timestamps_filepath, position_tracking_filepath, ptp_enabled=ptp_enabled, + rec_dci_timestamps=rec_dci_timestamps, + dio_camera_timestamps=dio_camera_timestamps_epoch, + sample_count=sample_count, ) # TODO: Doesn't handle multiple cameras currently @@ -650,14 +767,7 @@ def add_position( timestamps=np.asarray(position_df.index), ) else: - position.create_spatial_series( - name=f"series_{epoch}", - description=", ".join(["xloc", "yloc"]), - data=np.asarray([]), - conversion=meters_per_pixel, - reference_frame="Upper left corner of video frame", - timestamps=np.asarray(position_df.index), - ) + logging.warning(f"No position tracking data found for epoch {epoch}") # add the video frame index as a new processing module if "position_frame_index" not in nwb_file.processing: @@ -690,41 +800,10 @@ def add_position( ) ) - # add the video file data - # find the video metadata for this epoch - video_metadata = None - for vid_ in metadata["associated_video_files"]: - if vid_["task_epochs"][0] == epoch: - video_metadata = vid_ - break - if video_metadata is None: - raise KeyError(f"Missing video metadata for epoch {epoch}") - - if convert_video: - video_file_name = convert_h264_to_mp4( - os.path.join(video_directory, video_metadata["name"]) - ) - else: - video_file_name = os.path.join(video_directory, video_metadata["name"]) - - video.add_timeseries( - ImageSeries( - device=nwb_file.devices[ - "camera_device " + str(video_metadata["camera_id"]) - ], - name=video_metadata["name"], - timestamps=np.asarray(position_df.index), - external_file=[video_file_name], - format="external", - starting_frame=[0], - description="video of animal behavior from epoch", - ) - ) nwb_file.processing["behavior"].add(position) - nwb_file.processing["video_files"].add(video) -def convert_h264_to_mp4(file: str) -> str: +def convert_h264_to_mp4(file: str, video_directory: str) -> str: """ Converts h264 file to mp4 file using ffmpeg. @@ -732,6 +811,8 @@ def convert_h264_to_mp4(file: str) -> str: ---------- file : str The path to the input h264 file. + video_directory : str + Where to save the output mp4 file. Returns ------- @@ -745,6 +826,7 @@ def convert_h264_to_mp4(file: str) -> str: """ new_file_name = file.replace(".h264", ".mp4") + new_file_name = video_directory + "/" + new_file_name.split("/")[-1] logger = logging.getLogger("convert") if os.path.exists(new_file_name): return new_file_name @@ -760,3 +842,95 @@ def convert_h264_to_mp4(file: str) -> str: f"Video conversion FAILED. {file} has NOT been converted to {new_file_name}" ) raise e + + +def copy_video_to_directory(file: str, video_directory: str) -> str: + """Copies video file to video directory without conversion""" + new_file_name = video_directory + "/" + file.split("/")[-1] + logger = logging.getLogger("convert") + if os.path.exists(new_file_name): + return new_file_name + try: + # Construct the ffmpeg command + subprocess.run(f"cp {file} {new_file_name}", shell=True) + logger.info(f"Video copy completed. {file} has been copied to {new_file_name}") + return new_file_name + except subprocess.CalledProcessError as e: + logger.error( + f"Video copy FAILED. {file} has NOT been copied to {new_file_name}" + ) + raise e + + +def add_associated_video_files( + nwb_file: NWBFile, + metadata: dict, + session_df: pd.DataFrame, + video_directory: str, + convert_video: bool = False, +): + # make processing module for video files + nwb_file.create_processing_module( + name="video_files", description="Contains all associated video files data" + ) + # make a behavioral Event object to hold videos + video = BehavioralEvents(name="video") + # add the video file data + for video_metadata in metadata["associated_video_files"]: + epoch = video_metadata["task_epochs"][0] + # get the video file path + video_path = None + for file in session_df[session_df.file_extension == ".h264"].full_path: + if video_metadata["name"].rsplit(".", 1)[0] in file: + video_path = file + break + if video_path is None: + raise FileNotFoundError( + f"Could not find video file {video_metadata['name']} in session_df" + ) + + # get timestamps for this video + # find the matching hw timestamps filepath + video_index = video_path.split(".")[-2] + video_hw_df = session_df.loc[ + np.logical_and( + session_df.epoch == epoch, + session_df.file_extension == ".cameraHWSync", + ) + ] + if not len(video_hw_df): + raise ValueError( + f"No cameraHWSync found for epoch {epoch}, video {video_index} in session_df" + ) + video_timestamps_filepath = video_hw_df[ + [ + full_path.split(".")[-3] == video_index + for full_path in video_hw_df.full_path + ] + ].full_path.to_list()[0] + # get the timestamps + video_timestamps = get_video_timestamps(video_timestamps_filepath) + + if convert_video: + video_file_name = convert_h264_to_mp4(video_path, video_directory) + else: + video_file_name = copy_video_to_directory(video_path, video_directory) + + video.add_timeseries( + ImageSeries( + device=nwb_file.devices[ + "camera_device " + str(video_metadata["camera_id"]) + ], + name=video_metadata["name"], + timestamps=video_timestamps, + external_file=[video_file_name.split("/")[-1]], + format="external", + starting_frame=[0], + description="video of animal behavior from epoch", + ) + ) + if video_metadata is None: + raise KeyError(f"Missing video metadata for epoch {epoch}") + + nwb_file.processing["video_files"].add(video) + return diff --git a/src/spikegadgets_to_nwb/convert_yaml.py b/src/spikegadgets_to_nwb/convert_yaml.py index c0bd4a0..6cd4d1e 100644 --- a/src/spikegadgets_to_nwb/convert_yaml.py +++ b/src/spikegadgets_to_nwb/convert_yaml.py @@ -20,6 +20,9 @@ from pynwb.ecephys import ElectrodeGroup from pynwb.file import ProcessingModule, Subject +import spikegadgets_to_nwb.metadata_validation +from spikegadgets_to_nwb import __version__ + def load_metadata( metadata_path: str, probe_metadata_paths: list[str] @@ -38,8 +41,16 @@ def load_metadata( tuple[dict, list[dict]] the yaml generator metadata and list of probe metadatas """ + metadata = None with open(metadata_path, "r") as stream: metadata = yaml.safe_load(stream) + ( + is_metadata_valid, + metadata_errors, + ) = spikegadgets_to_nwb.metadata_validation.validate(metadata) + if not is_metadata_valid: + logger = logging.getLogger("convert") + logger.exception("".join(metadata_errors)) probe_metadata = [] for path in probe_metadata_paths: with open(path, "r") as stream: @@ -82,6 +93,8 @@ def initialize_nwb(metadata: dict, first_epoch_config: ElementTree) -> NWBFile: session_id=metadata["session_id"], # notes=self.link_to_notes, TODO experiment_description=metadata["experiment_description"], + source_script="spikegadgets_to_nwb " + __version__, + source_script_file_name="convert.py", ) return nwbfile @@ -392,15 +405,13 @@ def add_associated_files(nwbfile: NWBFile, metadata: dict) -> None: # read file content content = "" try: - with open(file["path"] + file["name"], "r") as open_file: + with open(file["path"], "r") as open_file: content = open_file.read() except FileNotFoundError as err: - logger.info( - f"ERROR: associated file {file['path']+file['name']} does not exist" - ) + logger.info(f"ERROR: associated file {file['path']} does not exist") logger.info(str(err)) except IOError as err: - logger.info(f"ERROR: Cannot read file at {file['path']+file['name']}") + logger.info(f"ERROR: Cannot read file at {file['path']}") logger.info(str(err)) # convert task epoch values into strings task_epochs = "".join([str(element) + ", " for element in file["task_epochs"]]) diff --git a/src/spikegadgets_to_nwb/metadata_validation.py b/src/spikegadgets_to_nwb/metadata_validation.py new file mode 100644 index 0000000..8856e8e --- /dev/null +++ b/src/spikegadgets_to_nwb/metadata_validation.py @@ -0,0 +1,75 @@ +import copy +import datetime +import os + +import jsonschema +import yaml + + +def _get_nwb_json_schema_path() -> str: + """Get the NWB JSON Schema file path + + Returns + ------- + str + NWB Schema file Path + """ + current_path = os.path.dirname(os.path.abspath(__file__)) + json_schema_file = "/./nwb_schema.json" + return f"{current_path}{os.path.normpath(json_schema_file)}" + + +def _get_json_schema() -> str: + """Get JSON Schema + + Returns + ------- + str + JSON Schema content + """ + json_schema = None + json_schema_path = _get_nwb_json_schema_path() + with open(json_schema_path, "r") as stream: + json_schema = yaml.safe_load(stream) + return json_schema + + +def validate(metadata: dict) -> tuple: + """Validates metadata + + Parameters + ---------- + metadata : dict + metadata documenting the particulars of a session + + Returns + ------- + tuple + information of the validity of the metadata data and any errors + """ + assert metadata is not None # metadata cannot be null + assert isinstance(metadata, dict) # cannot proceed if metadata is not a dictionary + + # date_of_birth is set to a datetime by the YAML-to-dict converter. + # This code converts date_of_birth to string + metadata_content = copy.deepcopy(metadata) or {} + if ( + metadata_content["subject"] + and metadata_content["subject"]["date_of_birth"] + and type(metadata_content["subject"]["date_of_birth"]) is datetime.datetime + ): + metadata_content["subject"]["date_of_birth"] = ( + metadata_content["subject"]["date_of_birth"].utcnow().isoformat() + ) + + schema = _get_json_schema() + validator = jsonschema.Draft202012Validator(schema) + metadata_validation_errors = validator.iter_errors(metadata_content) + errors = [] + + for metadata_validation_error in metadata_validation_errors: + errors.append(metadata_validation_error.message) + + is_valid = len(errors) == 0 + + return is_valid, errors diff --git a/src/spikegadgets_to_nwb/nwb_schema.json b/src/spikegadgets_to_nwb/nwb_schema.json new file mode 100644 index 0000000..f7f82f4 --- /dev/null +++ b/src/spikegadgets_to_nwb/nwb_schema.json @@ -0,0 +1,35971 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://lorenfranklab.github.io/rec_to_nwb_yaml_creator/v1.0.0", + "title": "Spikegadgets to NWB Validator", + "type": "object", + "description": "Spikegadgets to NWB Validator YAML schema version", + "required": [ + "experimenter_name", + "lab", + "institution", + "data_acq_device", + "times_period_multiplier", + "raw_data_to_volts" + ], + "properties": { + "experimenter_name": { + "$id": "#root/experimenter_name", + "title": "experimenter_name", + "type": "array", + "default": [], + "examples": [ + "Jennifer Guidera", + "Alison Comrie" + ], + "minItems": 1, + "uniqueItems": true, + "description": "Name of experimenter performing current session", + "items": { + "$id": "#root/experimenter_name/items", + "title": "items", + "type": "string", + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + }, + "lab": { + "$id": "#root/lab", + "title": "lab", + "type": "string", + "default": "", + "examples": [ + "Frank" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Laboratory where the experiment is conducted" + }, + "institution": { + "$id": "#root/institution", + "title": "institution", + "type": "string", + "default": "University of California, San Francisco", + "examples": [ + "Air Force Institute of Technology Graduate School of Engineering & Management", + "Albert Einstein College of Medicine", + "American University", + "Arizona State University Campus Immersion", + "Arizona State University Digital Immersion", + "Arkansas State University", + "Augusta University", + "Auburn University", + "Azusa Pacific University", + "Ball State University", + "Baylor College of Medicine", + "Baylor University", + "Binghamton University", + "Boise State University", + "Boston College", + "Boston University", + "Bowling Green State University", + "Brandeis University", + "Brigham Young University", + "Brown University", + "California Institute of Technology", + "California State University, East Bay", + "California State University, Fresno", + "California State University, Fullerton", + "California State University, Long Beach", + "California State University, San Bernardino", + "Carnegie Mellon University", + "Case Western Reserve University", + "Catholic University of America", + "Central Michigan University", + "Chapman University", + "Claremont Graduate University", + "Clark Atlanta University", + "Clark University", + "Clarkson University", + "Clemson University", + "Cleveland State University", + "College of William and Mary", + "Colorado School of Mines", + "Colorado State University", + "Columbia University", + "Cornell University", + "Creighton University", + "CUNY City College", + "Dartmouth College", + "DePaul University", + "Drexel University", + "Duke University", + "Duquesne University", + "East Carolina University", + "East Tennessee State University", + "Eastern Michigan University", + "Eastern Virginia Medical School", + "Emory University", + "Florida Agricultural and Mechanical University", + "Florida Atlantic University", + "Florida Institute of Technology", + "Florida International University", + "Florida State University", + "Fordham University", + "George Mason University", + "George Washington University", + "Georgetown University", + "Georgia Institute of Technology", + "Georgia Southern University", + "Georgia State University", + "Graduate Center, CUNY", + "Harvard University", + "Howard University", + "Icahn School of Medicine at Mount Sinai", + "Idaho State University", + "Illinois Institute of Technology", + "Illinois State University", + "Indiana University – Purdue University Indianapolis", + "Indiana University Bloomington", + "Indiana University of Pennsylvania", + "Iowa State University", + "Jackson State University", + "James Madison University", + "Johns Hopkins University", + "Kansas State University", + "Kennesaw State University", + "Kent State University", + "Lehigh University", + "Loma Linda University", + "Long Island University", + "Louisiana State University", + "Louisiana Tech University", + "Loyola Marymount University", + "Loyola University Chicago", + "Marquette University", + "Marshall University", + "Massachusetts Institute of Technology", + "Mayo Clinic College of Medicine and Science", + "Medical College of Wisconsin", + "Medical University of South Carolina", + "Mercer University", + "Miami University", + "Michigan State University", + "Michigan Technological University", + "Middle Tennessee State University", + "Mississippi State University", + "Missouri University of Science and Technology", + "Montana State University", + "Montclair State University", + "Morgan State University", + "New Jersey Institute of Technology", + "New Mexico State University", + "New York University", + "North Carolina A & T State University", + "North Carolina State University", + "North Dakota State University", + "Northeastern University", + "Northern Arizona University", + "Northern Illinois University", + "Northwestern University", + "Nova Southeastern University", + "Oakland University", + "Ohio State University", + "Ohio University", + "Oklahoma State University–Stillwater", + "Old Dominion University", + "Oregon Health & Science University", + "Oregon State University", + "Pennsylvania State University", + "Portland State University", + "Prairie View A&M University", + "Princeton University", + "Purdue University", + "Rensselaer Polytechnic Institute", + "Rice University", + "Rochester Institute of Technology", + "Rockefeller University", + "Rowan University", + "Rutgers University–Camden", + "Rutgers University–New Brunswick", + "Rutgers University–Newark", + "Saint Louis University", + "Sam Houston State University", + "San Diego State University", + "San Francisco State University", + "Seton Hall University", + "South Dakota State University", + "Southern Illinois University Carbondale", + "Southern Methodist University", + "Southern University", + "Stanford University", + "Stevens Institute of Technology", + "Stony Brook University", + "SUNY College of Environmental Science and Forestry", + "Syracuse University", + "Tarleton State University", + "Teachers College at Columbia University", + "Temple University", + "Tennessee State University", + "Tennessee Technological University", + "Texas A&M University", + "Texas A&M University–Corpus Christi", + "Texas A&M University–Kingsville", + "Texas Christian University", + "Texas Southern University", + "Texas State University", + "Texas Tech University", + "Texas Tech University Health Sciences Center", + "The New School", + "Thomas Jefferson University", + "Tufts University", + "Tulane University", + "Uniformed Services University of the Health Sciences", + "University at Albany, SUNY", + "University at Buffalo", + "University of Akron Main Campus", + "University of Alabama", + "University of Alabama at Birmingham", + "University of Alabama in Huntsville", + "University of Alaska Fairbanks", + "University of Arizona", + "University of Arkansas", + "University of Arkansas at Little Rock", + "University of Arkansas for Medical Sciences", + "University of California, Berkeley", + "University of California, Davis", + "University of California, Irvine", + "University of California, Los Angeles", + "University of California, Merced", + "University of California, Riverside", + "University of California, San Diego", + "University of California, San Francisco", + "University of California, Santa Barbara", + "University of California, Santa Cruz", + "University of Central Florida", + "University of Chicago", + "University of Cincinnati", + "University of Colorado Boulder", + "University of Colorado Colorado Springs", + "University of Colorado Denver", + "University of Connecticut", + "University of Dayton", + "University of Delaware", + "University of Denver", + "University of Florida", + "University of Georgia", + "University of Hawaii at Manoa", + "University of Houston", + "University of Idaho", + "University of Illinois Chicago", + "University of Illinois Urbana-Champaign", + "University of Iowa", + "University of Kansas", + "University of Kentucky", + "University of Louisiana at Lafayette", + "University of Louisville", + "University of Maine", + "University of Maryland, Baltimore", + "University of Maryland, Baltimore County", + "University of Maryland, College Park", + "University of Maryland, Eastern Shore", + "University of Massachusetts Amherst", + "University of Massachusetts Boston", + "University of Massachusetts Chan Medical School", + "University of Massachusetts Dartmouth", + "University of Massachusetts Lowell", + "University of Memphis", + "University of Miami", + "University of Michigan", + "University of Minnesota", + "University of Mississippi", + "University of Missouri", + "University of Missouri–Kansas City", + "University of Missouri–St. Louis", + "University of Montana", + "University of Nebraska at Omaha", + "University of Nebraska Medical Center", + "University of Nebraska–Lincoln", + "University of Nevada, Las Vegas", + "University of Nevada, Reno", + "University of New England", + "University of New Hampshire", + "University of New Mexico", + "University of New Orleans", + "University of North Carolina at Chapel Hill", + "University of North Carolina at Charlotte", + "University of North Carolina at Greensboro", + "University of North Carolina Wilmington", + "University of North Dakota", + "University of North Florida", + "University of North Texas", + "University of Notre Dame", + "University of Oklahoma", + "University of Oklahoma Health Sciences Center", + "University of Oregon", + "University of Pennsylvania", + "University of Pittsburgh", + "University of Puerto Rico at Río Piedras", + "University of Rhode Island", + "University of Rochester", + "University of San Diego", + "University of South Alabama", + "University of South Carolina", + "University of South Dakota", + "University of South Florida", + "University of Southern California", + "University of Southern Mississippi", + "University of Tennessee", + "University of Tennessee Health Science Center", + "University of Texas at Arlington", + "University of Texas at Austin", + "University of Texas at Dallas", + "University of Texas at El Paso", + "University of Texas at San Antonio", + "University of Texas Health Science Center at Houston", + "University of Texas Health Science Center at San Antonio", + "University of Texas Medical Branch", + "University of Texas Southwestern Medical Center", + "University of Toledo", + "University of Tulsa", + "University of Utah", + "University of Vermont", + "University of Virginia", + "University of Washington", + "University of Wisconsin–Madison", + "University of Wisconsin–Milwaukee", + "University of Wyoming", + "Utah State University", + "Vanderbilt University", + "Villanova University", + "Virginia Commonwealth University", + "Virginia Tech", + "Wake Forest University", + "Washington State University", + "Washington University in St. Louis", + "Wayne State University", + "Weill Cornell Medicine", + "West Chester University of Pennsylvania", + "West Virginia University", + "Western Michigan University", + "Wichita State University", + "Worcester Polytechnic Institute", + "Wright State University", + "Yale University" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Type to search for institution ..." + }, + "experiment_description": { + "$id": "#root/experiment_description", + "title": "experiment_description", + "type": "string", + "default": "", + "examples": [ + "spatial alternation memory task" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Research work being conducted" + }, + "session_description": { + "$id": "#root/session_description", + "title": "session_description", + "type": "string", + "default": "", + "examples": [ + "spatial alternation memory task" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Aspect of research being conducted" + }, + "session_id": { + "$id": "#root/session_id", + "title": "session_id", + "type": "string", + "default": "", + "examples": [ + "J16_20210606" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Current session's identification code/number" + }, + "keywords": { + "$id": "#root/keywords", + "title": "keywords", + "type": "array", + "default": [], + "examples": [ + "J16_20210606" + ], + "minItems": 1, + "uniqueItems": true, + "description": "keywords", + "items": { + "$id": "#root/keywords/items", + "title": "items", + "type": "string", + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + }, + "subject": { + "$id": "#root/subject", + "title": "subject", + "type": "object", + "required": [ + "description", + "genotype", + "sex", + "species", + "subject_id", + "weight", + "date_of_birth" + ], + "properties": { + "description": { + "$id": "#root/subject/description", + "title": "description", + "type": "string", + "default": "", + "examples": [ + "Long Evans Rat" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Summary of animal model/patient/specimen being examined" + }, + "genotype": { + "$id": "#root/subject/genotype", + "title": "genotype", + "type": "string", + "default": "", + "examples": [ + "Wild Type" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Genetic summary of animal model/patient/specimen" + }, + "sex": { + "$id": "#root/subject/sex", + "title": "sex", + "type": "string", + "enum": [ + "M", + "F", + "U", + "O" + ], + "default": "M", + "examples": [ + "M", + "F", + "U", + "O" + ], + "description": "Gender of animal model/patient" + }, + "species": { + "$id": "#root/subject/species", + "title": "species", + "type": "string", + "default": "", + "examples": [ + "Rat" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Category of animal model/patient" + }, + "subject_id": { + "$id": "#root/subject/subject_id", + "title": "subject_id", + "type": "string", + "default": "", + "examples": [ + "J16" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Identification code/number of animal model/patient" + }, + "weight": { + "$id": "#root/subject/weight", + "title": "weight", + "type": "number", + "default": "100", + "minimum": 0, + "description": "Mass of animal model/patient in grams" + }, + "date_of_birth": { + "$id": "#root/subject/date_of_birth", + "title": "date_of_birth", + "type": "string", + "default": "", + "pattern": "(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d)", + "description": "date of birth of animal model/patient, in ISO 8061 format" + } + } + }, + "data_acq_device": { + "$id": "#root/data_acq_device", + "title": "data_acq_device", + "type": "array", + "minItems": 1, + "default": [], + "items": { + "$id": "#root/data_acq_device/items", + "title": "items", + "type": "object", + "required": [ + "name", + "system", + "amplifier", + "adc_circuit" + ], + "properties": { + "name": { + "$id": "#root/data_acq_device/items/name", + "title": "name", + "type": "string", + "default": "", + "description": "Data acquisition device name", + "examples": [ + "Spike Gadgets" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "system": { + "$id": "#root/data_acq_device/items/system", + "title": "system", + "type": "string", + "default": "", + "description": "Data acquisition information like version or id", + "examples": [ + "MCU" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "amplifier": { + "$id": "#root/data_acq_device/items/amplifier", + "title": "amplifier", + "type": "string", + "default": "", + "description": "Amplifier device", + "examples": [ + "intan" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "adc_circuit": { + "$id": "#root/data_acq_device/items/adc_circuit", + "title": "adc_circuit", + "type": "string", + "default": "", + "description": "adc circuit", + "examples": [ + "intan" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + } + } + }, + "associated_files": { + "$id": "#root/associated_files", + "title": "associated_files", + "type": "array", + "default": [], + "items": { + "$id": "#root/associated_files/items", + "title": "Items", + "type": "object", + "required": [ + "name", + "description", + "path", + "task_epochs" + ], + "properties": { + "name": { + "$id": "#root/associated_files/items/name", + "title": "name", + "type": "string", + "default": "", + "description": "File name", + "examples": [ + "stateScriptLog_r1" + ], + "pattern": "(.|\\s)*\\S(.|\\s)*$" + }, + "description": { + "$id": "#root/associated_files/items/description", + "title": "description", + "type": "string", + "default": "", + "description": "Purpose of file", + "examples": [ + "stateScriptLog epoch r1" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "path": { + "$id": "#root/associated_files/items/path", + "title": "path", + "type": "string", + "default": "", + "description": "File location", + "examples": [ + "/nimbus/jguidera/J16/raw/20210606/20210606_J16_02_r1.stateScriptLog" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "task_epochs": { + "$id": "#root/associated_files/items/task_epochs", + "title": "task_epochs", + "type": "integer", + "default": 0, + "description": "task epoch" + } + } + } + }, + "units": { + "$id": "#root/units", + "title": "units", + "type": "object", + "required": [ + "analog", + "behavioral_events" + ], + "properties": { + "analog": { + "$id": "#root/units/analog", + "title": "analog", + "type": "string", + "default": "", + "description": "analog", + "examples": [ + "unspecified" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "behavioral_events": { + "$id": "#root/units/behavioral_events", + "title": "behavioral_events", + "type": "string", + "default": "", + "description": "behavioral_events", + "examples": [ + "unspecified" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + } + }, + "times_period_multiplier": { + "$id": "#root/times_period_multiplier", + "title": "times_period_multiplier", + "type": "number", + "examples": [ + 1.5 + ], + "default": 0.0 + }, + "raw_data_to_volts": { + "$id": "#root/raw_data_to_volts", + "title": "raw_data_to_volts", + "type": "number", + "examples": [ + 1.95e-7 + ], + "default": 0.0 + }, + "default_header_file_path": { + "$id": "#root/default_header_file_path", + "title": "default_header_file_path", + "type": "string", + "default": "", + "examples": [ + "default_header.xml" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "cameras": { + "$id": "#root/cameras", + "title": "cameras", + "type": "array", + "default": [], + "items": { + "$id": "#root/cameras/items", + "title": "Items", + "type": "object", + "required": [ + "id", + "meters_per_pixel", + "manufacturer", + "model", + "lens", + "camera_name" + ], + "properties": { + "id": { + "$id": "#root/cameras/items/id", + "title": "id", + "type": "integer", + "examples": [ + 0 + ], + "default": 0, + "description": "camera id" + }, + "meters_per_pixel": { + "$id": "#root/cameras/items/meters_per_pixel", + "title": "meters_per_pixel", + "type": "number", + "examples": [ + 0.000842 + ], + "default": 0.0, + "description": "meter per pixel" + }, + "manufacturer": { + "$id": "#root/cameras/items/manufacturer", + "title": "manufacturer", + "type": "string", + "default": "", + "examples": [ + "Manta" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Manufacturer" + }, + "model": { + "$id": "#root/cameras/items/model", + "title": "model", + "type": "string", + "default": "", + "examples": [ + "unknown" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Model" + }, + "lens": { + "$id": "#root/cameras/items/lens", + "title": "lens", + "type": "string", + "default": "", + "examples": [ + "unknown" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Len" + }, + "camera_name": { + "$id": "#root/cameras/items/camera_name", + "title": "camera_name", + "type": "string", + "default": "", + "examples": [ + "HomeBox_camera" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Camera Name" + } + } + } + }, + "tasks": { + "$id": "#root/tasks", + "title": "tasks", + "type": "array", + "default": [], + "items": { + "$id": "#root/tasks/items", + "title": "items", + "type": "object", + "required": [ + "task_name", + "task_description", + "task_environment", + "camera_id", + "task_epochs" + ], + "properties": { + "task_name": { + "$id": "#root/tasks/items/task_name", + "title": "task_name", + "type": "string", + "default": "", + "examples": [ + "home" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Task name" + }, + "task_description": { + "$id": "#root/tasks/items/task_description", + "title": "task_description", + "type": "string", + "default": "", + "examples": [ + "The animal rests in a box" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Task description" + }, + "task_environment": { + "$id": "#root/tasks/items/task_environment", + "title": "task_environment", + "type": "string", + "default": "", + "examples": [ + "HomeBox" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "description": "Task environment" + }, + "camera_id": { + "$id": "#root/tasks/items/camera_id", + "title": "camera_id", + "type": "array", + "description": "Comma separated camera ids, from camera list", + "examples": [], + "default": [], + "items": { + "$id": "#root/tasks/items/camera_id/items", + "title": "Items", + "uniqueItems": true, + "type": "integer", + "examples": [ + 0 + ], + "default": 0 + } + }, + "task_epochs": { + "$id": "#root/tasks/items/task_epochs", + "title": "task_epochs", + "type": "array", + "description": "Comma separated numbers of task epochs", + "examples": [], + "default": [], + "items": { + "$id": "#root/tasks/items/task_epochs/items", + "title": "Items", + "type": "integer", + "uniqueItems": true, + "examples": [ + 18 + ], + "default": 0 + } + } + } + } + }, + "associated_video_files": { + "$id": "#root/associated_video_files", + "title": "associated_video_files", + "type": "array", + "default": [], + "items": { + "$id": "#root/associated_video_files/items", + "title": "Items", + "type": "object", + "required": [ + "name", + "camera_id", + "task_epochs" + ], + "properties": { + "name": { + "$id": "#root/associated_video_files/items/name", + "title": "name", + "type": "string", + "default": "", + "description": "File name", + "examples": [ + "20210606_J16_01_s1.1.h264" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "camera_id": { + "$id": "#root/associated_video_files/items/camera_id", + "title": "camera_id", + "type": "integer", + "description": "camera id from camera list", + "default": 0 + }, + "task_epochs": { + "$id": "#root/associated_video_files/items/task_epochs", + "title": "task_epochs", + "type": "integer", + "default": 0, + "description": "task epoch" + } + } + } + }, + "behavioral_events": { + "$id": "#root/behavioral_events", + "title": "behavioral_events", + "type": "array", + "default": [], + "items": { + "$id": "#root/behavioral_events/items", + "title": "Items", + "type": "object", + "required": [ + "description", + "name" + ], + "properties": { + "description": { + "$id": "#root/behavioral_events/items/description", + "title": "description", + "type": "string", + "default": "Din1", + "examples": [ + "Din", + "Dout", + "Accel", + "Gyro", + "Mag" + ], + "description": "Behavioral Events", + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "name": { + "$id": "#root/behavioral_events/items/name", + "title": "name", + "type": "string", + "default": "Home box camera", + "examples": [ + "Home box camera", + "Poke", + "Light", + "Pump", + "Run Camera Ticks", + "Sleep" + ], + "description": "Type of behavioral events", + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + } + } + }, + "device": { + "$id": "#root/device", + "title": "device", + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "$id": "#root/device/items/name", + "title": "name", + "type": "array", + "minItems": 1, + "default": "Trodes", + "description": "Selected recording device", + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + } + }, + "electrode_groups": { + "$id": "#root/electrode_groups", + "title": "electrode_groups", + "type": "array", + "default": [], + "items": { + "$id": "#root/electrode_groups/items", + "title": "Items", + "type": "object", + "required": [ + "id", + "location", + "device_type", + "description", + "targeted_location", + "targeted_x", + "targeted_y", + "targeted_z", + "units" + ], + "properties": { + "id": { + "$id": "#root/electrode_groups/items/id", + "title": "id", + "type": "integer", + "examples": [ + 0 + ], + "default": 0, + "minimum": 0, + "description": "electrode/probe identification code/number" + }, + "location": { + "$id": "#root/electrode_groups/items/location", + "title": "location", + "type": "string", + "default": "Cornu ammonis 1 (CA1)", + "description": "Exact location of electrode/probe", + "examples": [ + "Brain (Brain)", + "White matter (wmt)", + "Olfactory white matter (olf)", + "lateral olfactory tract (lot)", + "corpus callosum and associated subcortical white matter (cc-ec-cing-dwm)", + "Anterior commissure (ac)", + "anterior commissure, anterior limb (aca)", + "anterior commissure, posterior limb (acp)", + "anterior commissure, intrabulbar part (aci)", + "Hippocampal white matter (hiw)", + "alveus of the hippocampus (alv)", + "ventral hippocampal commissure (vhc)", + "fornix (f)", + "fimbria of the hippocampus (fi)", + "Corticofugal pathways (cfp)", + "corticofugal tract and corona radiata (ic-cp-lfp-py)", + "pyramidal decussation (pyx)", + "Medial lemniscus (ml)", + "medial lemniscus, unspecified (ml-u)", + "medial lemniscus decussation (mlx)", + "Thalamic tracts (tht)", + "External medullary lamina (eml)", + "external medullary lamina, unspecified (eml-u)", + "external medullary lamina, auditory radiation (eml-ar)", + "internal medullary lamina (iml)", + "intramedullary thalamic area (ima)", + "superior cerebellar peduncle and prerubral field (scp-pr)", + "pretectothalamic lamina (ptl)", + "mammillotegmental tract (mtg)", + "commissural stria terminalis (cst)", + "fasciculus retroflexus (fr)", + "stria medullaris thalami (sm)", + "stria terminalis (st)", + "habenular commissure (hbc)", + "posterior commissure (pc)", + "Facial nerve (7n)", + "facial nerve, unspecified (7n-u)", + "ascending fibers of the facial nerve (asc7)", + "genu of the facial nerve (g7)", + "Optic fiber system and supraoptic decussation (ofs)", + "optic nerve (2n)", + "optic tract and optic chiasm (opt-och)", + "supraoptic decussation (sox)", + "White matter of the tectum (tew)", + "commissure of the superior colliculus (csc)", + "brachium of the superior colliculus (bsc)", + "inferior colliculus, commissure (cic)", + "inferior colliculus, brachium (bic)", + "Cerebellar and precerebellar white matter (cbt)", + "inferior cerebellar peduncle (icp)", + "middle cerebellar peduncle (mcp)", + "transverse fibers of the pons (tfp)", + "White matter of the brainstem (bsw)", + "Lateral lemniscus (ll)", + "lateral lemniscus, commissure (ll-c)", + "lateral lemniscus, unspecified (ll-u)", + "acoustic striae (as)", + "trapezoid body (tz)", + "spinal trigeminal tract (sp5t)", + "Gray matter (GM)", + "Telencephalon (Tel)", + "Laminated pallium (LamP)", + "Olfactory bulb (OB)", + "Glomerular layer of the accessory olfactory bulb (GlA)", + "Glomerular layer of the olfactory bulb (Gl)", + "Olfactory bulb, unspecified (OB-u)", + "Nucleus of the lateral olfactory tract (NLOT)", + "Cerebral cortex (Cx)", + "Hippocampal region (HR)", + "Hippocampal formation (HF)", + "Fasciola cinereum (FC)", + "Subiculum (SUB)", + "Cornu Ammonis (CA)", + "Cornu ammonis 1 (CA1)", + "Cornu ammonis 2 (CA2)", + "Cornu ammonis 3 (CA3)", + "Dentate gyrus (DG)", + "Parahippocampal region (PHR)", + "Postrhinal cortex (POR)", + "Presubiculum (PrS)", + "Parasubiculum (PaS)", + "Perirhinal cortex (PER)", + "Perirhinal area 35 (PER35)", + "Perirhinal area 36 (PER36)", + "Entorhinal cortex (EC)", + "Medial entorhinal cortex (MEC)", + "Lateral entorhinal cortex (LEC)", + "Piriform cortex (PIR)", + "Piriform cortex, layer 1 (PIR1)", + "Piriform cortex, layer 2 (PIR2)", + "Piriform cortex, layer 3 (PIR3)", + "Cingulate region (CgR)", + "Cingulate cortex (Cg)", + "Cingulate area 1 (Cg1)", + "Cingulate area 2 (Cg2)", + "Retrosplenial cortex (RS)", + "Retrosplenial dysgranular area (RSD)", + "Retrosplenial granular area (RSG)", + "Insular region (INS)", + "Agranular insular cortex (AI)", + "Agranular insular cortex, ventral area (AI-v)", + "Agranular insular cortex dorsal area (AI-d)", + "Agranular insular cortex, posterior area (AI-p)", + "Dysgranular insular cortex (DI)", + "Granular insular cortex (GI)", + "Frontal region (Front)", + "Frontal association cortex (FrA)", + "Orbitofrontal cortex (Orb)", + "Medial orbital area (MO)", + "Ventral orbital area (VO)", + "Ventrolateral orbital area (VLO)", + "Lateral orbital area (LO)", + "Dorsolateral orbital area (DLO)", + "Mediofrontal cortex (MFC)", + "Prelimbic area (PrL)", + "Infralimbic area (IL)", + "Motor cortex (M)", + "Primary motor area (M1)", + "Secondary motor area (M2)", + "Frontal association area 3 (Fr3)", + "Parietal region (Par)", + "Somatosensory cortex (SS)", + "Primary somatosensory area (S1)", + "Primary somatosensory area, face representation (S1-f)", + "Primary somatosensory area, barrel field (S1-bf)", + "Primary somatosensory area, dysgranular zone (S1-dz)", + "Primary somatosensory area, forelimb representation (S1-fl)", + "Primary somatosensory area, hindlimb representation (S1-hl)", + "Primary somatosensory area, trunk representation (S1-tr)", + "Secondary somatosensory area (S2)", + "Posterior parietal cortex (PPC)", + "Parietal association cortex, medial area (mPPC)", + "Parietal association cortex, lateral area (lPPC)", + "Parietal association cortex, posterior area (PtP)", + "Occipital region (Oc)", + "Visual cortex (Vis)", + "Primary visual area (V1)", + "Secondary visual area (V2)", + "Secondary visual area, medial part (V2M)", + "Secondary visual area, lateral part (V2L)", + "Temporal region (Te)", + "Temporal association cortex (TeA)", + "Auditory cortex (Au)", + "Primary auditory area (Au1)", + "Secondary auditory area (Au2)", + "Secondary auditory area, dorsal part (Au2-d)", + "Secondary auditory area, ventral part (Au2-v)", + "Non-laminated pallium (N-LamP)", + "Claustrum (CLA)", + "Endopiriform nucleus (Endo)", + "Amygdaloid area, unspecified (Am-u)", + " Subpallium (SubPAL)", + "Striatum (Str)", + "Caudate putamen (CPu)", + "Nucleus accumbens (NAc)", + "Nucleus accumbens, core (NAc-c)", + "Nucleus accumbens, shell (NAc-sh)", + "Ventral striatal region, unspecified (VSR-u)", + "Pallidum (PAL)", + "Globus pallidus external (GPe)", + "Globus pallidus external, medial part (GPe-m)", + "Globus pallidus external, lateral part (GPe-l)", + "Entopeduncular nucleus (EP)", + "Ventral pallidum (VP)", + "Basal forebrain region (BRF)", + "Basal forebrain region, unspecified (BFR-u)", + "Bed nucleus of the stria terminalis (BNST)", + "Septal region (Sep)", + "Subthalamic nucleus (STh)", + "Diencephalon (Dien)", + "Prethalamus (Thal-Pre)", + "Reticular (pre)thalamic nucleus (RT)", + "Reticular (pre)thalamic nucleus, unspecified (RT-u)", + "Reticular (pre)thalamic nucleus, auditory segment (RT-a)", + "Zona incerta (ZI)", + "Zona incerta, dorsal part (ZI-d)", + "Zona incerta, ventral part (ZI-v)", + "Zona incerta, rostral part (ZI-r)", + "Zona incerta, caudal part (ZI-c)", + "Zona incerta, A13 dopamine cells (ZI-A13)", + "Zona incerta, A11 dopamine cells (ZI-A11)", + "Fields of Forel (FoF)", + "Pregeniculate nucleus (PrG)", + "Subgeniculate nucleus (SubG)", + "Intergeniculate leaflet (IGL)", + "Epithalamus (Thal-EPI)", + "Lateral habenular nucleus (LHb)", + "Medial habenular nucleus (MHb)", + "Nucleus of the stria medullaris (SMn)", + "Pineal gland (PG)", + "Dorsal thalamus (Thal-D)", + "Anterior nuclei of the dorsal thalamus (ANT)", + "Anterodorsal thalamic nucleus (AD)", + "Anteroventral thalamic nucleus (AV)", + "Anteroventral thalamic nucleus, dorsomedial part (AV-dm)", + "Anteroventral thalamic nucleus, ventrolateral part (AV-vl)", + "Anteromedial thalamic nucleus (AM)", + "Interanteromedial thalamic nucleus (IAM)", + "Paraventricular thalamic nuclei (anterior and posterior) (PV)", + "Intermediodorsal thalamic nucleus (IMD)", + "Parataenial thalamic nucleus (PT)", + "Subparafascicular nucleus (SPF)", + "Posterior intralaminar nucleus (PIL)", + "Ventral midline group of the dorsal thalamus (V-MID)", + "Rhomboid thalamic nucleus (Rh)", + "Reuniens thalamic nucleus (Re)", + "Retroreuniens thalamic nucleus (RRe)", + "Xiphoid thalamic nucleus (Xi)", + "Mediodorsal nucleus of the dorsal thalamus (MD)", + "Mediodorsal thalamic nucleus, lateral part (MD-l)", + "Mediodorsal thalamic nucleus, central part (MD-c)", + "Mediodorsal thalamic nucleus, medial part (MD-m)", + "Ventral nuclei of the dorsal thalamus (VENT)", + "Ventral anterior thalamic nucleus (VA)", + "Ventromedial thalamic nucleus (VM)", + "Ventrolateral thalamic nucleus (VL)", + "Angular thalamic nucleus (Ang)", + "Ventral posterior thalamic nucleus (VPN)", + "Ventral posteromedial thalamic nucleus (VPM)", + "Ventral posterolateral thalamic nucleus (VPL)", + "Ventral posterior nucleus of the thalamus, parvicellular part (VP-pc)", + "Submedius thalamic nucleus (SMT)", + "Intralaminar nuclei of the dorsal thalamus (ILM)", + "Paracentral thalamic nucleus (PCN)", + "Central medial thalamic nucleus (CM)", + "Central lateral thalamic nucleus (CL)", + "Parafascicular thalamic nucleus (PF)", + "Ethmoid-Limitans nucleus (Eth)", + "Posterior complex of the dorsal thalamus (PoC)", + "Posterior thalamic nucleus (Po)", + "Posterior thalamic nuclear group, triangular part (Po-t)", + "Lateral posterior (pulvinar) complex of the dorsal thalamus (LP)", + "Lateral posterior thalamic nucleus, mediorostral part (LP-mr)", + "Lateral posterior thalamic nucleus, mediocaudal part (LP-mc)", + "Lateral posterior thalamic nucleus, lateral part (LP-l)", + "Laterodorsal thalamic nuclei of the dorsal thalamus (LD)", + "Laterodorsal thalamic nucleus, dorsomedial part (LD-dm)", + "Laterodorsal thalamic nucleus, ventrolateral part (LD-vl)", + "Dorsal lateral geniculate nucleus (DLG)", + "Medial geniculate complex of the dorsal thalamus (MG)", + "Medial geniculate body, ventral division (MG-v)", + "Medial geniculate body, dorsal division (MG-d)", + "Medial geniculate body, marginal zone (MG-mz)", + "Medial geniculate body, medial division (MG-m)", + "Medial geniculate body, suprageniculate nucleus (MG-sg)", + "Hypothalamus (HY)", + "Hypothalamic region, unspecified (HTh-u)", + "Pretectum (PreT)", + "Pretectal region (PRT)", + "Nucleus sagulum (Sag)", + "Mesencephalon (Mes)", + "Midbrain (MB)", + "Tectum (Tc)", + "Inferior colliculus (IC)", + "Inferior colliculus, dorsal cortex (DCIC)", + "Inferior colliculus, central nucleus (CNIC)", + "Inferior colliculus, external cortex (ECIC)", + "Superior colliculus (Su)", + "Superficial gray layer of the superior colliculus (SuG)", + "Deeper layers of the superior colliculus (SuD)", + "Tegmentum (Tg)", + "Substantia nigra (SN)", + "Substantia nigra, reticular part (SN-r)", + "Substantia nigra, compact part (SN-c)", + "Substantia nigra, lateral part (SN-l)", + "Ventral tegmental area (VTA)", + "Peripeduncular nucleus (PP)", + "Interpeduncular nucleus (IP)", + "Periaqueductal gray (PAG)", + "Brainstem, unspecified (BS-u)", + "Rhombencephalon (Rho)", + "Metencephalon (Met)", + "Pontine nuclei (Pn)", + "Cerebellum (Cb)", + "Molecular cell layer of the cerebellum (Cb-m)", + "Cerebellum, unspecified (Cb-u)", + "Myelencephalon (Myel)", + "Cochlear nucleus, ventral part (VCN)", + "Ventral cochlear nucleus, anterior part (AVCN)", + "Ventral cochlear nucleus, posterior part (PVCN)", + "Ventral cochlear nucleus, cap area (Cap)", + "Ventral cochlear nucleus, granule cell layer (GCL)", + "Cochlear nucleus, dorsal part (DCN)", + "Dorsal cochlear nucleus, molecular layer (DCNM)", + "Dorsal cochlear nucleus, fusiform and granule layer (DCNFG)", + "Dorsal cochlear nucleus, deep core (DCND)", + "Spinal trigeminal nucleus (Sp5n)", + "Periventricular gray (PVG)", + "Superior olivary complex (SO)", + "Nucleus of the trapezoid body (NTB)", + "Superior paraolivary nucleus (SPN)", + "Medial superior olive (MSO)", + "Lateral superior olive (LSO)", + "Superior periolivary region (SPR)", + "Ventral periolivary nuclei (VPO)", + "Nuclei of the lateral lemniscus (NLL)", + "Lateral lemniscus, ventral nucleus (VLL)", + "Lateral lemniscus, intermediate nucleus (ILL)", + "Lateral lemniscus, dorsal nucleus (DLL)", + "Inferior olive (IO)", + "Ventricular system (V)", + "ventricular system, unspecified (V-u)", + "4th ventricle (4V)", + "central canal (CC)", + "spinal cord (SpC)", + "Inner ear (IE)", + "vestibular apparatus (VeA)", + "cochlea (Co)", + "cochlear nerve (8cn)", + "vestibular nerve (8vn)", + "spiral ganglion (SpG)" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "device_type": { + "$id": "#root/electrode_groups/items/device_type", + "title": "device_type", + "type": "string", + "default": "", + "examples": [ + "", + "tetrode_12.5", + "A1x32-6mm-50-177-H32_21mm", + "128c-4s8mm6cm-20um-40um-sl", + "128c-4s6mm6cm-15um-26um-sl", + "32c-2s8mm6cm-20um-40um-dl", + "64c-4s6mm6cm-20um-40um-dl", + "64c-3s6mm6cm-20um-40um-sl" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$", + "enum": [ + "tetrode_12.5", + "A1x32-6mm-50-177-H32_21mm", + "128c-4s8mm6cm-20um-40um-sl", + "128c-4s6mm6cm-15um-26um-sl", + "32c-2s8mm6cm-20um-40um-dl", + "64c-4s6mm6cm-20um-40um-dl", + "64c-3s6mm6cm-20um-40um-sl" + ] + }, + "description": { + "$id": "#root/electrode_groups/items/description", + "title": "description", + "type": "string", + "default": "", + "description": "electrode groups description", + "examples": [ + "tetrode" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "targeted_location": { + "$id": "#root/electrode_groups/items/targeted_location", + "title": "targeted_location", + "type": "string", + "default": "Cornu ammonis 1 (CA1)", + "description": "Planned location of electrode/probe", + "examples": [ + "Brain (Brain)", + "White matter (wmt)", + "Olfactory white matter (olf)", + "lateral olfactory tract (lot)", + "corpus callosum and associated subcortical white matter (cc-ec-cing-dwm)", + "Anterior commissure (ac)", + "anterior commissure, anterior limb (aca)", + "anterior commissure, posterior limb (acp)", + "anterior commissure, intrabulbar part (aci)", + "Hippocampal white matter (hiw)", + "alveus of the hippocampus (alv)", + "ventral hippocampal commissure (vhc)", + "fornix (f)", + "fimbria of the hippocampus (fi)", + "Corticofugal pathways (cfp)", + "corticofugal tract and corona radiata (ic-cp-lfp-py)", + "pyramidal decussation (pyx)", + "Medial lemniscus (ml)", + "medial lemniscus, unspecified (ml-u)", + "medial lemniscus decussation (mlx)", + "Thalamic tracts (tht)", + "External medullary lamina (eml)", + "external medullary lamina, unspecified (eml-u)", + "external medullary lamina, auditory radiation (eml-ar)", + "internal medullary lamina (iml)", + "intramedullary thalamic area (ima)", + "superior cerebellar peduncle and prerubral field (scp-pr)", + "pretectothalamic lamina (ptl)", + "mammillotegmental tract (mtg)", + "commissural stria terminalis (cst)", + "fasciculus retroflexus (fr)", + "stria medullaris thalami (sm)", + "stria terminalis (st)", + "habenular commissure (hbc)", + "posterior commissure (pc)", + "Facial nerve (7n)", + "facial nerve, unspecified (7n-u)", + "ascending fibers of the facial nerve (asc7)", + "genu of the facial nerve (g7)", + "Optic fiber system and supraoptic decussation (ofs)", + "optic nerve (2n)", + "optic tract and optic chiasm (opt-och)", + "supraoptic decussation (sox)", + "White matter of the tectum (tew)", + "commissure of the superior colliculus (csc)", + "brachium of the superior colliculus (bsc)", + "inferior colliculus, commissure (cic)", + "inferior colliculus, brachium (bic)", + "Cerebellar and precerebellar white matter (cbt)", + "inferior cerebellar peduncle (icp)", + "middle cerebellar peduncle (mcp)", + "transverse fibers of the pons (tfp)", + "White matter of the brainstem (bsw)", + "Lateral lemniscus (ll)", + "lateral lemniscus, commissure (ll-c)", + "lateral lemniscus, unspecified (ll-u)", + "acoustic striae (as)", + "trapezoid body (tz)", + "spinal trigeminal tract (sp5t)", + "Gray matter (GM)", + "Telencephalon (Tel)", + "Laminated pallium (LamP)", + "Olfactory bulb (OB)", + "Glomerular layer of the accessory olfactory bulb (GlA)", + "Glomerular layer of the olfactory bulb (Gl)", + "Olfactory bulb, unspecified (OB-u)", + "Nucleus of the lateral olfactory tract (NLOT)", + "Cerebral cortex (Cx)", + "Hippocampal region (HR)", + "Hippocampal formation (HF)", + "Fasciola cinereum (FC)", + "Subiculum (SUB)", + "Cornu Ammonis (CA)", + "Cornu ammonis 1 (CA1)", + "Cornu ammonis 2 (CA2)", + "Cornu ammonis 3 (CA3)", + "Dentate gyrus (DG)", + "Parahippocampal region (PHR)", + "Postrhinal cortex (POR)", + "Presubiculum (PrS)", + "Parasubiculum (PaS)", + "Perirhinal cortex (PER)", + "Perirhinal area 35 (PER35)", + "Perirhinal area 36 (PER36)", + "Entorhinal cortex (EC)", + "Medial entorhinal cortex (MEC)", + "Lateral entorhinal cortex (LEC)", + "Piriform cortex (PIR)", + "Piriform cortex, layer 1 (PIR1)", + "Piriform cortex, layer 2 (PIR2)", + "Piriform cortex, layer 3 (PIR3)", + "Cingulate region (CgR)", + "Cingulate cortex (Cg)", + "Cingulate area 1 (Cg1)", + "Cingulate area 2 (Cg2)", + "Retrosplenial cortex (RS)", + "Retrosplenial dysgranular area (RSD)", + "Retrosplenial granular area (RSG)", + "Insular region (INS)", + "Agranular insular cortex (AI)", + "Agranular insular cortex, ventral area (AI-v)", + "Agranular insular cortex dorsal area (AI-d)", + "Agranular insular cortex, posterior area (AI-p)", + "Dysgranular insular cortex (DI)", + "Granular insular cortex (GI)", + "Frontal region (Front)", + "Frontal association cortex (FrA)", + "Orbitofrontal cortex (Orb)", + "Medial orbital area (MO)", + "Ventral orbital area (VO)", + "Ventrolateral orbital area (VLO)", + "Lateral orbital area (LO)", + "Dorsolateral orbital area (DLO)", + "Mediofrontal cortex (MFC)", + "Prelimbic area (PrL)", + "Infralimbic area (IL)", + "Motor cortex (M)", + "Primary motor area (M1)", + "Secondary motor area (M2)", + "Frontal association area 3 (Fr3)", + "Parietal region (Par)", + "Somatosensory cortex (SS)", + "Primary somatosensory area (S1)", + "Primary somatosensory area, face representation (S1-f)", + "Primary somatosensory area, barrel field (S1-bf)", + "Primary somatosensory area, dysgranular zone (S1-dz)", + "Primary somatosensory area, forelimb representation (S1-fl)", + "Primary somatosensory area, hindlimb representation (S1-hl)", + "Primary somatosensory area, trunk representation (S1-tr)", + "Secondary somatosensory area (S2)", + "Posterior parietal cortex (PPC)", + "Parietal association cortex, medial area (mPPC)", + "Parietal association cortex, lateral area (lPPC)", + "Parietal association cortex, posterior area (PtP)", + "Occipital region (Oc)", + "Visual cortex (Vis)", + "Primary visual area (V1)", + "Secondary visual area (V2)", + "Secondary visual area, medial part (V2M)", + "Secondary visual area, lateral part (V2L)", + "Temporal region (Te)", + "Temporal association cortex (TeA)", + "Auditory cortex (Au)", + "Primary auditory area (Au1)", + "Secondary auditory area (Au2)", + "Secondary auditory area, dorsal part (Au2-d)", + "Secondary auditory area, ventral part (Au2-v)", + "Non-laminated pallium (N-LamP)", + "Claustrum (CLA)", + "Endopiriform nucleus (Endo)", + "Amygdaloid area, unspecified (Am-u)", + " Subpallium (SubPAL)", + "Striatum (Str)", + "Caudate putamen (CPu)", + "Nucleus accumbens (NAc)", + "Nucleus accumbens, core (NAc-c)", + "Nucleus accumbens, shell (NAc-sh)", + "Ventral striatal region, unspecified (VSR-u)", + "Pallidum (PAL)", + "Globus pallidus external (GPe)", + "Globus pallidus external, medial part (GPe-m)", + "Globus pallidus external, lateral part (GPe-l)", + "Entopeduncular nucleus (EP)", + "Ventral pallidum (VP)", + "Basal forebrain region (BRF)", + "Basal forebrain region, unspecified (BFR-u)", + "Bed nucleus of the stria terminalis (BNST)", + "Septal region (Sep)", + "Subthalamic nucleus (STh)", + "Diencephalon (Dien)", + "Prethalamus (Thal-Pre)", + "Reticular (pre)thalamic nucleus (RT)", + "Reticular (pre)thalamic nucleus, unspecified (RT-u)", + "Reticular (pre)thalamic nucleus, auditory segment (RT-a)", + "Zona incerta (ZI)", + "Zona incerta, dorsal part (ZI-d)", + "Zona incerta, ventral part (ZI-v)", + "Zona incerta, rostral part (ZI-r)", + "Zona incerta, caudal part (ZI-c)", + "Zona incerta, A13 dopamine cells (ZI-A13)", + "Zona incerta, A11 dopamine cells (ZI-A11)", + "Fields of Forel (FoF)", + "Pregeniculate nucleus (PrG)", + "Subgeniculate nucleus (SubG)", + "Intergeniculate leaflet (IGL)", + "Epithalamus (Thal-EPI)", + "Lateral habenular nucleus (LHb)", + "Medial habenular nucleus (MHb)", + "Nucleus of the stria medullaris (SMn)", + "Pineal gland (PG)", + "Dorsal thalamus (Thal-D)", + "Anterior nuclei of the dorsal thalamus (ANT)", + "Anterodorsal thalamic nucleus (AD)", + "Anteroventral thalamic nucleus (AV)", + "Anteroventral thalamic nucleus, dorsomedial part (AV-dm)", + "Anteroventral thalamic nucleus, ventrolateral part (AV-vl)", + "Anteromedial thalamic nucleus (AM)", + "Interanteromedial thalamic nucleus (IAM)", + "Paraventricular thalamic nuclei (anterior and posterior) (PV)", + "Intermediodorsal thalamic nucleus (IMD)", + "Parataenial thalamic nucleus (PT)", + "Subparafascicular nucleus (SPF)", + "Posterior intralaminar nucleus (PIL)", + "Ventral midline group of the dorsal thalamus (V-MID)", + "Rhomboid thalamic nucleus (Rh)", + "Reuniens thalamic nucleus (Re)", + "Retroreuniens thalamic nucleus (RRe)", + "Xiphoid thalamic nucleus (Xi)", + "Mediodorsal nucleus of the dorsal thalamus (MD)", + "Mediodorsal thalamic nucleus, lateral part (MD-l)", + "Mediodorsal thalamic nucleus, central part (MD-c)", + "Mediodorsal thalamic nucleus, medial part (MD-m)", + "Ventral nuclei of the dorsal thalamus (VENT)", + "Ventral anterior thalamic nucleus (VA)", + "Ventromedial thalamic nucleus (VM)", + "Ventrolateral thalamic nucleus (VL)", + "Angular thalamic nucleus (Ang)", + "Ventral posterior thalamic nucleus (VPN)", + "Ventral posteromedial thalamic nucleus (VPM)", + "Ventral posterolateral thalamic nucleus (VPL)", + "Ventral posterior nucleus of the thalamus, parvicellular part (VP-pc)", + "Submedius thalamic nucleus (SMT)", + "Intralaminar nuclei of the dorsal thalamus (ILM)", + "Paracentral thalamic nucleus (PCN)", + "Central medial thalamic nucleus (CM)", + "Central lateral thalamic nucleus (CL)", + "Parafascicular thalamic nucleus (PF)", + "Ethmoid-Limitans nucleus (Eth)", + "Posterior complex of the dorsal thalamus (PoC)", + "Posterior thalamic nucleus (Po)", + "Posterior thalamic nuclear group, triangular part (Po-t)", + "Lateral posterior (pulvinar) complex of the dorsal thalamus (LP)", + "Lateral posterior thalamic nucleus, mediorostral part (LP-mr)", + "Lateral posterior thalamic nucleus, mediocaudal part (LP-mc)", + "Lateral posterior thalamic nucleus, lateral part (LP-l)", + "Laterodorsal thalamic nuclei of the dorsal thalamus (LD)", + "Laterodorsal thalamic nucleus, dorsomedial part (LD-dm)", + "Laterodorsal thalamic nucleus, ventrolateral part (LD-vl)", + "Dorsal lateral geniculate nucleus (DLG)", + "Medial geniculate complex of the dorsal thalamus (MG)", + "Medial geniculate body, ventral division (MG-v)", + "Medial geniculate body, dorsal division (MG-d)", + "Medial geniculate body, marginal zone (MG-mz)", + "Medial geniculate body, medial division (MG-m)", + "Medial geniculate body, suprageniculate nucleus (MG-sg)", + "Hypothalamus (HY)", + "Hypothalamic region, unspecified (HTh-u)", + "Pretectum (PreT)", + "Pretectal region (PRT)", + "Nucleus sagulum (Sag)", + "Mesencephalon (Mes)", + "Midbrain (MB)", + "Tectum (Tc)", + "Inferior colliculus (IC)", + "Inferior colliculus, dorsal cortex (DCIC)", + "Inferior colliculus, central nucleus (CNIC)", + "Inferior colliculus, external cortex (ECIC)", + "Superior colliculus (Su)", + "Superficial gray layer of the superior colliculus (SuG)", + "Deeper layers of the superior colliculus (SuD)", + "Tegmentum (Tg)", + "Substantia nigra (SN)", + "Substantia nigra, reticular part (SN-r)", + "Substantia nigra, compact part (SN-c)", + "Substantia nigra, lateral part (SN-l)", + "Ventral tegmental area (VTA)", + "Peripeduncular nucleus (PP)", + "Interpeduncular nucleus (IP)", + "Periaqueductal gray (PAG)", + "Brainstem, unspecified (BS-u)", + "Rhombencephalon (Rho)", + "Metencephalon (Met)", + "Pontine nuclei (Pn)", + "Cerebellum (Cb)", + "Molecular cell layer of the cerebellum (Cb-m)", + "Cerebellum, unspecified (Cb-u)", + "Myelencephalon (Myel)", + "Cochlear nucleus, ventral part (VCN)", + "Ventral cochlear nucleus, anterior part (AVCN)", + "Ventral cochlear nucleus, posterior part (PVCN)", + "Ventral cochlear nucleus, cap area (Cap)", + "Ventral cochlear nucleus, granule cell layer (GCL)", + "Cochlear nucleus, dorsal part (DCN)", + "Dorsal cochlear nucleus, molecular layer (DCNM)", + "Dorsal cochlear nucleus, fusiform and granule layer (DCNFG)", + "Dorsal cochlear nucleus, deep core (DCND)", + "Spinal trigeminal nucleus (Sp5n)", + "Periventricular gray (PVG)", + "Superior olivary complex (SO)", + "Nucleus of the trapezoid body (NTB)", + "Superior paraolivary nucleus (SPN)", + "Medial superior olive (MSO)", + "Lateral superior olive (LSO)", + "Superior periolivary region (SPR)", + "Ventral periolivary nuclei (VPO)", + "Nuclei of the lateral lemniscus (NLL)", + "Lateral lemniscus, ventral nucleus (VLL)", + "Lateral lemniscus, intermediate nucleus (ILL)", + "Lateral lemniscus, dorsal nucleus (DLL)", + "Inferior olive (IO)", + "Ventricular system (V)", + "ventricular system, unspecified (V-u)", + "4th ventricle (4V)", + "central canal (CC)", + "spinal cord (SpC)", + "Inner ear (IE)", + "vestibular apparatus (VeA)", + "cochlea (Co)", + "cochlear nerve (8cn)", + "vestibular nerve (8vn)", + "spiral ganglion (SpG)" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + }, + "targeted_x": { + "$id": "#root/electrode_groups/items/targeted_x", + "title": "targeted_x", + "type": "number", + "description": "Medial/Latetal", + "examples": [ + 2.6 + ], + "default": 0.0 + }, + "targeted_y": { + "$id": "#root/electrode_groups/items/targeted_y", + "title": "targeted_y", + "type": "number", + "description": "Anterior/Posterior", + "examples": [ + -3.8 + ], + "default": 0.0 + }, + "targeted_z": { + "$id": "#root/electrode_groups/items/targeted_z", + "title": "targeted_z", + "type": "number", + "description": "Ventral/Dorsal", + "examples": [ + 0 + ], + "default": 0 + }, + "units": { + "$id": "#root/electrode_groups/items/units", + "title": "units", + "type": "string", + "default": "mm", + "examples": [ + "pm", + "nm", + "μm", + "mm", + "cm", + "in", + "yd", + "ft" + ], + "pattern": "^(.|\\s)*\\S(.|\\s)*$" + } + } + } + }, + "ntrode_electrode_group_channel_map": { + "$id": "#root/ntrode_electrode_group_channel_map", + "title": "ntrode_electrode_group_channel_map", + "type": "array", + "default": [], + "items": { + "$id": "#root/ntrode_electrode_group_channel_map/items", + "title": "Items", + "type": "object", + "required": [ + "ntrode_id", + "electrode_group_id", + "bad_channels", + "map" + ], + "properties": { + "ntrode_id": { + "$id": "#root/ntrode_electrode_group_channel_map/items/ntrode_id", + "title": "ntrode_id", + "type": "integer", + "examples": [ + 1 + ], + "default": 0 + }, + "electrode_group_id": { + "$id": "#root/ntrode_electrode_group_channel_map/items/electrode_group_id", + "title": "electrode_group_id", + "type": "integer", + "examples": [ + 0 + ], + "default": 0 + }, + "bad_channels": { + "$id": "#root/ntrode_electrode_group_channel_map/items/bad_channels", + "title": "bad_channels", + "type": "array", + "default": [], + "examples": [], + "uniqueItems": true, + "description": "Comma separated list of bad channels", + "items": { + "$id": "#root/ntrode_electrode_group_channel_map/items/bad_channels/items", + "title": "Items", + "type": "integer", + "examples": [ + 0 + ], + "default": 0 + } + }, + "map": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map", + "title": "map", + "type": "object", + "properties": { + "0": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/0", + "title": "0", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 0 + }, + "1": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/1", + "title": "1", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 1 + }, + "2": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/2", + "title": "2", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 2 + }, + "3": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/3", + "title": "3", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 3 + }, + "4": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/4", + "title": "4", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 4 + }, + "5": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/5", + "title": "5", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 5 + }, + "6": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/6", + "title": "6", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 6 + }, + "7": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/7", + "title": "7", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 7 + }, + "8": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/8", + "title": "8", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 8 + }, + "9": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/9", + "title": "9", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 9 + }, + "10": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/10", + "title": "10", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 10 + }, + "11": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/11", + "title": "11", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 11 + }, + "12": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/12", + "title": "12", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 12 + }, + "13": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/13", + "title": "13", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 13 + }, + "14": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/14", + "title": "14", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 14 + }, + "15": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/15", + "title": "15", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 15 + }, + "16": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/16", + "title": "16", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 16 + }, + "17": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/17", + "title": "17", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 17 + }, + "18": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/18", + "title": "18", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 18 + }, + "19": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/19", + "title": "19", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 19 + }, + "20": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/20", + "title": "20", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 20 + }, + "21": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/21", + "title": "21", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 21 + }, + "22": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/22", + "title": "22", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 22 + }, + "23": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/23", + "title": "23", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 23 + }, + "24": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/24", + "title": "24", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 24 + }, + "25": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/25", + "title": "25", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 25 + }, + "26": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/26", + "title": "26", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 26 + }, + "27": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/27", + "title": "27", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 27 + }, + "28": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/28", + "title": "28", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 28 + }, + "29": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/29", + "title": "29", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 29 + }, + "30": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/30", + "title": "30", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 30 + }, + "31": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/31", + "title": "31", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 31 + }, + "32": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/32", + "title": "32", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 32 + }, + "33": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/33", + "title": "33", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 33 + }, + "34": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/34", + "title": "34", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 34 + }, + "35": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/35", + "title": "35", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 35 + }, + "36": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/36", + "title": "36", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 36 + }, + "37": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/37", + "title": "37", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 37 + }, + "38": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/38", + "title": "38", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 38 + }, + "39": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/39", + "title": "39", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 39 + }, + "40": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/40", + "title": "40", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 40 + }, + "41": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/41", + "title": "41", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 41 + }, + "42": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/42", + "title": "42", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 42 + }, + "43": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/43", + "title": "43", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 43 + }, + "44": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/44", + "title": "44", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 44 + }, + "45": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/45", + "title": "45", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 45 + }, + "46": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/46", + "title": "46", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 46 + }, + "47": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/47", + "title": "47", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 47 + }, + "48": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/48", + "title": "48", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 48 + }, + "49": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/49", + "title": "49", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 49 + }, + "50": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/50", + "title": "50", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 50 + }, + "51": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/51", + "title": "51", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 51 + }, + "52": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/52", + "title": "52", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 52 + }, + "53": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/53", + "title": "53", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 53 + }, + "54": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/54", + "title": "54", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 54 + }, + "55": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/55", + "title": "55", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 55 + }, + "56": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/56", + "title": "56", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 56 + }, + "57": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/57", + "title": "57", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 57 + }, + "58": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/58", + "title": "58", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 58 + }, + "59": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/59", + "title": "59", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 59 + }, + "60": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/60", + "title": "60", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 60 + }, + "61": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/61", + "title": "61", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 61 + }, + "62": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/62", + "title": "62", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 62 + }, + "63": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/63", + "title": "63", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 63 + }, + "64": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/64", + "title": "64", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 64 + }, + "65": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/65", + "title": "65", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 65 + }, + "66": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/66", + "title": "66", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 66 + }, + "67": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/67", + "title": "67", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 67 + }, + "68": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/68", + "title": "68", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 68 + }, + "69": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/69", + "title": "69", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 69 + }, + "70": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/70", + "title": "70", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 70 + }, + "71": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/71", + "title": "71", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 71 + }, + "72": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/72", + "title": "72", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 72 + }, + "73": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/73", + "title": "73", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 73 + }, + "74": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/74", + "title": "74", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 74 + }, + "75": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/75", + "title": "75", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 75 + }, + "76": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/76", + "title": "76", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 76 + }, + "77": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/77", + "title": "77", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 77 + }, + "78": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/78", + "title": "78", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 78 + }, + "79": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/79", + "title": "79", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 79 + }, + "80": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/80", + "title": "80", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 80 + }, + "81": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/81", + "title": "81", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 81 + }, + "82": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/82", + "title": "82", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 82 + }, + "83": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/83", + "title": "83", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 83 + }, + "84": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/84", + "title": "84", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 84 + }, + "85": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/85", + "title": "85", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 85 + }, + "86": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/86", + "title": "86", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 86 + }, + "87": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/87", + "title": "87", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 87 + }, + "88": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/88", + "title": "88", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 88 + }, + "89": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/89", + "title": "89", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 89 + }, + "90": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/90", + "title": "90", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 90 + }, + "91": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/91", + "title": "91", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 91 + }, + "92": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/92", + "title": "92", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 92 + }, + "93": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/93", + "title": "93", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 93 + }, + "94": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/94", + "title": "94", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 94 + }, + "95": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/95", + "title": "95", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 95 + }, + "96": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/96", + "title": "96", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 96 + }, + "97": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/97", + "title": "97", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 97 + }, + "98": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/98", + "title": "98", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 98 + }, + "99": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/99", + "title": "99", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 99 + }, + "100": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/100", + "title": "100", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 100 + }, + "101": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/101", + "title": "101", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 101 + }, + "102": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/102", + "title": "102", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 102 + }, + "103": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/103", + "title": "103", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 103 + }, + "104": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/104", + "title": "104", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 104 + }, + "105": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/105", + "title": "105", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 105 + }, + "106": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/106", + "title": "106", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 106 + }, + "107": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/107", + "title": "107", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 107 + }, + "108": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/108", + "title": "108", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 108 + }, + "109": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/109", + "title": "109", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 109 + }, + "110": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/110", + "title": "110", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 110 + }, + "111": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/111", + "title": "111", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 111 + }, + "112": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/112", + "title": "112", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 112 + }, + "113": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/113", + "title": "113", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 113 + }, + "114": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/114", + "title": "114", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 114 + }, + "115": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/115", + "title": "115", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 115 + }, + "116": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/116", + "title": "116", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 116 + }, + "117": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/117", + "title": "117", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 117 + }, + "118": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/118", + "title": "118", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 118 + }, + "119": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/119", + "title": "119", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 119 + }, + "120": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/120", + "title": "120", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 120 + }, + "121": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/121", + "title": "121", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 121 + }, + "122": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/122", + "title": "122", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 122 + }, + "123": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/123", + "title": "123", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 123 + }, + "124": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/124", + "title": "124", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 124 + }, + "125": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/125", + "title": "125", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 125 + }, + "126": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/126", + "title": "126", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 126 + }, + "127": { + "$id": "#root/ntrode_electrode_group_channel_map/items/map/127", + "title": "127", + "type": "integer", + "examples": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127 + ], + "minimum": 0, + "default": 127 + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index bbf9d71..0ce43fe 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -687,7 +687,7 @@ def get_digitalsignal(self, stream_id, channel_id): if self.sysClock_byte: timestamps = self.get_regressed_systime(i_start, i_stop) else: - timestamps = self.get_analogsignal_timestamps(i_start, i_stop) + timestamps = self.get_systime_from_trodes_timestamps(i_start, i_stop) dio_change_times = timestamps[np.where(change_dir)[0] + 1] # insert the first timestamp with the first value @@ -701,6 +701,7 @@ def get_digitalsignal(self, stream_id, channel_id): return dio_change_times, change_dir_trim + @functools.lru_cache(maxsize=1) def get_regressed_systime(self, i_start, i_stop=None): NANOSECONDS_PER_SECOND = 1e9 # get values @@ -713,13 +714,15 @@ def get_regressed_systime(self, i_start, i_stop=None): adjusted_timestamps = intercept + slope * trodestime_index return (adjusted_timestamps) / NANOSECONDS_PER_SECOND + @functools.lru_cache(maxsize=1) def get_systime_from_trodes_timestamps(self, i_start, i_stop=None): MILLISECONDS_PER_SECOND = 1e3 # get values trodestime = self.get_analogsignal_timestamps(i_start, i_stop) - return (trodestime - int(self.timestamp_at_creation)) * ( - 1.0 / self._sampling_rate - ) + int(self.system_time_at_creation) / MILLISECONDS_PER_SECOND + initial_time = self.get_analogsignal_timestamps(0, 1)[0] + return (trodestime - initial_time) * (1.0 / self._sampling_rate) + int( + self.system_time_at_creation + ) / MILLISECONDS_PER_SECOND def _interpolate_raw_memmap( self, diff --git a/src/spikegadgets_to_nwb/tests/integration-tests/__init__.py b/src/spikegadgets_to_nwb/tests/integration-tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py b/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py new file mode 100644 index 0000000..4d9d904 --- /dev/null +++ b/src/spikegadgets_to_nwb/tests/integration-tests/test_metadata_validation_it.py @@ -0,0 +1,190 @@ +import pytest +import os +from spikegadgets_to_nwb.metadata_validation import ( + validate, +) +from spikegadgets_to_nwb.tests.test_data.test_metadata_dict_samples import ( + basic_data, + basic_data_with_optional_arrays, + empty_experimenter_name, + string_as_experimenter_name, + empty_lab, + empty_institution, + empty_experiment_description, + empty_session_description, + empty_session_id, + empty_keywords, + keywords_array_with_empty_item, + not_array_keywords, + empty_subject, + subject_with_empty_values, + subject_with_invalid_sex, + subject_with_invalid_date, + empty_data_acq_device, + data_acq_device_with_no_values, + empty_units, + invalid_times_period_multiplier, + invalid_raw_data_to_volts, + invalid_default_header_file_path, + empty_device_name, + basic_ntrode_electrode_group_channel_map, +) + + +@pytest.mark.parametrize("metadata", [(None), ("")]) +def test_metadata_validation_only_accepts_right_data_type(metadata): + with pytest.raises(AssertionError) as e: + validate(metadata) + + +@pytest.mark.parametrize("metadata", [(basic_data), (basic_data_with_optional_arrays)]) +def test_metadata_validation_verification_on_valid_data(metadata): + is_valid, errors = validate(metadata) + + assert is_valid, "".join(errors) + + +@pytest.mark.parametrize( + "metadata, key, expected", + [ + (empty_experimenter_name, "experimenter_name", ["[] is too short"]), + ( + string_as_experimenter_name, + "experimenter_name", + [ + "'' is not of type 'array'", + ], + ), + (empty_lab, "lab", ["does not match"]), + (empty_institution, "institution", ["does not match"]), + ( + empty_experiment_description, + "experiment_description", + ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], + ), + ( + empty_session_description, + "session_description", + ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], + ), + ( + empty_session_id, + "session_id", + ["does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'"], + ), + ( + empty_keywords, + "keywords", + [ + "[] is too short", + ], + ), + ( + keywords_array_with_empty_item, + "keywords", + [ + "", + ], + ), + (not_array_keywords, "keywords", ["is not of type 'array'"]), + ( + subject_with_empty_values, + "subject1", + [ + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "is not one of ['M', 'F', 'U', 'O']", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "-1 is less than the minimum of 0", + "does not match '(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d\\\\.\\\\d+)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d)'", + ], + ), + ( + empty_subject, + "subject", + [ + "'description' is a required property", + "'genotype' is a required property", + "'sex' is a required property", + "'species' is a required property", + "'subject_id' is a required property", + "'weight' is a required property", + "'date_of_birth' is a required property", + ], + ), + (subject_with_invalid_sex, "subject", ["is not one of ['M', 'F', 'U', 'O']"]), + ( + subject_with_invalid_date, + "subject", + [ + "'2023-01-04' does not match '(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d\\\\.\\\\d+)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d)|(\\\\d{4}-[01]\\\\d-[0-3]\\\\dT[0-2]\\\\d:[0-5]\\\\d)'" + ], + ), + ( + data_acq_device_with_no_values, + "data_acq_device1", + [ + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + "does not match '^(.|\\\\s)*\\\\S(.|\\\\s)*$'", + ], + ), + (empty_data_acq_device, "data_acq_device", ["[] is too short"]), + ( + empty_units, + "units", + [ + "'analog' is a required property", + "'behavioral_events' is a required property", + ], + ), + ( + invalid_times_period_multiplier, + "times_period_multiplier", + [ + "'a' is not of type 'number'", + ], + ), + ( + invalid_raw_data_to_volts, + "raw_data_to_volts", + ["'a' is not of type 'number'"], + ), + ( + invalid_default_header_file_path, + "default_header_file_path", + ["None is not of type 'string'"], + ), + (empty_device_name, "device_name", ["'name' is a required property"]), + ( + basic_ntrode_electrode_group_channel_map, + "ntrode_electrode_group_channel_map", + ( + [ + "'a' is not of type 'integer'", + "'z' is not of type 'integer'", + "'z' is not of type 'integer'", + "'0' is not of type 'integer'", + "'0' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", + "'t' is not of type 'integer'", + "'t' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", + "'a' is not of type 'integer'", + "'a' is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", + "-3 is not one of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127]", + "-3 is less than the minimum of 0", + ] + ), + ), + ], +) +def test_metadata_validation_verification_on_invalid_data(metadata, key, expected): + is_valid, errors = validate(metadata) + + assert len(errors) == len(expected), f"Not all the errors are occurring in - {key}" + assert not is_valid, f"{key} should be invalid" + for index, error in enumerate(errors): + assert ( + expected[index] in error + ), f"Expected error not found - ${expected[index]}" diff --git a/src/spikegadgets_to_nwb/tests/test_convert.py b/src/spikegadgets_to_nwb/tests/test_convert.py index 5861158..7206ed9 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert.py +++ b/src/spikegadgets_to_nwb/tests/test_convert.py @@ -1,25 +1,17 @@ +import numpy as np import os from pathlib import Path - -import numpy as np -import pandas as pd from pynwb import NWBHDF5IO +import shutil from spikegadgets_to_nwb.convert import _create_nwb, get_included_probe_metadata_paths from spikegadgets_to_nwb.data_scanner import get_file_info - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path MICROVOLTS_PER_VOLT = 1e6 def test_get_file_info(): - try: - # running on github - data_path = Path(os.environ.get("DOWNLOAD_DIR")) - except (TypeError, FileNotFoundError): - # running locally - data_path = Path(path) path_df = get_file_info(data_path) path_df = path_df[ path_df.animal == "sample" @@ -54,53 +46,41 @@ def test_get_included_probe_metadat_paths(): def test_convert(): - try: - # running on github - data_path = Path(os.environ.get("DOWNLOAD_DIR")) - yml_data_path = Path(path + "/test_data") - yml_path_df = get_file_info(yml_data_path) - yml_path_df = yml_path_df[yml_path_df.file_extension == ".yml"] - append_yml_df = True - except (TypeError, FileNotFoundError): - # running locally - data_path = Path(path + "/test_data") - append_yml_df = False - probe_metadata = [Path(path + "/test_data/tetrode_12.5.yml")] - + probe_metadata = [data_path / "tetrode_12.5.yml"] # make session_df path_df = get_file_info(data_path) - if append_yml_df: - path_df = path_df[ - path_df.file_extension != ".yml" - ] # strip ymls, fixes github runner issue where yamls only sometimes present between jobs - path_df = pd.concat([path_df, yml_path_df]) - path_df = path_df[ - path_df.full_path - != yml_data_path.as_posix() + "/20230622_sample_metadataProbeReconfig.yml" - ] - else: - path_df = path_df[ - path_df.full_path - != data_path.as_posix() + "/20230622_sample_metadataProbeReconfig.yml" - ] + # exclude the reconfig yaml file + path_df = path_df[ + path_df.full_path + != str(data_path / "20230622_sample_metadataProbeReconfig.yml") + ] session_df = path_df[(path_df.animal == "sample")] assert len(session_df[session_df.file_extension == ".yml"]) == 1 + # make temporary directory for video files + video_directory = data_path / "temp_video_directory_full_convert" + if not os.path.exists(video_directory): + os.makedirs(video_directory) + _create_nwb( session=("20230622", "sample", "1"), session_df=session_df, probe_metadata_paths=probe_metadata, output_dir=str(data_path), + video_directory=str(video_directory), ) - assert "sample20230622.nwb" in os.listdir(str(data_path)) - with NWBHDF5IO(str(data_path) + "/sample20230622.nwb") as io: + + output_file_path = data_path / "sample20230622.nwb" + assert output_file_path.exists() + rec_to_nwb_file = data_path / "minirec20230622_.nwb" + with NWBHDF5IO(output_file_path) as io: nwbfile = io.read() - with NWBHDF5IO(str(data_path) + "/minirec20230622_.nwb") as io2: + with NWBHDF5IO(rec_to_nwb_file) as io2: old_nwbfile = io2.read() - # run nwb comparison compare_nwbfiles(nwbfile, old_nwbfile) # cleanup - os.remove(str(data_path) + "/sample20230622.nwb") + os.remove(output_file_path) + shutil.rmtree(video_directory) def check_module_entries(test, reference): diff --git a/src/spikegadgets_to_nwb/tests/test_convert_analog.py b/src/spikegadgets_to_nwb/tests/test_convert_analog.py index 7111a82..9df75c9 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_analog.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_analog.py @@ -1,30 +1,19 @@ import os - import pynwb from spikegadgets_to_nwb import convert_rec_header, convert_yaml from spikegadgets_to_nwb.convert_analog import add_analog_data, get_analog_channel_names from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def test_add_analog_data(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) - nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - - try: - # running on github - rec_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - rec_header = convert_rec_header.read_header(rec_file) - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" - except: - # running locally - rec_file = path + "/test_data/20230622_sample_01_a1.rec" - rec_header = convert_rec_header.read_header(rec_file) - rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" + rec_file = data_path / "20230622_sample_01_a1.rec" + rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file + rec_header = convert_rec_header.read_header(rec_file) # make file with data nwbfile = convert_yaml.initialize_nwb(metadata, rec_header) analog_channel_names = get_analog_channel_names(rec_header) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_dios.py b/src/spikegadgets_to_nwb/tests/test_convert_dios.py index 8d566e3..3c0b66f 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_dios.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_dios.py @@ -1,32 +1,22 @@ -import os - import numpy as np +import os import pynwb from spikegadgets_to_nwb import convert_yaml from spikegadgets_to_nwb.convert_dios import add_dios from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def test_add_dios_single_rec(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, _ = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - try: - # running on github - recfile = [os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec"] - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" - except (TypeError, FileNotFoundError): - # running locally - recfile = [path + "/test_data/20230622_sample_01_a1.rec"] - rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" + recfile = [data_path / "20230622_sample_01_a1.rec"] + rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file add_dios(nwbfile, recfile, metadata) @@ -71,27 +61,16 @@ def test_add_dios_single_rec(): def test_add_dios_two_epoch(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, _ = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - try: - # running on github - recfile = [ - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" - except (TypeError, FileNotFoundError): - # running locally - recfile = [ - path + "/test_data/20230622_sample_01_a1.rec", - path + "/test_data/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" + recfile = [ + data_path / "20230622_sample_01_a1.rec", + data_path / "20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file add_dios(nwbfile, recfile, metadata) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_ephys.py b/src/spikegadgets_to_nwb/tests/test_convert_ephys.py index aac211c..bf0ef0b 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_ephys.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_ephys.py @@ -1,38 +1,27 @@ -import os - import numpy as np +import os +from pathlib import Path import pynwb from spikegadgets_to_nwb import convert_rec_header, convert_yaml from spikegadgets_to_nwb.convert_ephys import add_raw_ephys from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree +from spikegadgets_to_nwb.tests.utils import data_path MICROVOLTS_PER_VOLT = 1e6 -path = os.path.dirname(os.path.abspath(__file__)) def test_add_raw_ephys_single_rec(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - try: - # running on github - trodesconf_file = ( - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - ) # "/test_data/reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) - except: - # running locally - trodesconf_file = ( - path + "/test_data/20230622_sample_01_a1.rec" - ) # "/test_data/reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) + trodesconf_file = data_path / "20230622_sample_01_a1.rec" + # "reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -45,22 +34,14 @@ def test_add_raw_ephys_single_rec(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - try: - # running on github - recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_155936.nwb" - except (TypeError, FileNotFoundError): - # running locally - recfile = path + "/test_data/20230622_sample_01_a1.rec" - rec_to_nwb_file = path + "/test_data/20230622_155936.nwb" + recfile = [data_path / "20230622_sample_01_a1.rec"] + rec_to_nwb_file = data_path / "20230622_155936.nwb" # comparison file map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( nwbfile, - [ - recfile, - ], + recfile, map_row_ephys_data_to_row_electrodes_table, ) @@ -109,15 +90,13 @@ def test_add_raw_ephys_single_rec(): def test_add_raw_ephys_single_rec_probe_configuration(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadataProbeReconfig.yml" - probe_metadata = [ - path + "/test_data/128c-4s6mm6cm-15um-26um-sl.yml", - ] + metadata_path = data_path / "20230622_sample_metadataProbeReconfig.yml" + probe_metadata = [data_path / "128c-4s6mm6cm-15um-26um-sl.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - trodesconf_file = path + "/test_data/reconfig_probeDevice.trodesconf" + trodesconf_file = data_path / "reconfig_probeDevice.trodesconf" rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( @@ -131,24 +110,16 @@ def test_add_raw_ephys_single_rec_probe_configuration(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - try: - # running on github - recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - rec_to_nwb_file = ( - os.environ.get("DOWNLOAD_DIR") + "/probe_reconfig_20230622_155936.nwb" - ) - except (TypeError, FileNotFoundError): - # running locally - recfile = path + "/test_data/20230622_sample_01_a1.rec" - rec_to_nwb_file = path + "/test_data/probe_reconfig_20230622_155936.nwb" + recfile = [data_path / "20230622_sample_01_a1.rec"] + rec_to_nwb_file = ( + data_path / "probe_reconfig_20230622_155936.nwb" + ) # comparison file map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( nwbfile, - [ - recfile, - ], + recfile, map_row_ephys_data_to_row_electrodes_table, ) @@ -198,22 +169,14 @@ def test_add_raw_ephys_single_rec_probe_configuration(): def test_add_raw_ephys_two_epoch(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using the reconfig header - try: - # running on github - trodesconf_file = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - rec_header = convert_rec_header.read_header(trodesconf_file) - except: - # running locally - trodesconf_file = path + "/test_data/20230622_sample_01_a1.rec" - rec_header = convert_rec_header.read_header(trodesconf_file) + trodesconf_file = data_path / "20230622_sample_01_a1.rec" + rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -226,20 +189,12 @@ def test_add_raw_ephys_two_epoch(): nwbfile, metadata, probe_metadata, hw_channel_map, ref_electrode_map ) - try: - # running on github - recfile = [ - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" - except (TypeError, FileNotFoundError): - # running locally - recfile = [ - path + "/test_data/20230622_sample_01_a1.rec", - path + "/test_data/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" + recfile = [ + data_path / "20230622_sample_01_a1.rec", + data_path / "20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file + map_row_ephys_data_to_row_electrodes_table = list(range(len(nwbfile.electrodes))) add_raw_ephys( diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index 31d0bb3..83a13d9 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -1,7 +1,5 @@ -import os -from pathlib import Path - import numpy as np +import os from pynwb import NWBHDF5IO from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator @@ -10,34 +8,27 @@ from spikegadgets_to_nwb.data_scanner import get_file_info from spikegadgets_to_nwb.spike_gadgets_raw_io import SpikeGadgetsRawIO from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def test_add_epochs(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = load_metadata(metadata_path, []) nwbfile = initialize_nwb(metadata, default_test_xml_tree()) - try: - # running on github - file_info = get_file_info(Path(os.environ.get("DOWNLOAD_DIR"))) - rec_to_nwb_file = ( - os.environ.get("DOWNLOAD_DIR") + "/probe_reconfig_20230622_155936.nwb" - ) - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" - except (TypeError, FileNotFoundError): - # running locally - file_info = get_file_info(Path(path)) - rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" - file_info = file_info[file_info.animal == "sample"] - # assert file_info[file_info.file_extension == ".rec"].full_path.to_list() == [] + file_info = get_file_info(data_path) + rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file # get all streams for all files - rec_dci = RecFileDataChunkIterator( - file_info[file_info.file_extension == ".rec"].full_path.to_list() - ) - add_epochs(nwbfile, file_info, 20230622, "sample", rec_dci.neo_io) + neo_io = [ + SpikeGadgetsRawIO(filename=file) + for file in file_info[file_info.file_extension == ".rec"].full_path + ] + [neo_io.parse_header() for neo_io in neo_io] + + file_info = file_info[file_info.animal == "sample"] + file_info = file_info[file_info.date == 20230622] + add_epochs(nwbfile, file_info, neo_io) epochs_df = nwbfile.epochs.to_dataframe() - # load old nwb versio + # load old nwb version io = NWBHDF5IO(rec_to_nwb_file, "r") old_nwbfile = io.read() old_epochs_df = old_nwbfile.epochs.to_dataframe() @@ -50,23 +41,14 @@ def test_add_epochs(): def test_add_sample_count(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = load_metadata(metadata_path, []) nwbfile = initialize_nwb(metadata, default_test_xml_tree()) - try: - # running on github - recfile = [ - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec", - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = os.environ.get("DOWNLOAD_DIR") + "/minirec20230622_.nwb" - except (TypeError, FileNotFoundError): - # running locally - recfile = [ - path + "/test_data/20230622_sample_01_a1.rec", - path + "/test_data/20230622_sample_02_a1.rec", - ] - rec_to_nwb_file = path + "/test_data/minirec20230622_.nwb" + recfile = [ + data_path / "20230622_sample_01_a1.rec", + data_path / "20230622_sample_02_a1.rec", + ] + rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file # make recfile data chunk iterator rec_dci = RecFileDataChunkIterator(recfile) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_position.py b/src/spikegadgets_to_nwb/tests/test_convert_position.py index 6a32276..bada810 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_position.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_position.py @@ -4,9 +4,13 @@ import numpy as np import pandas as pd import pytest -from pynwb import NWBHDF5IO +from pynwb import NWBHDF5IO, TimeSeries from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml +from spikegadgets_to_nwb.convert_ephys import RecFileDataChunkIterator +from spikegadgets_to_nwb.convert_intervals import add_sample_count +from spikegadgets_to_nwb.convert_dios import add_dios +from spikegadgets_to_nwb.convert_intervals import add_epochs from spikegadgets_to_nwb.convert_position import ( add_position, correct_timestamps_for_camera_to_mcu_lag, @@ -20,10 +24,10 @@ parse_dtype, read_trodes_datafile, remove_acquisition_timing_pause_non_ptp, + find_camera_dio_channel, ) from spikegadgets_to_nwb.data_scanner import get_file_info - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def test_parse_dtype_standard(): @@ -194,23 +198,15 @@ def test_correct_timestamps_for_camera_to_mcu_lag(): def test_add_position(): - try: - # running on github - data_path = Path(os.environ.get("DOWNLOAD_DIR")) - except (TypeError, FileNotFoundError): - # running locally - data_path = Path(path + "/test_data") - probe_metadata = [Path(path + "/test_data/tetrode_12.5.yml")] + probe_metadata = [data_path / "tetrode_12.5.yml"] # make session_df path_df = get_file_info(data_path) session_df = path_df[(path_df.animal == "sample")] # get metadata - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) rec_file = session_df[ (session_df.epoch == 1) & (session_df.file_extension == ".rec") @@ -222,11 +218,10 @@ def test_add_position(): # run add_position and prerequisite functions convert_yaml.add_cameras(nwbfile, metadata) - add_position(nwbfile, metadata, session_df, rec_header, video_directory="") + add_position(nwbfile, metadata, session_df, rec_header) # Check that the objects were properly added assert "position" in nwbfile.processing["behavior"].data_interfaces - assert "video_files" in nwbfile.processing assert "non_repeat_timestamp_labels" in nwbfile.processing assert "position_frame_index" in nwbfile.processing @@ -287,3 +282,66 @@ def test_add_position(): assert validated, f"Could not find matching series for {series}" # cleanup os.remove(filename) + + +from spikegadgets_to_nwb.convert_position import read_trodes_datafile + + +def test_add_position_non_ptp(): + # make session_df + path_df = get_file_info(data_path) + session_df = path_df[(path_df.animal == "ginny")] + # get metadata + metadata_path = data_path / "nonptp_metadata.yml" + metadata, _ = convert_yaml.load_metadata(metadata_path, []) + # load the prepped non-ptp nwbfile + with NWBHDF5IO(data_path / "non_ptp_prep.nwb", "a", load_namespaces=True) as io: + nwbfile = io.read() + add_position( + nwbfile, + metadata, + session_df, + ptp_enabled=False, + rec_dci_timestamps=nwbfile.processing["sample_count"][ + "sample_count" + ].timestamps[:] + / 1e9, + sample_count=nwbfile.processing["sample_count"] + .data_interfaces["sample_count"] + .data[:], + ) + # read in position data to compare to + ref_pos = pd.read_pickle(data_path / "position_df.pkl") + # check that the data is the same + for series in [ + "led_0_series_1", + "led_0_series_2", + "led_1_series_1", + "led_1_series_2", + ]: + # check series in new nwbfile + assert ( + series + in nwbfile.processing["behavior"]["position"].spatial_series.keys() + ) + # get the data for this series + t_new = nwbfile.processing["behavior"]["position"][series].timestamps[:] + pos_new = nwbfile.processing["behavior"]["position"][series].data[:] + assert t_new.size == pos_new.shape[0] + assert pos_new.shape[1] == 2 + validated = False + for name in ref_pos.name.to_list(): + t_ref = ref_pos[ref_pos.name == name].timestamps.values[0] + + if t_new.size == t_ref.size and np.allclose( + t_ref, t_new, atol=1, rtol=0 + ): + pos_ref = ref_pos[ref_pos.name == name].data.to_list()[0] + if np.allclose( + pos_ref[:100, :2], pos_new[:100], atol=1e-6, rtol=0 + ) or np.allclose( + pos_ref[:100, 2:], pos_new[:100], atol=1e-6, rtol=0 + ): + validated = True + break + assert validated, f"Could not find matching series for {series}" diff --git a/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py b/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py index 0c5da8c..b39f776 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_rec_header.py @@ -5,8 +5,7 @@ from ndx_franklab_novela import HeaderDevice from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def default_test_xml_tree() -> ElementTree: @@ -17,39 +16,23 @@ def default_test_xml_tree() -> ElementTree: ElementTree root xml tree for intial nwb generation """ - try: - # running on github - trodesconf_file = ( - os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - ) # "/test_data/reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) - except: - # running locally - trodesconf_file = ( - path + "/test_data/20230622_sample_01_a1.rec" - ) # "/test_data/reconfig_probeDevice.trodesconf" - rec_header = convert_rec_header.read_header(trodesconf_file) + trodesconf_file = data_path / "20230622_sample_01_a1.rec" + # "reconfig_probeDevice.trodesconf" + rec_header = convert_rec_header.read_header(trodesconf_file) return rec_header def test_add_header_device(): # Set up test data - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) + recfile = data_path / "20230622_sample_01_a1.rec" + # Call the function to be tested - try: - # running on github - recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - convert_rec_header.add_header_device( - nwbfile, convert_rec_header.read_header(recfile) - ) - except (TypeError, FileNotFoundError): - # running locally - recfile = path + "/test_data/20230622_sample_01_a1.rec" - convert_rec_header.add_header_device( - nwbfile, convert_rec_header.read_header(recfile) - ) + convert_rec_header.add_header_device( + nwbfile, convert_rec_header.read_header(recfile) + ) # Perform assertions to check the results # Check if the device was added correctly @@ -80,7 +63,7 @@ def test_add_header_device(): assert header_device.file_path == "" # Check if error raised if improper header file is passed - recfile = path + "/test_data/bad_header.trodesconf" + recfile = data_path / "bad_header.trodesconf" with pytest.raises( ValueError, match="SpikeGadgets: the xml header does not contain ''", @@ -95,14 +78,9 @@ def test_detect_ptp(): def test_validate_yaml_header_electrode_map(): # get metadata and rec_header - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) - try: - # running on github - recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - except (TypeError, FileNotFoundError): - # running locally - recfile = path + "/test_data/20230622_sample_01_a1.rec" + recfile = data_path / "20230622_sample_01_a1.rec" rec_header = convert_rec_header.read_header(recfile) # correct matching diff --git a/src/spikegadgets_to_nwb/tests/test_convert_yaml.py b/src/spikegadgets_to_nwb/tests/test_convert_yaml.py index d68f8ad..ce44d36 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_yaml.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_yaml.py @@ -1,6 +1,7 @@ +from datetime import datetime import logging import os -from datetime import datetime +import shutil from hdmf.common.table import DynamicTable, VectorData from ndx_franklab_novela import Probe, Shank, ShanksElectrode @@ -8,12 +9,15 @@ from spikegadgets_to_nwb import convert, convert_rec_header, convert_yaml from spikegadgets_to_nwb.tests.test_convert_rec_header import default_test_xml_tree +from spikegadgets_to_nwb.data_scanner import get_file_info +from spikegadgets_to_nwb.convert_position import add_associated_video_files +from spikegadgets_to_nwb.tests.utils import data_path -path = os.path.dirname(os.path.abspath(__file__)) +from ndx_franklab_novela import CameraDevice def test_initial_nwb_creation(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # check that things were added in @@ -34,7 +38,7 @@ def test_initial_nwb_creation(): def test_subject_creation(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_subject(nwb_file, metadata) @@ -50,7 +54,7 @@ def test_subject_creation(): def test_camera_creation(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_cameras(nwb_file, metadata) @@ -64,7 +68,7 @@ def test_camera_creation(): def test_acq_device_creation(): - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwb_file = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) convert_yaml.add_acquisition_devices(nwb_file, metadata) @@ -78,20 +82,13 @@ def test_acq_device_creation(): def test_electrode_creation(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - probe_metadata = [ - path + "/test_data/tetrode_12.5.yml", - ] + metadata_path = data_path / "20230622_sample_metadata.yml" + probe_metadata = [data_path / "tetrode_12.5.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # create the hw_channel map using rec data - try: - # running on github - recfile = os.environ.get("DOWNLOAD_DIR") + "/20230622_sample_01_a1.rec" - except (TypeError, FileNotFoundError): - # running locally - recfile = path + "/test_data/20230622_sample_01_a1.rec" + recfile = data_path / "20230622_sample_01_a1.rec" rec_header = convert_rec_header.read_header(recfile) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -156,10 +153,8 @@ def test_electrode_creation(): def test_electrode_creation_reconfigured(): # load metadata yml and make nwb file - metadata_path = path + "/test_data/20230622_sample_metadataProbeReconfig.yml" - probe_metadata = [ - path + "/test_data/128c-4s6mm6cm-15um-26um-sl.yml", - ] + metadata_path = data_path / "20230622_sample_metadataProbeReconfig.yml" + probe_metadata = [data_path / "128c-4s6mm6cm-15um-26um-sl.yml"] metadata, probe_metadata = convert_yaml.load_metadata(metadata_path, probe_metadata) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) @@ -168,7 +163,7 @@ def test_electrode_creation_reconfigured(): metadata["ntrode_electrode_group_channel_map"][-1]["map"]["31"] = 126 # create the hw_channel map using the reconfig header - trodesconf_file = path + "/test_data/reconfig_probeDevice.trodesconf" + trodesconf_file = data_path / "reconfig_probeDevice.trodesconf" rec_header = convert_rec_header.read_header(trodesconf_file) hw_channel_map = convert_rec_header.make_hw_channel_map( metadata, rec_header.find("SpikeConfiguration") @@ -235,7 +230,7 @@ def test_electrode_creation_reconfigured(): def test_add_tasks(): # Set up test data - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) @@ -289,12 +284,12 @@ def test_add_associated_files(capsys): # Create a logger logger = convert.setup_logger("convert", "testing.log") # Set up test data - metadata_path = path + "/test_data/20230622_sample_metadata.yml" + metadata_path = data_path / "20230622_sample_metadata.yml" metadata, _ = convert_yaml.load_metadata(metadata_path, []) nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) # Change path of files to be relative to this directory for assoc_meta in metadata["associated_files"]: - assoc_meta["path"] = path + "/test_data/" + assoc_meta["path"] = str(data_path / assoc_meta["name"]) # call the function to test convert_yaml.add_associated_files(nwbfile, metadata) assert "associated_files" in nwbfile.processing @@ -316,7 +311,7 @@ def test_add_associated_files(capsys): # Test printed errormessage for missing file # Change path of files to be relative to this directory - metadata["associated_files"][0]["path"] = "" + metadata["associated_files"][0]["path"] = "bad_path.txt" metadata["associated_files"][0]["name"] = "bad_path.txt" metadata["associated_files"].pop(1) convert_yaml.add_associated_files(nwbfile, metadata) @@ -331,9 +326,42 @@ def test_add_associated_files(capsys): break assert printed_warning - def test_add_associated_video_files(): - # Set up test data - metadata_path = path + "/test_data/20230622_sample_metadata.yml" - metadata, _ = convert_yaml.load_metadata(metadata_path, []) - nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) - return + +def test_add_associated_video_files(): + # Set up test data + metadata_path = data_path / "20230622_sample_metadata.yml" + metadata, _ = convert_yaml.load_metadata(metadata_path, []) + nwbfile = convert_yaml.initialize_nwb(metadata, default_test_xml_tree()) + convert_yaml.add_cameras(nwbfile, metadata) + + # make session_df + path_df = get_file_info(data_path) + session_df = path_df[(path_df.animal == "sample")] + + # make temp video directory + video_directory = data_path / "temp_video_directory" + if not os.path.exists(video_directory): + os.makedirs(video_directory) + + # Call the function to be tested + add_associated_video_files( + nwbfile, metadata, session_df, video_directory=str(video_directory) + ) + assert "video_files" in nwbfile.processing + assert "video" in nwbfile.processing["video_files"].data_interfaces + assert len(nwbfile.processing["video_files"]["video"].time_series) == 2 + + for video, video_meta in zip( + nwbfile.processing["video_files"]["video"].time_series, + metadata["associated_video_files"], + ): + video = nwbfile.processing["video_files"]["video"][video] + assert video.name == video_meta["name"] + assert video.format == "external" + assert video.timestamps_unit == "seconds" + assert video.timestamps is not None + assert isinstance(video.device, CameraDevice) + assert (video_directory / video.external_file[0]).exists() + + # cleanup + shutil.rmtree(video_directory) diff --git a/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml b/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml index 9531e6b..990c3f8 100644 --- a/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml +++ b/src/spikegadgets_to_nwb/tests/test_data/20230622_sample_metadata.yml @@ -62,20 +62,11 @@ associated_files: path: path/ task_epochs: 2 associated_video_files: - - name: video1 + - name: 20230622_sample_01_a1.1.h264 camera_id: 0 task_epochs: 1 - - name: video3 + - name: 20230622_sample_02_a1.1.h264 camera_id: 0 - task_epochs: 3 - - name: video5 - camera_id: 0 - task_epochs: 5 - - name: video2 - camera_id: 1 - task_epochs: 2 - - name: video4 - camera_id: 1 task_epochs: 2 units: analog: "-1" diff --git a/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml b/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml new file mode 100644 index 0000000..f0a8663 --- /dev/null +++ b/src/spikegadgets_to_nwb/tests/test_data/nonptp_metadata.yml @@ -0,0 +1,1225 @@ + +experiment_description: Hippocampus content feedback +experimenter_name: Michael Coulter +institution: University of California, San Francisco +lab: Loren Frank +raw_data_to_volts: 1.95e-07 +session_description: Hippocampus content feedback +session_id: ginny_20211027 +subject: + description: Long Evans Rat + genotype: Wild Type + sex: Male + species: Rat + subject_id: ginny + weight: Unknown + date_of_birth: 2000-01-01T00:00:00.000Z + +associated_files: +- description: Statescript log run 1 + name: statescript_r1 + path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_02_r1.stateScriptLog + task_epochs: + - 2 +- description: Statescript log run 2 + name: statescript_r2 + path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_04_r2.stateScriptLog + task_epochs: + - 4 +- description: Statescript log run 3 + name: statescript_r3 + path: /cumulus/mcoulter/ginny/raw/20211027/20211027_ginny_06_r3.stateScriptLog + task_epochs: + - 6 + +associated_video_files: +- name: 20211027_ginny_01_s1.1.h264 + camera_id : 0 + task_epochs: 1 +- name: 20211027_ginny_03_s2.1.h264 + camera_id : 0 + task_epochs: 3 +- name: 20211027_ginny_05_s3.1.h264 + camera_id : 0 + task_epochs: 5 +- name: 20211027_ginny_07_s4.1.h264 + camera_id : 0 + task_epochs: 7 +- name: 20211027_ginny_02_r1.1.h264 + camera_id : 1 + task_epochs: 2 +- name: 20211027_ginny_04_r2.1.h264 + camera_id : 1 + task_epochs: 4 +- name: 20211027_ginny_06_r3.1.h264 + camera_id : 1 + task_epochs: 6 + +tasks: +- camera_id: + - 1 + task_description: training session + task_epochs: + - 2 + - 4 + - 6 + task_name: Content feedback + task_environment: n/a +- camera_id: + - 0 + task_description: sleep + task_epochs: + - 1 + - 3 + - 5 + - 7 + task_name: Sleep + task_environment: n/a +times_period_multiplier: 1.5 +units: + analog: unspecified + behavioral_events: unspecified + +cameras: +- camera_name: MEC_sleep_camera + id: 0 + lens: unknown2 + manufacturer: unknown2 + meters_per_pixel: 0.00055 + model: unknown2 +- camera_name: MEC_run_camera + id: 1 + lens: unknown + manufacturer: unknown + meters_per_pixel: 0.0022 + model: unknown + +behavioral_events: +- name: Arm1_poke + description: Din13 +- name: Arm2_poke + description: Din9 +- name: CenterWell_poke + description: Din7 +- name: BackWell_poke + description: Din10 +- name: Arm1_light + description: Dout13 +- name: Arm2_light + description: Dout9 +- name: CenterWell_light + description: Dout7 +- name: BackWell_light + description: Dout10 +- name: Arm1_milk_pump + description: Dout11 +- name: Arm2_milk_pump + description: Dout12 +- name: CenterWell_milk_pump + description: Dout14 +- name: BackWell_milk_pump + description: Dout8 +- name: CamerasyncRun camera ticks + description: Din15 +- name: CamerasyncSleep camera ticks + description: Din16 + +data_acq_device: +- adc_circuit: Intan + amplifier: Intan + system: SpikeGadgets +default_header_file_path: default_header.xml +device: + name: + - Trodes +electrode_groups: +- description: tetrode + device_type: tetrode_12.5 + id: 0 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 1 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 2 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 3 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 4 + location: '' + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 5 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 6 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 7 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 8 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 9 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 10 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 11 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 12 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 13 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 14 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 15 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 16 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 17 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 18 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 19 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 20 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 21 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 22 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 23 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 24 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 25 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 26 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 27 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 28 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 29 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 30 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 31 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 32 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 33 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 34 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 35 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 36 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 37 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 38 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 39 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 40 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 41 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 42 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 43 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 44 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 45 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 46 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 47 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 48 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 49 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 50 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 51 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 52 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 53 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 54 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 55 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 56 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 57 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 58 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 59 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 60 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 61 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 62 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um +- description: tetrode + device_type: tetrode_12.5 + id: 63 + location: ca1 + targeted_location: CA1 + targeted_x: 0.0 + targeted_y: 0.0 + targeted_z: 0.0 + units: um + +ntrode_electrode_group_channel_map: +- bad_channels: [] + electrode_group_id: 0 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 1 +- bad_channels: [0] + electrode_group_id: 1 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 2 +- bad_channels: [] + electrode_group_id: 2 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 3 +- bad_channels: [] + electrode_group_id: 3 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 4 +- bad_channels: [] + electrode_group_id: 4 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 5 +- bad_channels: [] + electrode_group_id: 5 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 6 +- bad_channels: [] + electrode_group_id: 6 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 7 +- bad_channels: [] + electrode_group_id: 7 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 8 +- bad_channels: [] + electrode_group_id: 8 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 9 +- bad_channels: [] + electrode_group_id: 9 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 10 +- bad_channels: [] + electrode_group_id: 10 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 11 +- bad_channels: [] + electrode_group_id: 11 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 12 +- bad_channels: [] + electrode_group_id: 12 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 13 +- bad_channels: [] + electrode_group_id: 13 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 14 +- bad_channels: [] + electrode_group_id: 14 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 15 +- bad_channels: [] + electrode_group_id: 15 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 16 +- bad_channels: [] + electrode_group_id: 16 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 17 +- bad_channels: [] + electrode_group_id: 17 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 18 +- bad_channels: [] + electrode_group_id: 18 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 19 +- bad_channels: [] + electrode_group_id: 19 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 20 +- bad_channels: [] + electrode_group_id: 20 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 21 +- bad_channels: [] + electrode_group_id: 21 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 22 +- bad_channels: [] + electrode_group_id: 22 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 23 +- bad_channels: [] + electrode_group_id: 23 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 24 +- bad_channels: [] + electrode_group_id: 24 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 25 +- bad_channels: [] + electrode_group_id: 25 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 26 +- bad_channels: [] + electrode_group_id: 26 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 27 +- bad_channels: [] + electrode_group_id: 27 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 28 +- bad_channels: [] + electrode_group_id: 28 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 29 +- bad_channels: [] + electrode_group_id: 29 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 30 +- bad_channels: [] + electrode_group_id: 30 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 31 +- bad_channels: [] + electrode_group_id: 31 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 32 +- bad_channels: [] + electrode_group_id: 32 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 33 +- bad_channels: [] + electrode_group_id: 33 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 34 +- bad_channels: [] + electrode_group_id: 34 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 35 +- bad_channels: [] + electrode_group_id: 35 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 36 +- bad_channels: [0] + electrode_group_id: 36 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 37 +- bad_channels: [] + electrode_group_id: 37 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 38 +- bad_channels: [] + electrode_group_id: 38 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 39 +- bad_channels: [] + electrode_group_id: 39 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 40 +- bad_channels: [2] + electrode_group_id: 40 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 41 +- bad_channels: [] + electrode_group_id: 41 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 42 +- bad_channels: [] + electrode_group_id: 42 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 43 +- bad_channels: [] + electrode_group_id: 43 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 44 +- bad_channels: [] + electrode_group_id: 44 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 45 +- bad_channels: [] + electrode_group_id: 45 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 46 +- bad_channels: [] + electrode_group_id: 46 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 47 +- bad_channels: [] + electrode_group_id: 47 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 48 +- bad_channels: [] + electrode_group_id: 48 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 49 +- bad_channels: [] + electrode_group_id: 49 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 50 +- bad_channels: [] + electrode_group_id: 50 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 51 +- bad_channels: [] + electrode_group_id: 51 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 52 +- bad_channels: [] + electrode_group_id: 52 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 53 +- bad_channels: [] + electrode_group_id: 53 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 54 +- bad_channels: [] + electrode_group_id: 54 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 55 +- bad_channels: [] + electrode_group_id: 55 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 56 +- bad_channels: [] + electrode_group_id: 56 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 57 +- bad_channels: [] + electrode_group_id: 57 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 58 +- bad_channels: [] + electrode_group_id: 58 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 59 +- bad_channels: [] + electrode_group_id: 59 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 60 +- bad_channels: [] + electrode_group_id: 60 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 61 +- bad_channels: [] + electrode_group_id: 61 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 62 +- bad_channels: [] + electrode_group_id: 62 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 63 +- bad_channels: [] + electrode_group_id: 63 + map: + '0': 0 + '1': 1 + '2': 2 + '3': 3 + ntrode_id: 64 diff --git a/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py b/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py new file mode 100644 index 0000000..6cad848 --- /dev/null +++ b/src/spikegadgets_to_nwb/tests/test_data/test_metadata_dict_samples.py @@ -0,0 +1,212 @@ +import pytest +import copy + +basic_data = { + "experimenter_name": ["michael jackson"], + "lab": "Loren Frank Lab", + "institution": "University of California, San Francisco", + "experiment_description": "making of thriller", + "session_description": "make an album like the nutcracker", + "session_id": "6", + "keywords": ["best"], + "subject": { + "description": "Long-Evans Rat", + "genotype": "Wild Type", + "sex": "M", + "species": "Rattus norvegicus", + "subject_id": "1", + "date_of_birth": "2023-07-24T00:00:00.000Z", + "weight": 100, + }, + "data_acq_device": [ + { + "name": "SpikeGadgets", + "system": "SpikeGadgets", + "amplifier": "Intan", + "adc_circuit": "Intan", + } + ], + "cameras": [], + "tasks": [], + "associated_files": [], + "associated_video_files": [], + "units": {"analog": "1", "behavioral_events": "1"}, + "times_period_multiplier": 1, + "raw_data_to_volts": 1, + "default_header_file_path": "epic/michaeljackson/thriller", + "behavioral_events": [], + "device": {"name": ["Trodes"]}, + "electrode_groups": [], + "ntrode_electrode_group_channel_map": [], +} + +basic_data_with_optional_arrays = { + "experimenter_name": ["michael jackson"], + "lab": "Loren Frank Lab", + "institution": "University of California, San Francisco", + "experiment_description": "making of thriller", + "session_description": "make an album like the nutcracker", + "session_id": "6", + "keywords": ["best"], + "subject": { + "description": "Long-Evans Rat", + "genotype": "Wild Type", + "sex": "M", + "species": "Rattus norvegicus", + "subject_id": "1", + "date_of_birth": "2023-07-24T00:00:00.000Z", + "weight": 100, + }, + "data_acq_device": [ + { + "name": "SpikeGadgets", + "system": "SpikeGadgets", + "amplifier": "Intan", + "adc_circuit": "Intan", + } + ], + "cameras": [ + { + "id": 10, + "meters_per_pixel": 1, + "manufacturer": "Epic Record", + "model": "555", + "lens": "MJ lens", + "camera_name": "MJ cam", + }, + ], + "tasks": [], + "associated_files": [ + { + "name": "Michael Jackson", + "description": "Thriller25", + "path": "Hard work", + "task_epochs": 0, + }, + { + "name": "Michael Jackson2", + "description": "HIStory", + "path": "Making/a/statement", + "task_epochs": 1, + }, + ], + "associated_video_files": [ + { + "name": "Michael Jackson", + "camera_id": 1, + "task_epochs": 1, + } + ], + "units": {"analog": "1", "behavioral_events": "1"}, + "times_period_multiplier": 1, + "raw_data_to_volts": 1, + "default_header_file_path": "epic/michaeljackson/thriller", + "behavioral_events": [ + { + "description": "Din555", + "name": "M. Joe Jackson", + } + ], + "device": {"name": ["Trodes"]}, + "electrode_groups": [], + "ntrode_electrode_group_channel_map": [], +} + +empty_experimenter_name = copy.deepcopy(basic_data) +empty_experimenter_name["experimenter_name"] = [] + +string_as_experimenter_name = copy.deepcopy(basic_data) +string_as_experimenter_name["experimenter_name"] = "" + +empty_lab = copy.deepcopy(basic_data) +empty_lab["lab"] = "" + +empty_institution = copy.deepcopy(basic_data) +empty_institution["institution"] = "" + +empty_experiment_description = copy.deepcopy(basic_data) +empty_experiment_description["experiment_description"] = "" + +empty_session_description = copy.deepcopy(basic_data) +empty_session_description["session_description"] = "" + +empty_session_id = copy.deepcopy(basic_data) +empty_session_id["session_id"] = "" + +empty_keywords = copy.deepcopy(basic_data) +empty_keywords["keywords"] = [] + +keywords_array_with_empty_item = copy.deepcopy(basic_data) +keywords_array_with_empty_item["keywords"] = [""] + +not_array_keywords = copy.deepcopy(basic_data) +not_array_keywords["keywords"] = "test" + +subject_with_empty_values = copy.deepcopy(basic_data) +subject_with_empty_values["subject"] = { + "description": "", + "genotype": "", + "sex": "", + "species": "", + "subject_id": "", + "date_of_birth": "", + "weight": -1, +} + +empty_subject = copy.deepcopy(basic_data) +empty_subject["subject"] = {} + +subject_with_invalid_sex = copy.deepcopy(basic_data) +subject_with_invalid_sex["subject"] = { + "description": "Long-Evans Rat", + "genotype": "Wild Type", + "sex": "m", + "species": "Rattus norvegicus", + "subject_id": "1", + "date_of_birth": "2023-07-24T00:00:00.000Z", + "weight": 100, +} + +subject_with_invalid_date = copy.deepcopy(basic_data) +subject_with_invalid_date["subject"] = { + "description": "Long-Evans Rat", + "genotype": "Wild Type", + "sex": "M", + "species": "Rattus norvegicus", + "subject_id": "1", + "date_of_birth": "2023-01-04", + "weight": 100, +} + +data_acq_device_with_no_values = copy.deepcopy(basic_data) +data_acq_device_with_no_values["data_acq_device"] = [ + {"name": "", "system": "", "amplifier": "", "adc_circuit": ""} +] + +empty_data_acq_device = copy.deepcopy(basic_data) +empty_data_acq_device["data_acq_device"] = [] + +empty_units = copy.deepcopy(basic_data) +empty_units["units"] = {} + +invalid_times_period_multiplier = copy.deepcopy(basic_data) +invalid_times_period_multiplier["times_period_multiplier"] = "a" + +invalid_raw_data_to_volts = copy.deepcopy(basic_data) +invalid_raw_data_to_volts["raw_data_to_volts"] = "a" + +invalid_default_header_file_path = copy.deepcopy(basic_data) +invalid_default_header_file_path["default_header_file_path"] = None + +empty_device_name = copy.deepcopy(basic_data) +empty_device_name["device"] = {} + +basic_ntrode_electrode_group_channel_map = copy.deepcopy(basic_data) +basic_ntrode_electrode_group_channel_map["ntrode_electrode_group_channel_map"] = [ + { + "ntrode_id": "a", + "electrode_group_id": "z", + "bad_channels": ["z"], + "map": {"0": "0", "1": "t", "2": "a", "3": -3}, + } +] diff --git a/src/spikegadgets_to_nwb/tests/test_metadata_validation.py b/src/spikegadgets_to_nwb/tests/test_metadata_validation.py new file mode 100644 index 0000000..003e858 --- /dev/null +++ b/src/spikegadgets_to_nwb/tests/test_metadata_validation.py @@ -0,0 +1,25 @@ +import copy +import datetime +from unittest.mock import MagicMock, patch +from spikegadgets_to_nwb.metadata_validation import ( + validate, + _get_nwb_json_schema_path, +) +from spikegadgets_to_nwb.tests.test_data import test_metadata_dict_samples + + +def test_path_to_json_schema_is_correct(): + path = _get_nwb_json_schema_path() + json_schema_file = "nwb_schema.json" + + assert json_schema_file in path + + +@patch("spikegadgets_to_nwb.metadata_validation._get_json_schema") +@patch("jsonschema.Draft202012Validator") +def test_verify_validation_called(jsonValidator, getSchema): + basic_test_data = copy.deepcopy(test_metadata_dict_samples.basic_data) + basic_test_data["subject"]["date_of_birth"] = datetime.datetime.now().isoformat() + validate(basic_test_data) + assert getSchema.call_count == 1 + assert jsonValidator.call_count == 1 diff --git a/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py b/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py index 7054c1f..4aff4a5 100644 --- a/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py +++ b/src/spikegadgets_to_nwb/tests/test_spikegadgets_io.py @@ -1,23 +1,13 @@ -import os -from pathlib import Path - import numpy as np from spikegadgets_to_nwb.spike_gadgets_raw_io import InsertedMemmap, SpikeGadgetsRawIO - -path = os.path.dirname(os.path.abspath(__file__)) +from spikegadgets_to_nwb.tests.utils import data_path def test_spikegadgets_raw_io_interpolation(): # Interpolation of dropped timestamp only done for ephys data and systime # get the path to the rec file - try: - # running on github - data_path = Path(os.environ.get("DOWNLOAD_DIR")) - except (TypeError, FileNotFoundError): - # running locally - data_path = Path(path + "/test_data") rec_file = data_path / "20230622_sample_01_a1.rec" # create the SpikeGadgetsRawIO object diff --git a/src/spikegadgets_to_nwb/tests/utils.py b/src/spikegadgets_to_nwb/tests/utils.py new file mode 100644 index 0000000..f97acbf --- /dev/null +++ b/src/spikegadgets_to_nwb/tests/utils.py @@ -0,0 +1,23 @@ +"""Set the path to the bulk test data dir and copies the yaml/config files there""" +import os +from pathlib import Path +import shutil + + +yaml_path = Path(__file__).resolve().parent / "test_data" + +data_path = os.environ.get("DOWNLOAD_DIR", None) +if data_path is not None: + # running from the GitHub Action workflow + data_path = Path(data_path) + shutil.copytree( + yaml_path, + data_path, + dirs_exist_ok=True, + ignore=shutil.ignore_patterns(*os.listdir(data_path)), # ignore existing + ) +else: + # running locally -- bulk test data is the same directory as the test yaml files + data_path = yaml_path + +del yaml_path From b2c4bdfd04e68a2dce1760d39c1119c1808e2f1d Mon Sep 17 00:00:00 2001 From: Eric Denovellis Date: Fri, 27 Oct 2023 14:57:27 -0700 Subject: [PATCH 09/16] Fix merge --- src/spikegadgets_to_nwb/convert_dios.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/spikegadgets_to_nwb/convert_dios.py b/src/spikegadgets_to_nwb/convert_dios.py index b28341e..8161c53 100644 --- a/src/spikegadgets_to_nwb/convert_dios.py +++ b/src/spikegadgets_to_nwb/convert_dios.py @@ -70,24 +70,26 @@ def add_dios(nwbfile: NWBFile, recfile: list[str], metadata: dict) -> None: prefix = "ECU_" break - # compile data for all dio channels in all files - all_timestamps = [np.array([], dtype=np.float64) for i in channel_name_map] - all_state_changes = [np.array([], dtype=np.float64) for i in channel_name_map] - for io in neo_io: - for i, channel_name in enumerate(channel_name_map): + for channel_name in channel_name_map: + # merge streams from multiple files + all_timestamps = [] + all_state_changes = [] + for io in neo_io: timestamps, state_changes = io.get_digitalsignal( stream_name, prefix + channel_name ) - all_timestamps[i] = np.concatenate((all_timestamps[i], timestamps)) - all_state_changes[i] = np.concatenate((all_state_changes[i], state_changes)) - # Add each channel as a behavioral event time series - for i, channel_name in enumerate(channel_name_map): + all_timestamps.append(timestamps) + all_state_changes.append(state_changes) + all_timestamps = np.concatenate(all_timestamps) + all_state_changes = np.concatenate(all_state_changes) + assert isinstance(all_timestamps[0], np.float64) + assert isinstance(all_timestamps, np.ndarray) ts = TimeSeries( name=channel_name_map[channel_name], description=channel_name, - data=all_state_changes[i], + data=all_state_changes, unit="-1", # TODO change to "N/A", - timestamps=all_timestamps[i], # TODO adjust timestamps + timestamps=all_timestamps, # TODO adjust timestamps ) beh_events.add_timeseries(ts) From f51ee5b349431c52695842eddb70a46f7451af10 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Fri, 27 Oct 2023 16:14:39 -0700 Subject: [PATCH 10/16] Use split iterators in add_epochs test --- .../tests/test_convert_intervals.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index 83a13d9..5cfcef6 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -18,15 +18,12 @@ def test_add_epochs(): file_info = get_file_info(data_path) rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file # get all streams for all files - neo_io = [ - SpikeGadgetsRawIO(filename=file) - for file in file_info[file_info.file_extension == ".rec"].full_path - ] - [neo_io.parse_header() for neo_io in neo_io] - + rec_dci = RecFileDataChunkIterator( + file_info[file_info.file_extension == ".rec"].full_path.to_list() + ) file_info = file_info[file_info.animal == "sample"] file_info = file_info[file_info.date == 20230622] - add_epochs(nwbfile, file_info, neo_io) + add_epochs(nwbfile, file_info, rec_dci.neo_io) epochs_df = nwbfile.epochs.to_dataframe() # load old nwb version io = NWBHDF5IO(rec_to_nwb_file, "r") From 8a4daf39918b5a7fcbb622b4ea844be514497847 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Fri, 27 Oct 2023 16:35:50 -0700 Subject: [PATCH 11/16] Restrict epochs before creating rec_dci in test_add_epochs --- src/spikegadgets_to_nwb/tests/test_convert_intervals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py index 5cfcef6..e30e765 100644 --- a/src/spikegadgets_to_nwb/tests/test_convert_intervals.py +++ b/src/spikegadgets_to_nwb/tests/test_convert_intervals.py @@ -16,13 +16,13 @@ def test_add_epochs(): metadata, _ = load_metadata(metadata_path, []) nwbfile = initialize_nwb(metadata, default_test_xml_tree()) file_info = get_file_info(data_path) + file_info = file_info[file_info.animal == "sample"] + file_info = file_info[file_info.date == 20230622] rec_to_nwb_file = data_path / "minirec20230622_.nwb" # comparison file # get all streams for all files rec_dci = RecFileDataChunkIterator( file_info[file_info.file_extension == ".rec"].full_path.to_list() ) - file_info = file_info[file_info.animal == "sample"] - file_info = file_info[file_info.date == 20230622] add_epochs(nwbfile, file_info, rec_dci.neo_io) epochs_df = nwbfile.epochs.to_dataframe() # load old nwb version From 139777edfe08af5f7473251c56d02f057dd43915 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 1 Nov 2023 08:03:33 -0700 Subject: [PATCH 12/16] Log print statement --- src/spikegadgets_to_nwb/convert_ephys.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikegadgets_to_nwb/convert_ephys.py b/src/spikegadgets_to_nwb/convert_ephys.py index 4104d6d..162b936 100644 --- a/src/spikegadgets_to_nwb/convert_ephys.py +++ b/src/spikegadgets_to_nwb/convert_ephys.py @@ -120,7 +120,7 @@ def __init__( j += MAXIMUM_ITERATOR_SIZE self.neo_io.pop(iterator_loc) self.neo_io[iterator_loc:iterator_loc] = sub_iterators - print("# iterators:", len(self.neo_io)) + logger.info("# iterators:", len(self.neo_io)) # NOTE: this will read all the timestamps from the rec file, which can be slow if timestamps is not None: self.timestamps = timestamps From cadf02492c33b07f72f1143a947a02cb7b33addf Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 1 Nov 2023 08:03:59 -0700 Subject: [PATCH 13/16] Log print statement --- src/spikegadgets_to_nwb/convert_ephys.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikegadgets_to_nwb/convert_ephys.py b/src/spikegadgets_to_nwb/convert_ephys.py index 162b936..53f2171 100644 --- a/src/spikegadgets_to_nwb/convert_ephys.py +++ b/src/spikegadgets_to_nwb/convert_ephys.py @@ -120,7 +120,7 @@ def __init__( j += MAXIMUM_ITERATOR_SIZE self.neo_io.pop(iterator_loc) self.neo_io[iterator_loc:iterator_loc] = sub_iterators - logger.info("# iterators:", len(self.neo_io)) + logger.info(f"# iterators: {len(self.neo_io)}") # NOTE: this will read all the timestamps from the rec file, which can be slow if timestamps is not None: self.timestamps = timestamps From ea8346f1c4a09eabc191d9c1490468b3fa2823a4 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 1 Nov 2023 08:11:09 -0700 Subject: [PATCH 14/16] Name int 16 conversion constant --- src/spikegadgets_to_nwb/spike_gadgets_raw_io.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index 0ce43fe..5d21874 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -13,7 +13,7 @@ _spike_channel_dtype, ) from scipy.stats import linregress - +INT_16_CONVERSION = 256 class SpikeGadgetsRawIO(BaseRawIO): extensions = ["rec"] @@ -526,7 +526,7 @@ def get_analogsignal_multiplexed(self, channel_names=None) -> np.ndarray: # read the data into int16 data = ( self._raw_memmap[:, data_offsets[:, 0]] - + self._raw_memmap[:, data_offsets[:, 0] + 1] * 256 + + self._raw_memmap[:, data_offsets[:, 0] + 1] * INT_16_CONVERSION ) # initialize the first row analog_multiplexed_data[0] = data[0] From 15cd4b3d6ca2107bc4f6b27589a8909dd3aea4f0 Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 1 Nov 2023 08:16:08 -0700 Subject: [PATCH 15/16] Fix linting --- src/spikegadgets_to_nwb/spike_gadgets_raw_io.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index 5d21874..91858f3 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -13,8 +13,10 @@ _spike_channel_dtype, ) from scipy.stats import linregress + INT_16_CONVERSION = 256 + class SpikeGadgetsRawIO(BaseRawIO): extensions = ["rec"] rawmode = "one-file" From d859f902c924de85964c593a61cd1dd743cfcfef Mon Sep 17 00:00:00 2001 From: Sam Bray Date: Wed, 1 Nov 2023 08:29:59 -0700 Subject: [PATCH 16/16] Use int 16 conversion variable --- src/spikegadgets_to_nwb/spike_gadgets_raw_io.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py index 91858f3..be06d1f 100644 --- a/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py +++ b/src/spikegadgets_to_nwb/spike_gadgets_raw_io.py @@ -614,7 +614,8 @@ def get_analogsignal_multiplexed_partial( # read the data into int16 data = ( self._raw_memmap[i_start:i_stop, data_offsets[:, 0]] - + self._raw_memmap[i_start:i_stop, data_offsets[:, 0] + 1] * 256 + + self._raw_memmap[i_start:i_stop, data_offsets[:, 0] + 1] + * INT_16_CONVERSION ) # initialize the first row analog_multiplexed_data[0] = data[0] @@ -920,7 +921,7 @@ def get_analogsignal_multiplexed(self, channel_names=None) -> np.ndarray: # read the data into int16 data = ( self._raw_memmap[:, data_offsets[:, 0]] - + self._raw_memmap[:, data_offsets[:, 0] + 1] * 256 + + self._raw_memmap[:, data_offsets[:, 0] + 1] * INT_16_CONVERSION ) # initialize the first row # if no previous state, assume first segment. Default to superclass behavior