From a5d8cb9cb2fa47f49185c94d45de542c1fd76843 Mon Sep 17 00:00:00 2001 From: Alessandra Trapani Date: Fri, 10 May 2024 10:57:17 +0200 Subject: [PATCH 1/4] re-structure nwbconverter --- README.md | 34 ++++---- .../benisty_2022/__init__.py | 2 - .../benisty_2022behaviorinterface.py | 25 ------ .../benisty_2022/benisty_2022nwbconverter.py | 58 ------------- src/higley_lab_to_nwb/lohani_2022/__init__.py | 1 + .../lohani_2022/interfaces/__init__.py | 2 + .../lohani_2022_imaginginterface.py} | 3 +- .../lohani_2022_spike2signals_interface.py} | 2 +- .../lohani_2022_convert_all_sessions.py} | 2 +- .../lohani_2022_convert_session.py} | 22 +++-- .../lohani_2022_metadata.yaml} | 0 .../lohani_2022_requirements.txt} | 0 .../lohani_2022/lohani_2022nwbconverter.py | 78 ++++++++++++++++++ .../metadata/lohani_2022_ophys_metadata.yaml | 20 +++++ .../notes/behavioral_signals.png | Bin .../notes/frame1.png | Bin .../notes/frame2.png | Bin .../notes/frame3.png | Bin .../notes/lohani_2022_notes.md} | 8 +- .../notes/ttl_signals.png | Bin .../tutorial/conversion_outline_diagram.png | Bin .../tutorial/tutorial.ipynb | 0 .../lohani_2022/utils/__init__.py | 1 + .../utils/lohani_2022_utils.py} | 0 24 files changed, 139 insertions(+), 119 deletions(-) delete mode 100644 src/higley_lab_to_nwb/benisty_2022/__init__.py delete mode 100644 src/higley_lab_to_nwb/benisty_2022/benisty_2022behaviorinterface.py delete mode 100644 src/higley_lab_to_nwb/benisty_2022/benisty_2022nwbconverter.py create mode 100644 src/higley_lab_to_nwb/lohani_2022/__init__.py create mode 100644 src/higley_lab_to_nwb/lohani_2022/interfaces/__init__.py rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_imaginginterface.py => lohani_2022/interfaces/lohani_2022_imaginginterface.py} (98%) rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_spike2signals_interface.py => lohani_2022/interfaces/lohani_2022_spike2signals_interface.py} (99%) rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_convert_all_sessions.py => lohani_2022/lohani_2022_convert_all_sessions.py} (92%) rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_convert_session.py => lohani_2022/lohani_2022_convert_session.py} (88%) rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_metadata.yaml => lohani_2022/lohani_2022_metadata.yaml} (100%) rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_requirements.txt => lohani_2022/lohani_2022_requirements.txt} (100%) create mode 100644 src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py create mode 100644 src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/notes/behavioral_signals.png (100%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/notes/frame1.png (100%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/notes/frame2.png (100%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/notes/frame3.png (100%) rename src/higley_lab_to_nwb/{benisty_2022/notes/benisty_2022_notes.md => lohani_2022/notes/lohani_2022_notes.md} (97%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/notes/ttl_signals.png (100%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/tutorial/conversion_outline_diagram.png (100%) rename src/higley_lab_to_nwb/{benisty_2022 => lohani_2022}/tutorial/tutorial.ipynb (100%) create mode 100644 src/higley_lab_to_nwb/lohani_2022/utils/__init__.py rename src/higley_lab_to_nwb/{benisty_2022/benisty_2022_utils.py => lohani_2022/utils/lohani_2022_utils.py} (100%) diff --git a/README.md b/README.md index 6dbb088..483c77b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ We recommend that you install the package inside a [virtual environment](https:/ ### Running a specific conversion Once you have installed the package with pip, you can run any of the conversion scripts in a notebook or a python file: -https://github.com/catalystneuro/higley-lab-to-nwb//tree/main/src/benisty_2022/benisty_2022_conversion_script.py +https://github.com/catalystneuro/higley-lab-to-nwb//tree/main/src/lohani_2022/lohani_2022_conversion_script.py @@ -49,12 +49,12 @@ both of the methods above install the repository in [editable mode](https://pip. ### Running a specific conversion To run a specific conversion, you might need to install first some conversion specific dependencies that are located in each conversion directory: ``` -pip install -r src/higley_lab_to_nwb/benisty_2022/benisty_2022_requirements.txt +pip install -r src/higley_lab_to_nwb/lohani_2022/lohani_2022_requirements.txt ``` You can run a specific conversion with the following command: ``` -python src/higley_lab_to_nwb/benisty_2022/benisty_2022_conversion_script.py +python src/higley_lab_to_nwb/lohani_2022/lohani_2022_conversion_script.py ``` ## Repository structure @@ -70,26 +70,26 @@ Each conversion is organized in a directory of its own in the `src` directory: └── src ├── higley_lab_to_nwb │ ├── conversion_directory_1 - │ └── benisty_2022 - │ ├── benisty_2022behaviorinterface.py - │ ├── benisty_2022_convert_session.py - │ ├── benisty_2022_metadata.yml - │ ├── benisty_2022nwbconverter.py - │ ├── benisty_2022_requirements.txt - │ ├── benisty_2022_notes.md + │ └── lohani_2022 + │ ├── lohani_2022behaviorinterface.py + │ ├── lohani_2022_convert_session.py + │ ├── lohani_2022_metadata.yml + │ ├── lohani_2022nwbconverter.py + │ ├── lohani_2022_requirements.txt + │ ├── lohani_2022_notes.md │ └── __init__.py │ ├── conversion_directory_b └── __init__.py - For example, for the conversion `benisty_2022` you can find a directory located in `src/higley-lab-to-nwb/benisty_2022`. Inside each conversion directory you can find the following files: + For example, for the conversion `lohani_2022` you can find a directory located in `src/higley-lab-to-nwb/lohani_2022`. Inside each conversion directory you can find the following files: -* `benisty_2022_convert_sesion.py`: this script defines the function to convert one full session of the conversion. -* `benisty_2022_requirements.txt`: dependencies specific to this conversion. -* `benisty_2022_metadata.yml`: metadata in yaml format for this specific conversion. -* `benisty_2022behaviorinterface.py`: the behavior interface. Usually ad-hoc for each conversion. -* `benisty_2022nwbconverter.py`: the place where the `NWBConverter` class is defined. -* `benisty_2022_notes.md`: notes and comments concerning this specific conversion. +* `lohani_2022_convert_sesion.py`: this script defines the function to convert one full session of the conversion. +* `lohani_2022_requirements.txt`: dependencies specific to this conversion. +* `lohani_2022_metadata.yml`: metadata in yaml format for this specific conversion. +* `lohani_2022behaviorinterface.py`: the behavior interface. Usually ad-hoc for each conversion. +* `lohani_2022nwbconverter.py`: the place where the `NWBConverter` class is defined. +* `lohani_2022_notes.md`: notes and comments concerning this specific conversion. The directory might contain other files that are necessary for the conversion but those are the central ones. diff --git a/src/higley_lab_to_nwb/benisty_2022/__init__.py b/src/higley_lab_to_nwb/benisty_2022/__init__.py deleted file mode 100644 index 1a8babf..0000000 --- a/src/higley_lab_to_nwb/benisty_2022/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .benisty_2022behaviorinterface import Benisty2022BehaviorInterface -from .benisty_2022nwbconverter import Benisty2022NWBConverter diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022behaviorinterface.py b/src/higley_lab_to_nwb/benisty_2022/benisty_2022behaviorinterface.py deleted file mode 100644 index 93276fa..0000000 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022behaviorinterface.py +++ /dev/null @@ -1,25 +0,0 @@ -"""Primary class for converting experiment-specific behavior.""" -from pynwb.file import NWBFile - -from neuroconv.basedatainterface import BaseDataInterface -from neuroconv.utils import DeepDict - -class Benisty2022BehaviorInterface(BaseDataInterface): - """Behavior interface for benisty_2022 conversion""" - - keywords = ["behavior"] - - def __init__(self): - # This should load the data lazily and prepare variables you need - pass - - def get_metadata(self) -> DeepDict: - # Automatically retrieve as much metadata as possible from the source files available - metadata = super().get_metadata() - - return metadata - - def add_to_nwbfile(self, nwbfile: NWBFile, metadata: dict): - # All the custom code to add the data the nwbfile - - raise NotImplementedError() diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022nwbconverter.py b/src/higley_lab_to_nwb/benisty_2022/benisty_2022nwbconverter.py deleted file mode 100644 index 11a5644..0000000 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022nwbconverter.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Primary NWBConverter class for this dataset.""" - -from neuroconv import NWBConverter -from higley_lab_to_nwb.benisty_2022.benisty_2022_spike2signals_interface import Benisty2022Spike2SignalsInterface -from higley_lab_to_nwb.benisty_2022.benisty_2022_imaginginterface import Benisty2022ImagingInterface - -from neuroconv.datainterfaces import VideoInterface, FacemapInterface - - -class Benisty2022NWBConverter(NWBConverter): - """Primary conversion class.""" - - data_interface_classes = dict( - Spike2Signals=Benisty2022Spike2SignalsInterface, - Video=VideoInterface, - FacemapInterface=FacemapInterface, - ImagingBlueExcitationGreenChannel=Benisty2022ImagingInterface, - ImagingBlueExcitationRedChannel=Benisty2022ImagingInterface, - ImagingVioletExcitationGreenChannel=Benisty2022ImagingInterface, - ImagingVioletExcitationRedChannel=Benisty2022ImagingInterface, - ImagingGreenExcitationGreenChannel=Benisty2022ImagingInterface, - ImagingGreenExcitationRedChannel=Benisty2022ImagingInterface, - ) - - def temporally_align_data_interfaces(self): - ttlsignal_interface = self.data_interface_objects["Spike2Signals"] - # Synch imaging - excitation_types = ["Blue", "Violet", "Green"] - for excitation_type in excitation_types: - imaging_interface_green = self.data_interface_objects[f"Imaging{excitation_type}ExcitationGreenChannel"] - imaging_interface_red = self.data_interface_objects[f"Imaging{excitation_type}ExcitationRedChannel"] - stream_id = next( - ( - stream_id - for stream_id, stream_name in ttlsignal_interface.ttl_stream_ids_to_names_map.items() - if stream_name == f"TTLSignal{excitation_type}LED" - ), - None, - ) - ttl_times = ttlsignal_interface.get_event_times_from_ttl(stream_id=stream_id) - imaging_interface_green.set_aligned_starting_time(ttl_times[0]) - imaging_interface_red.set_aligned_starting_time(ttl_times[0]) - - # Synch behaviour - video_interface = self.data_interface_objects["Video"] - facemap_interface = self.data_interface_objects["FacemapInterface"] - video_interface._timestamps = video_interface.get_timestamps() - stream_id = next( - ( - stream_id - for stream_id, stream_name in ttlsignal_interface.ttl_stream_ids_to_names_map.items() - if stream_name == "TTLSignalPupilCamera" - ), - None, - ) - ttl_times = ttlsignal_interface.get_event_times_from_ttl(stream_id=stream_id) - video_interface.set_aligned_starting_time(ttl_times[0]) - facemap_interface.set_aligned_starting_time(ttl_times[0]) diff --git a/src/higley_lab_to_nwb/lohani_2022/__init__.py b/src/higley_lab_to_nwb/lohani_2022/__init__.py new file mode 100644 index 0000000..f478845 --- /dev/null +++ b/src/higley_lab_to_nwb/lohani_2022/__init__.py @@ -0,0 +1 @@ +from .lohani_2022nwbconverter import Lohani2022NWBConverter diff --git a/src/higley_lab_to_nwb/lohani_2022/interfaces/__init__.py b/src/higley_lab_to_nwb/lohani_2022/interfaces/__init__.py new file mode 100644 index 0000000..c840d3e --- /dev/null +++ b/src/higley_lab_to_nwb/lohani_2022/interfaces/__init__.py @@ -0,0 +1,2 @@ +from .lohani_2022_imaginginterface import Lohani2022MesoscopicImagingInterface +from .lohani_2022_spike2signals_interface import Lohani2022Spike2SignalsInterface diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_imaginginterface.py b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py similarity index 98% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_imaginginterface.py rename to src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py index 603681e..72ec17a 100644 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_imaginginterface.py +++ b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py @@ -11,8 +11,7 @@ from neuroconv.utils.dict import DeepDict from neuroconv.datainterfaces.ophys.baseimagingextractorinterface import BaseImagingExtractorInterface from roiextractors.extractors.tiffimagingextractors.tiffimagingextractor import TiffImagingExtractor - -class Benisty2022ImagingInterface(BaseImagingExtractorInterface): +class Lohani2022MesoscopicImagingInterface(BaseImagingExtractorInterface): """Data Interface for writing imaging data for the Higley lab to NWB file using TiffImagingExtractor.""" Extractor = TiffImagingExtractor diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_spike2signals_interface.py b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_spike2signals_interface.py similarity index 99% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_spike2signals_interface.py rename to src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_spike2signals_interface.py index 5e9b94f..de8bd5b 100644 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_spike2signals_interface.py +++ b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_spike2signals_interface.py @@ -38,7 +38,7 @@ def _get_stream_gain_offset(file_path: FilePathType, stream_id: str) -> List[str return gain, offset -class Benisty2022Spike2SignalsInterface(BaseDataInterface): +class Lohani2022Spike2SignalsInterface(BaseDataInterface): """ Data interface class for converting Spike2 analogue signals from CED (Cambridge Electronic Design) using the :py:class:`~spikeinterface.extractors.CedRecordingExtractor`.""" diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_all_sessions.py b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_all_sessions.py similarity index 92% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_all_sessions.py rename to src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_all_sessions.py index e8eb859..14e4702 100644 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_all_sessions.py +++ b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_all_sessions.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Union import os -from benisty_2022_convert_session import session_to_nwb +from .lohani_2022_convert_session import session_to_nwb diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_session.py b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py similarity index 88% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_session.py rename to src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py index 306745b..c33d6ad 100644 --- a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_convert_session.py +++ b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py @@ -3,9 +3,9 @@ from pathlib import Path from typing import Union from neuroconv.utils import load_dict_from_file, dict_deep_update -from higley_lab_to_nwb.benisty_2022 import Benisty2022NWBConverter -from higley_lab_to_nwb.benisty_2022.benisty_2022_spike2signals_interface import get_streams -from higley_lab_to_nwb.benisty_2022.benisty_2022_utils import create_tiff_stack, read_session_start_time +from higley_lab_to_nwb.lohani_2022 import Lohani2022NWBConverter +from higley_lab_to_nwb.lohani_2022.interfaces.lohani_2022_spike2signals_interface import get_streams +from higley_lab_to_nwb.lohani_2022.utils.lohani_2022_utils import create_tiff_stack, read_session_start_time import os import glob @@ -19,12 +19,12 @@ def session_to_nwb( output_dir_path = output_dir_path / "nwb_stub" output_dir_path.mkdir(parents=True, exist_ok=True) - nwbfile_path = output_dir_path / f"{session_id}.nwb" + nwbfile_path = output_dir_path / f"{session_id}_new.nwb" source_data = dict() conversion_options = dict() - search_pattern = '_'.join(session_id.split("_")[:2]) + search_pattern = "_".join(session_id.split("_")[:2]) # Add Analog signals from Spike2 smrx_files = glob.glob(os.path.join(folder_path, f"{search_pattern}*.smrx")) @@ -121,7 +121,11 @@ def session_to_nwb( ) ) - converter = Benisty2022NWBConverter(source_data=source_data) + converter = Lohani2022NWBConverter( + source_data=source_data, + excitation_types=excitation_type_to_start_frame_index_mapping.keys(), + channels=channel_to_frame_side_mapping.keys(), + ) # Add datetime to conversion metadata = converter.get_metadata() @@ -132,7 +136,7 @@ def session_to_nwb( metadata["NWBFile"].update(session_id=session_id) # Update default metadata with the editable in the corresponding yaml file - editable_metadata_path = Path(__file__).parent / "benisty_2022_metadata.yaml" + editable_metadata_path = Path(__file__).parent / "lohani_2022_metadata.yaml" editable_metadata = load_dict_from_file(editable_metadata_path) metadata = dict_deep_update(metadata, editable_metadata) @@ -150,10 +154,10 @@ def session_to_nwb( output_dir_path = root_path / "Higley-conversion_nwb/" stub_test = True session_ids = os.listdir(data_dir_path) - session_id = '11222019_grabAM06_vis_stim' + session_id = "11222019_grabAM06_vis_stim" folder_path = data_dir_path / Path(session_id) session_to_nwb( - folder_path= folder_path, + folder_path=folder_path, output_dir_path=output_dir_path, session_id=session_id, stub_test=stub_test, diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_metadata.yaml b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_metadata.yaml similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_metadata.yaml rename to src/higley_lab_to_nwb/lohani_2022/lohani_2022_metadata.yaml diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_requirements.txt b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_requirements.txt similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_requirements.txt rename to src/higley_lab_to_nwb/lohani_2022/lohani_2022_requirements.txt diff --git a/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py b/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py new file mode 100644 index 0000000..5d1054b --- /dev/null +++ b/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py @@ -0,0 +1,78 @@ +"""Primary NWBConverter class for this dataset.""" + +from typing import Dict, List, Optional, Tuple, Union +from neuroconv import NWBConverter +from higley_lab_to_nwb.lohani_2022.interfaces.lohani_2022_spike2signals_interface import ( + Lohani2022Spike2SignalsInterface, +) +from higley_lab_to_nwb.lohani_2022.interfaces.lohani_2022_imaginginterface import Lohani2022MesoscopicImagingInterface + +from neuroconv.datainterfaces import VideoInterface, FacemapInterface +from neuroconv.datainterfaces.ophys.tiff.tiffdatainterface import TiffImagingInterface + + +class Lohani2022NWBConverter(NWBConverter): + """Primary conversion class.""" + + data_interface_classes = dict( + Spike2Signals=Lohani2022Spike2SignalsInterface, + Video=VideoInterface, + FacemapInterface=FacemapInterface, + ) + + def __init__( + self, + excitation_types: List[str], + channels: List[str], + source_data: Dict[str, dict], + verbose: bool = True, + ): + self.excitation_types = excitation_types + self.channels = channels + for excitation_type in excitation_types: + for channel in channels: + suffix = f"{excitation_type}Excitation{channel}Channel" + interface_name = f"Imaging{suffix}" + self.data_interface_classes[interface_name]=Lohani2022MesoscopicImagingInterface + + self.verbose = verbose + self._validate_source_data(source_data=source_data, verbose=self.verbose) + + self.data_interface_objects = { + name: data_interface(**source_data[name]) + for name, data_interface in self.data_interface_classes.items() + if name in source_data + } + + def temporally_align_data_interfaces(self): + ttlsignal_interface = self.data_interface_objects["Spike2Signals"] + # Synch imaging + for excitation_type in self.excitation_types: + for channel in self.channels: + imaging_interface = self.data_interface_objects[f"Imaging{excitation_type}Excitation{channel}Channel"] + stream_id = next( + ( + stream_id + for stream_id, stream_name in ttlsignal_interface.ttl_stream_ids_to_names_map.items() + if stream_name == f"TTLSignal{excitation_type}LED" + ), + None, + ) + ttl_times = ttlsignal_interface.get_event_times_from_ttl(stream_id=stream_id) + imaging_interface.set_aligned_starting_time(ttl_times[0]) + + # Synch behaviour + video_interface = self.data_interface_objects["Video"] + facemap_interface = self.data_interface_objects["FacemapInterface"] + video_interface._timestamps = video_interface.get_timestamps() + stream_id = next( + ( + stream_id + for stream_id, stream_name in ttlsignal_interface.ttl_stream_ids_to_names_map.items() + if stream_name == "TTLSignalPupilCamera" + ), + None, + ) + ttl_times = ttlsignal_interface.get_event_times_from_ttl(stream_id=stream_id) + video_interface.set_aligned_starting_time(ttl_times[0]) + facemap_interface.set_aligned_starting_time(ttl_times[0]) diff --git a/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml b/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml new file mode 100644 index 0000000..9c6f9f2 --- /dev/null +++ b/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml @@ -0,0 +1,20 @@ +Ophys: + Device: + - name: CustomMicroscope + description: "Camera Type: DUAL_DCAM, Camera Name: C13440-20C S/N: 301751 S/N: 300073" + manufacturer: Hamamatsu Inc. + ImagingPlane: + - name: ImagingPlaneChannel1 + excitation_lambda: 920.0 # in nm + location: STR + optical_channel: + - name: Channel 1 + description: The optical channel used to record cell bodies located in the striatum. + indicator: unknown # TODO collect from Shiva + - name: ImagingPlaneChannel2 + excitation_lambda: 1070.0 # in nm + location: STR + indicator: unknown # TODO collect from Shiva + optical_channel: + - name: Channel 2 + description: The optical channel used to record axons located in the striatum. \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/behavioral_signals.png b/src/higley_lab_to_nwb/lohani_2022/notes/behavioral_signals.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/notes/behavioral_signals.png rename to src/higley_lab_to_nwb/lohani_2022/notes/behavioral_signals.png diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/frame1.png b/src/higley_lab_to_nwb/lohani_2022/notes/frame1.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/notes/frame1.png rename to src/higley_lab_to_nwb/lohani_2022/notes/frame1.png diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/frame2.png b/src/higley_lab_to_nwb/lohani_2022/notes/frame2.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/notes/frame2.png rename to src/higley_lab_to_nwb/lohani_2022/notes/frame2.png diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/frame3.png b/src/higley_lab_to_nwb/lohani_2022/notes/frame3.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/notes/frame3.png rename to src/higley_lab_to_nwb/lohani_2022/notes/frame3.png diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/benisty_2022_notes.md b/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md similarity index 97% rename from src/higley_lab_to_nwb/benisty_2022/notes/benisty_2022_notes.md rename to src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md index 1507104..4e63c2b 100644 --- a/src/higley_lab_to_nwb/benisty_2022/notes/benisty_2022_notes.md +++ b/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md @@ -1,4 +1,4 @@ -# Notes concerning the benisty_2022 conversion +# Notes concerning the lohani_2022 conversion * dual mesoscopic and 2-photon imaging data, .tiff files with ScanImage format (custom microscope) --> only mesoscopic shared ([Raw Imaging](#raw-imaging)) * output for rigid transformation, hemodynamic corrections, and filtering --> missing * ROI segmentation (functional parcellation with Local Selective Spectral Clustering) --> missing @@ -9,7 +9,7 @@ * Synchronization signals, TTL pulses triggered by the different systems and recorded by the electrophysiology system (here used just for synch purpose), Spike2 output format. ([TTL signals](#ttl-signals)) ## Raw Imaging -### Method description from [Benisty 2024](https://www.nature.com/articles/s41593-023-01498-y): +### Method description from [Lohani 2024](https://www.nature.com/articles/s41593-023-01498-y): **Mesoscopic imaging** Widefield mesoscopic calcium imaging was performed using a Zeiss Axiozoom with a 1×, 0.25 NA objective with a 56 mm working distance (Zeiss). Epifluorescent excitation was provided by an LED bank (Spectra X Light Engine, Lumencor) using two output wavelengths: 395/25 (isosbestic for GRABACh3.0) and 575/25 nm (jRCaMP1b). Emitted light passed through a dual camera image splitter (TwinCam, Cairn Research) then through either a 525/50 (GRABACh3.0) or 630/75 (jRCaMP1b) emission filter (Chroma) before it reached two sCMOS cameras (Orca-Flash V3, Hamamatsu). Images were acquired at 512×512 resolution after 4× pixel binning, and each channel was acquired at 10 Hz with 20 ms exposure using HCImage software (Hamamatsu). @@ -112,7 +112,7 @@ Then using the 'BL_LED', 'UV_LED' and 'Green LED' we can separate the three imag ... ## Behavior -### Method description from [Benisty 2024](https://www.nature.com/articles/s41593-023-01498-y): +### Method description from [Lohani 2024](https://www.nature.com/articles/s41593-023-01498-y): #### Wheel motion All imaging was performed in awake, behaving mice that were head-fixed so that they could freely run on a cylindrical wheel. A magnetic angle sensor (Digikey) attached to the wheel continuously monitored wheel motion. Mice received at least three wheel-training habituation sessions before imaging to ensure consistent running bouts. During widefield imaging sessions, the face (including the pupil and whiskers) was illuminated with an IR LED bank and imaged with a miniature CMOS camera (Blackfly s-USB3, Flir) with a frame rate of 10 Hz using FlyCam2 software (Flir). ![alt text](behavioral_signals.png) @@ -192,5 +192,5 @@ Wheel position was obtained from a linear angle detector attached to the wheel a - _wpix_: ##Lab Code -* [Benisty 2024](https://github.com/cardin-higley-lab/Benisty_Higley_2023) +* [Lohani 2024](https://github.com/cardin-higley-lab/Lohani_Higley_2023) * [Lohani 2022](https://github.com/cardin-higley-lab/Lohani_Moberly_et_al_2022) \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2022/notes/ttl_signals.png b/src/higley_lab_to_nwb/lohani_2022/notes/ttl_signals.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/notes/ttl_signals.png rename to src/higley_lab_to_nwb/lohani_2022/notes/ttl_signals.png diff --git a/src/higley_lab_to_nwb/benisty_2022/tutorial/conversion_outline_diagram.png b/src/higley_lab_to_nwb/lohani_2022/tutorial/conversion_outline_diagram.png similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/tutorial/conversion_outline_diagram.png rename to src/higley_lab_to_nwb/lohani_2022/tutorial/conversion_outline_diagram.png diff --git a/src/higley_lab_to_nwb/benisty_2022/tutorial/tutorial.ipynb b/src/higley_lab_to_nwb/lohani_2022/tutorial/tutorial.ipynb similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/tutorial/tutorial.ipynb rename to src/higley_lab_to_nwb/lohani_2022/tutorial/tutorial.ipynb diff --git a/src/higley_lab_to_nwb/lohani_2022/utils/__init__.py b/src/higley_lab_to_nwb/lohani_2022/utils/__init__.py new file mode 100644 index 0000000..7c0a235 --- /dev/null +++ b/src/higley_lab_to_nwb/lohani_2022/utils/__init__.py @@ -0,0 +1 @@ +from .lohani_2022_utils import read_session_start_time, get_tiff_file_paths_sorted_by_channel, create_tiff_stack diff --git a/src/higley_lab_to_nwb/benisty_2022/benisty_2022_utils.py b/src/higley_lab_to_nwb/lohani_2022/utils/lohani_2022_utils.py similarity index 100% rename from src/higley_lab_to_nwb/benisty_2022/benisty_2022_utils.py rename to src/higley_lab_to_nwb/lohani_2022/utils/lohani_2022_utils.py From 2e917384cd4cf5ca37215a686110a8d0e82dffe5 Mon Sep 17 00:00:00 2001 From: Alessandra Trapani Date: Fri, 10 May 2024 14:36:23 +0200 Subject: [PATCH 2/4] add ophys metadata --- .../lohani_2022_imaginginterface.py | 58 ----------- .../lohani_2022_convert_session.py | 10 +- .../lohani_2022/lohani_2022nwbconverter.py | 2 - .../metadata/lohani_2022_ophys_metadata.yaml | 95 ++++++++++++++++--- 4 files changed, 91 insertions(+), 74 deletions(-) diff --git a/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py index 72ec17a..f83f890 100644 --- a/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py +++ b/src/higley_lab_to_nwb/lohani_2022/interfaces/lohani_2022_imaginginterface.py @@ -20,8 +20,6 @@ def __init__( self, file_path : FilePathType, sampling_frequency: float, - channel: str, - excitation_type: str, verbose: bool = True, ): """ @@ -33,8 +31,6 @@ def __init__( sampling_frequency : float verbose : bool, default: True """ - self.channel = channel - self.excitation_type = excitation_type super().__init__(file_path=file_path, sampling_frequency=sampling_frequency, verbose=verbose) def get_metadata_schema(self): @@ -44,58 +40,4 @@ def get_metadata_schema(self): def get_metadata(self) -> DeepDict: metadata = super().get_metadata(photon_series_type="OnePhotonSeries") - indicators = dict(Red="ACh3.0", Green="jRCaMP1b") - - excitation_lambdas = dict(Blue=470.0, Violet=395.0, Green=575.0) - - channel_metadata = { - "Green": { - "name": "Green", - "emission_lambda": 525.0, - "description": "Green channel of the microscope, 525/50 nm filter.", - }, - "Red": { - "name": "Red", - "emission_lambda": 630.0, - "description": "Red channel of the microscope, 630/75 nm filter.", - }, - }[self.channel] - - optical_channel_metadata = channel_metadata - - device_name = "CustomMicroscope" - metadata["Ophys"]["Device"][0].update( - name=device_name, - description="Camera Type: DUAL_DCAM, Camera Name: C13440-20C S/N: 301751 S/N: 300073", - manufacturer="Hamamatsu Inc.", - ) - - indicator = indicators[self.channel] - excitation_lambda = excitation_lambdas[self.excitation_type] - - suffix = f"{self.excitation_type}Excitation{self.channel}Channel" - imaging_plane_name = f"ImagingPlane{suffix}" - imaging_plane_metadata = metadata["Ophys"]["ImagingPlane"][0] - imaging_plane_metadata.update( - name=imaging_plane_name, - optical_channel=[optical_channel_metadata], - device=device_name, - excitation_lambda=excitation_lambda, - indicator=indicator, - imaging_rate=self.imaging_extractor.get_sampling_frequency(), - location="whole brain", # TODO check - # grid_spacing=grid_spacing, - # grid_spacing_unit="meters", - ) - - one_photon_series_metadata = metadata["Ophys"]["OnePhotonSeries"][0] - one_photon_series_metadata.update( - name=f"OnePhotonSeries{suffix}", - imaging_plane=imaging_plane_name, - description=f"imaging data acuired through the {self.channel} upon {self.excitation_type} light excitation", - unit="n.a.", - # field_of_view=field_of_view, - # dimension=image_size_in_pixels, - ) - return metadata diff --git a/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py index c33d6ad..9e2a5dd 100644 --- a/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py +++ b/src/higley_lab_to_nwb/lohani_2022/lohani_2022_convert_session.py @@ -31,6 +31,7 @@ def session_to_nwb( file_path = smrx_files[0] stream_ids, stream_names = get_streams(file_path=file_path) + # Define each smrx signal name TTLsignals_name_map = { stream_ids[stream_names == "BL_LED"][0]: "TTLSignalBlueLED", stream_ids[stream_names == "UV_LED"][0]: "TTLSignalVioletLED", @@ -74,7 +75,9 @@ def session_to_nwb( sampling_frequency = 10.0 photon_series_index = 0 + # Define a dictonary that for each excitation type associate the starting frame index excitation_type_to_start_frame_index_mapping = dict(Blue=0, Violet=1, Green=2) + # Define a dictonary that for each optical channel/filter associate the frame side channel_to_frame_side_mapping = dict(Green="right", Red="left") for excitation_type in excitation_type_to_start_frame_index_mapping: @@ -96,8 +99,6 @@ def session_to_nwb( source_data[interface_name] = { "file_path": tif_file_path, "sampling_frequency": sampling_frequency, - "channel": channel, - "excitation_type": excitation_type, } conversion_options[interface_name] = { "stub_test": stub_test, @@ -140,6 +141,11 @@ def session_to_nwb( editable_metadata = load_dict_from_file(editable_metadata_path) metadata = dict_deep_update(metadata, editable_metadata) + # Add ophys metadata + ophys_metadata_path = Path(__file__).parent / "metadata" / "lohani_2022_ophys_metadata.yaml" + ophys_metadata = load_dict_from_file(ophys_metadata_path) + metadata = dict_deep_update(metadata, ophys_metadata) + # Run conversion converter.run_conversion( metadata=metadata, nwbfile_path=nwbfile_path, conversion_options=conversion_options, overwrite=True diff --git a/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py b/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py index 5d1054b..0b6fbfa 100644 --- a/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py +++ b/src/higley_lab_to_nwb/lohani_2022/lohani_2022nwbconverter.py @@ -6,9 +6,7 @@ Lohani2022Spike2SignalsInterface, ) from higley_lab_to_nwb.lohani_2022.interfaces.lohani_2022_imaginginterface import Lohani2022MesoscopicImagingInterface - from neuroconv.datainterfaces import VideoInterface, FacemapInterface -from neuroconv.datainterfaces.ophys.tiff.tiffdatainterface import TiffImagingInterface class Lohani2022NWBConverter(NWBConverter): diff --git a/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml b/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml index 9c6f9f2..dd24767 100644 --- a/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml +++ b/src/higley_lab_to_nwb/lohani_2022/metadata/lohani_2022_ophys_metadata.yaml @@ -3,18 +3,89 @@ Ophys: - name: CustomMicroscope description: "Camera Type: DUAL_DCAM, Camera Name: C13440-20C S/N: 301751 S/N: 300073" manufacturer: Hamamatsu Inc. + OnePhotonSeries: + - name: OnePhotonSeriesBlueExcitationGreenChannel + description: Imaging data from Green channel recorded with Blue excitation. + imaging_plane: ImagingPlaneBlueExcitationGreenChannel + unit: n.a. + - name: OnePhotonSeriesVioletExcitationGreenChannel + description: Imaging data from Green channel recorded with Violet excitation. + imaging_plane: ImagingPlaneVioletExcitationGreenChannel + unit: n.a. + - name: OnePhotonSeriesGreenExcitationGreenChannel + description: Imaging data from Green channel recorded with Green excitation. + imaging_plane: ImagingPlaneGreenExcitationGreenChannel + unit: n.a. + - name: OnePhotonSeriesBlueExcitationRedChannel + description: Imaging data from Red channel recorded with Blue excitation. + imaging_plane: ImagingPlaneBlueExcitationRedChannel + unit: n.a. + - name: OnePhotonSeriesVioletExcitationRedChannel + description: Imaging data from Red channel recorded with Violet excitation. + imaging_plane: ImagingPlaneVioletExcitationRedChannel + unit: n.a. + - name: OnePhotonSeriesGreenExcitationRedChannel + description: Imaging data from Red channel recorded with Green excitation. + imaging_plane: ImagingPlaneGreenExcitationRedChannel + unit: n.a. ImagingPlane: - - name: ImagingPlaneChannel1 - excitation_lambda: 920.0 # in nm - location: STR + - name: ImagingPlaneBlueExcitationGreenChannel + description: Imaging plane for the Green channel recorded with Blue excitation. + excitation_lambda: 470.0 # in nm + location: Whole Brain + device: CustomMicroscope optical_channel: - - name: Channel 1 - description: The optical channel used to record cell bodies located in the striatum. - indicator: unknown # TODO collect from Shiva - - name: ImagingPlaneChannel2 - excitation_lambda: 1070.0 # in nm - location: STR - indicator: unknown # TODO collect from Shiva + - name: Green + description: Green channel of the microscope, 525/50 nm filter. + emission_lambda: 525.0 + indicator: jRCaMP1b + - name: ImagingPlaneVioletExcitationGreenChannel + description: Imaging plane for the Green channel recorded with Violet excitation. + excitation_lambda: 395.0 # in nm + location: Whole Brain + device: CustomMicroscope optical_channel: - - name: Channel 2 - description: The optical channel used to record axons located in the striatum. \ No newline at end of file + - name: Green + description: Green channel of the microscope, 525/50 nm filter. + emission_lambda: 525.0 + indicator: jRCaMP1b + - name: ImagingPlaneGreenExcitationGreenChannel + description: Imaging plane for the Green channel recorded with Green excitation. + excitation_lambda: 575.0 # in nm + location: Whole Brain + device: CustomMicroscope + optical_channel: + - name: Green + description: Green channel of the microscope, 525/50 nm filter. + emission_lambda: 525.0 + indicator: jRCaMP1b + - name: ImagingPlaneBlueExcitationRedChannel + description: Imaging plane for the Red channel recorded with Blue excitation. + excitation_lambda: 470.0 # in nm + location: Whole Brain + device: CustomMicroscope + optical_channel: + - name: Red + description: Red channel of the microscope, 630/75 nm filter. + emission_lambda: 630.0 + indicator: ACh3.0 + - name: ImagingPlaneVioletExcitationRedChannel + description: Imaging plane for the Red channel recorded with Violet excitation. + excitation_lambda: 395.0 # in nm + location: Whole Brain + device: CustomMicroscope + optical_channel: + - name: Red + description: Red channel of the microscope, 630/75 nm filter. + emission_lambda: 630.0 + indicator: ACh3.0 + - name: ImagingPlaneGreenExcitationRedChannel + description: Imaging plane for the Red channel recorded with Green excitation. + excitation_lambda: 575.0 # in nm + location: Whole Brain + device: CustomMicroscope + optical_channel: + - name: Red + description: Red channel of the microscope, 630/75 nm filter. + emission_lambda: 630.0 + indicator: ACh3.0 From 884f2c58a4afa16a31d75c88b337fa793ae7624e Mon Sep 17 00:00:00 2001 From: Alessandra Trapani Date: Fri, 10 May 2024 14:47:59 +0200 Subject: [PATCH 3/4] add folder for benisty 2024 conversion --- .../benisty_2024/__init__.py | 1 + .../benisty_2024_convert_all_sessions.py | 25 + .../benisty_2024_convert_session.py | 70 +++ .../benisty_2024/benisty_2024_metadata.yaml | 12 + .../benisty_2024/benisty_2024_nwbconverter.py | 12 + .../benisty_2024_requirements.txt | 4 + .../benisty_2024/interfaces/__init__.py | 0 .../metadata/benisty_2024_ophys_metadata.yaml | 4 + .../benisty_2024/notes/benisty_2024_notes.md | 30 ++ .../tutorial/conversion_outline_diagram.png | Bin 0 -> 538572 bytes .../benisty_2024/tutorial/tutorial.ipynb | 466 ++++++++++++++++++ .../benisty_2024/utils/__init__.py | 1 + .../benisty_2024/utils/lohani_2022_utils.py | 46 ++ 13 files changed, 671 insertions(+) create mode 100644 src/higley_lab_to_nwb/benisty_2024/__init__.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_all_sessions.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_session.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/benisty_2024_metadata.yaml create mode 100644 src/higley_lab_to_nwb/benisty_2024/benisty_2024_nwbconverter.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/benisty_2024_requirements.txt create mode 100644 src/higley_lab_to_nwb/benisty_2024/interfaces/__init__.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/metadata/benisty_2024_ophys_metadata.yaml create mode 100644 src/higley_lab_to_nwb/benisty_2024/notes/benisty_2024_notes.md create mode 100644 src/higley_lab_to_nwb/benisty_2024/tutorial/conversion_outline_diagram.png create mode 100644 src/higley_lab_to_nwb/benisty_2024/tutorial/tutorial.ipynb create mode 100644 src/higley_lab_to_nwb/benisty_2024/utils/__init__.py create mode 100644 src/higley_lab_to_nwb/benisty_2024/utils/lohani_2022_utils.py diff --git a/src/higley_lab_to_nwb/benisty_2024/__init__.py b/src/higley_lab_to_nwb/benisty_2024/__init__.py new file mode 100644 index 0000000..ae7787e --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/__init__.py @@ -0,0 +1 @@ +from .benisty_2024_nwbconverter import Benisty2024NWBConverter diff --git a/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_all_sessions.py b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_all_sessions.py new file mode 100644 index 0000000..ef39390 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_all_sessions.py @@ -0,0 +1,25 @@ +"""Primary script to run to convert an entire session for of data using the NWBConverter.""" + +from pathlib import Path +from typing import Union +import os +from .benisty_2024_convert_session import session_to_nwb + + + +# Parameters for conversion +root_path = Path("/media/amtra/Samsung_T5/CN_data") +data_dir_path = root_path / "Higley-CN-data-share" +output_dir_path = root_path / "Higley-conversion_nwb/" + +session_ids = os.listdir(data_dir_path) +stub_test = True +for session_id in session_ids: + session_folder = data_dir_path / Path(session_id) + if os.path.isdir(session_folder): + session_to_nwb( + folder_path=session_folder, + output_dir_path=output_dir_path, + session_id=session_id, + stub_test=stub_test, + ) diff --git a/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_session.py b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_session.py new file mode 100644 index 0000000..8f641b8 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_convert_session.py @@ -0,0 +1,70 @@ +"""Primary script to run to convert an entire session for of data using the NWBConverter.""" + +from pathlib import Path +from typing import Union +from neuroconv.utils import load_dict_from_file, dict_deep_update +from higley_lab_to_nwb.benisty_2024 import Benisty2024NWBConverter +import os +import glob + + +def session_to_nwb( + folder_path: Union[str, Path], output_dir_path: Union[str, Path], session_id: str, stub_test: bool = False +): + + output_dir_path = Path(output_dir_path) + if stub_test: + output_dir_path = output_dir_path / "nwb_stub" + output_dir_path.mkdir(parents=True, exist_ok=True) + + nwbfile_path = output_dir_path / f"{session_id}_new.nwb" + + source_data = dict() + conversion_options = dict() + + search_pattern = "_".join(session_id.split("_")[:2]) + + converter = Benisty2024NWBConverter( + source_data=source_data, + ) + + # Add datetime to conversion + metadata = converter.get_metadata() + date = read_session_start_time(folder_path=folder_path) + metadata["NWBFile"]["session_start_time"] = date + subject_id = session_id.split("_")[1] + metadata["Subject"].update(subject_id=subject_id) + metadata["NWBFile"].update(session_id=session_id) + + # Update default metadata with the editable in the corresponding yaml file + editable_metadata_path = Path(__file__).parent / "benisty_2024_metadata.yaml" + editable_metadata = load_dict_from_file(editable_metadata_path) + metadata = dict_deep_update(metadata, editable_metadata) + + # Add ophys metadata + ophys_metadata_path = Path(__file__).parent / "metadata" / "benisty_2024_ophys_metadata.yaml" + ophys_metadata = load_dict_from_file(ophys_metadata_path) + metadata = dict_deep_update(metadata, ophys_metadata) + + # Run conversion + converter.run_conversion( + metadata=metadata, nwbfile_path=nwbfile_path, conversion_options=conversion_options, overwrite=True + ) + + +if __name__ == "__main__": + + # Parameters for conversion + root_path = Path("/media/amtra/Samsung_T5/CN_data") + data_dir_path = root_path / "Higley-CN-data-share" + output_dir_path = root_path / "Higley-conversion_nwb/" + stub_test = True + session_ids = os.listdir(data_dir_path) + session_id = "11222019_grabAM06_vis_stim" + folder_path = data_dir_path / Path(session_id) + session_to_nwb( + folder_path=folder_path, + output_dir_path=output_dir_path, + session_id=session_id, + stub_test=stub_test, + ) diff --git a/src/higley_lab_to_nwb/benisty_2024/benisty_2024_metadata.yaml b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_metadata.yaml new file mode 100644 index 0000000..f1eb640 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_metadata.yaml @@ -0,0 +1,12 @@ +NWBFile: + session_description: + A rich text description of the experiment. Can also just be the abstract of the publication. + institution: Institution where the lab is located + lab: Higley + experimenter: + - Last, First Middle + - Last, First Middle +Subject: + species: Rattus norvegicus + age: P1W2D # in ISO 8601, such as "P1W2D" + sex: U # One of M, F, U, or O diff --git a/src/higley_lab_to_nwb/benisty_2024/benisty_2024_nwbconverter.py b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_nwbconverter.py new file mode 100644 index 0000000..f120213 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_nwbconverter.py @@ -0,0 +1,12 @@ +"""Primary NWBConverter class for this dataset.""" + +from typing import Dict, List +from neuroconv import NWBConverter + + + +class Benisty2024NWBConverter(NWBConverter): + """Primary conversion class.""" + + data_interface_classes = dict( + ) \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2024/benisty_2024_requirements.txt b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_requirements.txt new file mode 100644 index 0000000..26a5e6e --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/benisty_2024_requirements.txt @@ -0,0 +1,4 @@ +nwb-conversion-tools==0.11.1 # Example of specific pinned dependecy +some-extra-package==1.11.3 # Example of another extra package that's necessary for the current conversion +roiextractors +neuroconv @ git+https://github.com/catalystneuro/neuroconv.git@facemap \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2024/interfaces/__init__.py b/src/higley_lab_to_nwb/benisty_2024/interfaces/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/higley_lab_to_nwb/benisty_2024/metadata/benisty_2024_ophys_metadata.yaml b/src/higley_lab_to_nwb/benisty_2024/metadata/benisty_2024_ophys_metadata.yaml new file mode 100644 index 0000000..5fe4fd7 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/metadata/benisty_2024_ophys_metadata.yaml @@ -0,0 +1,4 @@ +Ophys: + Device: + OnePhotonSeries: + ImagingPlane: \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2024/notes/benisty_2024_notes.md b/src/higley_lab_to_nwb/benisty_2024/notes/benisty_2024_notes.md new file mode 100644 index 0000000..3a38107 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/notes/benisty_2024_notes.md @@ -0,0 +1,30 @@ +# Notes concerning the benisty_2024 conversion +* dual mesoscopic and 2-photon imaging data, .tiff files with ScanImage format (custom microscope) --> only mesoscopic shared ([Raw Imaging](#raw-imaging)) +* output for rigid transformation, hemodynamic corrections, and filtering +* ROI segmentation (functional parcellation with Local Selective Spectral Clustering) + +## Raw Imaging +### Method description from [Benisty 2024](https://www.nature.com/articles/s41593-023-01498-y): +**Mesoscopic imaging** +Widefield mesoscopic calcium imaging was performed using a Zeiss Axiozoom with a 1×, 0.25 NA objective with a 56 mm working distance (Zeiss). Epifluorescent excitation was provided by an LED bank (Spectra X Light Engine, Lumencor) using two output wavelengths: 395/25 (isosbestic for GRABACh3.0) and 575/25 nm (jRCaMP1b). Emitted light passed through a dual camera image splitter (TwinCam, Cairn Research) then through either a 525/50 (GRABACh3.0) or 630/75 (jRCaMP1b) emission filter (Chroma) before it reached two sCMOS cameras (Orca-Flash V3, Hamamatsu). Images were acquired at 512×512 resolution after 4× pixel binning, and each channel was acquired at 10 Hz with 20 ms exposure using HCImage software (Hamamatsu). + +**Two-photon imaging** +Two-photon imaging was performed using a MOM microscope (Sutter Instruments) coupled to a 16×, 0.8 NA objective (Nikon). Excitation was driven by a Titanium-Sapphire Laser (Mai-Tai eHP DeepSee, Spectra-Physics) tuned to 920 nm. Emitted light was collected through a 525/50 filter and a gallium arsenide phosphide photomultiplier tube (Hamamatsu). Images were acquired at 512×512 resolution at 30 Hz using a galvo-resonant scan system controlled by ScanImage software (Vidrio). + +**Dual mesoscopic and two-photon imaging** +Dual imaging was carried out using a custom microscope combining a Zeiss Axiozoom (as above) and a Sutter MOM (as above), as described previously 25. To image through the implanted prism, a long-working distance objective (20×, 0.4 NA, Mitutoyo) was used. Frame acquisitions were interleaved with an overall rate of 9.15 Hz, with each cycle alternating sequentially between a 920nm two-photon acquisition (512×512 resolution), a 395/25nm widefield excitation acquisition, and a 470/20nm widefield excitation acquisition. Widefield data were collected through a 525/50nm filter into a sCMOS camera (Orca Fusion, Hamamatsu) at 576×576 resolution after 45× pixel binning with 20ms exposure. + + +### Data structure: +- **Each .tif is a trial of N frame of [512,512]** + +### Imaging metadata (from Benisty paper) +- Custom miscroscope: see description in the methods +- stimulation wavelengths for the three optical channel: Imaging was performed by strobing 575 nm (jRCaMP1b), 470 nm (ACh3.0) and 395 nm (control) +excitation light +- emission filters: 525/50 or 630/75 (Chroma) +- image dimension: 512×512 +- indicators: Here, we use dual-color mesoscopic imaging of the red-fluorescent calcium indicator jRCaMP1b36 and the green-fluorescent ACh indicator ACh3.0 across the entire dorsal neocortex of the awake mouse to quantify the relationships between behavioral state, cortical activity and cholinergic signaling. + +##Lab Code +* [Benisty 2024](https://github.com/cardin-higley-lab/Benisty_Higley_2023) \ No newline at end of file diff --git a/src/higley_lab_to_nwb/benisty_2024/tutorial/conversion_outline_diagram.png b/src/higley_lab_to_nwb/benisty_2024/tutorial/conversion_outline_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0385246294f1a0d67c5e048722643aebf27842e6 GIT binary patch literal 538572 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 z zfDqz0Ao@}$bZNp>_wYiYKeo#NDWnunV;^1!ad)*((gdtuEHrkFUuHZ8Dm*?xwZux9 zx4Yn&jTK@Ztv|S&hY+T!3UY2t`c+bd~=|dnR0r z^=TFJ73;2GT+hwYf7V5SJ#MyS!?p?1fjtZd7n?t*CW^f$n^FRM7(vdBpRlcKE;G*U zh7(&8c&)x`E{&YZiJd=gYmN(+=&w140JxAZK!FWVpjAo)`*Z;P6-;f8hrWavH){KB~qZyBPgM87OgM5cu$5P zmOxvxfvDpvHYAj%{HRV`jp7B)|k!27*(jTRMb}@s)wxMA0iyI}vt*$=W4o z7OYi^&}Yx%CWbEQnY2Ff77I&{PupP0&2YDN&TFfB*{Od&XykQsNb{ZPo9D=_Ey!cO z5-=}E%-clwWyBq`|gLBe(FW~oAZ#SAf<-3MI(KK zx`hUtHxxveV5)gv6d3*0Ia&p5NaZ=m#%iotbsokV!LNd4R^XRsPqmK*mLw8)^MnBv zJ|#I387@uVwQd1383(|S7LW7ITZ%^A+0ixd@&OPqqRMmh5i4sY7>NamXU8-HM%Dt? zpMZl|ACNZ%gtd@@gk+%_TX38(`IE$RA{@`jpx4iVIf<|RET9zXLrTvDVbPn*BZ=pv zQluP~oq&4Iv|#E|J3|(Ce%1X#KFle3iyUbb1a2MVa6o%MdaQ(O@4Hj9R_bQKUem0> z8ywO@hARvx1r6s!4@$CokcW;~)w%)0Ne52UL>xs_uNhRyE$I|oa8cTqY1U9vU&-Yo z2XaiyC>k*G5X|6XEZZOflg>+NIHfG|S>!$KQoE5|XySn;^p6D20{lvzyON+u>4UAL zBD3Y|8bnSu5k2N5#Wvhg=1{~>CZKiQPd1(W;@Ip$kUkQd-kS2__7BCKK>s%2?;;!J zE&(mBEGc=Xy46tB$Y)AJq3nr{y`w@ffW-p@j7Y5dy4&=M1&TRo>f~MmkBTV^CJ1tP z7YJ3xtPU*09tw7XrW8aFJDnJIyTo9SGphwKn5!@o8}WtB(sV6Xf{m+Yo`DJsNPBRY z_Ao$_O2w9Fhl;9po^Lzan|0M9#GO6Q8dDt>i&mQj;GM1NZvGpNvy&YvM40(?z>Ge{>7VN&L877+X@FqrOzV>db9k zsFUgQCZ&G67)uftD!rl|#TjHZwekIdS1QAIFUT_o!Io))3$Sa4!p2`V|M4y&yDhC& zS}^l^>nt_r-Mpa{AyKvE;Peb`O(|7KVs+cH%$PN13YZ1>(dq9+t*DQ1(g~-r9nux$ z(C(ZzJHBA6lk>;+%~_d-qqMM}I*xc`yYJDBVhKN59p^OXs+K!ibhu>qOwh5m;QZ%)4%9)E z+&AE{GcUo*j)a%aCiynI2uaU$08J}^q~Ustle%*5M5Wl6zObGjS*qwdxQ`C#{^p*8G0Jg6##8_Nny`7O3L@VO=_2hEfN_vVOHGx@~$la+YI zPB?9cqmbjmr9&E@85a&@a;3r{D#kX((%iMCoc$oz<6axn07+^=Dn&kS6x0HHq2(@Z z7)VSwGOM|u1|z}1cM%|Bd$9^Q>M`6alI9fXaX$+4?6P`clQh>w+hkT6B77AJ5NRpk zH*2Mh;STBb15Z?%K}_%@lU^-&!W3jlo5x-FoJh(+KOjZr97GOMhYpOVkEHDjbNSf}SID4I+mkTG4TeSb&ivg9bc0+z+us<`Yne z>1TMD1`Oww1;7;bDij+-s?(eVow%#7fDU9BGKCsWLm?!B#xqZS5FoPLSUti>toEQz zf{%87)b&%upKWX|G741oKuqu<=Wj!ArUl*BW}V`@0rS7bDQiJF#4rR3wlI&OH!f#s zOOhlpQruh8OZo;wdwz(Co{_>M6@mt;XvbL_xB-?eoU-bNIZI}m#6uZj4uAj^^rKgR zqOr}K36^aFn~@MyQYynEAbtWSdNwW&Y!G0huh(>o6%W}fIS6bI9BAAx)EDtGK_pYh zM7(gROyk7KWEeEz(m$M}6@Is4C{N@70aTDBGQ+j<(KP ziJR4xd;`1u4VZ<}M1|pr&nrQO~ zYV$PKF^V24g+?#SDADF171=*tedeTqZ*I;o6DCNeIF5Z4v^k$URb-)nWG0NSxb`HJ z-ZQrgwYlE{!TqT9!2q-Ug$GDJ32>5h`mm=ugaDYJ`aN=)4jGy9Th^PB#}P$?m-gT; ziGD~HYT6W~dLt-VWYQ1(3Gg4FiHhS!47m5egDCv~4K;Bp9-tYQ!;%5SOX4*|z-yRd z1`J~ZI0raJc?~GeS~x)5NLfXj8_lkf?fy(Sz)d(nOx_mEJm_xjHtH~8n8bjwI05yw zCvC#@1Q6dM=%c5v$7Rc|qHBYPjh>vJAT~83JIal41%lk@F?T z<%lmfb!}irS7=$3vy7TMbacE7eQ=-=O&lA(`uYJOAcOJ)C}f~-Kp9~Dp{2&<3LL57 zYl{J+xKp!SjitcIENDiRa`CciA(-H|R;dAms;hPOiw|9M8-dmvFvB)g0|T}$5E}5( zY}mC%oLYbO18OQ&yF+0Oy@Ci~O%8k#jQZSSS*z-zGb&lli5uE z1^wuGs}m>~hIeSQuj~u~FhQNu$oU!*plz7K5d_P0E~nRQHY9+(F+e#?LD?^~dwR!y zq3jUj;J7W??AL@Gcv#X|3y}mLJ=8Zr9nuKu8@VQGY5!i38#ze2u}mXBctLM56_QKO zeyAK3hrh&7sK}JM!%VDHwEEE*5ygJEtABh=7}P($ixo}YZCtDj;@e-epek~Bm@G2u*ycV7 z)ipzPCuT17f(_ywcG|1PGZ_65e6}=JmW%YEihbPBqA8+90$MGI5JUqd8Ct_Ccu9Xq zRb@sL#xUb7-JPq@+eJBOEG_KX2Y*27#DF#i>S?-QQ*iZ;b4RY!Z_(g>)SBs&7*}Od z^`Krhb57$RC4pEvTe2%Ku<(S45l=Vv4q`;qkCe+%gqTdhy82EqKZiXhH4LdlB&Cv& ziCm!AOJoxw#h6Lhz(m5~$x00a8$=Y4#76YeQdLz>StjyQtF}>Xm~1eTf*uGPSEA&d zaRUlZJN1mG_Ow(jjn)&5UvbMy*cs%@re`XY)C;mR>iG zYpc$zPR63vOrvT$gIqJ&9Z-M?XKL7B)j7jr*@^2A%si@Nx?a_+va=M7a=C3&P^TdT zZRD*`KZ~cY_<^~w#mP%A%ulBd%%;;9>{)2+&Jr`USf;5_l^d^ia8TJZ#AnYU&n#>r zJ$>7(!PZ>KDCg(34M<-Gpww;1#l%2bU49KQ4by0c7i?4?N|YjDbjD9;yY3{c-MZb*L{Wam1*P`h09Wd zWaDUMz*SYV^{m;bVq$|o&x1}i?72NL0&T9IW7ZM-tC6cAsxq;u7 zz^u(EqZuZpq2X303ttRhJA%7rS~ln&SS}jKbU3jNYj90x>o6+@;rR^_BdX+$+!Ng_uDtsJD{Sr)X)%qhvfa~J%NFwmLK|YKMMSzr)7}$!jJqaY1OI@#08rIfX*pyOVHDs>2U=8 zMas_Tp+}~_BvN#U@-4^()_Y+?a9$)_`srAZw}M;Ef=|GbmzViG5r}Y<%%WM<%Db9d zA#MUuDJaW!BZ?vb`c&#RxfGC3>KehQ$~sN5Fh7Z3>^hO^9lE(%%>!x zzH5gv&3y{jvk-q06GzA;Ci@PUxzx76;!fwZDwcXl%R2#kCh<4T!zJ%p@0C2-dVWg+ z_oJ3X=pF@mF90VDDndA263#-yECuCF(n9Om% zkjNU7_oVmmz(lb4Nt4+44Dz!LYWtHI2yFZF1+Hifz;kxq3!%Boc(xW=Z|j9_Mrpg=_6_T!d(9N;qrN@T`THE6C)gXiI>jRkKmLjg1w%{mggJl}g$w9IHdAQri|%*b6mJ7CUAI=Kw6TW15|AHPsKn^ zgse&$L@^ePG_-JfKyv_xP;w&Fn=C_vUtL~c!x}6k?;C|FXVOk{A z=6>Y8z~XvAS`)m7{G|mi z? NZa7BXjo#}eYJd!hjK21ZB5wxKgH>ubR%$8qMw`emVRE~|+Rnf)mOnEJzXzky z7B5bOuYc`Px=-Eefh{pgISV!W}2r z3wF3Pdzz*=CHF4wM1jos({~J|SE#&YidqoSBaw*Kz!ENo-R<|(UGD%xu#O~PBIouq zONa#>1#vUv6J@tc#-KbAv>OST=*gHAPeu_iGmu2}Rw(EYWDC)#J}yAv+(n$SmSBYJ zBqk~yc1rRU$TaQ$utaKvEG??IF~5!UKz~BCn9CJ2bg@R-?)6}OuxXZU14`wci{u+~ zCiHB}u_+PkU>9VX<*Wm7Q^73rFUR+(!S`-Ch;3MgNkj71LwsTj`+)Hbk3g~A_vm~O z275;x=d}JROqD4**mutlgIx;Ff9}OqG`r-!!QEu99S6McY?5y?-s}!Qao@(BD(lW* zau{97zwvCwJiao%vZOB@C@&s7|7gJ)zX;n41<8X8c0%vI@)0`lZMNrwxkDgG#AP=s zhGVH17a^$JBmuhFEy;zXm{LbRGyZIQm;mjiDRA*X@bdI*0~F?zQ0}yF#P!i!B}*VS zG(Pu)ORW?}y!llPe7Jyo+G!UR!h+(Hh2*xygBK1U?+A*R-jTb=zzH@8jdyPEQE+Ea z4mFFJyccpt>E@lS;|`HlE7nuizP+=^o7a0FQBeYvkuAn-otYFUd2zrK5&&wy! z-n*pbN)1cj&8SjmxawB=eY1|-7sBz(8a)A;o<*VOw2Dz?e(tmd1C?#SIBRR{bTr;ZZ@AeAR0L(QO65}!$|Rle4-daAa~?m?;u4G$nS|aB#3+8fhuEY^9>CQ z@2qb6w!66QA%(`=f2N5%u8JGOe!^5uW_7m_f;`aT(B_+Sh(u>``e`F$+B775hjqJ8 zQ_v`Jw=2Y4r=ZaRPdX)3+eITp{bZ+!%R@J8FK=S$i?);7Bwm%eCAgX^GTfq4W@RR$z)P zdK3y#+0DSSW64eZdz^2QADDr z77v6b1H7v|QI5Wsy|7(i|MssmS+^wo6IFloTKH?bGq z8c*OFSNK!o-dmdU^dkI_H*3j`P`JrUg`zg6ghVch(L+R9S%9k=s3LUwVau^Ko>sQE z3IT@#OC4`tQ*md&+%M#xUWuY6T+)jKe&o`ERK8>d-a$nv19n4T2yo7BovmJ2yl`#*U&quy;o@@Cq^MAa%pGGtYOPc z0L;RWCliIBpUAW`3LnvT&B~3n@I9_Qt7GbnTae^(VSr3Sr0i2#2iu!Mm@*EQ74ssOBLtkZD5y!X>s3Te`5P zuzEMAVtSv)lalG>wzN;0py2& z+>e5P5QKGwmP4h<3)aq`zF?(fRgdqRSlTzI@AJ*LC}~iuUUoz07)-})34C0C3|n!{mKyJ4M9YZfQg=4DKqLwYb7RN-dy8# z5pJ`aL%fLxYiJZuw_z4k4=7aZFThPZuIVypWBI8%H2)}77erDvo-eN@ZEaWua2jP! z4^{)BUoK4zl<-#cqBcwy`jf_8QF=5~_>~JPx*aNumYLJ*bv-|Dfa$5H5CW_y!;g}w z5!CCL9?|qRCG-qC)fWO_D5{SFO!PbjG>V&e8TJg45a2;f#fXcV+G^5l;w(g<8E(6? zFqY;9s;{$vUPj_9IQF5JFwnzR9(aod3vi}Uw^^$r#WMvZFDSgbz?{)G?nxaAf>lX0_w5e`JVB05^zknAbBJ?GxSbE?*S8ACt*wuCk(xl(0h2q z*GU*dVy~&6U@qs-2AV>!UA&ZBKf^tO#*55}V=|GXbP}gAf==T&cK!Fmo;TDaaT>#O z8s)ITJew6&HLAr$vp%$y?qeurdS~CGDD{Iq?nj}%Ke44TIS7!XocY%xhk&6N`-pO2 zKvLJk?jwc(nE3jL=nyr1fMNF$Lx4woeZ&mUP!~9-q!L-2n;8OHV(c|$WXc=KJF`W@M7T<|ZHlwE(!=Y1T>`^)n^e8~1>8Ps5BM zAPSeRuNaLUqU5kZ9m-G|<;LKJ2BMB4!mo^rTta5A=~zlKXxNE}5X27I6b&skv92U? zDXrLYT(EV#S&PG2`4$E|aD-3{)soDP&ugoUteVwqO_D8fw{P4pqa$YFy0ReiB! z+Gcgx=}MU`H)MiuScEW&olpr068zDV!I+yZ*m1-J7FA)Lo1mMY;{27F9XJIpPP^nj zzP~o_J&*_y&an$^ru964#omBqi}b8%*(I}RR<-i3=GJVh>~HQfZ<;kYi1oufqTBYy zvT>Z9L~Gb4Y%1B6GJjWJH|z_AzYoLT%4i05V(-kdhDWTCyz_$P6gV%c&}*L^A% zV(&E%b6(+b0b#){#k$$BU}{+BzE0S_+t#ci7>=EHH$fPO~W?~e1&Iuw*sw?5mBEXxe3g+msMFY=>BF<9SSyl`Ir9*8ao3s{V zZDhyMx@m?%7fhDCGh-_9b3JGL(By+ljxBu_t=^A(os=o{ zidJoCWyvIrdz9GyLcTsG<}3A*5hYv&3hxnA*)o5AOsnS_Q1;QV2CpMRPeXSh0EtTI zjR}wlWb>1bfeFQaTG=R8AqB0h7uX4z$TxCYd75vo82LP_HOyLi-8inTI(3IEm8fPKRlCj# zk}_GAMV!vELPFSwRl>0vLo&myV3f;SOL_|d8F)&;*ddXDwi;!E^{0w>O6JaI%&M&! zRWQ92yTnX9G-2S6`cZhTRbgH|e=i3+TUy-)7&&-awGdG7TdUOI@l{vr?ANO1%(;h# z3WCbRQ<_ygqu*%?jWSqMiUSY$rPu3FAq5)@R{IQrMVg>ZV9Lt9LlzRlS_maz~4fU527FuNSn2vvLDk^e8WSkmA5yN44Fh9ivi+5t1z~ zEh;t&r@i0rVXH#-~W3jANq0K}y>u|7Rs{t3r6iTQbtPIZWpbP6~ zR^WcrGU$_8AqP3!+bAT;4|{H52!ILd(nilik)s*Yxtw0Jbucw)lg`K8uvv?eY`v!C zV7S4&2E39zlLqO0lWrp<=Ohn5yl3I%(m}Hi|Z04ZF7vrl2O!V~6M^dp5V*HF6 z6(=PKPEpjG@{K5?io%R$rdKx(gJlaFprn#-=+K+b*?AF~zgKjK?z4k}+rgZ0@@?3M z=?%UO`%vW#e8)aj!F$KMJi;oCC%)2Az!$d-eDQ@=^bp{S8wLU?FVcc;LEz@(U_#M1 zDf)m)bQ>7>NyZv76U9%dCP`(?uN43FKB-JqWD35P(^gi8c#H~EkGcTuA^U+IgdgT{ zzv!^-UfX*?5VwTc2h7{(X=Yg%PzuV!M-fUg6Ys7x!ATkR$W0iKiEVP3s>s|tW&?TY zW5bhO76vxZqwv#A(MvB=6`7cq^2-)yron`YLUP%vQLVCwQhQz*Y$-r{JxqFYEiWZk z(qQ-UASIoJf!-Krov8|U`UT||O9mwh1Rb_%@Fh?@5Do!@BF6|eVNg0011B6x6gd=N zUxSh;o9XQ&jj< ziCo&Em+B%&m7(^1doNBfaVUnquPXEQ9eiJ`jp9CV@M@@l4l8Q8!E{-B4?3(X@dMo$ zx9}nq3Q&3Geat;pHfpo~IVISuDS*q$K{)s>tI7ieF#;GLIqGFB`5-H(@yz2Qev?Eq zTn+ew2%CBi0fyv|f$ylpgyo1L%i;B+_EVKAwg#niWkPcFh~$u?E$!>dZSAG(JOH_v z?x^sgoe=H?CXyr)7(c73a`8huc#wb|Z20sxy##wM^bll0`H~2xm#FBh2^3o*PN-W~yR+4WKR~UjUXg*2=F^0*jEu>sq3f$1AFohtNyfj2VTQGV& zZc1kUTT+(V&=dFWjiQj@d{JM7jK`n*Ats7a1~9>3AxIgC-Q952**eQ8Dj5anaz-W+ zISsWy*z?)RGpQZZibvVHda+}Y(V(|M2t&6qaxqYOLlj}h*`#fz-xzmxp_U ze?V~cpQ^>Nj=n6L2dKfP*;0Lt1+W@VeciC#BGC+g)vOSOw`N(RBWFJkUkD}PDE40S zFy|E>*K4Yl%XD85Wrl|CPxY1Vk0FMTM)Ac^n%~(WkVD*&-DaHy0>)8U@smTylK5f> z1JFZ&Ax>>47z!A6L>9y!Lwt3{5JOI}t!0|fR!s_^@Iu_(mR2h*n0dY2vXAp_-q4D` zI`TL80nk_)8c(y+{cGi_`%XIP4^G-UJAGjN;_tuy*Zy_+KW=%^IsbC#`#0SCm3Q3# z-Ft5Tz{QtMf8;Cgdg$qII{hWjzvNK)&maES$9~|;@4EHqjX(X$Bfk9foxl6<=iGhl zMbCTPE50%R*RRjt{kNIV)_;Fb>av?A(nsHE-tyYaE57s2pP2XFTl>Mv13!Aj{SQ2D z?nN*E^dp~j+EY%OKl_0vKIF1hQD?z`4LdiCG` zTz$H4dee~$ugx5K%R^tZ>lZiuw(_vwe8|j)TYkOilaJc@iN`+a%4@E_X>4lrmS?uT z?d<%5ho1a9-*`#kig#bXdh+i*^hM8q(j_gw7EgY`-~Y{?7k;Ycyxymroc-{x-SX=< zm0u%$G~4C&@rTZxe#cLL_N=>4X}_`$|Mt#DJmick^^fSUA>J$9aq{n7QNH8r<_#0X zm-?fJ{n1%R57!PCh_7?|Z$9+c{`~76f8={_ZTlkZYkldAOYWUL`0~GdRqJML+4Ju@RHY``jDglajJZeKKD{~xgR_KJ!d~&esl4RhrM+6mXj}h z+AZ=ed_iIM!+Y}Sm;KW{pCsNq^+|BGosN7d`znR!oOI34rAKzj$u~dd1s}WfF;m}q z&W|tu;Ww|^|G0M)&1*(yK75A4w)~83QD+~>Uh;#V|L)Jf_G9(5FCTyRuWKjY{M#?M z{#(!b#z#N<@#kD(UHzLcT^N7WL;gmGd+~zT{=p^Je&7%O`IH;}@JFA0(*Cm#yy7G8 z&7SgtTYh`8cGoGNSpC-X9z5->=j?vQ0~Z{9*KK#h)hs^zp&xk1(_j3_*Z=5$)3+Ts zyYSOLg-7w^KY#uwe^67t_YW67;fmip?J=KvjRM$s)=5WRa?!ul|MMm3hyCbL%C5Kk z{gig?+fM)T_n!n$cF%7-sWEFk~z%qAw`mDw^w>^ID!@qOoOMdmU zd-A*9b=wSl-e3LBL!a`2k6t5o0-4Of2R zC6`?HVu0u$ocXZ%V=q3#cyj9hJnd7jIUgR(saO2xw{Lz=q4;|bS)P6Bsn0m$%Ex}B z@JM)yf3kG)Rp0-u-Pc}x@9gcb`NR*^fBD;AKjV@oe_>Dl-9(uv)m%L=pu9Hr^;-60*zw8t6 zwEsH$;r!b4lb^7*|1D2G*C)REPq}yIE_!$UbJH*W-pU>3+ut+()wewPcVBtgm!AK{%>UeQ@2ZX9{_&HwT%FFyLo#~yt7<-hpukN4aEKKl0Wz2y0Y{5>nLe!+L&{hfb1>+bs=eB1s1{Fl#q z@ja)$@ZC4(;AxzpJ^9+xzx>qaeIkEw_=hh!d(!&Z#+Bc{ z^Ts=j`|iGf;^<%A^S)bNxxDWmes=FSzjWmK?_I&L{O;GK-u0P(c&6@I|F`qr|F4HmyXHrCH{SEDe|h$s?_R(B!W&<3YVA{v_rLYlD^A&Q z&(GeJ-Zk>5-+S=lPyFnSAOFrL?!4u5|9;K`pL_hF zXP$kqd&QG$JLE5?$6zLt9tdt zJHC5I@yGvR-}dagOYeVt;mGIDxZJ$;9k2h;1J8N)zOz>^d-gMa^qy0Ha{EjE=tXRW zefpGFEIjrj2XC8s%5^t={H}Yy`n)fiH~#XUzf=6%>%aZci+}o~(aFNy_hf$dqHn$V zgAe@TZCAhM9lw0ZU01ySNtayv^#60@j4S^-J96dSH{SQ!A6$R@Pk(Fbp8TDce@D6h zf$zQZ_W%CeuRQBb_uu}-&mQ^No36Y0!GApZ_g|g6*t-5H^H;s;Tc;gAaP|N9ybFHv z?AaqX-amT!YyavK8;?7D;XBXy@j1_(I{xn8UAgq(PkhGL-m>Q*&-vz!`*;1#P3K(x z;Ips$?8H0Iy63F9yNYiddFt2S@w9i`vb^@yCmeqEs}Dc-g1eqGTU=1T`8!W7T=AUy zzw<5oqt`#~bhI*s6OG& zXMX>?fBx;WmH+#czr6h38@_$pJ3scEQ_sBV*B&`}__|L&^VOH%_usppeaw2^b07Hp z$6q`7zxylK-tn2+Yp;Id-;W=E^xg+PweR=eblQg=n0w40?z{Q;9hH9=IqTTTZ+zPY z-xxbD|A-&Xpa1sNvmblePwqPOhA+Km=04+rKYR5T%Jt8@`N8iu4!rW7+y7$U=f}SI z={Mc=^xyx75AFWJo1Rzw;0wq9tFZt6`#$yA?|$gs8{c!^@n;?R(4W2f=3jl*U4OUo zu?OEW^S+h6_m5t`J9p!Q2d}>OyKjBc`)*XzQr_nmV6?wcq6_3kH~ zb?<%O`i*hp!E65J3uiv=vQy!Q)|LJ#q@!1c4#d_b# zS3T|xA6)t9A3x*p*DwFs!5{zeweNn}51u}D`V00yb8P91(Z|2(oX_ta|LU&Ko_+k) zKb<=M{I9HkXYX_Gx$O_n`r1|hkCC?wi)(4OMH3_toQ5F5p>YeYjRzW+B)9~J;O-Ed z#v6y=5Fo)VI0SFpU4y$z@Y}4lzkTo7KlZtQ=QHOld8=L-HAYS3ZQGIfmbKnrtnZv_ z(H|5iPS2|B+ckV+6D=-Wc0cU{Cylhh)CBLlBDfzg4ucOs4kuvDokn>nQbJv4;tc0@ zvaxH}hL%~DPIA^1&Ck%9J;853*Z=qg6ZR4J9_HN;>Z?&SKU9fOJoqQ+xGc#Y7Fj18 z{&2*7H%Ato0)=scH-c8^cm8GwSsVouM20P9F2%t8fbtT84UG1v*hfb9$J|z`P9T09wN4|0?A=xy!yh<3NGaSvAEo2a<0(wjFCHZn>L*FAsGkyU4A<2aB50|mv1l8jeM?a+wNXk0 z$zKFDxs9zcmu8P0Hy5JVHPcd8W=gTuT*Tq#i0q~@b1x}y?RJp&?w`kqsJ4-W?&px$ zjlps>cJluuTNTWiO-&(=Oky0GkNaUQi&7Ve#*h^%^}5XPW%-cTHmoSlSZvLif0Lq? z(Q}D1OLI}TsU6XWCc0`qiSJDoHx*?(IQ;_SEP3J}5o!yr_o9l5) z&{a5$Os@U+k(WjM(*YSH+IEI>1%amXZrJB#r}OW(w-Fp^h6Sm?=MTTgux5(Bh3svb zldE6*Yebx7y05BVid-iZkumUWUkIo?&3l{MG(NPB9kYwxRWznMdPKPTJ{=|t8YNG0 zA1q_L40RV4EtwqF47>zQ8m~mv%wgSqSw9rC9F#dOx~9^xJi&aLsF@hiR5xIC+JBCv z_<4-95BeJ#G|*Dz(k@5t_`yaK6%9q6p_)DCF2>uPr5WdY@o)S6cOv1@C>OiUQA+&R z1Vc@$Yfy}>l}p|QtzNQvtr{x68E^Fca3{~*Wu3B7Q@6G}D#Rv>-Nfn04HirL70KEz z$EQ&^4`e;-7ZvD}#?I|F!j8f!P zi#c?g+I3qlDOLta%9k}(scZRx$Xe!p2_9aN@c7)NQUe-h(FUyIm)xTJ8!BY%O6!m2 zzwq5`cy2ADIB#en<{kTyiHcAc5(<0TIrBP|Arp>nc^#5Jgmj-RTS*t~-`Xo?@2J)Rt1=Xys4SZR*5!(A3_-l0d&UHr4$~IflO;bSdoWFMwedlL;OCHw( z!<(fmZDr6%y%Iab9X! zAr{CAMeBYVte;rfhrLn9Ao50R26MOkF?q4rSI-qvlAh36c4yg1o|@1iAL^33bpAd` zxAIk3%^|fSE+hXVBG92AuN?R&O2wYsS0Kpt%`8q!6YuG-aX>+eBNN88IlZ z7bYTuIl4Ab_EYH_OUZzAOELC}FYWxKQ2w@nwqflh{VuolfyZ3LRNPSKW!)_6{K@)V zW}!i$V|18kclp znI^)C%`8@Y)owIT zm0E36LNNIi;dw!0LFyHIdqBjFLiI2pQELz&aMg6|(rc=*7c4^_!Sc0<+$AMR&$w1L z31-*!SIr>i##!wo=UU%GF*#$>4*fDTeT>5OT2MLU`yY#$H<6&O3HYVm&3!Tz;wXf<0?~ zgfsMr)Ik-0bbB>(d*`=J@~5nJn#-Lc+_x_4DnsukSf1FGeaQocna8rj%9=mfqgJp&vq+6Tv@l@w{r-Pi{;*gbZf_p--P*LdM=W*-3 zoH^O@r{eoNgWC^&UqU6Z!ZMkqsS8uSFoB*%X#|~D8Cm<=s-7&<+$!JKoR$gI{$&LU z?iVYIl;+T1O=#uWPOTpGz8}+~Dza-k$;H~6p=UauyQ2t)mDNcR&_FfG`4*hqN}Gm~ z#+-T&C&lm5N7wCuoa7mo1Ip6-7sE396%)5s?cbA%8oD?Ea|lKsCcnJf4{Mf_`m~tf zdv{4l*4QaG-?p&ZxPKerd=~5`%_HJDa_M>dM=1Bnu6Dm2I(~8+p=>c3mAo@^Dk`(> zIK5=jyL0VRrzz1g(jcHF=G|EF^e4@y?56hIw^zC?%kgvxYNhT=y&@68UhcxX>>Fn_ z^=Uh+hy5sQLEZp3|(GTn2feu&chB@D-cAk}3k*oWt~v(8y6 zD*_$~CuDjNmc7=yVTbs|Ypr@H(p5=8#rpvftRz~5l}csJTL$0kHQ&rBNIqVH9D8N` zVawh(mKjcKFB?yik}qLPGrOrW$KxD`W%mmh)FatPWZV~JbG?baK2 zdq|F-3LXFWQIH|sL^`G=U;az(LXQK`u-3T0laF<`H%ql`IgGqD6KdD|qwuIzxyeO9 zmmPE!bX0GxxzUOy>vJ(Jl$$NMZ(ZvlE)OiLGbeR*##bbexV|jR`e9dy=zImDp@+g6 z2(`twU3Q7J1PfDr1v3`D%OsTZ06Z?X7T#|Q?9xn6TPca^pkz4aCh1s3!Tl5oib1~1 zuSJ&I=vCoDXF-*_t0S$G@Pz#CASjF=>@7sWJ+2bZ$7s8h{*dy6aMMt^@LgDv-e%Sq z8_(-xI^BYT^e=m|1ii}3ev;ei?w>czT!zEUxo39#^H6H6M4vK>IPT+tA-{ z4z6EE;im{}X{pE@H8z%cudc&BF^gU<+8Mj>*SI;ij7BAAkwXZ~(Nj zF5_KNFNdv0-mA+9i=s+b&yF*{Hy>(yG^$ZL{M9r)=ZIj)&>PPQES%j?*ZCqBmWtMk1 zZV48R>EIR z`iWlONBq27CfTVm#J2h+usxwSV^C5^(F#IqMkJhAIY!KrbbEw zyV48fzGsEXs;iZhq^;l)m)8?Pn!RREEW~eXcFqQV-gR%kZ#P-?y1bOVmOB$VN{{!eh!w=$7_pUl+m0S%wrv4*3l{ zx9IT9KN#yDClpE#u@?CRvxsAc`!9hb%XeSRGQ8MIYi|k~pBhP=`!O}1hI|qm*N;lD zSDe2cwK}?QP)G1ME@F#@H+t$iw!(p*m7Po&Me7Y+xaNS};k+V2V$0B@*NpMebJRGL4aWI=1Kz6x1*--c)N&bM{U4Kh?3{f#BRov$?;9^}aN zPG3Syd%solv5P#2;aiw**7BP|Ob#!>DsXy&<#^&Xf>%qGvy%uW$Mb z;ahH~6M50V4M@G$W%+0{ZA#ESkfh~dW7D#b6QH6$dVIq0chG2{B)4Hpk6%#Geo>20 z>YF1{&kYXLnGFBiPIn+RAX3KO$0KsZ`(KlJWjYB#3=p_F>xD0sb)mn zpCqlND|>-FiPGY+e?#apu^KV8Uxm)KWc&~E3Gy#JO_j=q;NyZ#;u<@a;&^F#Ak1z^ zr-#6nOd&LD65Z7F!#P{-m#(O;PE!vQ@JjP>ez9)S71x4#PVZb?;jCNbXQfN6)HJ-A z($5FiEBp0iLQ(`>9)xl?y z|Cfec@ccLHH{5UkfqqFqD5a0TLZ4lcY#eNwE&vLf#;IC?A0A{EpmIYG${3aKm!A_; zQl4VU4{$sl-sF$hR#7%+@ZF5d0hq(*8W%K#p8-%kzm2tPYmxcON!f&fI;q@-@*iY( zA!T=ZfSU?F>M$sbTam>o0uEbG;``IZEy=D;!gCS@01q?s-M_zn(6R=>-ae0p2r@Xo zQGEqJ77*+Hrz1px2-v?eyr|=)hWh(O{zaqx2z0Qk;NxPXmZq-ey(wvVhRHb)6oF05 zJ(L&ijY!j}wmrnHcOD1zsgfk7HyHjv+?3}hPw*#NaV%T|ri!A*cgMbO?*dDES+H|! zL6@is&rkf`-br%7G8&=ac*P%C)6-&-*}MOmyz(bH#Mw<^s<DThcaoGZ{LP?3mj^PS zeKaD8f#<_08yxs2tSBv&*KnNPI&k0}NRQY5GmsNhJ*GXb4o_eHtBGHn*ri#|GfIv? z7plEBHTw*~C-DWcy5*v#h`j@(?gUkJVEDg4N_&4aSxs?S!u%PP_1U^L;z$ZuiH4Ap z-usG|KT!JBWjK(mABiC~Q}E*ulK<|{&uj0B+vnp0lIQV~(xaE)p(dCPaR1YLGfxDa zbuNflH7w)b>2y@n%6p#9t$(JI9~0>4A!`oSmL1=S6G@nqANMJ}$oZE4o%WD@*Go2m zOR!?aWI<_MO!ge?sWtvGZkgrmo+EB6+1Z46lRnXGeu&+e3YN%Ts_8M{6set5y6Z*;6Z~lIgx<2#&>tpgh`7cz-_X?V$8FUjON6 zxIT4@J4%}TFmC?I)iphTSC6>nr52a2nw@N${H-p)@r~9;+j*(+gt#N7>vn`2Y-djx zwE#ULv^GqZuVg8} zjo|TyGL_{Oq0Oyf{Hc#|qtz(#jVj}w4VO3W5~kB1wrD3edhp|40d9WLK$F2nt0^hT z^4conb+n&ThZR>Tm?@#>vYxE;U+e58{+h_{gXb&6d>9(@NM#?sOLtDPU00=P<{psH zF0ol^M(x>M87-uVWw+%kJF@3Qp~dz|ueV2-o5>oWlpQYsF=H6^>uXpHzK{M-*u=UiZ{%eie!@A&&QpO*Ha7dQD+#<-qk78UghSa8I~%#ICW5wt{B zSrmc++BTUnOynH~g-ZCv(B#d41Hh69RCU&a!E`WwM`x~U>&l_?>HhPLBkMwCMdlyX zB*~u~NmAKA$+r4Dv}WeSE%#eZ3Pf+zO;6viP-UGy+8sKV2xxn-t15X5pARtBk)7Vp zY{O&P`1x=cXH!0C(X5>_u62+(-Qhkj4J|@=VL6IS>WZMwKZ3kc8f$+Yc>%dcsiNfDAuySquKU@GN z@y$B68+v^Qr=etwR1=g8OcFIlVZla1WUF&yzCsUjt#-44Or^fH%_x+1?gmT>*NmrK z*WuBmnhOkqC75wfgPzw(U|)0Fb==?b&>`S-P#u3&r?1-ZhtH8fVFZFG56Y5N zR~e7f54=_(Lj=>9By4W=OS1hUi;SQ9@@#0|A_V`J|H3b}5|D8xcOfyxBi#@&qCD1F zey|oc&e&M-aXi}x6{dL2h3fk63^MMjZ}$bgkGbYBv1Zj^3ku_`xDcm<8nO#+rfpZ& zpW0p_MY@R+sPeW!wP4gNF~?iW`w;7P3 z<+ElyIuv@fYCbU#A_ztd#IWJlNsUXF2v`YK1!N*e126DIXv_`Vl9V@^>D_j?tZU-0 zhIUnxx8D6udo>mne=O3#%c;NPwz|d&CgIP(io?LN#%f+&21Od=c&;&HmDl>!Z&xgH zM1St{da)Gad+IB}jwtHfQICv!%;(IW)$AKG73JNG(!RfpuntMqB<=mN=;e65NF>>l z>2ORAV>dlnUL0zfuvqw9$ULsTH6s~U;q2)M)0A8;a}{)aR zyunXPITUQvd1WEH(-isU*c))XWkp7i(050Y@y6$6`tNTp;tke->Pj)u8_{DE;a7ex zZG^>j_#!nqnxaF1x!-*DZ;v2Sv66c!&e&T}Sun7P^MHto!Cw4Qq99g?IRL>e*{>lP zVT4*tMFDqlGMEI_mhdzv)&!U4@7il`oB&jH{kNxGY`E-nu2wyQ-&2=b&=-{m(BnlH zm2pTJno*T*!*GmotIi<^N)Id&XAc`l=pCWFUXD?KD0}fR9VTplPx#`jEpcsV;o;N| zq>pbNMYEwC+Jn7CBRS8&#P1geud8E1)`MdLg3YV40WC>tR>XWku&i6 z9Z4^#rN8%9Jh(qJRt$CScY!XxWpjYahJz339}{%-w7Vtqe1JkSdU* zV?b}gK%cE1UV~ss>u(5~%*G3qn8s2pqwkoLwit4eA`r<@x2KBs`+r@J>iL^<{@0Vz zI;N|KyzWDZleN?tTejVfNxk9PJnZi4FUbQBKQT|rhI{F`)~6lo9ewLq&d>_ya}wk3 zrkIuXfG8B_s=w~z>HLrlA0&?Tm?7N@WoN-Hgkv6&C%$W(ptl;9^9VhWtmof&SEUu# zKwEe|-8-?O(Xod{^@(ZNC9fk%CtU)+dAWC1{^=*(_EF9fWu<0$IJf40cb!UT-7~r+ z=|qCHy?wD(ri8Nk)af^JBTZN3+i;HMd!BVIQR1svnq zA|C)wb1OfRBLt&<5}^IOd*xJ-zCE6joQx}{&cTkf=!7#1#Ai<+aed+OLy|PL4mkaW zT}EG``QyWN^Y6LOuW6wS7z}6(AM0Ox)E)h$Q>6kxY5}=mq5HogyZERHg!)pkYJkkw z2O(8|jQenk2oa|GGdydnYdzgjsy#l&e2kQ$rXNLDIird^?J|3F{83k1wW^XoCna7* z80ujS$op*s+Bl#=V+Z1Fl4DbWfgY+QR1r;r-6?K-1c3hUq{39-<~*v@gorojn-ncb zYcKsxXfT&vbQ61oQ%CV&Q~T@C9g5lgc6{$8a2JAZ^W*9Rdr)b_J~Jn&#K0DLe$~e( zh8ep(Ri#BhXc;oDgzJP^1){PuCo1z<2Btf2Tjf{kYuVsoCh9gSa4e%510)}W!}9L8 z5gHVkt6AILFgmN{!Z=0*i32FE_Dlsc>Kl&;Dg>V-k*Xhki=7tjA*d!X_n!%}Rvd2p z*-*9mDP)wh(f;%-vhuE^G7ma{DW>f&)RyOV8VBVs)SaE|PDgYc$8^^{Q14}w*iF;j z$;p;<&c=9t57f1NY)R0-px6?xym|SjmJ51AlW@PSu!z^!Wh~C|C#5T;4Od^`V;0V5 z7U_~W2LR-&dDR(7K+uvTOiOqciyb=%PhtYy#5Iu8@nCS1e(fe7%_SS^XsC3st*XG8=S5GCvDTrjgo|8^1%5PGs94dM4 zoafy1TlttaFjq>gB}F0p?m>g-IVYg%TOa6G+fv4#21Q`o%KJJY28Ub%8+G43N{2M5-^!#0Z;Iv2-3P`U51%O+;q;T2}-@ zD-w1P6QA{v6hBw!HRreL9W>1bcM2~6lD}l{NxPQ!XEFocB;W;37}e&jqM`2ydvXfe zhb9!NG;5QbF5}9`c&zd;XqF;7fHNsdj<-p!R#b!uX4Wh^O2Z%08N%0#5PlisNTuk@ zMXBUVSz(QzeeYFFr%4&uqC=A(sVH#4qAM}>K^W4t*JCEMK_dBLn|p2}?>Gk-r|7l} z+Ofq^?eB05UzYkt1+7;%@;HCZ&Wg$g;RwRWkzBj%?x8UqXLsgCbrjx=Z}SH9nS;ss zCkP&Yr#di6Q@10H2b&JJNw#>gONCzRq#yisO0k|+!|uU|q!GD7?uza5!i?LNHSs2W z@Ma1k@nPVlI73|Tf^e#9!RSMXz?I6)#h@Q7m%_(-w+I}s_@<=gcz}uSjBnp$=YUzi3wkn9yNh^x)kTj z)cgZ#-1mu)NJ>UC@qnPJ^T5RJthxSP1plzlY|_*|zOL4qgUv|4SmUME2-aR7G!F*^ zd<$POyl^3clz11Y7Y_!DP^6WgWd?yD-LZr}lyl7Cwm)6#Wf~cXTXNC=5(|dWu(P*8 z+HWOt#M~w4n`r@dFQ%ETa80AQ+M5qlXEmD!PyeRE++$`1q{oagb0`xX%`cO{duP+~ z8_3gWypEAlAwzElJ_#X>Q)7Rb>D-WK3n4!K%mT(?hxyYB!I%@=z*zlujDQ|9!fC98 zh5F#&Yj%=f?(ZB(LwHx|Ai}3r-#<3oB!Nrx+=WyL`kkrdf$Ac>o1>N$QWCEGE1Eya zbv?&8W>K#XI|2iv_)4-g1tTum+ZOpD9aBj(SelCMqx8-=kCX_&VKNCK2aWE4U@MLd zHeb3p?^uD8bu#?&nXKJ>QsFWpz8>s2m;g8uC1Dp-%@Dznvl6@q84+0)ZFaI?_Yp78 zQ+OOn1vyKwK;26!U;e%;O`(muI(__FBcV$qiK=S_jB~?2)@GU9sRc&jr|-%ncd6+| z0xJ#uThm0_Jle(z`5}=quY2rOG5ErCDsNQ62MuBEXbOI_IFuYHl)bT^VC+_mzIe z!mVeh1uY`5I@1BZCw0TH01~N79CUoGXZ4Jflv>WQBKS5zAT;yJu4wAZ-X*QdlvSn9 zVG4xw5r$q=dRIHm&zqXm>%ce>HC{G&3ZJX6UL}KoH*CM56AdMdh)2)99L zXr~UDh6Ah0co6_aK6X=6C8qqV1+U+M+Pry zKm#TB(>UM=VT;lX%i9)wvwFrgtnkRsK6ypd$&`o;j|}zS!9*TZ3Yz1wvex(1Iw$vx z&UBp7@;@BMKE;AyR3^k-FFU^88zEv^(O-%=JKzP^tbGq+3%q0L^=S68`r%1Qlc2az zsg$EB$uMR{9Ja@nxojf;7%d_&V!FYZ~&(J_2L7eRQRej4u10=N|POUb=@VWS47&AbWMSj zAiN3_Dkg#;VQ*oRH0*d2ssB!SymJZ>{w5lIQA%XH6VtsV$q0~r8p{|Pd7ZG%dNPO( z<~gsJJg=wWqL|bDJ=@u6{Ae6ynwLv-!(s~Q0yS%j5?j$gG2_;v=%CId8Y*;j2+4$~ zFF`nG^_96qRjB+UNCN9_K`*y6!k6&+I>h-ajYF}8ng|alE1g2EULEBt2)at2As$fH zteKOvqrCk3`NH2tvx@~GhyW=uSRBZzPk{PbACMRe4nh_(NZGPvMo3@c0@H1-Ck@CW zbkC`Ipnm)>r_(&0oJEooBgS@}3Fg(-w6acnw?b)KB00S9_pVEYQj@TRL;rw*Tyx)} z{lv)3W=%T?@YSeGyGJhq9Gt#s=v&R^YIYQ-?>-p@2ejdv{$T0*Hf77sD%uQMA8E#6A`ZSzzv;SKT z`fh`O6LUOdaFuLWh(tmI6M{sBif5W_pd%++n90198=1FztsqrGI9ubmmQY3|CzWuFNk+dyrXSLI946sV;MR2 z$2}KxIRO2o#PkQHX8lDfs#t5a++NCkhnveJ1!v(!C90(6CI&<`t-VZee+P50>zRmH zVP`zLb!AZHYc%NkL(nB|u58QAQOQmkj#Iz5Xb{VKKSo)s9}K^&YVg}%cL~Asyy~?- zArAhHRHCt;w={iUq|^&BA4~EguB{Ku$+5&YTeatm-mfzS8yBONcgYHl;t3+_m8NC! z)8s?fJ5?>`bzplDp-AIUq+wvCs$AQz`Ry;EqokRc53RYC)Z3_3FcE$Y_sfjDW2WHp>Uib>zyH0VA}`G4plnh#@mr1y z=}{tE+aKrF+oDxEMqYh>&LX|US2Fu8l66L6Os1jwfB4i9@UADh7o26nOhT97pP|vH zl!~D~``x@=#{a!F%1le_61-W=0W;JDssC;aTjPIkOiVaR>J@_N9OwT#tXEwBw}$=$ z4gYs5fvJhEyl?4?S8$46z0@(^%rj3(j7bGOBlCUKaMR)_(?I>jw0b6r7 zlczCq0y3Ei^dcGj{q&vU4{#q|GzQ{kd6;u)fKlQM_*OfqNr2V1thmZB5tEvdnv z`tOEv2L9LXeGH-H)Y?H$zKR7Z(#pp&{%=!K2)2rhIP3iaX_h9~i+QaVdkSugdI63{p=4(wLYs*549!`iY=eI>r8E`R&&n3(L+;z~o@EngAl_n$r* zH z6JV8Y*S!AYml>@E$%FD*O=~AFLRl~Htums2s@%9+T+#q;CARV5iA|YQ5^yf#1_)xe zEJFw$&ZM!zmb=Z$Poymc3^+yXk5tB~4?_ETfvj}96U~ln4pNT+2%8i%mg}StT`{#0 z-J7}wVHvr3@$u-R^Z4j|{o~~iqK#M4@&Huk0h}TP_()jWt#&}rPm$k2Ur@P8|H~R= zM#;$;2KXfKk~U~OzR&3JK6JsSMIv1Hr$k+)rCzn{Dy z><>^WXWn&^U1+LOO04m=j#Zui{iQjdOIOEl;P7vr^U|mNzR#O{82&Y|z>t?J;@#ih zNfsy$K3pa_*XQ%--3)Ai2g>7kok+~`(rYn@#T#|T-_di;x(h0f6DVO-J_>D5|9Km? z>~NN?Sq%+kmrI-ItHpFWJLaJ`sEjN-V)5OUPot%`n;q^0+4*xME3}}>WZhIyI>Y&-QXSk__BB$2aNHL?bs_r5*fk>Z>*2pVDjk-5*KKPSJgs8Y`pzMQjS7} zqpP+-03-(~DlviCAt)z4N&>BJg7kJmEV%&ZrJ9nK_-aKHri0|%{9>X{4$!q)wcd7! z(Jf-5Rpy8PsQ9e~;q-^hj6&EoLu96u#MUkU_$z22hVMGQVi=I^<8{4oy@e{pVbG4a zwdFvu0Ozd6cy06xN$a`bUfL2O@=32anpiu2H@5yf)~p7RwgZ-o`v}t)oF4YJb&sdI zPwI|H4_`eMUKQt2q2|kyb0d94V`2>^CK0MvTTWOw@h__6YHd9SyU+Jw`gVGTydT8N zP)@)1ClWVvbu_KWL9Sfrf)=oo-JF^fs+>~=>oi0$Z7`cs8&m$suS*{cB&uvj)_Q+6 zrqBC5HaJ$*1g|Pi@q6B)o!2HR6M@L00#%rGBxoJXW|H_w**1$I#Vd*C@FR+zcOaG( zMq;x2V!Pn&h-4epU~Ij_YhpiRTS*61S!>suAmM@~-MNrAcplO#>(l)nWUsj1oSs;) zzxL=8+In+MZb&n(!^oV%c@;(#%MVu?=}2f#0#f;J)w8KaP5yP4Hz#7klzQC&lVIU) zwaV?eT0257)ZkUK>os^`T`8Em5nHi$iXn6yEA3jK8V1%7s0vGr4^n%<(K&?y*d6$6 zo{`}+yqJxYqdUq5Xj)8X@8BU&Lxp-%{vwGEE+4%<<$}fvB#0$20j3obc!rt&@V;*W zmSn{WmE^$zNW`YbmD!;fW{|Lqfl7+ppO?GAFM9X8_t2o-o0!RL_)_?6t)VH^@qT93 z8m&9o^Vq2}**r5nax=9k1^OczUL&>wh+1+XRpeBmIN36eB;3i}FcPbzC`vHlzSk@B zK1nR`i@%Y={`rOtK=Jy&m;-cuO+U7p?0Xjc)NK|0j(KBMep1%r2#HSPh}sP;jN{6h z&>ViZEwPW~;7zYkuWCn`>uN&KP-D-dYy$Ew?XcTC%=Y2)9?aG=C%DIq`kt*~w$BE@TT>ji;eN4Jl>{`O z81#>e0Ag(W^%17riX4pYz~j&DT^-;C9L-1NEC%Lf{l&%|bg625^58w%6C`o!B9cu2 zt!=iGPH?305ON-cE(KLmQW~B=cVFNaoHBFK@Tp*A^ttvnYYCry6XdSAE_2?PicCX8 zohhG~LL|0B97^64d!ODlz1!1!4HdvTZId zR`yfL#G2N`H0~mnT}XI3GpcNBeCkfLhT^UDfHx^s&^(bpxiMCI{vN57yjM=@+9p4hFOna7+pJ7c z56qvBv?o7oO*M1XmcV6;tYfuR-;n<+;M8Z=oOG~VD*#QPP67;S7s%+;O zX)1E|G98x*K??-oxG(WlLYk|3J!J5OhQ-cW>Qo3izpl*vkgn`B+Wv6wH9z|nViHP% z&?_JVIMSeulc+FCfiIpo-LJ0y$6+du6BFS z2k5yESeI@GCmI<1Q@S0xfbLXF*m%uid0^Sz9lhIp8GJ9dUsduS9SQn)E2-m5y)oL* zn;CIv>t>B{*Njazm!~yB?ZV%u-29WayNUnJ#EsvvH_glmBhI-z-ba&M7G}=dAw0Gw zu$MX9hapTVM|&F~FHB-xpKu!#+1XDlN)L(L5^h>4ksvTGeSh?~%Z&V}?gDuPhj#&u zR@Z@QSwHDdfZUuWyHCJDmAIS!fsje1pIc-fGm+ZR?Cp7csq>OAFVbFs7|2v#Pw->0 z99%bwro~*Bii7%w0bUzLDSn6ZQlXkF_ImGMN}R4OV%e(RjDcS-er=*dLz2Q<3k7u8 z@`j_^meqT9k09rqoPf-+soWTx7}V0aIu0kBxN#FgtL(qCUVt_#cmRD`WV)U9<-w@8 zdiEuOn&`7Rg=8=>7;76|0Xc^KkM017DHVQ@`IeRLB|&wJSWj3|nsOY!6`a~fEkpT*0lU6! z%{AEZ)=5gb4TUfy0|rsCB~JF>;J)(3BA~{YU@w^qEhCw%=4X z8tTy)iU;BoG&Xj`V0%#INs(V}j3mpD52FLX7}&3dff7gdhbDon%la(-lTm{~^=j;8 zM?f&AsfviW=ik8syfJMDLu3k;;MJF}X^F5sDx%|J+gJSwUk70k>f66SG!d{ZhS`=t zyxjt6T5hIg!0!&JVK|%Bl_A2tK5sM(OVsy@-TuP`sIPgs|BgTGYQ1(!>LLbSPa3Q#N47Fp5X;WwWSyVmS#4~57U ziOC8Yl>TO#Rs!S6y{`_^iCI|+ISa~_dXZry&UkiO_6l29ld5x3at{38VB_58bF{{UAyWB9`1LJ})sBE=+gtg@nmr1MaogmWRJSyaVX znB2+N=C!JxBVk+`)>=h4O$ql$?Y5M+D}D#Y0I`2jy<@1KRboZan*NC->e2F=oJiwA|KJ^C{|vOi(xayG7ZC)54r*gH%)m5G5WaR%zYA#YLDKKeM@n2y#UWST#3KhDKBbGyKBGJ?1Kc(HRC!_#MQglWIzzLN8QfDDC8c*Lk5Eq<}f#Hb$Y3GL-R zIr7=rO#C6S&518>QmY;mkg;Lzci&|MLZhT7kxcSre(%|#qs|I4`z2sjpK(;vKQqX* z;DocSk3X~z!mjCp&Z64a z25y0^e@$wVv|UUO#}12jPU(+ZHQe+Z5}zr>W*JsWhh9eIJ1Z-GcZzWS=eQSp+fRY5 zEDiaRn%vgM1E)hL32YDf4Q0`LqN(aN(V1x>_SO05_2J6i!~(cr!)3*c{<2{U4K5)QZuDFwj-#8% z>~$TZsf(QCx)#YU3mln@S@9|Va4q_ApsX@Y@Ji4O0J-;AtS`#!93jfyoYs~cS-#FD zZ~kLOCS+pYw_SYj#f+TqxxZZTQ*Y-L;5&s{?H`h&S(?=};q#>fSkELyP3_MaV%ZYa zoAEF%L5fnY<5nKe`(ISamT>0u&rS|MEsB^G4`s61W2t9t%I)TM7SE9L#QPOdrxirc zwP;nrz4QrZ+2dAi>zmD*KWsu$ZF-;+1;zXI7y_WP>q zAe`s;^m~dtGkvQ?LQ5auOkXX0sOME+Bg;QmN{m_{?RCezT^jkhS564_!}2)G`S~_2 zG4xz^W3>##vzoM@yR{;6f%d@Z+w3ZGAG^c#(*0`RDV;#~%j>9S=M;Uvz0{q%te)ry zU9F~cw~%3xGosSk?gDMAbH&`1qqn@eaN$%9GDLX0=;$r?SqK9*fyz_E%=D55 z#ta8xR`IS`inwxAqq6d%024KokYYwgzO1T>cXn4)6)yx^P~J}=1xJBe9z-!;ShCIa zY@L0l+4(Hlf83zC=$@7a9epCtJRBZ#loIp$Tw-F0Km2+3n#(7198>g>5q5hq{w@HqIhrxnbzLTsE8@Z;6EE* z1TR)AYjXOLg>sZ-zvQ3wtCb=-Ee&4}MWS%j4}qf&4i)*M4XM9|q`PD`aM$awKU}QO z?hN;mVF`$BQ+PE`FL|Qd{MtTx>uF>V<#CKS)U-pL2A3&uAKg(*R+`tfAx|?(Q}@Q) z{eYv~a7(x1$HAo0i==0=E*VV^`H&=VERtN*|5=K$95uplym9mj=bgZ$;~*TQEGY{V zrB_OKCIoIX`Q2@59J*fZORL0;gO$aFfZytvfUDRjHR8L(*Sm|;9j|5g z*dT}t19SXaTHe%&Ont%I@u}0S~;iYzedgrhvrRUYt;CXXOKUtH$k* zn|_$RkzJ&93doPAJv=z^RUgl3@D`QRRvK54MF)Ets1+`*pu{CP6O1>|M#Vb^<G0~h+vMWN(Sc8TUK+>N zSiRq!h{UgkCJ73PA6{ONj@6YM<-nT?8NgvvJJVM>+*qLkaFM7^FP9p zIT7A#mJ+F7yiVORmnvGXWobrV$pUeVz6TD*_H09C!}N1%+p6-nX>GQ`HeBPBoHmZ_ zWk?vsnCBk%)e!$RxZ7IfWId7zJ)F#+IOW6FpG5(Jzio6E*6gUh6NqR_}3e*C{q3Gh@U%Sb$ z=!l4iR|JTE42S+p&CXGb zkb=W6ux-Z;+ZobIuMsGC{;7r;ai1XxwhKJWyz@oB2C2*G8dQ2Z&N1f`B9N977Bkn6 z*(qNv_v6m{koJAYnn!qy)n{pP>IR!|==QngS@H4f$cZ8_P+KZmf33KQ`(@IvGcVmW zZ;V<4f^SXa=!Sn`eOFxAJ4lIi?58h~F2S(N!NM#@0!fyH*pgaW7kkmqOM$C;M8a&|(+-xgz$|P(ocKE;n^=R+ zPf6!|+Hv*3W(MYSk@0Ir^~1;Zn{F%(N#ikMJo|M?E$16!aJ)eESJiV$P>h=Y$+Zv* ze$MlQ1Yo5yj+!4U6(TKE@-bHY_w6TpIzUyJ6|EGcv69m0O&6I=|9`ZuOO9%jIV)kiI z>$~2rKQGM0C+vJUMIsA>TMWLj51GmWefo>(PE!hHCHI1tCeECwWDbhGo(}&O> zaJSV+Rr!iG>N%yfAY^`Hk|=E+EVZ@;*=Gtumgpju87A3^r$ZROa8BY5qw9*P_D>HE z(p}r~d_VjU|C1h zb|F9j+f!9^lwKRe^=v?4M)l)nG|(Joda@fPy|!B07I;xlW4%cN&()J~!Nmu*z=EhI zddEg$^S?*imFwEoV%z}I;wH%dN1F0;$LP5LCY(=@8z{cW1cQNP`E^a_F_YNDot(+a zX=|$ROh2GVoXEkCHk?@sCwaQ=JhvJEdu2t5gegzsZ*S%X#Hv$n?VZ9mg4AL;CO?5x zmEkP1SU%W^m<+(dZu3dX)u-!yz{5Bul14V^@ojke+91`9tcW19y6hS5XVkh$HDDY= zEzSW&IuAgeEeV`E;(IV030Q=!OyIehvj!JKVWWxh(cXz=E82Cfx&Y!m0jN}yyrDGE z1VN!P$-ZIRn-e!&%PQTijPC!T>n#|fY`b=0DJg|vK)PlaIt4*G2bdwGyF+Pd5JZq> z$Qc?W1VKScO1e{0DHZ7ykOlz(-4}S@&wjr5-QN!ouUUN_>sV`%@zS37gIyM8j@;@N zkD3mxEj=BUiMSSrM0U1(_4b^9vp6?G?7se38WOfEJsV;(5F?}+P-4(}zt3C@bI-|c zcapB$Q2r>~+BEbGb)sBYf97$xg{t#bT3^+Ee13R7dV1vHVn_a7H#)%%EUHbldt>hD z{*en`^r_9`0F;RNgQd&xF%GwT^RdLg&1$OXfU(sx|CkhF6ij6UoOfHzPx=pb zVH?NGEL1o4m&`=;!DFLC!4TQ9Dc9Or{xtYhHB;ecXLWG9p5ZBBd$=Bx22RxA+sEUt zwVjzUaBu0+4@8peU;O%>VrlEfCC2&UuXlWX@|I2RhA8=M8dlnSa9S_{GBhlV%@*>) z`ibh^j~98QYpcM3!;cv~jfz!~jo04m(==2g>ExDWv@-$Tt&AdUVq74NC)KhCgX-wf zCw~ZO`_?%7n2ei(M5S}iR+GPx#P9>i{fS_Xp+3(R}b2!8U>hsTjg;TZsK6al$RgZ6%NBiq&E%% zS_%=csq!ZRnIGT3zRSda4%s1HO={vZP_a=cQ&&e_%fs>^2EHVBW3giy3opIN0vYH_ zuYqkkRXJywyByHlYdZU z3yvIu3`|F*u)2mBV!nrra7B5L&@9YUlP)M4C2N2Lcj6T(pDnJC!&A<*-(Dssbhfp2 z1^YbSfVz?2id~Pn;x4{?va+!KTs3e8jHIjl?Pg9-dYho4Es_#CY)3#z_P#Q}8gj4_ zzf4rWnY72e$RmpNg}Kq)qqEtjnOS*Z=|ktuoeOc;R|`(X8-fB4FNh||EpTR>hBDmy zx#yT-Sqz`^W8Q60DTCjchBEDj)#G8FhKj}PkY8F!TNbh~&9N+ay9V!fb20W|sBhrv zvAn&%vQ4wzf_+wa3&GDQNdM`j%Z$y?%rOk?N)wMh?LPd?xT1ZSCiKT}gr@D>><`M2 zgl0AUrn!uz#y5mB%q=UlHQ2TIOufckgvkE>pGfEG$6u0JrzLEYr9t@5y^$*i-;6i- zT{uMMl%UJi603hIOe`5#Fr2xB!?VqfDGk?J%+L1nYn^*94|Qkic^H`{7EM-e$-#a_ zlxNl~IW}?mR*ir{9&^lqh<6H(Q9|Q}ph~qR$7sRWl-pG5JSrgCQbCSm+{>kMy?m%l zdbN4H7vBzgGyse|1A%AYT6>&SJulQn2x!U^vRsrZBPR0e4{7c{2-2rtB6bLs^iaFO z`kPxBF72-WU}hC!4>IQ|E1cfllG}g7`0IK2xXF?Vpf@qb8}85D4PYGdtw zFOhr~(4FYTp}VoaU%(5{=w?DR_xt?(33!wx(~0SCFADW37=~tfzTt(R-_)5NI46Q4 zm&&arL)-BZO&tR|hyz4bf=%wO?-9mE#*b#remY(phjzZ2xOlBLu$+EtpY&9wPuwt} zlowj1VClf^na;vFv;X6RW!`U(dj(&f(4k88J3sIHv0%J$zrA$?b}n*xUU4gk@t_+A z#z3~&t_rw%-iTw@8n=~wHWgQ)FIKE50 zTfU$g<^kwfrL~WCJv75gsyCmKJqR}>6b77N(h2eWvCz}J*CrQxO3yS3aJ!sI+~%_V z6b}w5i6MQ8-&yELhonktougz){P_N;!A2G0Kb&}QAEw=K8Isy$K9hKz!Q$-p4y&U< z!?k17M4om1{#K94+B4@H)^xHzo4@hs>y>Vr%HUbqDTD~?mbS$@RqjXZ0V@nI$W%7$ z09Rt5cGA!PmsiJMh?39zOH0(u2 z`nIwDN#c`%#}Rz0=S_7C3K+IrTrq|ckjUu})OZ$pw(w5K420iX6jzB(Vj|!ntEjZ} z1Nhmp;1)Vq!L0<6sC#^QAZHCI086)o22^a60vmPU^9o29A3&-{FvF9p-epVRBnE8_|ja$K^c7)B!ujXDrybiPeJ-3yzlzu^`C_xo@yI81`6FY zw1M<4v`hANk{X4SFhxCC7zb*#Y6#Khv zgqvCx9&Rr+Lw6DkWh%WWw=4o1+`-``ymmj|WrpNw7>b>RilW_$!vvPfqgM$(Tlbq? zsKL&dJs0pZVgSafmo~{xbu8U7K5|8pWr}y8Tk$h{Z&)DJTXsGPQ5&M-yq2TzL!aai zf5g7^i#_1MFwEY(Vf*fi>Ric*^#(22DukJKHC+pqUXfuR_ZR+~6me=wNSgBZP z<6z?f^|&JvW~1fYTqy~RqxZk4e0;s4Gj=Fy&H2$ajWBM&V5cbjef5k7ZyPY=dm)4E zU}k3o!@P`s0o{2C0wo7fnDkTI-soWpucshn;SVEJr6szjFUMn2FHR{=PLn%WIM4%) zis4oHEuc)#d0wgQ7skkC5@%RZi{Ms>y5@4vI zLD`aiCQ6L`gJ@c2n`QJWMQ7ZMSeMbmPx~|mJU!0cmK#Tu-n}$N?af@myXka8{368f zO2L*X(K6A`$p7o|1JFM{5!{*wb3S-~7Ve$U< zLX<46p*$&@S4`}1qL5%9sdftz5$46!UmWnmvBsj85`>8bQ-avWOx#eL0}bi}sLwHj zEVlTnZ2J6BY-1mkfZVw~+<vE@xXuoHhI);(218t6w5tSQgAkO&SiMIW1{K6M)6vgx9 zdmSiSP4M;@~U z-;yjC<#6nos2Es8$-I8_?}x~Lfv%uJ!qIE=cp;y(w+M7qGv#w#bz7&%PM^kq^hq@- zUj;TR2met9;(e*9s;yMty|VO4a-5Q@JRAoHFtetM9F0-czkxEjuZ_&e1sv1KOFC-*Mkj-6#jBOUmb+!p#xXn&jcC< zDliWdgbjrHp8)G}Tgd9JXX#b{!T??V4e6A0pnx;NSFxNq)i~1bQ&^toOz}KtO{gg8 zRerG^@kl!Shn6W_JvcJHB%0@gM(#1sqvYzPJ<2KOz({FRYSAz8!pU}(M~gZm!OrG2 z^-|Bt$OZ&9mLFheyt++4)K|xNpW^o@#A@iA-mNb)`rC8g>X-akyE3YOq9g{ z(B$tWg?7=u?A>Lw_$m4+^Rr@6rv_7^vN<1L4?9DZVzMxT5;tD1FD;YcVKWR8ak{)b zINTxw8mVVZ45%Mox<4xC7{zo#E(b!DD>0x&19tYu*B7L{C71glzLIikkVr}8?1>I6 zTLf$1fhjCzSLTFNj!(?coC}lo3lin-tN&}*%6&Q^NctH|ZlSYbgU5s0 zk$}#}Vr7dYi+q^?Y5|>l$ta-hsxVpOhrXKvYB;Fw#C|zns5IHluO>tgb^2QoPpt4@ zi%Tf)vH5M>GZuFylE}QuTk<6LQBqxs9U$3(0d`Cn(HnCx1mjM{+DKE7%HcQ@v+~Ns zJt`a5DqM2OTIIXVPBE11fEIfw*f&4!6B|ivlBne{#FIp9{I@l*WX2^Gam|rdTIHsy z{U3%ogeVx+20(ZL+-MfG{@3iryQ(;-*iiW+ZUhTFuHVoQx3W?0#xh}@wt3iZd0^_g zr|^z}24cmSPf~caTV_28!KXF*?M`e72UQ{XE0H{cLa=|Hp0D{xa0HAjvNJWT%=BpB z_dPwuZRiR2x&OJf!lq3Q0c>I^!u0>*3wOkmzoMkezha0;HQ>vv<*J+U0ZjR21{q>Y zTnPMisCwkrBS8O?P~hXtT-v}vt)GDT(ArQK*yUbMJx(-eEGup0F=NnA(kg<=Ww4&9 z79b^Op%WUpn@)02NKKYpx62)F=n4MfFO_rV9JCtP_l_KBgFM)k0Cbcqs651jd5BG! z-trF{y#0~#&Uo#Y@5TS0YHbK%Ym)wKO8Kf;K@nUtu%mLG)a_Z^%%0eU%JEJGp2LD} zAO!+izC6Q&dg_!Co;eSy2@eOZ@5t_Nj#6Qr;2Wush?V7-yvVhU*ey^E1zk@LA@8kAl1&> z28#5V!+;?%{u;agU00U=glcRDMXZ?ucL(%?CkL z@W{tMmUb?*t1JHH0(fVAGLux5rQvI7nax&Sd7v0Y)nUiy+0BRa)hFP2Tw-dis>!gq zNCeLBdXU@nJay2jGQuN|_YeCQQn{c2AUwN!_#~Bx)jtuDv1;jd{NUPR2Fh8^J|3SZ zcL?@=OD;J{6n6c*{K>X)0L-C5U4bPmn`A|kzslY}Tuto1-tD0m^GeDUQ28*h06H&q zITK*|S4-lxlt9QIdr2XIL0R>HUqhtO2V&VEXGNlq}aj$T{o#+1p_j|zbS_xW02R1cph)nD+ zu}~5JnC(D)lEz(LT$-|XXYY0ZhwA%!l;iBktX409Ic1gd6K0x5c_;EwR}rFd-f>A z!M*$}FKg>b794zsrtZLxUaqw}g(13dRS0)8PPTBXZVH&@Fmehj3jplBUl7|NWwy9$ z0%5xu(M_w1^M60iT6mQ#nJ8b0HdmPq;u}5{IFo$`8d-%rvK`s3GCGK3iQVVuoLL;8 zc_gAs@Fe`46L-%vE!T4ZSa9KCFcXW$rGdFuZ2e4pKaAH8HJlQQhk3Md;n$0i(z9bs zOB5s?xW5odYmE9J6BgnC*oioc=J2nwhdOcaDXRzuj>ap5JlGD%SY4svF=m~ryJ`RKr|_^rd$(I z+=Ye)lWZ)QNvQqkRY@kq0($#YSm>tQGp8ddj9gre+SR7{>m;Y4(+cCk^yJg`Ay*i7 z92rW{un}tyv)lUW)9>EH${QfrDJ-w%*Yde@GpeD1i7_6{XwS;<37-+OB%wmj7d_ah zbLSag47Q)sU}Z*g zM04D?wFF_tH{|g&$_^P;cX-Rz)NG5-^_O8D_B+wE(z#}qrw|P2lkcqSAFs0q!_Vs8 zc-m!;Ubemk+DgOx8(r8iLGugn$U{nlFYDtH+oca(=z~9cGZN`&ucoL%6{OhZ&$YNL zw4bTv^Xf-jt^HBI>T}YcOw5sg6?s#1+?Yc!p~@UKrLz?PAoj!8P2#hVrWfAHo*Jux zIx{~AW)$2wO?4{VQu{?wVG~Pl2M$eHJ<23JQ4)MB?jgjfp*M^bW(V*c$Qg2@0WhIMLHx33$J3EPOt1M)DQu_6bv?g)=LJhrE+sQYO$mGF$F8Y% z3o*}%+q3meqG0%k9$rc+gCLESO}-HBju25&zm!2c@);0<8#`}HvgQ(*lBNenzT*{n zIXCFX{bRQMHq4eHs9!K7x{!DAtmAc-#_sw^F8`MF(08bJDAOOi<@kF}JCeWtj$IJH zRJ!-$A`G99F6_5hpz@r>vfzQF+~}Srgn$<1%l~J7)GytQ1XvLP7>;IB*ClgZ^Gn;FPe*cf`88I*T?k1Lm{;NveHsiG-S1?E)(Sj$Kv z7k>%NgUXlfm&|Q?U+lnV><(hlhEk}(Jld6ahaGA3f!?@-U$ z@3H%(*p%7!k>TT4@g><`ZpE^f>xcAPXub?6511BJhEloZaLur*Ej1P~%-qom2pq#q zY|TD`eCl+lnAa_(#CbXgDxwT7uyv{3MqC~$L3L!{Q|-8*qBL28vNu|1z?v$7j8Xyx zX3&*s8Jb$Zs5D~57*_Aex05fqA)Uk*Qa@l)Ej(9jh1Rtb1|_BhP1lgV5(ZDCJs+Ik zLz=9V^JbcWyD1Xz%bB4!sB>cqGgw=`H*>t(apBky_9f*{m1<^vcbdJs)4Xbkr7v!} zJpU0UO5y!V;(%Hq~A#*ciEd4_d#GuNpkoYg| z-k^dFRpmgpG~QI^a8n!Hjn3Mfb+_?u*4%DyWm5&*yPeqhMum@~SPfuul8{$fw|6m~ zoKgzl;E$&+{C107!xSO?Uw7^3KZKW#zk;N$t1XlRQgnhE{kSD10&ay>w1tX6F5Ke_Dzv+`3De(ui5*l z%YuPHE>zePITDC$!pg{myK))3YdzwpcY%}Fh`4BI^@`jVX8!>5&zO5WX)pq+Hmk2N zzx$H`R3oSLZe<@&#AY{OzW4blHKMY8ZNg9eoaR#F5%THw{CqDB7nyCCM4eWjq~V_! znj&R9cV42+#=^_nYL0Ez*#Kj$JDi#~rnE=o zt&Mu#Qfr{cL+RaFLqzPD8vGqT8?yaU`D(hIoaIza;pf7y?^_5@&=gSZ=(!&?cnP?Ozxk zQA~-N%AUb7ya_3QrvNYH5_-GamG{P4@0c+WNGr7D*t?IQ8zKJn$-MxdUF@^o2(A1N zx6p?_-nCnI+#=izodi{>GYf*nne0Fg0HuAJ7^^2dWkD=_M(@xa7?}T>m3@SIzm%zx zyz``U`pc-1gKONSY|uu~MU#F+J3zN~jF;7}dcStN%mxoQ9K_J^{_R+}YzwaZ*l}1Y zpydRWhO=?u%qiNdQ~9qbPf)ji;o&uUK=WKCN#N>dXY-9ZjdPNFgMnR$tUi3ACD{@$Z?4g ze@9V{YMpqAeKyUvcAZwC`@Xw8!b_E=olEc_G({-z0XXdwpIF`OxhWe$gs%$s>pp5L z*{!XRAD+D$;E)%_&DVYId&0ukk{owD#@^4j&VicVCZAFYGMh+m4*5!L>3n(iLBH{_ z3>~(&9FT-f(t4+g!A~& zA4=`*9GZ+Lv<B^jn%UX;SEk@0!NxC37ag=(BI7bg8rN;HrzPF~eU{y&>#t0EUdLqu z7^~9@MkN-Ex=i;}hj^n-BvH;s`^dc2aNs9740eEun6OvN2d9j$q9br_V$r${sJ#KE z2<$4h!oDRBRQ<^5*CmM&=CZmnGx;qC-BwYQ8nrd|2v8OhF{4+MT#9DwU6^Cx?<3Hc zkFO|}G*`8Wkd^%jTx8td*kVBb%3W)6lvagQZH>lz1?jN$AXlX(H}Y+>2hz4^9d0k9 zva0$v0a?>Ca5XFa{_mp|fXm+x*IKqb$dhm?dafd#i$R!>M95x(2+Z2@cvY_dvHf{s zf0`~+l6_3d)nNA3#H<2u-z;z*?S)f^zYDCYhh6~7VXzZaB!!Kvs4f@~0vnxI)?E>l znVYVpQyn8~IhZ6_q4jpa1K+lG=2GtSD&G$?$#+a=U-eVHY%)eQ$eS*F{gAl^hQ754 zJ>Nccn1OGRD6js4H~p-5A0l!Z&~R9x9d#uc>G_I}zqorka)f{%v9hcDz;TuqRrA#W z_^>PJ4N$Opg1a$tg(C54PB)xIlMrPJ@ns*oOk7JjQZAkQa42o?rC_0NY1=YDl0*p_ z3US6%{wq7M(HVUe`|V&4G6J*pyj3VuH*fCMD?#z^-!^-NT+vOeck^LDqJ?*e zJICIe4uSm&3huC4<(a5~aXpohOvq{7F-s&l%#5eFsUS#v=}sM-k==oReG1qV$(I-y z6UPUSQ+1_6AH`Sy%I4e9LmnchWwn)o^`C_W31)t|i2P^hsp9NH^lrUmU3CGgr}tiG z>%gSmV+s3pypeobc1*Gad~9ayPo*!Vn|-eCS5{;yT?ud+EicMM8hCbpSHiU} zt7S+qD?zSAB>vv)XLb>LFy@`us)6aBr6)UNdu^xs3qIBnk9f?#;gg1+DB>i~^9GSo zUCzB>udE9(MGroOW$TMHIvj(A_pFe~QujVcWEA+)H#{3A(`WlSf-+V)zlq4y7;{6q z*8h}^Nb|OJWkkl+u((XUV8dvL=lhozD3XJpwru%kQu|)4l)Vb|;|1!{FeQmwy!`io z(Ij!UIN)%df0S&?=)lEPUP>%V`0>0Hq6Kv?@(r5E!(-WHJV@n1_$)9E`NUG;B zJ8(;Ydmrl7g)`g*=3n;^MIO6i!gtl7{OF_nf?&S+Oq73Jf)3R5V4a1O=T$GuHynA8K2W6SxIw#Qoph27w>EAGc!)s9BNX1 zPF8Z!nM01EMQyC-((lW=D@+~+dow!(rPdTGbpDCYSnqk*;i)Nb*H1mE|HbTO5gIo1 zNCu57SE2;fx_|c}Yh1=fB-QTQos)U7q^XoFFw*E-qtgl73b~HqX84!ZrG9&s?IJi- z%bE!}6!_o1WaJQcQ4;9>nNV6qeDBXt$x4!0}r2bBeWyZSt8hG3wkDm~a_ z#pI=u-(8a}mG1o~Xw0IXmnpnTc)B=>>gFdK*XsXvi3K~LMuOgRnpwQ@A=BG;QcLPT z%yM1k6wV3vVD(5ZpqY{4NJuZ`OFC5z+#%pCsAL3xMM!XA5a!=c9YfLpMEk%PWc@c4 zv0$tYdpu~c?}Ca>8cOx-uD_vjvuskPeBHRdH|Hii>k|Edh1jrfPY-?-nyA**A%$IUV!Ux5IhQGps)Xjd)v9$6y2`;8OT2 zMQ^;iB=ES=kSVX85_1I}hSe1kCuXw0@anr4c>Tm&?k-;)eX#fR|Qo5dto1 zp@oFe$;ueeOx#1QNa}~^4X<3h*~}(Rod@+3U(0Sg`u`=nrlfw>Y#MfD`+)Bk*y`Ee zPaRBr@ehrG1WFj^Lk(0Ytsrni&;if(QVzR_oj^xU&uqU~sfpM@FGkXN+D&A`?!&(1 z%t;!|`oMWdly2k^t9t>7+`HbCZkm$0w2Y@>2`NQGbqMi~84o>kxIUo?Gkc6mWEw2> z%~7VGvU!`_XRF&E16HW`a&Em!f9wA*ut+dkZdpP={Z4WKbf99~+gD0+g8(2Wt(u6xf{j$tQVx)Ki`hH4K z1+uzpqD|bjnhBeL;PDm7Y+@0OlKm&h8^pkWPXc6`6%2u?cL56q7vuj4uVRUoXjwWj z%KsM1)F`nI`}uReAN?$S%cVO5FTNC~E;o6qe^wchG#fUvQHVKw@GQ&nD{4q z+4uCus&B4AWJCf9n2w zlRirT>y4%aPnN>rGkJS8M)6?LfBFrp;|OI8k9TM$B`88)B3iiOLIi&ab}%`~rL zChZ6&La+b#N2S-Dg~w-C5}+fCs-5zY^x0-Ke6x(-FHVgY+)Nqv(cd_wf)Zsqf!83% zd7(X4miWjU=8?UkHWr$Fw&_OI9sN>VL3_Za0gP<@BP!FMmQ=-=+b;POc9NWg2;gB# z^~#TV7b~--$7h*f04-*c8RE_#BD&fw!-t(W>Sxb=WwU}5?t^w$?izLNu9ZMDYhS^c z!Rr(JFnueJ_^%R7Wgz>{x)b)xx}A@}$fwB6@!6;bZsm^?#ed$&x^zNT z>NKYMQ5EOs@fw{agSkGJoo6pjU&w3*+9j3e+)E(#S8@}&nA=jf>=BRk9#|@VVSor& zM9n-i1XIL`zk}0Ayxh|a@S_S|&nO={sxK_D5(4L5DuFv@#u#Cy4-7gK@cw2LvFu1bVZw|M^7*zFB$>EP+}VA$#w>U8#ljcK7jk0b9~+V1*PaGI%8(ZMTnb$ zZBw3Glm?xPX@C6Q$Dv1d>jzn#`&1~KV@h|zg^#ilzwZ?f7h_ToAF{#p!oU8e+b*&9 z%!?86i3Vx4r0FlA&F%r?7bv|CFh1jxTCCN`r9n1!o37VTPN~Nmj(gc{{4eKJjF@}i zG;e0%G<_#Qo>Z7-V+?L|6B7LUvi?cIpu;=P!f)x{NP!&|cSz{ia7&h-@QB<<$64jP zWZXs0uAb~{L~+aQwnq-*nrbsA844_7+rR|bmhkww`K_t8Rt?-l%lz;ZnJdnyj5X|Q zx~|gZ+2V(R(ZPhGH>Zr!TO&_bR@=*8u>$2q(ceT`*vD1DfP@v`c7|?t7*%F5sUDEw zh}lv8ae*qldT`(=QJ1s09H$~LpWS)#l*?}Wd5~~4qixv1{y3ZZ!hq~XsG7V-PU;cA zuS|DJwIe{sRbx{0dJQwAe#_j)kSA#!w}=z0MY;NlE039Xfq-azKi~Xr>*Tb?8GUt4 z7Qo0YUmTfSEj8O2-DFyomxU;TZkZB^27chi)L;^VrUEIHcof@#=(*-QM_T0GOsbg? zwRCwuQV2H}j_aCif-r9Yr-hT96e3|-%^mm_{;gV&*Yqc0xsuX{(sz~6wSYC|<~__l zCOQlWtiqC$(5mA1(7${1&@qyoYgeM!hkRyxTQ?YI)~~l4kJ&?vh`RtI)=l5#(Z`Np zJTAC1?08urvQzK#9FI$siyswtV@=XF!>{*A&SoGZ#@STXKBFSVZRL0A{?FBqGRYbu z1O#r%W=B-=!;&^Qks?X4o|JAk)XVlLhHo7*~BvWTjkip zLO7smP4%o}YZpva+{#VDdB3GBVEaxW$QfwRG9@pU9UoKQR}U{Du)AV2-})*`H*A z;5sCMM$iba4QHjPWn}qXWS<9_-qVbLxEFaOV?A;vc><;x`%~&Sm<8c`?#qn@oOAA` z-kXbPuKXZ}Zlp7n3|0}%cYG9gf0Sy~vUN~gjvjl&?-8Rc6y@$#UQ#jUzdCG0Lx+$# zt;`e1{bu>RV4UgTZu!t%5ie15o)U8r$G1{cMu*|jVO%q-&rr2fQ^w=K`LS&BuMb{5 zbcu_;%5^`kQ9mkq=qqg3a2jm0*eiwc7Fnkl@S|?kW))5TMsFECgMSUBemzNT!N_#T zVVi!r|0${h#?%5MxcS?mC=iV^p`f;>$pi@oNlAM^FgdZZl+SD(hfK6oInq2tu~G09 zdtkMryeuuee4I$s8<=iGGyc?m(xHWytXMyl;*gN@9oH-qTD+kb|_U{DUfg{%%iq&)Nr~mMFFeuBvXC!SkrQhm-71tm8FfUmcvpU@8 z(f!#ZW{R@i>|OK18@xq)9Ebo(9X__-7Z14j)1I@_Yr#Y8mnd&wDORc_A^t#=0;8}9 z^CQNN`iKUQjXC!MIkIpo7Zn1OsO%$!o>l)+K8KJDHp!2{z}B)K1(PKz9OY95;-o&1 zQ3foEE>l6{ki46$gxIKjV!m^Uam^@UPWAkDX<`RoL@R4@kYU+dUn?y{F5>12+{Y<7c|#1>n<5Q_)xC*ZHh^G)jrm6q-6KaPAw$rXn+!iix-{Xe?eC=8S20c zC->Bu=To!ZpH#Sn7Y}Y)_%%3yQN_Hiu^hUV-^sby|D1kg=luZ?S4k|y`ftOta*Nb! zh*Jj0ha6Q*X<0(*3cp2ia=k9$2$#;I7m`jv*rsa0PDU1@NHZkL(b*Qha;u>LG4j23*z}+KBp0CuTfUvC<)1C{O&St|Dy{o~WaeZL56iN+bEyu!y z=*(~yI$WdWIQbmKwRHAaEKkZ@#83|sAj*SOhjglU@a;sN3V1)dz4Z0D*UvDxU_!~2 zMAZX#jV!a-aGZOnu!9YmENaEc|9vNy3WorIOw`}hkoh+?I0snXxo9}0UbSHqjOe`C z5p1u^VzsiWK+SraNlCZk&CFe;lmO`XvR0XCP$?eM7_M_i!Yxl7X*W~>Y8oj8GE1gM zaId}N@I5_PBwZUeDVbDwNj~s;`&9UMFWLS0RM|qPql5mRw-^M1iHm#%dtRJEVLBYe z_b6{6erzqlt=*MmTw_8f@xDQU6q-0_29XIw4gyw@S!uN(F@2nr+f}igLU3Xad@T6J z3axbf>DGBsn=|w|O=}@;kDOk3x{k=EapP?Au+%~*C))~fE!b2bspn0iyPbKyw8Boq zO{_P~US3llf2Sn@M`1=ZnQ(K}ar#-pV%gI6o0++gI%w zqV$O0j3@N1Jn9<8ym8mJ^Nr7DaW4GoAoq(D2|OVnZWiK)_yhva*!}OkrX5CrKxdys!bkAYi*<1cJj&iAE@c0(RMe6Zik192 z*XX}JgO)*ZZC)j4;6}DAeTgj-v5jo=d`$MNi;ba>TnMBFu8&ZVTBAK>(PYC+M2Uo> zaMoDAwAxg}xrl9YtdS%uAH0UC35*nW(uYJnGDmeQWxbaTyW6#pMH`gv-YD}W&hz#+ zAMk7DnJopO^X4Scr>-NSQ1p#Ya{`6TvG?9@9mRE9mDOM=ud0Y%c5q@Ah#gMs3>HCg zD7?!~IQBS5?V&&dVjYLO!Zw7}mdWABOJ5y&dv%4W(3Q1Cojg>sJGL8HsM)sQtCRqV zGk-}@SlMGjyxEw^komGj{*bs6moW6lBKdO*oKF>QMDx9hTr7!q)=3xLG%gdw@JIy1 zpnYGZ(dTXRz6DNO#FPL0 zor5dC$^4!JlZ>q4&7Ta$N`HRGXL}>S!BbzrDvSAR`jU00DoogUsUz$s_%&VRlcA(% z_Iv(r4wDyK4lQ|y&3XV({nIOK8z6H7>?+_H-)*=$39zepuh><*7XKUgRV@GF$SOEH zq?es|Q>^2wWHxg|`cwbaI0f?{9~IchzUWk9ly+F>VR|@!N67V zo?;KyV7<4i;s*#(xHA3xgl`;rL+xGi>UBHcz6l!q2f>q!&pSS$@NJq0UBS3Ac9jDq zY4A0%h{|8-b}!2KfS2lb9$aSz+Gmo)&mO?mvB(-}@zCEbRzE0*gun`Q8Z>Nw`G$O! zZ6w$p3S&+dz;cd)-}LK(PkdetVmEac*VJf~)YaJ8FQ6b-A5oSsRK=eP4sg#QFCYph zVf-}M{@fV7|T1X3HUj?|9at=Tn97X)eQDu2vL`DomPFV_FHbR25qpswfN;(*|y z>A%|@D*?JfiABVKS$&}1QDO!_jeY9AfDS#JlIiC!`M{0T$1!frDc}`MRDRa>@&}Su zOp%{a0qH8)Sa<~tPHY{j{e=Uy5=c_ZI^*s4mLfX^p!rH8s9H0mgT-7zqWt6s{Pa#O ztd%k!piTR!*xs%ZvQkuQNAcq(e;hLsRnN8>i9YDJ8ZK%>>vd|AlQaSO0|h_s)=h(J z!UPmQlmWLY&a2%V*1A&vfeig(6}DX0(ha{x$iDd-E&<&AL9XAF%#~&cu`8#hb87N< zcU*)~@Uu==64tUACV|^86PBW7plpR80qpvhB#$r%g5jmmhh6_|9yMb}I+?*7UUhwHD6b9j@0Z@6R#RB-=i_+Vt4raHtPx0|!?>c!%Kk8|)cJzsuFMnyt2fzTs{j#jJ*~7 z7=Ep!FSVKQr6A>r2mOX(4l4p*y+WE_K3VL-=REjiRE>baHmnUq9)%Tc5~ZKfuXahb9ztT#)w>LYurcmv2k}n^ zYHkqcQ)&6k6A!GA)7clb^7@eXrX^uI)9i^05~qgN@i8BGrDH&nAr#5X$57bbl;WcJgZ0g7V*fS-kxKm%K3xhMwe|071U>;m{;_+M-uJWuh zy$p&vyDdORf&=@yc`{A^zndq7UGGKNtCDWiwNl_;p|@YINkagBOaD0|&4wtxLFiME z7WF=7?+KM2CXBQG4+CrBJfVl8bbR3=kJiwuaTQqbOXlziImQsxmi2rCFm?3H2NQm8 z3pz&XsASC4-Vz?!egN6uzitd3^XvN^C-!R&qKvmm8yHIxAl^odfPo9(azQM&K7KEv z_??A#F%ThJeI=xSnv0GY1Qg4&mlKm%sm+Ydk5#-k3HT4Hyg8ltU6_V|^4O1bDCXk9 z9&7#$^2Pd!!^71dpWEtRIS?2M2NTyQN{9;H#BMUKW(!YoBDhC$-I^Ij>6y2{1oc~L zfAt+pZV@>otlkAAyQ6T8qBnm8Q1p3ru-fE8yj5xZav5O>QJXdu~I2CvG@Y{_w-j@A-P*4a+D3&REy6_U=)- zZoFLnzj{tJ?cxkqbPRgmIvak;t43vsBD5i%sQ(lHDa^y`77SC=IGKz%0N1A16vgZf zR!Zi;t>*?Jxs|t0!_KyvM*>n`S!oK4qkMqDp1!(lva7!0J2+4T~3xrjO(?e z9OGT@9>Bt zkG@;&kf^Cco}{s_74fsZU5q7kxG)_POHB0)_F=|E!Zw#f66cb=$|cUd>XN}{HcRKH zOzZe(RXW^tiSTE1tkTK&;z3C4t&4HIuaK&(--!eVT_KOJ4a_)8FLE>@L_tHMq%wEMu;fDDS zjDh`6x33Khki}KG%fpnTG8Ju*i)7iG1ZBN%HNNrx$ivh<6D@Xpu8Pf!Z>3=+Z6N zl=tu4sF|!kF?xgMiH|&X6B}T>FL1S<7DQgY|8_gr@JjqPwQt_7ei6fjGtfF2!vBNe zlRDU6N-=~Skugc}4({B)`sV8n_;d>VF^|LHt?JX}wVTQmWE8Qtg+wL-4(JZb-e1~eiV>|%%`1jE}7=las#2Fm8F+F(RnF!Iuy=o{cepf9O0lu;lUE?uL@^1%; zUjvL>$kHI6|L`H3(D|D>tW5CHCY*l;Rm{$}1#LI(M!(tE-v>A$hA&hk6Zf0izl z);#A^Efp43POFJ2nET+@v@BMOerm5F?w4p*%p@f7`NqZPjoqnYIx$B=Vsa+Td1%3` zlbBPo*BQSU_>UjJbT*v3H`K^Rcm!#+OZntP(Ys&u2Cl~UOFPWJKr^Up4WZd@AKh#zA^q>Gix2|$bJ8B+fMq+ zi#*xJC;X2_FOS^0(kVNaKXoYE8i%wkP5z;o`U>8+_w%lIp0#A~ChltJH$HRANpE|} zHDXVBj%yguq9zkAOl#W5uokEqV4+*H^Kqa?iF?gWt1zM0uu(}qN>!7WWUp-H4bvr1 z=dqEE5@hxN&=Qs8)g(eWR$vWZqEKsv#5M((PAsIW>7{IKU&MrwJGoHR%R zhDq7!oDbn8V~JX4gg)s>oR7Z_iD#wV$@yR=X@D0v#J`l|mS7ekc>)m3 z!m-+7l)6?@F?0l0g7<- z(90FQ5C_CC=?^Af0_9NgpJVuHc={5NQj^lthu(8sC@*f$0Kkj8IfGmNEhAJ;V~@vg z+z_K{Tue`iUBc%)<*9fj+sDNDczi0zWNcC3vA8IQA-%H#z1@hdj-vN7vRPQN`HQSv z!6*}{cdt5g%g3^d2K3L9ueBFmCrn#lwTJ=RKC*0{`>cR}m^Wry++*B-CxE_tPqna@n(fkAKL+GcttMPJHe`Xe^-9Kuea+FPCsW=MBqG_7%}mJ7F*GsZ4m7=rX(M%NQKJiZx} z!KP9S;*;h@u#06{56dP~*FcVhg^u`!rCLKcoU;oIpgcw!SBzHn)2w7@Kd6EC*^^mP zSkMABelbv0eISlvT*{Nwmkyi*N0Y}+-v|YWGSdEyl?WoC?Zh&aE%^z%dxFoOcIxS$ z5c%-PinmkRF2}T0(}6L*V`V}J=sR;5RhY~Pn9;_JGoJxmiSU7$=JO%MNRs`FclzGHBm27| z{lmQoix?a&+r)cU20TT(FaDnwj_!LF^HA~LpJsf*5kw?!s-OMzIu=Fe)2wLp3h#cy z){Y$l?n`2&X~i)plX>`08EK8vXOepDObBVAvx6lBrk9w{y6D_4%x}tY5{_?BUB~1- zEYGbT^x_D#7lr;0q1=#;B9w^$LRp5!SyUXmRf2L@351UKDroLOYO@~+dE+PQm$8Mm zylj@VUNw^xKa`4u#eFPD!~&RZSV`J357gxRl|EYBTW5c8ODLl+cpIavo!`QXdM;7&))f<}%ltKb19i;xPnPF9h!pEsJe(&NKIY@g`wzdYDH~ zzO^@U2U9N?(t7|eOMht`%f77fG8vhiNUB`u>ilPJ_D}NduT_kpS8<)Xoi+l>ri+02W=V(&<}g|2yIN4jVX%>j@?=HdYYBdXWaFk@~$qOWL_{ z=VWDnO`}l*SxaAV(dvsGt(y#*o2yr_cT4eI+FwOx>idhI;WFI3z4^3f4cSgxPu~%N zK?jea&zBa+?rJi>j-7PY$Lm%A@-Yn<+fB>?m54B?^=67GJ^A9q-Cw~0u0n8QjmKP+ z476exyA*%O*@7$zUB{<0-piSPry6<+GLtuCH3Hi%_BxoC-sgPu3?M`Pog4q2Hd+zq zvx!mXLAJ;KzZVzH%0QndLrMM9+e`K|%UcBFu?qD0QVre7c5$2d<9nd)_`7(FC?o0= zC~6n=WjH&jGV|LCBu$}&=zd9KIoeMjPzR~ZDfi~4YtnV1gomc{2UW8`94~CuJWDV# z%$j_TUmqR=ddLQODCqIi%IJ64*?qj3-!Bhv9=(*4QtWzp7~{yg)=s!iQ)3QJXuaC8 zphw=cwfLWZXm308+pn9)a!C_{h&P+vDI@A^arZYjJ#|T${K&Q>nlxV5%;%>#&-9T% zoqWn8Qb0s$5R8OczdY4YcHS%gw7G}R!!A$DA9*_43--6&^A>FaTMJxMlqW*w?f~)P zaE?z99{_Z+4Ix;Hy@z1$YkEdC8(iS(+z}pI8%%Z8GWH9)SRCW)N>b~3aALn#a)FCF zn%~a800dRwDzPk@S*`f{&4G&uD1n~hB}0Z>mkKjF`=2F2AM?u7vg`CWJ!PX$(CEwd zTzQvk?v{!Jz^4Um=;GyKErZ;18e@PGB#8&QuRuWjZ?}_lYQMv4|)UQ zXU!N50BrSrED&ZIENVSQm+($iI1Zoa<1Thd_3|fL< z<5rOjm&ec?`BREvT132n3Bk`me#XUtn?r9G#V32sbYh)~#Ms=v>mBG#s*ja_i8W8% z%Y`v^t7FH@3n%Xiii$m?L4?1=lL&x_pMSez>?Bp{1`hi{w4Ii5Pn1v4dM}%ke?V#! z8HO4zDzjk5XLG*9ONQ$6eeXJH5d<1O|45<#{2x=How3baag@XY|AUK84v z;`?TLi02~`H~jtIW4esMrS4$qYrP#G4V&xEib;JSFo=3l$z`asak-1tEr`#1`{vrd zj{qr987xXO5`^N6!bdQYeIy*_eixSWCZc9FCDu93&u|+nl`hzxAKs!5k_7A{unZTS zy2WXPPepC17|O$m9&vPYC~?zh7&N=Q266!%2?qR3h@51<-2g=-HT;xM{POua_npW8 zvH+51{+n-EAAbCK1B6}Bi7s!jBouz)JRS^$J!{F+1Hd)@2sl?3^boOsT7&Pd0*9o1 zvgI9C>y6~Q5;fTVvc~3u=Oi4nwy^{Txj(_Yx!Wvt2SRc%Uf{~!l&Kp`0^hrt`uc<@ zwhe6~xFvJue(}uZ+Q*6;R49r4@0J+|!|{4XqkL1UiEi2Q^f5~iyfomaqybs)dvPI% zn%}GU+r8dC5QAl`)aF{ighD7>I_QCC2mzm*8W6*g_S<#poGYMT_fHWGReZql>s8Yk zKj=FKk+wUN(%LQ@%!KO)Pk*7vKocM9FU~~66Wf{=3#4ViQEsc4^2LFaiK9vE4gE@#ju&4)RfP^vG0v*IY>J`&xCJXW<3tFT5{OnXToM!SgI88n4-ZBAs z;C0F+r#kqXFTq01YLAhU$JLL>Ihi?dZx9#@--DK&a6r@LP1!n)mw>|qIF4@0Tfnb; zVo$c(;hQLypKwE}eCU7aN9^fPLqg$a5lb(eSzs}RftY{d>JEeC-|7KOG(dE< zTInH> T{om*~=IEO9r$S$U(SLX2FIo)V(4l5K8g%io5G{X_M98RR11j_i{M!W9 z;;*o{>9DNmWD;nJo~Qi%<_9}((DzX?@bc&SZFt`tx(Qa%Zm(2)ln7Zq(p7%Q_?Ik4 z#iJ@02D+?DD(|kH=BlpZE%V%ag(Zqie+M&87 zZ*jck{!4lgPm6jV_5WP8L;fuq<*aak;(2)+GS5c(2kmILpx&1lla@~beMIVU8GC5m z?ya13`PP1b4Xq^U;4c=9V{CN9A*Ee_gBm>ww>hLKZC3?jCk2TOhbkHZw?DVMd{s!` z(HOxh82zo#3a~4Ca}*FPndIPK-nNetL7m*je~o5<->tEEpcPg_=so`MR$Eg2QLdm5 z$cj)CZ1D4eCZ2KqJVyz-dPGqPgWyWyyzW}GjYoMyqfaDKU|21B&M5WgSjKzp65tWT z?*aE|M~C3YiB`Lnfqg-}gLika-hBr|QW?z2G>T;Z{*dKKqb=%Iln8^463F1p>sZ<~ zsJ6wr-30c>WK{yzPbz;Ze%9dpdr7tR%YvE!QE8gL_og)TQvlUR5vX>Qdau6s8PFBf za+Ex-U_%3#;?obisn zhjxt%Rs~yUTdNEInZI}@GYHuhcz0Ty(FLYpUXzCH$ht}m%HR%{m1cYdPfs@1Emdts z9@d0qXc95kM;+!|TrCN7B}oq+An}m)#)&6LiUMK#SmvZ^ulq13n1CF}!8$fl#8LDt z^|bdH_NzX7ldLut-5xmd7(1s*Ir>G{WSx=niU?RpBmGsYv#3wc9B%mUb4$#6m0~k7;Sd{_*1Nz*K{!pO57Vf{*D;{m5>1aFP zMJ9cKn6Sb&V6O6m;>h|{F^PWxWrvDIy7#T5&M*ga&7#{w!(a9^)zCj zivkgVF8-b*H{JT2FEvALx{hu5qm96ZB8&_c*Gec;BsOy#&F!^+69J9W8@xr7-F(R6 zXKOfz7NU!mKf+G#4{JYrm@!^;;e-?pFaMEYWf@r&oe>X~{~CPM)`1~ioq!RqT-_4^ z<(2hBa@S|D(2Jd`N7_44_{T)F3(+SsugUW%SmP=38r#koryCMU3jn??cWnbrD}erE zZ&0ZHON{!Eu2}8tvu|WY3ox^+OH$iU=Kx|nBovBmj2-2NZzh}t3k2V!ieNHW&MF~= z9oE4jRS}1IbOJfg!Na+_MD$kAVPlM+7w{AYe1jFQlXdH{bu^hg++T_POCmcM!ID0` zTN;l43Qm1MIoCe(0%_`GqWpM?ZC!YZ|#li*?{# zKZ7m?!M1M$@yXD?>xjvPA?%Yfwp1eGfw)g*8;j6MjDscF0a|Gf2KpAHqn>Gkdwlxn zKL~QVV?*Ne4=M3xOrPQf{D}wK$$jMXk)1Ww`HY1v>Kk4aA5Xx@YtNN+gDFzG<(887 zp=wV>ROiHs>Ii-b68Vht(Tp=8f@#pdy0iu0yrWL7Jb1MgA3pCtU7HeSjVD^9?ae{ro&mdt3+GP4{(9TcA=6xhO$0uVzQIRJ);YX0Ruf+O*(((~i zqdO$MMT~*E!po^ae@=Ka#@3QN19#s!imsN5UIxDfWQ)e%EJx^r@yCBo)vBR5Fw9|H z%v=0VOD$p%rki;Ue9b6vsCz$#O|Q&NvRwO}H{!0YHKo)zIZ8RM;p|vgE@$n5I4YD3 zg#dp%OpeDEboIvsT>4bX0MHzUBXyPEeJU4KXXgkQ58e16jgaD40O(_etD24{SK$P+ zT;zKhbyHnZchLLt1Iz?V@$W)7Oo2)<4=s#lQilztLR=22i{yfy_=WD%q%$>#GpN4m zyu-zd`3jD+<~3Rim^dHI?NDrYizN92MP9%1cnrag}5X;LL-mq33K)@C_+{QFFb9@Ff8e?To2H|+&bNbKlw zfv9;W|2`@}drTeRo+9yN2p;D0h*M7Mti4488Kwq8zjwo}D$;&;orb~flt>&+>E#(y z0K}COO|vB!|EHhJi#&=Y_?hoC-4&&Y=kh9Pl6n`ayWc_ez71t!*#2 zzE2X;PF{TC8Y&p|%xf(GNe0#LEBN-OJrR4J54brub=WLtd(hIf639Ga`5)YvhMIsd za;{iqPGWUT;hbOc^9Pr-aCHC|htyfvHr^~81U{D$XSw%c*LPJ+Z)mw-CWc3d@p=)9 z&JXaT`#)IYOZB0xV`C!bMtF6t4DOndb>Bzuga3k!E2kKdp6t=#g;$B1R->n4MQe=l zq{-QlZo;1x5579R(y#`p$|ONtkATgUfKOjS>{NyS3LxOnGBd?9G>PzEv3^)})-2WL zz>_p&xnKj7FIZ1HI0BR^Ye+>IQgX{A>-{Kz{$+ zOFE*#yNFNRB@rPOd5mIAT1h*Y_4w{(Nh-Y5c_9smcAvWTV8~-@(E|QGLMCcB4j@rH zA9xbSCj4DJ4V7Z`7cE$+rHF$11Q}pp?#-u>bm)y2s+^9o zj^eaJq<77_xs~RmzBd)BzyHzMipeLYOU+9VDkGDjQAth1q!@nZaw>1c_ZiK) z5{Is&*a7xZ>|QQ}w#=ROhZBZ$Bmnm_byKtx*xjXVVL(5Xn29xttx8jNvy+G8kP~!0rt(Gu ze6$n-Jh=mw9~O??I*RR~wu4o4aAR&1K-_TZd;1uC>&(!I;k}*J;o}JOq-V7c`rYkW3rC@5#Xr z>tog&-Snkeqj=|39*mx<*>YppeJ=4IC;Whg>~VifuJ}=iv@rVy2=2{ph0F0uP}k4J z@OTE(3x{1A^%|hb?lO9{1o9PU;Y{KP#}=fG`Vt*be}QloH-+z^ne7|0_DEqY))LYq z&9Wv>$>7%0Zn>E&kf*>OjZPjtQnWRm51!ls5-ZgG&q1V?{Dk)ww17}804@?jN^y1TmIwW}^ULH|&n0h5b>q@M_=P7?IPS zlScsC>09X$o`Brpa+k&a?3?$1BinlTyM4{G_>bsRa(pyaIZ<;yd4aF#7kXaEruZjVBWIMfVP-I!XV$YXp;S1nUzh*S_iGz+B1jof$e&LyQdL>?|G{Dip zD#FP5F1nMv5%MIh=h7&`Z(m7{W(Y+J1M@6r>+|1lNLhp!2cgDBzNSu+qCho9bb>-G z)KP;6t&kQ`vX0xt)>kb)Y2<=BGF=d$q_G?}!07~d0XsCza$zBm$EHjLG^k_eOMvFK zUgt3jQL};e9TdFC5Q=U?#h&o*Y6qgVO`&a|qnS)hlH8?3YzaEv9+jQ|^9(*2K=kDT z-~K;DpA$XY{d$klUMAUtXLQ`iDww0S|CC5RM})P)k9RgZtd+D+dadZyv0Gtf(Rs2{ zR#u#MikgtDlMb)yPQzJrCFLi6*S?|IK)rM)eGj4UwU$RGnl3C9t`q*})2iey!!v-p zt6Nxd#SCzFGFUC=-#9=PM4i9~9N^xBlJ4os(y~!FBSWhL4D<&{sJzm+js+DTUd?i9 zz1y%?T^ra7fzf)MZo7q?o~-~44x^I_?vFK^*Vg9;sMGurpka+6QeA+{b{`2jO8Ffi zV8Vy87o_=nHe_!3pmiIFNI{)IA5PXe_i%#NzSV9Q92_3S=$m(WddPbHaA?nTU91$$ z0G_?}3u{Km@wl2%7*{1VVq<$;_C(Lk1MXf_d&Zz;MCM}z!=H5wd{1Eu_q<*+ljl8B zU3X~z1QMHa>S-IER-fj* zSnGXJG)fbrtEfzSa}XwNzoogdzCz_S{AlQP_B)Ktd{}m@PDAjMRI=VW#n)3poLJM$ z2fgVm$I~xjAGO7|j>tYw0g(cp^Y%0kdtyiy)lup17HR5HyZ2zu>+v^mRJYoa3GxsZ6d&t58NIVJ5b0?+O{?CSB(pz* zXRnQK6b-*I3d!{4o0hsrveSaM&$yhaxh~E2<(!lRZtMx}jBdr~<$Cl9%P)kAB=w3M z=782NyNV!+YzohTMH?05d(oTnMiwsv+gR@$%o^KPHU<0ffju#VPn7}?C^%;#lM<;ZfJZNQqneeujw`;)?_&0kARMvSy=6c^ig{M7;02 z2_U!}=ICC-YyRo->b=V^hf{Q6QQK#(ryBGTqjj%El=Qv!GBK>b|4{h8q&4k2V1lZ@ zSuxWq7)*^?og+jnxuJkfD^muUa{sQS3ODenETX2l=_StzeR5C=zJ2P%z5bqg~l zIKLI*+*A;<@A?LUgA;4pgfsV<+%6>W`*G}gg{whlC-Ks`A#K*P+E&(8YOp`A9Qv-L z2)Q2h7P#i!AI(+2>5RA0Q5LQP!6(08Jg|z4YzM}V*6SI&WS|2rn!nNcFg_6Hc|1|R z9vvTDBy_NwUVWW#;4l~7xIMUM$`8L>Yol@)>u*@w&M#)k^^Q%Nac`2OKTzvd*=e|5R#r@;AJbt`fx90g z+737A!mO%@LPzwoDidQqHk6FLgdL9q7HP9kXbnJ9Zg+>6~+IiKu4I41qNYUHPoZZyE$<+&8WY*6)~M38|9Xx~nenleLfRK!Kxe3%vut$w zW6jTC9$XHPX3n2)t*Ccu^mpBwcyjF+g9<2P{!LHjTfs6!7?FgOZc`t*4_?_>EeO|` zxALzr;R={$OMNa0J zR-JLRz~w<-#f}!4c4&A8cG9lkmeXHZ9jg9@!=b>cEKCf;~B_1tRVzx^PvSQ78PKl13^| z;zVG@%lPs5GM#tA$|;1e>D1r#!~gvaugd_*jdV+jOJdZ)Q2g(~kYJ;^6>5wrhq2*< z3akLIq}98jr*9&CfIW%{xPU@lBIOg96X3H~#UIBNTRhQjLiHhgRNz{QHeOg&-5a>9 zoCDR6yaCh&Yq~B9#!tAT^Hm5?MWAj zR&)rul}7HNzVq{oom$~9J-0hCVYDGRkqxq)hJ*70LaWcWUjztiu^zdM5)V?|W>2OA zZyk+(0Ke_g=Y8}9Js1)ihuMJRu}c^K2zW{$ULMaZL|=iDP;4}3=>kPlkV(kHJRoj- z#T95+p!!P~dFm9Gk*+-)U^!AxYZ0ItFb3{f@l1vce#8^GzF|B$=>R9vSxCb4Wd%eB ze-S^QP#z2)_AsWIx?EyqJ4sF+_R<5L&QP)Ta5di8yk>WY#mG#`4$2|l!?qKF0-8w5 zXVlT78QXvL0IR=lMH`9$kbRk>h3V!02>}I=W9Sn!7diuQDNRehN9{Xi3p>~bkE(4# zd~4L<*NihF+GD9a=naeHh4$C1n8S>W+!x$$Kl>F-v#epm9?G1nJnwTT61f6janMBI zL*s-dd_AfP66`1tR4#Xpi-+ow>N3#9VB|UD((D}T38LIPqv883l_U7*Im`%lK3H** zua0Ks02nC(t%sq2Nr&(j)vP?0Y=mYY+K&_KM)w_ozl|m6G`1FSd8{D&I|i^CS*@uN zb{lc6`k3;(j6cW#{)$Z*rz>6<32go(jGltc!h!jcUQEtOJ~Tj2Zm?_nq#)pim*(4R z**F={`pg4lQk1=q%JE}|&$FaRPsTN}?7`I7!I?~Qi*w%$GWsha3!7QU*M$%3Tgd(G z817K3*-3@18o9wgMPfD3bry?P*^h1Uw_uE~OV>19;xs|0MGNOO4$tqQbw3 zGM!jpVKKz}NV>f~H6|}oY2l_PubP4mSI~{*3>3p*5{aL?U#5hM^R8H%SB}dEh}sdb zgGhs{Si!bGVGP%s@qhG7?f{Ovwtxo%@c9z>yr*pA`1v+zl+f3$8839dz+J)s42(mv zIP8(p(s*+I%Xo0mQ(=KF{=Q zwUstKIvzP0J(x zWdR=AV%@D~+smz?mYiWny!weKx?xzKYfG@#vG*XEv~Kc5HbT z(c)oo==ZmsUv}t(L*p|z2Q)hM(!?iXC&g!)?vTU6b#~ES%L2JG0<5d7=Q3{EqoGs1 z@L+O-6q8Syzy2kcS-JohJC>DVo@!h|cKXs(u`VsLf5_D%mFxg9X4qxuV4!Qj&&u!% zL567G1c9o+gOlG)x}~JeI(b=W0%gz>U-cB) zNQ$TULQ&pPIHzT!QfW>gwMQylwm;i;*q}fCKn-G#+In=1@Z{WS;Q!F83Jzm~opcP@ zi%T<>YaTEHm0`usX6^&9)4c&n8^=Ywv@b9w@EV>*u~Y6R)p?ZL?upWgAKYU5JyJb) z0OR~3g{$jV#xSGLT8eGf6_|r`T9D&+-H?fou@S9oI7Kpp?Q+$je@@wHjJnL}C-GV@ zdy>8MjKA>esZvtXIhiHhLhF-S6?OKExRRsm2#)1&K*)6X$h+UBJZW@D;iT#~0hoff zxHSZd3UAf7<;;LxVQBpC(NrJWelalTYd_#o{};SU>1}xmpQSUK7hddU3v-Z$;(Q>K zfm3&Wq)C!XO%eNsr4teLvg|&Wg8O3{c+zF60#f*+4CQj#<|NT8%w*`k3Y#(9kCe$F zJ>1nKd`=+e)?WA240Iacm^P=oigr3j2De~6Dc*5^rNqns_8waB{CD^H{2(eO&!{Ab z8<95c@3(LNulVY%y)G%0a_3$f{B)E21zJ*0Lt&_8{0ezh_2)3rRX(jfH&C&E;cXbC z7Ez8|zcr~VPl{gJFa`biE%ngi*yZuCp0t5C59ig%5s7_gli<3aEM@<(Rd=T6J+>ho zFY5NR!+{GMtFRD~5ks??j31sN`!-ay7g@)@P5E)FmtjYxTjjOBS)+LB?zCmom#j>S)nf;sH33)$9sHv(6iPi6*>-SCHb^SjfAie1Gc6x0PY zzL~l%oiRErBWl(%x=v@h6>d&1DzvPBRB-pcOpxiXJsji;+t@TZAGUsdprzQ241w@+ zvuaw=H5ptlp$&_k?n*!$z?t$)G`dv+;(?_Bx%6W1sO@7v?hB&hdP%DC0kGPGry1V{ z2Z-zG7X5=kF2fNb`jjraB;Xu8bi8CpJ4IIF>7A_KUqH}lh>`zyWi~>6Sh#U#io4I@ zuAn8wfEI`0eX7WR-GFn_!C2(Z1Wm-^f!J&>Kiw7kz^+X(lncMyT5mBU8q_Wl-fx1| zU~xjuoPLN3GbhD9NS`0X7&d&Q7{mZ~#csXVVaiMmXBNHOCSquqLfHYABPaSZO5$<6 z+p+vS(Y%eNKK z<+@Gxc>%Ko_3be3-xuIT4Ot4UjW-Ye!R@1qwPB00H!eCFIKnbq-JDen$(CA$RmAG* zgT!W3xj;nV&4x`~cIaxEceIwpy~1zD(dXASHs!OGH`$Ugni4~OoH0P@06UM9t+7dy ztNZrDKdP)wSCZHL?rK}@%3JS;$(_vD`ft}728BL#ugS6LC#-XrR3j(kbDcEo`Qfn0 z-+Z|K@b%jD?|{4;xWv&!+fGc-s-R6haK0gZ9WQQ9;UXXNVPCASyz%Xe$VnK#*MuXL z&|cW@qnY2umJ1Z;79GT6Y=ovk>vCm1`OUqxnrzoA9J=o3V&|@>ByopMD(2aqj8^Ag zSBAI7l8QBwJd~3?FO!ya4Pd%li>F9sfq@pfg)cfE2Ctvm6>wDaY)h}ti(zgg<45R%|6nKQuX-S~$1NTQeKgir-Fq_vCEde%YsWc2KLA8^&a&56+6<`kvfliT@9StUFNf*-eo(D-B|BRgGz4 zJl#qD3leR|8;@Y$F!2WeFAh1Y9FR$<7*vQq4EXEs$I>-c2;Se})5)mPcN2S2R2CIF z>y;1s;d=*n%Eqp+cBWFxyhF|Y+)&V}bz=D$pHY_-yY` z167U21#Ycs(0AG*Hr~A$BK~h&ht8%v74*Yy2%Tu&R5Sw;hRH= zt&%<3>eWy_`!jxN%WjU=;a0)z;w!hp95uex%&5_6sh!%hQoQZDEDYT%KZe*Kn;$os zb-eoGHIy%*Dz8PXfI!)-lR<88Hq{T=m?W22h3}`Hx^{oC&yP3QDn{N1#!T`Wv_CUmjrTYZ$*Bybo^CTqE!6wgvr7gj53*V_<;H*TT!uJ-Es{5bwk^+uK~&s<9? zy>)Tjs&UU%pd`R#RlJRQWL*(7oPY!BFnC+k{t@pqh)|B6+rNmcqSJ~G2uB3GrWE8w zH-lk@=8kC8=)D36=wG#f!*;CmWxBI``C|wE+jDkcNe&qKZ9;?LvB}H$7)CI9ugJb( zwKhL=WOAa@QFFTCpC#nhdi(y$hB^qI#ydoQV3FxiIqL1Dt4nq?`T8MqeXZk!K@+lX zA#$iYM;3#kK;QE$6H-h4`s#J9@{Q{uW!=r}Sh>rN?|qlwxwEi1nTg;lqalEg4tG=}Dz{}z_E0E$deE)Bs!4-nhaH>y{Lh$ZgUSS;vt zd?z%6F)Y@2zji;Y!&Zg@%U^h<;jzvX+jVg1)O^A;Ypm^VY{aIOf zkV6cIs9TxQVAjf#MFDgm%Eia$z~Ke_mGM}GtZ~pCexO-0lbk=qy5hf-uX%sUsQVH} zmS?TC3v;bdBYB83-#VjV*16=I(jk?yX2(?MtUpof@@8~YZG|G=sF#W~2(f={6VfAv zU>mMazj$9D??|2^!q(upcD`@*KK1_1=7M9e`#!_fbY!*3>O|%zVZjp-HNiqIeHdY_ z*SI2X&GIYxOERwqpJbMEq?4Vpvywt_FA!@-G1r9=_?v3V$~HCUI(2*d4I^%i?dIo~ z*OOmvp65mq=(#^qdW64T7ck>>!4txF4IOxx_G$*5Xgx#rM(F_qB-x#vI%vUIMLyd^ zWBU7|3jBsiI5~EGhR-_3^L!06?RfuCw9F6%`p`HM&S72j!P#%%o%Mze-3vQJ*p-mbl z6WMR5nQiQrz3h~)zB$f6T&*KNU?}|2(M$hp??*P(;5Vz@k&{`^bQAU8Z)A(R2h5d= zM^=WLvh}oSErb&t4!7gpu9KDz9AC+dg}qwgmFF8;ZGE&D?-Dv|)e$vHWism8K^ka| zgfX(6nX1dirV2aW6i%MResSn+tmD4wwzDXdmu}6Rb6VHlViSz?xz=%R+sJG$xNrt-|KMYR!n(Jasdk zTP_qeJIewKHm~80keO_*>1~qhtDMl^HV+e>HooBA-&pgz-;RLJ7@-Tp0^8}8P3SmT z>TTB2NuT=X>Y=io1LkgnC;mky9P6bh&sxBa(hn5?N>^^TqooNZudWHP+L2@p=1VOW zf-gSA)_$RvME+U!rDYH;7z9*PtSa+l{TQ|^YIvg^4| ziqS{N7rzvbRS+`H212VUfx=lOtxsz*O1J8PRpqpokNf!L!aA_HKFV0jxaSttJ{>vK zn;{&}ocCqNHJ{ddz2Qn`@@-D_|*h zEIRDxX0v_W^*mZK6S#;Ks<;wvTkFwC8mW*_AeT(*xacOrU!DA-Fc`Q~pSut+rTv-t zi}-nqgwyJ$h@$6T%acAX7M-tm^~rih#w0p8cVyd5vz+u#v>hw$TxUnQznpbhpr@$* zEs(idF&!6|0%`Rr1zuKleT%t%lEW|a;#=d0#J`a`3mU+CyeY1KI$T)JN(tv?v6o^W zj7(nSpE$x^Lf#v}i#bdHcl%$GLYM+#aZ9ek@_t0uVDcPjo6*WfRu%Z=5}J`;ZQ>1i z3~f;dmX{q+ruVK9J`|^X7Ogz@`)PGJu;xgCV2z}Yc+uuh{rD|r3!_PiBLf;Fo}5g$ zYF;_qsFeTI(vB6orKc?x*%WD%C5|T{6<{qHp>2?um3}Q`O}|Iv-yi$V|GPG|PgcL`4r+ zzeAp#KNF5D-|FisPJgHIwZeE*rd$om(2#8Vi|(n@C3gAFXxAEFL!wTb-Up3bd^5_5 z8epy)QFh6$Dc|g0TsH9Vjv-$ZY0xGocy$cW<-`ITebFmVLoat-$}s(sb*x?ZBDM34 zURT+k6zu`z_c{trca)$$jL(}sC$6iL#40$5%-M=G_ef5e7gqh8~)2u;!Vap*ua@N47z&i53sC(^Ql>wNBw z_W*(U7$66oZaS+*K&0X&)x&8NG0}L^%H|n6OihFaG&geUECJvLC6h-b@`wn5P|JEt z{n$u0Z8(&6m=JgGNcxZoh{MR;-D&p>{ZwtS*cpll z6!AU;M2fT1q!SEH(-WEp?spMgM?3wvz)rj8vUthbZORcMIo+1e7Q$824lvWaHa21H@3R;0H-e`5k*4;Z2u6M`jm|0dGkiALwE2%zi~C-NST~p~ zp0SG_?AVI;%R3Dy>97S)0^||>?j>@7^$Q_8 zXoA4c<-V9z&PT@xR5}J1%>{0~g=P*6b8C{_g2b&5Q6|!^{Fr~P)0411vKK_7fS^pO z-r~5d#*w76-WJ}&@s>fUDFmJag#iY$ifO_z(ImAA#D5bB0Y|%6S@9!=SWw`y1M=Q} z9=1MSO%aBLqjJ|8T!3uA4RKzL8&mvq zdxuZZ?gAG*x&zYOFFmWciwyuwqmR%(^WFeI#WM?ukUO6kYi^*nEkT(bn{%QO$#br) z07u_>C;6f*#Qa7`?ak!%9!;`0Q=Be;EzHy&!-^($exF8B> z{LGDBjR*L7@!1#v9XI4V;8y+wZOczoX>9wap*gtpgTz~0OSIeO0Te)$f{yhJINrn- zSoRcv50S}C;}dxIKZS%RvAxrZrv01y0lCXRzjNCaLlcX!B@85=qUi!er`=aRc3?`7 znp#I07deWj>LIsgyjwCT=5!JI!uuu1@UR&>?Y07@3XhBjy* zEbZ;%beq3595HW`ItoBi$E{n}%7o~j8KC5V#}KOkDv`25faSq@fRUvK`f4V!U+}_a zst{GZ#2o)tWRU>)LLA4|jCL|m_ZI(7fXK)k`20d7wW=)oliy`t5o*_-I`)rLF)&+I_hRtQRQo3&zZSRv|LNEV( z?Hz38dxO$d0um^ilV#O)flPu;Rw}nt4y@qPhftKry~wM%eN3rLAlvi?c@CRYA7n-f zN7%<_Tq9>TXoB=%aqUq}->>*I%~&JszhzL-9~p-j7Cx08EEKY)tJ?XGIKg3qtD!;1 zY~ldwsy8Us@ze=WCuEhqjyT-P$)L!Wjnf&#M81cz3sN7ku8Hk6Rb{oYc?_X+39L(F zq+PSJN5KoB9fIqCjk@fzf(t(`Z}xE5f(jqk>#rwX5#=`f?O`ezdvfFzbO@qi& z4-Q!5l?_Z9Jd07qID4mLS(ZY+0LbI*00l0mOLo7gha%d|6}80fOQqMh zxAP+HL&(}H=%<-1G+@oh8-3`YQ0SXh%Ju!2O^J>#d-xq+Hp4Tn!@zsu0gZ!M@f2Tm zSS&VnbR|ZShyEFuw7dlqY`H=56=@GXqxz!L!S5&t9->^n6z>(H0MiK;Cp+kh)U(?l zvJy?l2K~&MSnCMnGLAaBPnB{t73c;Om;Oi3kRD=pQaCTXN|PQVNQ;YYeD57Xpfk(M z8dS8t?U5SlHl)djIE>7gn6AcIGnh6_G-WX*`t~a1E5QLF?x@CA<>6`OfeS)NV&h;EBLF|gJ0e!6|M5B(zsbW`(@dJus<66#^Mt3z7~!t zwaBY7U(G+u_V*>{3K-Y}sURxViRz9&UGAQ(>N5EkXE++fycTZXj%ra@v3Rd> zzyfoFR;T||U=hsQoG+SN?i}7u4;4_PFpqgn1b*j9mkH6^a8wS9whwkYd$&0mpxnWF z_V|4^@szXS`?UuP5(xa~!jwa7xms6mNv^-6H}EIC6|3{rX74NPe0w|6rq=;yih~-n zOV1Ofi->z6Aq?ksDJm`hkyL0`Lis2KDyyp+jnpylVhG3?>X(k3nMpDpfy zG5DzPXvGq;f{+|)1@(!Yp1(DBPh%4M(B3y0uTE=0H_GrPL-fg;StS>k=7!M5^)rP+ z8KNhnX7wy=2=1z89AuehT8iFcWM6@!X~jZVQNk64MOvaYSk%5AhNXUXnwk8poq31q zkqVTLjL;gIVm?IKO7aWz_CEhTvKgMW9{K&4FuJ_mJ13NW2As2=AELSHuf4agA}bej zd9Sapez`9v{(NN?5pxpFh^Vz0AEz%N-K`+g<`rgewENOS-1^CLPndRqsuk|ymqh$7JEOjX~LXCVwI+~pkCNe&To|j zOx+iS2&LpiBF%8`Z>HSD-f14){*{bgl+XtI=t@AJ#5JN_I9sBKGNQo6_%sKCc-k=*_2}UVNn3-35)U-v7u|bn!_vsxhMt zAYN>}50kcpsa-TZnRAQj(%jpfmC1Y|gKXXF*V}rX?!&ucKT-y^5yAuECq@%C~=Ni<#v#+!Qw-BCg1* zc~9w#iR3=MEG`!5qG67%_1P7gG((KcC|eL4O01#QS&H_yKwWc3Gr2>= zS9{}4#It6`Vdn18TuiR92%UJE$ykHvuzTqA`4n8$w$6c~`_60}jLtElwogP_KUat( zj+6V3C;s83a(TUX{r@rc-tknw|Nr2hm^gJmAyh_WrnO|3x#9FvG-0& znGv$0?2v3SviDwDzw3Ctdf$G(&+q&G-ah}-^LFz**L;lo%2lK-Z4PXI!Mk}^*v>;aieb}m^7XWI{T>t^cFf&b#f}!|?zSH|yVt>; zG_7$n;vWgDSJf&v0%IEcvwOIqMyQ3}QQrq6ic@Dkb*0%p2wW=PBiK9alwJ!ZS3rZ>+aq#&*b!-w@w`dMUOBr7=GD*SvmjQkRgC-ZQxkt($Q7#OAAxwT2rdJ`U9 zgtLh?DO2cjlNLcI|1oDU-nG@qub8@C(gGLSc?3CkYs{`?%8Kb6H%G1xlQ*yxG3 zQ#_l|{W;~Cphv$Xn%-t*Y%C=k(NiKOpRyYNMO;qiO;(IUEBS3&__Q+1>|v=6Ik!Zc ze}nX6aB6{hW&7x2Xq#Z6eDk^YX+`UY2hYDqu6o@jr+HNQp@dkByR$?$$Y8I$7VnDynL$u0A58@vq0palIZOh^0K;<4r|gIGh| zQ?4r;U)I7&#k)gBe$BJuL*L88e?nbG%&k6UifU47YI%6PQveikL^742SZ`te+Kq~? z9+jJPyzbz!GvqpasQMgyjhj)_|0fX~0&V(K zLQWuK7sOJAtG%%^j!XBq7NBCoW91f~M~CICz4$N(xOU|_4&^t5nq=KE@A0uMyUc** zy5^I2l~NK{-{%y%ynp*XCx!v_;6B)5@>Yc#oN92U()W)X$h`F^a-(*Fn-eN0<(k3i zEX}%Q)YS&}82+&YHdwa^J`txqok3p3SYXYQvD53#xW$Dr-6XA~l|=h|8HHUZow>di zY@L6)#e(MAuy+k6DVF2?Hxt0gL?qwSe4?K=3*>A)g~@|TEV~3e<*kkBbg%CijTQzV zcb-_sC6Qb~aV^wFGNlp5$Ye5IY~(m5>rvPQ9Ddwn4`(j;oC(geeCbPD^QOb+QB3h~ z$hHW2Byw&r6~OvVXwy;n`Vnofa-~brkg4wO`(pM#Z&Ly)K?XapZ=pmC2EI$%SaYo5 zDJ1iWaZ0ByBggD~Y_cpSuYCEp;9qgruZQJlainu();WZ!5-Hz04BKl^O8E0lk#v2Q zfq^Xf20H7ZgQ_pj-|ekr4nuzVazXYxIQ)0V)m5TZ;Irl6cr@uy8aK3oX=2iA2$C2#K z18^ZK+HjUZ7GAHx@|edhDL^548Q~;gB%c#(_UGk_y6F-)I8|@=ksaL)9gDyJ=L=nV z_>Fs?%eQPQ0!6yhZLaFz9sAsak2bZZ_JV-O-`;Y-CeWP_K{gaw0RLC%GQcHNCe%`5 z@V1LMaKBF_i5s1&1OELlw@t3sIgilTBvECtUiXqz8X2A2jL}J7+Exps+i|tVOH0Ce z9Q539H`j(L>+96f(M;YN->aCNorU>m8k)xp{v2yT;5eIHf|5zY+H~G4^0$48{&U#O zXR$jCGzov?f5o@7!TBsq7C6Z2K0bQ6=d|*|JopYK!uj+zs!-Dt9D}X>Qu{)gfmYW6 z0c(mNHI;laIz98K<^};XUoS^EaX~T%yD!V89y33YyFPc)J_&_UJ1p>lrak|M;KG@b z^nqN%?iujd=s5S5)fR&Ic%{9h&$WeD{Cl6WP3KjhI{+Xr;FZpubYQY=v z{BW0_ClY_)Z?Ux)>r$E3~Z@I@bU@8VO~qVn0% z$idgqER>GIq>Q;_dJEUMoUWfc%mql$idPo~T(PRCX%dU`nz;k(yw?5rj8#cv$QN8@ zdT7+5WGO@T$@(MKzo2W=H@yR8NF>(F5m84CF5%!~raSfu+u51B(oGcf&{);f)2@_) zfC0?bqZACW)0?m)xs>TY!TY+h$d*huOhMM)hS)}Xl#n6xt(&ex@3gVW< zvF5W`W1C&A)w3ezmn%vV?%dzZZCGUYb7t&UikjqXz2 zJ$N5IQ+TT0o|199aa%(VxzlD8@}rytk$ZQ+*FuR`itl4o6{0Qyo)Hvnq*;y2zpQJ) zz>~85Io>VM#Bow(yUq19FrV@Kv|%<{;NuG^{#~(*oQhNPL|JDaBuke3&Pm-pWXRbE zCKwIuH-ec0C-;Eg#$KbK)5;=ppaB1CRKWV;oi+c@T=15K`~##kPI;WP?(jx?R7kTS z^Booh2MJDY72}At*vCq-C09FYEIm#vL&c^8HyUB;u=dihA_*87GzlN+zW$0%E`x%m zh6ycW$2h$bWM=QtH{TDg*wDr)e+4>0IPjCB%_;PK;EY(eV5pU`4CN3*4|SG9<84n! ztIfCxPp^b}_uRFw-z114SvBb5>5&=lnBB38Z{b%x!+Utky}4En2g%3|9q+XonbW?8 zu0m7D>@mOV4q8fEA%nu4Ujz*0Ow3XqyTNPFNy>sjwYiM&nq^Rbz}oLZHSj5$hH}89 zs&4b&k(FDS6lTF=)Um3vx}J{3=>K{f-p+plvo@j_Fm#U?>O4#Vl6m%q&;6nk{ZJGrqYg=0TatXFtbyx>aM0Z^~ zk1e>7QmB285J7TV&{3d*x<0tu2f;L)DQsze!`FDA`cybZ zpI_Xf;_(|~!x~k-+?kvIb7xvq*@tpGe~%(49mHot7Qbza-=N1;{n6H0Z#*E=A z1>M#(^cqcqaml&K>pLS@1#$~sx*x+7Z)!^WJ31_;c+@4+r`qsrzt2bB<<@cArGr;} zV}=>d(2T= zKS1{HDhjj;J|}0&vZ@yxzE7(?Os(}SP^3B`QGVa!w#Cgo788e_gjpJoFk#MnFImpSJyI*jNN=%vlkik z_*&o^-0Y-=I4vA$Ir4Qd6CV|zf|FbOO!1XDC6Yx>o~E-if?mx3i`LWa-!qka(wR0_ z!>tUsT9lS)@;zKgduOXVcW-QLhLwxC_Ps_~qBtbN>d5I8L-KC*pw~ivm!`l9I>Ovz zDb`DQ>6Ls6x4}xZV+VQNU4_hEd9C#NO?+;g>|G`}C*?Ay+K8;rxsZ7kWwdyFLMUwY z9_iopP0G~L`~Z)62#jiyxegjdoK`(X0Td_fQsD(6gHWp19rwhaVL2DTLWgO#m0-%| ztuez%kUIQn9Y{U&^huq++b$V;k(!igN|ZrbYBp?+Uez1wW+GBi!FHk6%X}z_AWk3% zQ1Gtey$z4eJ%Cbd+)G<_pG#N^t84!FeOQGSrX0;4%qnN-l~ue)h8hbpOIz<7+Q{yD zZ9}PBgl|c8solCP@D{dWj4?8XlMPmixe^QdsavZ57;5%ps=0_UY3F1cNPtIB)koW_ zrI@N3aLH*eTg|O@P)VRwE!`ps?#!RJ?VD8TR&6KhJDEZ#qVBk5kG@gbwD8Yte`|fg z7R(`$`%`t~F&@QAXUxziiRf7t9j9{CTqCD3jcb<#dIGNlDP}|C!vg<#@&hwSjJHZ&0BRqjwIO2}bkkaE-S$8V@q)V|@fCu`kW`qZMlm+0 zaLu@JkQGzETIR@d3ED_ODNF@{(VLS1*G=S0vc8ElUwjPQ|; zGNqO5I`jW8D>`*)MgPAh{-#Jsiu!vB5k>?@;-woIi+k%@mX5O$kN;A&>0p<(-0-}L z&?M|4^w)XSSOixEhd?YZ@DIzZ+3xMJCCGeMj%#kI(gW9VjC>G!J~MR zzbE`p`He?KPQ}iWO3~9O{izXFP9+1186mfi5BU55h zCnt3KTXl|^p%OyTf5xGAd+9P-XGb#;Ru7e)jy3!SMI-~zI?j((#}8I}*4xI5#gGSB zcSnUh3q1<7Yuv%64el!QrKqc$0s(M4$G2|TRS}=#rOfuA4LMs-*t0#a3)TB9LXOC!O=m~Net4dSK&Foe?4y!i(d&%))WXyhv65#pyd-)n zk`@garZXP>YAK5FgcaZuDf0DmvVSR#nPhv#b5!oHDA5Sn};-62BB8Lj<*CPV(anu-rMlJj)|4@}F z{CkT4LizaA>eK;3$y<`buhyWrNh4uFkW#nj=Z+zHyBg)VI;jC=2|FVjmHOEa7EWdX+S6 zZwYkAW0kQ43`e!UHn4jBjylJf0wT{O_c)F(B%j_<+-L9Aqr$2d}wjSXuqUZoV!9Kg@Z2qAo@PCr=2W(R();{ z_rsbF$nf31kJFzZT%vozx^dhqX$by-ZR3d%U(MR_fkZ@-JL@5}J+W7C&*!sOb=)F*^WH3JkPl)8)~#dFDoD6tp>$jwi0CW;~uh}xi2@S!y5D;wKOml z;5#0|BNLkWX1;$ODTJ`=KpCr_UFT* zi&gScUTas%FiUM0$~IA?xdPphu~c@(_?F+$<*Im^;+4HbS3XO*Sv}QTvM%0nuwr7r z`ANkMmpZPuWG9`q8sGDtgp6s|#X&`Oa@$$?b_Q6nw3xDOxVq4q7B^KixfX=}aj=eE zA`&Qs39v0>ShvDKVvghL@$-<6=a1{mDHH3C?nwCUW&UV+mhP3ol=vdbW8;3s)F$pO z{o$DaGSMO&D>PGbsPRJtQz7LGja0Hh3UL|F`kKH@8N&V-Y9n0rt`qi38qDjnCUOUX z9X2CRWNlrtn8pkG9x2(Cqj=|oi(N~Yf^W8%i9FlG?|WevHxOzf7rw3-8Rfe$OAoFJ zpSXI+rX7HInb6_3L#Y3~BiO`j=zD!!SVR>g zI94ztn5T*-IXW?0x7+UTp1OIHS=HgAq#1FHDbd}N9q)6AE4w+5jt@UKN_M|35I4O=;trJ&mV3|m z91cZvQ1CRSa@F#<>dxdXqk~{Wo0>+Uk_aDZ&bkX>Cszj6)q+EWi`JSe!+duB@RH+P zwF`0LVqtP_>Z7y~DMRVu{VM#IveLb}iODVGXwj@5S7}`yUYuNS6C;_7%7^U^UDpOO zC#j$?loXUop5@y$2`@?$kt+-r1yoU)65xXx7d4wMQW`P!7R`K{f{IE{5j6J>1q>A^ zEW+u92zl6wJ2uB!Ecxd%<-@xWWg{%a8~HY`J#CgJg%by;hpTiny{ z;(%WsXPM4LSt61>)PimhN^Z#I52N*6@mb}E9hjGv3?CJ;#*JzA2}H&{*U5Higx5dW zE8fnS#HH%zpMPf?`!&8NlC<=n^^x1!nPq5=PQQ%lU$0Ll@z^abu+(=h^c9E2rd6o^F+LG2nkBcX&v7=#~saFA%_}aRrQ)w?SIQL zR_G0j#FpNd!3lz!eU`rR@D|63UNndkKI8lg)5tpPzvnHkdGI|gFF$@xwmzqaC-L~s zf{uuUE5*-2XQmaaLXJ=Nr-mreozDs8)x_v|k+kJ%>Y=V(cuL@X5Q2vVtXJsAJE(u+ zrIBDq{L0WdgHMw~$FFcLx!w|p{eZz$Ofm0Js?pcHhEs=A6`g1g=LC4-It*he+FshF zjS+@Gy*M1bWmz?k7`b+v7obiU7KV!$PU0UAZ+C7d2Hq0|!;lfu2ygW{snx_f znlcf%TY0c_$E>=U{=iCu|I`chyicGwwVZ%0A@j9AAM7*SrsU;Xj`-jA_s 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 WlmjPi&ATYY00f?{elF{r5}E)K2spF= literal 0 HcmV?d00001 diff --git a/src/higley_lab_to_nwb/benisty_2024/tutorial/tutorial.ipynb b/src/higley_lab_to_nwb/benisty_2024/tutorial/tutorial.ipynb new file mode 100644 index 0000000..64c199e --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/tutorial/tutorial.ipynb @@ -0,0 +1,466 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6242b563-faf9-411b-b61e-ff6d5d802609", + "metadata": {}, + "source": [ + "# Tutorial for one-photon imaging dataset.\n", + "\n", + "This tutorial shows how to access the *Two Photon dataset* using `pynwb`. \n", + "\n", + "This dataset contains the 2-photon calcium imaging holographic stimulation data and visual stimuli events.\n", + "\n", + "Contents:\n", + "\n", + "- [Reading an NWB file](#read-nwb)\n", + "- [Access subject and task metadata](#access-subject)\n", + "- [Access Imaging](#access-imaging)\n", + "- [Access TTL Signals](#ttl-signals)\n", + "- [Access Wheel Signal](#wheel-signal)\n", + "- [Access Raw Behavior](#raw-behavior)\n", + "- [Access Processed Behavior](#processed-behavior)\n", + "- [Access Visual Stimulus](#access-visualstim)\n", + "\n", + "A schematic representation where the source data is saved in NWB:\n", + "\n", + "![Alt text](./conversion_outline_diagram.png)" + ] + }, + { + "cell_type": "markdown", + "id": "6bc8942c-2b51-4bd9-9e87-51cdd58f25ef", + "metadata": {}, + "source": [ + "# Reading an NWB file \n", + "\n", + "This section demonstrates how to read an NWB file using `pynwb`.\n", + "\n", + "Based on the [NWB File Basics](https://pynwb.readthedocs.io/en/stable/tutorials/general/plot_file.html#sphx-glr-tutorials-general-plot-file-py) tutorial from [PyNWB](https://pynwb.readthedocs.io/en/stable/#).\n", + "\n", + "An [NWBFile](https://pynwb.readthedocs.io/en/stable/pynwb.file.html#pynwb.file.NWBFile) represents a single session of an experiment. Each NWBFile must have a `session description`, `identifier`, and `session start time`.\n", + "\n", + "Reading is carried out using the [NWBHDF5IO](https://pynwb.readthedocs.io/en/stable/pynwb.html#pynwb.NWBHDF5IO) class. To read the NWB file use the read mode (\"r\") to retrieve an NWBFile object.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2968627-3cdd-4c65-825c-4e239cf9a5ea", + "metadata": {}, + "outputs": [], + "source": [ + "from pynwb import NWBHDF5IO\n", + "from pathlib import Path\n", + "\n", + "# Choose which epoch to explore\n", + "session_id = '11222019_grabAM06_vis_stim'\n", + "\n", + "# The file path to a .nwb file\n", + "root_path = Path(\"/media/amtra/Samsung_T5/CN_data\")\n", + "output_dir_path = root_path / \"Higley-conversion_nwb/nwb_stub/\"\n", + "nwbfile_path = output_dir_path / f\"{session_id}.nwb\"\n", + "io = NWBHDF5IO(path=nwbfile_path, mode=\"r\", load_namespaces=True)\n", + "nwbfile = io.read()\n", + "\n", + "nwbfile" + ] + }, + { + "cell_type": "markdown", + "id": "8b25d9c7-83c0-4992-8bb5-2548f08bb28a", + "metadata": {}, + "source": [ + "Importantly, the `session start time` is the reference time for all timestamps in the file. For instance, an event with a timestamp of 0 in the file means the event occurred exactly at the session start time.\n", + "\n", + "The `session_start_time` is extracted from the ScanImage metadata (`epoch`) of the first .tiff of the epoch." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52016578-44c1-4a75-b615-ec85d8463c4a", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.session_start_time" + ] + }, + { + "cell_type": "markdown", + "id": "8d247090-5cfb-47b1-a1a4-8a7c87921a38", + "metadata": {}, + "source": [ + "# Access subject metadata \n", + "\n", + "This section demonstrates how to access the [Subject](https://pynwb.readthedocs.io/en/stable/pynwb.file.html#pynwb.file.Subject) field in an NWB file.\n", + "\n", + "The [Subject](https://pynwb.readthedocs.io/en/stable/pynwb.file.html#pynwb.file.Subject) field can be accessed as `nwbfile.subject`.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "483b9a74-c5f0-4f59-b422-1a3a7a9c5002", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.subject" + ] + }, + { + "cell_type": "markdown", + "id": "fdc72048-3dc7-4b35-a411-e5507176ef35", + "metadata": {}, + "source": [ + "# Access OnePhoton Imaging \n", + "\n", + "This section demonstraces how to access the raw Two Photon imaging data.\n", + "\n", + "`NWB` organizes data into different groups depending on the type of data. Groups can be thought of as folders within the file. Here are some of the groups within an NWBFile and the types of data they are intended to store:\n", + "\n", + "- `acquisition`: raw, acquired data that should never change\n", + "- `processing`: processed data, typically the results of preprocessing algorithms and could change\n", + "\n", + "## Raw OnePhoton Imaging\n", + "\n", + "The raw TwoPhoton imaging data is stored in `pynwb.ophys.OnePhotonSeries` objects (for each channel and excitation type separately) which is added to `nwbfile.acquisition`. The data can be accessed as `nwbfile.acquisition['OnePhotonSeries_color_Excitation_color_Channel']`.\n", + "\n", + "The data in [OnePhotonSeries](https://pynwb.readthedocs.io/en/stable/pynwb.ophys.html#pynwb.ophys.OnePhotonSeries) is stored as a three dimensional array: the first dimension is time (frame), the second and third dimensions represent x and y (width by height). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7f95b465", + "metadata": {}, + "outputs": [], + "source": [ + "names_of_photon_series = nwbfile.acquisition.keys()\n", + "_ = [print(name) for name in names_of_photon_series if \"OnePhotonSeries\" in name ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eb243ecc", + "metadata": {}, + "outputs": [], + "source": [ + "excitation_channel_combination = \"BlueExcitationGreenChannel\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9621b78-2c39-49fa-8106-d3e277252468", + "metadata": {}, + "outputs": [], + "source": [ + "photon_series = nwbfile.acquisition[f\"OnePhotonSeries{excitation_channel_combination}\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aea45586", + "metadata": {}, + "outputs": [], + "source": [ + "photon_series.imaging_plane.indicator" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ef00fe3-cb56-4efe-89bb-946bb9bc42b5", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize the imaging data.\n", + "\n", + "from matplotlib import pyplot as plt\n", + "\n", + "plt.imshow(photon_series.data[10], aspect=\"auto\", cmap=\"RdYlBu_r\")\n", + "plt.title(f\"One frame from {excitation_channel_combination}\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19879672-07e2-443c-ac36-3952200eb33f", + "metadata": {}, + "outputs": [], + "source": [ + "photon_series.rate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d4a7ee2-4064-4025-9bf4-03e4de6b9b28", + "metadata": {}, + "outputs": [], + "source": [ + "photon_series.starting_time" + ] + }, + { + "cell_type": "markdown", + "id": "ce538054-666b-4ad1-9d34-f9730973b3ff", + "metadata": {}, + "source": [ + "# Access TTL Signals \n", + "\n", + "This section demonstrates how to access the TTL signals stored in the NWBFile.\n", + "TTLTypesTable contains the description and the id for each TTL signal\n", + "TTLsTable contains the respective timestamps (rising times)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c899439-be9f-4187-bc02-b6c9cb2491c3", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.acquisition[\"TTLTypesTable\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc12d0df", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.acquisition[\"TTLsTable\"]\n" + ] + }, + { + "cell_type": "markdown", + "id": "027bc135", + "metadata": {}, + "source": [ + "# Access Wheel Signal \n", + "\n", + "This section demonstrates how to access the wheel velocity trace stored in the NWBFile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1bd4b538", + "metadata": {}, + "outputs": [], + "source": [ + "wheel_signal = nwbfile.acquisition[\"WheelSignal\"]\n", + "wheel_signal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6852179", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "time = np.linspace(0, wheel_signal.data.shape[0]/wheel_signal.rate,wheel_signal.data.shape[0])\n", + "plt.plot(time,wheel_signal.data*wheel_signal.conversion)\n", + "plt.ylabel(wheel_signal.unit)\n", + "plt.xlabel(\"Time (s)\")\n", + "plt.title(wheel_signal.name)" + ] + }, + { + "cell_type": "markdown", + "id": "e83cc1bf", + "metadata": {}, + "source": [ + "# Access Raw Behavior \n", + "\n", + "This section demonstrates how to access the raw behavioral video stored in the NWBFile." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6e22c09", + "metadata": {}, + "outputs": [], + "source": [ + "video = nwbfile.acquisition[\"Video: 11222019_grabAM06_visual_stim\"]\n", + "video" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0c05e5a", + "metadata": {}, + "outputs": [], + "source": [ + "plt.imshow(video.data[1], aspect=\"auto\")\n", + "plt.title(f\"A frame of {video.name} at {video.timestamps[1]} sec\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "74d1bb0d", + "metadata": {}, + "source": [ + "# Access Processed Behavior \n", + "\n", + "This section demonstrates how to access the Facemap output stored in the NWBFile.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58b7e241", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.processing[\"behavior\"][\"EyeTracking\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f57bf13", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.processing[\"behavior\"][\"PupilTracking\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "83f4fd8e", + "metadata": {}, + "outputs": [], + "source": [ + "motion_svd_series = nwbfile.processing[\"behavior\"][\"MotionSVDSeriesROI1\"]\n", + "motion_svd_series" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e8ed951", + "metadata": {}, + "outputs": [], + "source": [ + "motion_svd_series.data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "90f6f43e", + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(motion_svd_series.data[0])\n", + "plt.title(motion_svd_series.name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ff291bec", + "metadata": {}, + "outputs": [], + "source": [ + "motion_svd_masks = nwbfile.processing[\"behavior\"][\"MotionSVDMasksROI1\"]\n", + "motion_svd_masks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d35fbac0", + "metadata": {}, + "outputs": [], + "source": [ + "motion_svd_masks.mask_coordinates[:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79eaedbb", + "metadata": {}, + "outputs": [], + "source": [ + "motion_svd_masks.processed_frame_dimension[:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bdde8a91", + "metadata": {}, + "outputs": [], + "source": [ + "masks = motion_svd_masks.image_mask_index[:10]\n", + "# plt.imshow(mask, aspect=\"auto\", cmap=\"RdYlBu_r\" )\n", + "# plt.title(\"First component mask\")\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5654d13e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "b50a377e", + "metadata": {}, + "source": [ + "# Access Visual Stimulus \n", + "\n", + "This section demonstrates how to access the visual stimulus data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce2b8da7", + "metadata": {}, + "outputs": [], + "source": [ + "nwbfile.intervals[\"VisualStimulus\"]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/higley_lab_to_nwb/benisty_2024/utils/__init__.py b/src/higley_lab_to_nwb/benisty_2024/utils/__init__.py new file mode 100644 index 0000000..7c0a235 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/utils/__init__.py @@ -0,0 +1 @@ +from .lohani_2022_utils import read_session_start_time, get_tiff_file_paths_sorted_by_channel, create_tiff_stack diff --git a/src/higley_lab_to_nwb/benisty_2024/utils/lohani_2022_utils.py b/src/higley_lab_to_nwb/benisty_2024/utils/lohani_2022_utils.py new file mode 100644 index 0000000..ed526f6 --- /dev/null +++ b/src/higley_lab_to_nwb/benisty_2024/utils/lohani_2022_utils.py @@ -0,0 +1,46 @@ +import tifffile +from natsort import natsorted +import numpy as np +from datetime import datetime +from zoneinfo import ZoneInfo + +def read_session_start_time(folder_path): + tiff_file_paths = natsorted(folder_path.glob("*.tif")) + with tifffile.TiffFile(tiff_file_paths[0]) as tif: + metadata = tif.pages[0].tags['ImageDescription'].value + + lines = metadata.split('\r\n') + date_time_str = lines[1] + # Assuming the timezone is always 'Eastern Standard Time' + date_time_obj = datetime.strptime(date_time_str[:-len(' Eastern Standard Time')], '%a, %d %b %Y %H:%M:%S') + date_time_obj = date_time_obj.replace(tzinfo=ZoneInfo('US/Eastern')) + + return date_time_obj + +def get_tiff_file_paths_sorted_by_channel(folder_path: str, start_frame_index: int = 0, stub_test: bool = False): + + tiff_file_paths = natsorted(folder_path.glob("*.tif")) + if stub_test: + tiff_file_paths = tiff_file_paths[:100] # for testing + selected_tiff_file_paths = tiff_file_paths[start_frame_index::3] + + return selected_tiff_file_paths + + +def create_tiff_stack(folder_path: str, output_file_path: str, start_frame_index: int = 0, frame_side: str = "left", stub_test: bool = False): + + selected_tiff_file_paths = get_tiff_file_paths_sorted_by_channel( + folder_path=folder_path, start_frame_index=start_frame_index, stub_test = stub_test + ) + frames = [tifffile.imread(file_path) for file_path in selected_tiff_file_paths] + + if frame_side == "left": + stack = np.stack([frame[:, :512].transpose(1,0) for frame in frames], axis=0) + elif frame_side == "right": + stack = np.stack([frame[:, 512:].transpose(1,0) for frame in frames], axis=0) + else: + raise ValueError("frame_side must be either 'right' or 'left'") + + tifffile.imwrite(output_file_path, stack) + + return \ No newline at end of file From eb5a1547c4c3f0ac0f93d4720cd2b9fc73d227c0 Mon Sep 17 00:00:00 2001 From: Alessandra Trapani Date: Fri, 10 May 2024 14:51:43 +0200 Subject: [PATCH 4/4] update lohani conversion notes --- .../lohani_2022/notes/lohani_2022_notes.md | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md b/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md index 4e63c2b..7006fa0 100644 --- a/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md +++ b/src/higley_lab_to_nwb/lohani_2022/notes/lohani_2022_notes.md @@ -9,15 +9,6 @@ * Synchronization signals, TTL pulses triggered by the different systems and recorded by the electrophysiology system (here used just for synch purpose), Spike2 output format. ([TTL signals](#ttl-signals)) ## Raw Imaging -### Method description from [Lohani 2024](https://www.nature.com/articles/s41593-023-01498-y): -**Mesoscopic imaging** -Widefield mesoscopic calcium imaging was performed using a Zeiss Axiozoom with a 1×, 0.25 NA objective with a 56 mm working distance (Zeiss). Epifluorescent excitation was provided by an LED bank (Spectra X Light Engine, Lumencor) using two output wavelengths: 395/25 (isosbestic for GRABACh3.0) and 575/25 nm (jRCaMP1b). Emitted light passed through a dual camera image splitter (TwinCam, Cairn Research) then through either a 525/50 (GRABACh3.0) or 630/75 (jRCaMP1b) emission filter (Chroma) before it reached two sCMOS cameras (Orca-Flash V3, Hamamatsu). Images were acquired at 512×512 resolution after 4× pixel binning, and each channel was acquired at 10 Hz with 20 ms exposure using HCImage software (Hamamatsu). - -**Two-photon imaging** -Two-photon imaging was performed using a MOM microscope (Sutter Instruments) coupled to a 16×, 0.8 NA objective (Nikon). Excitation was driven by a Titanium-Sapphire Laser (Mai-Tai eHP DeepSee, Spectra-Physics) tuned to 920 nm. Emitted light was collected through a 525/50 filter and a gallium arsenide phosphide photomultiplier tube (Hamamatsu). Images were acquired at 512×512 resolution at 30 Hz using a galvo-resonant scan system controlled by ScanImage software (Vidrio). - -**Dual mesoscopic and two-photon imaging** -Dual imaging was carried out using a custom microscope combining a Zeiss Axiozoom (as above) and a Sutter MOM (as above), as described previously 25. To image through the implanted prism, a long-working distance objective (20×, 0.4 NA, Mitutoyo) was used. Frame acquisitions were interleaved with an overall rate of 9.15 Hz, with each cycle alternating sequentially between a 920nm two-photon acquisition (512×512 resolution), a 395/25nm widefield excitation acquisition, and a 470/20nm widefield excitation acquisition. Widefield data were collected through a 525/50nm filter into a sCMOS camera (Orca Fusion, Hamamatsu) at 576×576 resolution after 45× pixel binning with 20ms exposure. ### Method description from [Lohani 2022](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10661869/): **Widefield imaging** @@ -112,7 +103,7 @@ Then using the 'BL_LED', 'UV_LED' and 'Green LED' we can separate the three imag ... ## Behavior -### Method description from [Lohani 2024](https://www.nature.com/articles/s41593-023-01498-y): +### Method description from [Benisty 2024](https://www.nature.com/articles/s41593-023-01498-y): #### Wheel motion All imaging was performed in awake, behaving mice that were head-fixed so that they could freely run on a cylindrical wheel. A magnetic angle sensor (Digikey) attached to the wheel continuously monitored wheel motion. Mice received at least three wheel-training habituation sessions before imaging to ensure consistent running bouts. During widefield imaging sessions, the face (including the pupil and whiskers) was illuminated with an IR LED bank and imaged with a miniature CMOS camera (Blackfly s-USB3, Flir) with a frame rate of 10 Hz using FlyCam2 software (Flir). ![alt text](behavioral_signals.png) @@ -192,5 +183,4 @@ Wheel position was obtained from a linear angle detector attached to the wheel a - _wpix_: ##Lab Code -* [Lohani 2024](https://github.com/cardin-higley-lab/Lohani_Higley_2023) * [Lohani 2022](https://github.com/cardin-higley-lab/Lohani_Moberly_et_al_2022) \ No newline at end of file