From 0aef243b0f9c746d2a8af6cb9d17aece87a464b3 Mon Sep 17 00:00:00 2001 From: sH4MbLe5 Date: Thu, 28 Sep 2023 11:22:38 +0200 Subject: [PATCH] markdown update, notebook refactor --- 1.1_Main.ipynb | 23 +- 2.1_Experimental_parsing.ipynb | 1825 +++++---------- 2.2_Experimental_analysis.ipynb | 2000 +++-------------- datamodel_b07_tc/modified/dataset.py | 13 + datamodel_b07_tc/modified/experiment.py | 81 +- datamodel_b07_tc/modified/measurement.py | 17 +- datamodel_b07_tc/modified/metadata.py | 13 +- datamodel_b07_tc/tools/__init__.py | 10 +- .../tools/auxiliary/enumerate_objects.py | 5 + .../tools/auxiliary/peak_assigner.py | 173 ++ datamodel_b07_tc/tools/calculus/calibrator.py | 39 +- .../tools/calculus/faraday_efficiency.py | 119 +- .../{config.json => config_exp_2_1.json} | 7 +- .../tools/logging/config_exp_2_2.json | 31 + datamodel_b07_tc/tools/readers/gcparser.py | 98 +- .../tools/readers/gstaticparser.py | 128 +- datamodel_b07_tc/tools/readers/librarian.py | 117 +- datamodel_b07_tc/tools/readers/mfmparser.py | 142 +- specifications/datamodel_b07_tc.md | 1 + 19 files changed, 1452 insertions(+), 3390 deletions(-) create mode 100644 datamodel_b07_tc/tools/auxiliary/enumerate_objects.py create mode 100644 datamodel_b07_tc/tools/auxiliary/peak_assigner.py rename datamodel_b07_tc/tools/logging/{config.json => config_exp_2_1.json} (80%) create mode 100644 datamodel_b07_tc/tools/logging/config_exp_2_2.json diff --git a/1.1_Main.ipynb b/1.1_Main.ipynb index 1cd094b..66b7f03 100644 --- a/1.1_Main.ipynb +++ b/1.1_Main.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -42,11 +42,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "lib = DataModel.from_git(url='https://github.com/FAIRChemistry/datamodel_b07_tc.git', commit='8748a18ee412d72aa1fd01aa80bfacbbb898a856')\n", + "lib = DataModel.from_git(url='https://github.com/FAIRChemistry/datamodel_b07_tc.git')\n", + "# lib = DataModel.from_git(url='https://github.com/FAIRChemistry/datamodel_b07_tc.git', commit='8748a18ee412d72aa1fd01aa80bfacbbb898a856')\n", "# lib = DataModel.from_markdown('specifications/datamodel_b07_tc.md')" ] }, @@ -67,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -75,12 +76,12 @@ "output_type": "stream", "text": [ "{\n", - " \"id\": \"dataset0\",\n", + " \"id\": \"dataset2\",\n", " \"__source__\": {\n", " \"root\": \"Dataset\",\n", " \"repo\": \"https://github.com/FAIRChemistry/datamodel_b07_tc.git\",\n", - " \"commit\": \"b342319c31e24a3228fb1eb0627492dcd63f35d5\",\n", - " \"url\": \"https://github.com/FAIRChemistry/datamodel_b07_tc/tree/b342319c31e24a3228fb1eb0627492dcd63f35d5\"\n", + " \"commit\": \"451e283ac87f8b4e5d11a10e8958368e8ff7400d\",\n", + " \"url\": \"https://github.com/FAIRChemistry/datamodel_b07_tc/tree/451e283ac87f8b4e5d11a10e8958368e8ff7400d\"\n", " }\n", "}\n" ] @@ -101,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -121,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -139,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -155,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ diff --git a/2.1_Experimental_parsing.ipynb b/2.1_Experimental_parsing.ipynb index 7d50c96..2de8c61 100644 --- a/2.1_Experimental_parsing.ipynb +++ b/2.1_Experimental_parsing.ipynb @@ -5,9 +5,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#
Workflow for the CRC1333 project B07 - Technical Chemistry
\n", - "#
Experimental notebook
\n", - "#
2.1 Parsing
" + "#
Workflow for on-line GC and HPLC analysis in flow chemistry
\n", + "#
2.1 Experimental notebook - Parsing
" ] }, { @@ -16,18 +15,49 @@ "source": [ "---\n", "\n", - "This is the ``Experimental`` ``notebook`` ``2.1 Parsing``, where all the relevent data of the experiments are read in from different ressources. For each individual experiment this workflow is to be executed once, and the data can be appended to the project's dataset.\n", + "This is the ``Experimental`` ``notebook`` ``2.1 \"Parsing\"``, where all the relevent data of the experiments are read in from different ressources. For each individual experiment this workflow is to be executed once, and the data can be appended to the project's dataset.\n", "\n", "---" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "## Section 0: Imports, Paths, and Logging\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section all the necessary python packages are imported, the path to this notebook and the logger for this notebook is set up." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Activate autoreload." + ] + }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "from datamodel_b07_tc.modified.experiment import Experiment" + "%reload_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import standard library python packages necessary to set up the ``logger``." ] }, { @@ -36,8 +66,18 @@ "metadata": {}, "outputs": [], "source": [ - "# from sdRDM.generator import generate_python_api\n", - "from sdRDM import DataModel" + "import os\n", + "import json\n", + "import logging\n", + "import logging.config\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get path to the directory this notebook is located." ] }, { @@ -46,14 +86,14 @@ "metadata": {}, "outputs": [], "source": [ - "# generate_python_api('specifications/datamodel_b07_tc.md', '', 'datamodel_b07_tc')" + "root = Path(os.path.abspath(''))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Import standard library python packages." + "Set path to the directory containing the configuration file for the logger." ] }, { @@ -62,97 +102,67 @@ "metadata": {}, "outputs": [], "source": [ - "%reload_ext autoreload\n", - "%autoreload 2\n", - "\n", - "from datamodel_b07_tc.tools import Calibrator\n", - "from datamodel_b07_tc.tools import GCParser\n", - "from datamodel_b07_tc.tools import GstaticParser\n", - "from datamodel_b07_tc.tools import MFMParser\n", - "# from DEXPI2sdRDM import DEXPI2sdRDM" + "logging_config_path = root / \"datamodel_b07_tc/tools/logging/config_exp_2_1.json\"" ] }, { - "cell_type": "code", - "execution_count": 5, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "import os\n", - "import json\n", - "import ipywidgets as widgets\n", - "import logging\n", - "import logging.config\n", - "from IPython.display import display\n", - "from pathlib import Path" + "Set up logger by reading the .json-type configuration file." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 5, "metadata": {}, + "outputs": [], "source": [ - "---\n", - "## Section 0: Paths and Logging\n", - "---" + "with open(logging_config_path) as logging_config_json:\n", + " logging_config = json.load(logging_config_json)\n", + "logging.config.dictConfig(logging_config)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Get path to the directory this notebook is located and check for correctness." + "Create a child of the root logger and set its name to the name of the current notebook." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path to this notebook's location: /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc\n", - "Is the path valid? True\n" - ] - } - ], + "outputs": [], "source": [ - "root = Path(os.path.abspath(''))\n", - "print(\"Path to this notebook's location:\", root)\n", - "print('Is the path valid?', root.is_dir())" + "logger = logging.getLogger(__name__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set path for the logger." + "Set the level of several third-party module loggers to avoid dumping too much information in the log file.\n", + "
Info: Some third party modules use the same logging module and structure as this notebook, which is unproblematic, unless the level of their corresponding logging handlers is too low. In these cases the logging messages of lower levels, such as 'DEBUG' and 'INFO' are propagated to the parent logger of this notebook.
" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/datamodel_b07_tc/tools/logging/config.json\n" - ] - } - ], + "outputs": [], "source": [ - "config_path = root / \"datamodel_b07_tc/tools/logging/config.json\"\n", - "print(config_path)" + "third_party_module_loggers = ['markdown_it', 'h5py', 'numexpr', 'git']\n", + "for logger_ in third_party_module_loggers:\n", + " logging.getLogger(logger_).setLevel('WARNING')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set up logger." + "Import and instantiate the ``Librarian`` module for efficient and clean file and directory handling." ] }, { @@ -161,9 +171,15 @@ "metadata": {}, "outputs": [], "source": [ - "logging_config_path = root / \"datamodel_b07_tc/tools/logging/config.json\"\n", - "with open(logging_config_path) as logging_config_json:\n", - " logging_config = json.load(logging_config_json)" + "from datamodel_b07_tc.tools import Librarian\n", + "librarian = Librarian(root_directory=root)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import modfied sdRDM object." ] }, { @@ -172,49 +188,46 @@ "metadata": {}, "outputs": [], "source": [ - "logging.config.dictConfig(logging_config)" + "from datamodel_b07_tc.modified.experiment import Experiment\n", + "from datamodel_b07_tc.modified.measurement import Measurement" ] }, { - "cell_type": "code", - "execution_count": 10, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-09-19 13:50:31,540 - __main__ - WARNING - uff\n" - ] - } - ], "source": [ - "logger = logging.getLogger(__name__)\n", - "logger.debug(\"obacht\")\n", - "logger.warning('uff')" + "
Info: Python objects created by the sdRDM generator can be equipped with additional features, such as functions or classes, e.g. to parse data or perform internal calculations, which allows for a more modular approach of working with them.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "---\n", - "## Section 1: Dataset and data model parsing\n", - "---" + "Import the data model containing all the objects of sdRDM's python API." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# from sdRDM.generator import generate_python_api\n", + "from sdRDM import DataModel" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "In this section the data model and the dataset as well as all the output files necessary for analysis are parsed. " + "
Info: sdRDM objects already imported are not overriden!
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - " Set path to datasets." + "Manually generate the sdRDM python objects." ] }, { @@ -223,41 +236,34 @@ "metadata": {}, "outputs": [], "source": [ - "path_to_datasets = root / 'datasets'" + "# generate_python_api('specifications/datamodel_b07_tc.md', '', 'datamodel_b07_tc')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "List all available datasets in the directory.\n" + "Import tools used for parsing and calibration of the raw data." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: b07.json\n" - ] - } - ], + "outputs": [], "source": [ - "files = path_to_datasets.iterdir()\n", - "json_files = {index:file for index, file in enumerate(files) if file.suffix == '.json'}\n", - "for index, file in json_files.items():\n", - " print(f'{index}: {file.name}')" + "from datamodel_b07_tc.tools import Calibrator\n", + "from datamodel_b07_tc.tools import gc_parser\n", + "from datamodel_b07_tc.tools import gstatic_parser\n", + "from datamodel_b07_tc.tools import mfm_parser\n", + "# from DEXPI2sdRDM import DEXPI2sdRDM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Choose dataset to be loaded by its index." + "Import additional standard library python packages." ] }, { @@ -266,48 +272,92 @@ "metadata": {}, "outputs": [], "source": [ - "index_dataset = 0\n", - "dataset, lib = DataModel.parse(json_files[index_dataset])" + "import ipywidgets as widgets\n", + "from IPython.display import display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Visualize the data model." + "---\n", + "## Section 1: Dataset and data model parsing\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section the data model and the dataset as well as all the output files necessary for the analysis notenook are parsed. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print available subdirectories of the 'root' directory." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc \n", + "Available subdirectories:\n", + "0: .../.git\n", + "1: .../.github\n", + "2: .../.vscode\n", + "3: .../data\n", + "4: .../datamodel_b07_tc\n", + "5: .../datasets\n", + "6: .../logging\n", + "7: .../specifications\n" + ] + } + ], "source": [ - "# lib.Dataset.meta_tree()" + "root_subdirectories = librarian.enumerate_subdirectories(directory=root)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Print current status of the dataset." + "List all available dataset json files in the 'datasets' directory." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/datasets \n", + "Available files:\n", + "0: b07.json\n" + ] + } + ], "source": [ - "# print(dataset.json())" + "json_dataset_files = librarian.enumerate_files(directory=root_subdirectories[5], filter='json')" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Set path to the directory containing all relevant data." + "Choose dataset to be loaded by its index." ] }, { @@ -316,14 +366,15 @@ "metadata": {}, "outputs": [], "source": [ - "path_data = root / 'data'" + "json_dataset = json_dataset_files[0]\n", + "dataset, lib = DataModel.parse(json_dataset)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set path for the measurement (raw) data." + "Visualize the data model." ] }, { @@ -332,15 +383,14 @@ "metadata": {}, "outputs": [], "source": [ - "# raw_data_path = Path('F:\\Doktorand\\\\03_Messungen\\Rohdaten')\n", - "path_raw_data = path_data / 'Rohdaten'" + "# lib.Dataset.meta_tree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Instantiate an experiment object which will hold all the information about one single experiment." + "Print current status of the dataset." ] }, { @@ -349,130 +399,162 @@ "metadata": {}, "outputs": [], "source": [ - "experiment = Experiment()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "## Section 2: Potenstiostatic data parsing\n", - "---" + "# print(dataset.json())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Provide name of the directory containing the potentiostatic measurement data." + "Show directory tree of the ``root`` directory." ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 55, "metadata": {}, "outputs": [], "source": [ - "path_echem = path_raw_data / '01_EChem'" + "# librarian.visualize_directory_tree(directory=root, skip_directories=['.git'])" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 21, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/.git'),\n", + " 1: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/.github'),\n", + " 2: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/.vscode'),\n", + " 3: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data'),\n", + " 4: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/datamodel_b07_tc'),\n", + " 5: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/datasets'),\n", + " 6: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/logging'),\n", + " 7: PosixPath('/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/specifications')}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "Search in that directory for further subdirectories and print them." + "root_subdirectories" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0: 210728_ITO_TEST\n", - "1: CAD14-Cu@AB\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data \n", + "Available subdirectories:\n", + "0: .../calibration\n", + "1: .../correction_factors\n", + "2: .../faraday_coefficients\n", + "3: .../Rohdaten\n" ] } ], "source": [ - "subdirectories_echem = {index:directory for index, directory in enumerate(path_echem.iterdir())}\n", - "for index, directory in subdirectories_echem.items():\n", - " print(f\"{index}: {directory.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Choose one of the found subdirectory by its index." + "data_subdirectories = librarian.enumerate_subdirectories(directory=root_subdirectories[3])" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/01_EChem/CAD14-Cu@AB\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten \n", + "Available subdirectories:\n", + "0: .../01_EChem\n", + "1: .../02_GC\n", + "2: .../03_MFM\n", + "3: .../04_HPLC\n", + "4: .../05_Pressure\n" ] } ], "source": [ - "subdirectory_index_echem = 1\n", - "selected_subdirectory_echem = subdirectories_echem[subdirectory_index_echem]\n", - "print(selected_subdirectory_echem)" + "raw_data_subdirectories = librarian.enumerate_subdirectories(directory=data_subdirectories[3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "## Section 2: Potenstiostatic data parsing\n", + "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Provide suffix of the file that contains the data." + "Select path to the potentiostatic data and print available subdirectories." ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/01_EChem \n", + "Available subdirectories:\n", + "0: .../210728_ITO_TEST\n", + "1: .../CAD14-Cu@AB\n" + ] + } + ], "source": [ - "suffix_echem = 'DTA'" + "echem_directories = librarian.enumerate_subdirectories(directory=raw_data_subdirectories[0])" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Initialize the ``GstaticParser`` and print available files." + "Select subdirectory by its index and print raw data files available in there." ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0: GSTATIC\n", - "1: POTDYN\n" + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/01_EChem/CAD14-Cu@AB \n", + "Available files:\n", + "0: GSTATIC.DTA\n", + "1: POTDYN.DTA\n" ] } ], "source": [ - "gstaticparser = GstaticParser(selected_subdirectory_echem, suffix_echem)\n", - "files_dict_echem = gstaticparser.available_files\n", - "for index, gstatic_file in files_dict_echem.items():\n", - " print(f\"{index}: {gstatic_file.stem}\")" + "potentiostatic_raw_data_files = librarian.enumerate_files(directory=echem_directories[1], filter='DTA')" ] }, { @@ -480,582 +562,53 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Chose file to be parsed by its index." + "Extract the metadata from it using the ``GstaticParser`` and load into the data model." ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'GSTATIC.DTA'" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "file_index_echem = 0\n", - "file_echem = files_dict_echem[file_index_echem]\n", - "file_echem.name" + "potentiostatic_metadata_df, potentiostatic_measurement = Measurement.from_parser(parser=gstatic_parser, metadata_path=potentiostatic_raw_data_files[0])\n", + "# potentiostatic_metadata_df" ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ - "Extract the metadata from it using the ``GstaticParser`` and load into the data model." + "---\n", + "## Section 3: MFM data parsing\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Provide name of the subdirectory containing the mass flow meter measurement data." ] }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ParameterData_typeValueDescription
0PSTATPSTATREF3000-19129Potentiostat
1IINITQUANT-2.00000E+002Initial I (mA/cm^2)
2TINITQUANT3.60000E+003Initial Time (s)
3IFINALQUANT-2.00000E+002Final I (mA/cm^2)
4TFINALQUANT0.00000E+000Final Time (s)
5SAMPLETIMEQUANT1.00000E+000Sample Period (s)
6AREAQUANT1.00000E+000Sample Area (cm^2)
7DENSITYQUANT7.87000E+000Density (g/cm^3)
8EQUIVQUANT2.79200E+001Equiv. Wt
9IRCOMPTOGGLETIR Comp
10EOCQUANT0Open Circuit (V)
11SEQUENCERTOGGLETRUERun as Sequence
12PSTATMODELIQUANT5Pstat Model
13PSTATSECTIONLABELREF3000-19129Pstat Section
14PSTATSERIALNOLABEL19129Pstat Serial Number
15CTRLMODEIQUANT0Control Mode
16ELECTROMETERIQUANT0RE=0 or CS=1
17IESTABIQUANT0I/E Stability
18CASPEEDIQUANT4Control Amp Speed
19CONVENTIONIQUANT1Current Convention
20ICHRANGEIQUANT2Ich Range
21ICHRANGEMODETOGGLETIch Auto Range
22ICHOFFSETENABLETOGGLEFIch Offset Enable
23ICHOFFSETQUANT0Ich Offset (V)
24ICHFILTERIQUANT3Ich Filter
25VCHRANGEIQUANT3Vch Range
26VCHRANGEMODETOGGLETVch Auto Range
27VCHOFFSETENABLETOGGLEFVch Offset Enable
28VCHOFFSETQUANT0Vch Offset (V)
29VCHFILTERIQUANT1Vch Filter
30ACHRANGEIQUANT2Ach Range
31ACHOFFSETENABLETOGGLEFAch Offset Enable
32ACHOFFSETQUANT0Ach Offset (V)
33ACHFILTERIQUANT1Ach Filter
34IERANGELOWERLIMITIQUANT4I/E Range Lower Limit
35IERANGEMODETOGGLEFI/E AutoRange
36IERANGEIQUANT11I/E Range
37POSFEEDENABLETOGGLEFPositive Feedback IR Comp
38POSFEEDRESISTANCEQUANT0Positive Feedback Resistance (ohm)
39ACHSELECTIQUANT0Ach Select
40SENSECABLEIDIQUANT14Sense Cable ID
41PWRCABLEIDIQUANT13Power Cable ID
42DCCALDATELABEL11/22/2022DC Calibration Date
43ACCALDATELABELNaNAC Calibration Date
44THERMOSELECTIQUANT1Thermo Select
45FRAMEWORKVERSIONQUANT7.07Framework Version
46INSTRUMENTVERSIONLABEL4.35Instrument Version
47COMPLIANCEVOLTAGEIQUANT0Compliance Voltage
\n", - "
" - ], - "text/plain": [ - " Parameter Data_type Value \n", - "0 PSTAT PSTAT REF3000-19129 \\\n", - "1 IINIT QUANT -2.00000E+002 \n", - "2 TINIT QUANT 3.60000E+003 \n", - "3 IFINAL QUANT -2.00000E+002 \n", - "4 TFINAL QUANT 0.00000E+000 \n", - "5 SAMPLETIME QUANT 1.00000E+000 \n", - "6 AREA QUANT 1.00000E+000 \n", - "7 DENSITY QUANT 7.87000E+000 \n", - "8 EQUIV QUANT 2.79200E+001 \n", - "9 IRCOMP TOGGLE T \n", - "10 EOC QUANT 0 \n", - "11 SEQUENCER TOGGLE TRUE \n", - "12 PSTATMODEL IQUANT 5 \n", - "13 PSTATSECTION LABEL REF3000-19129 \n", - "14 PSTATSERIALNO LABEL 19129 \n", - "15 CTRLMODE IQUANT 0 \n", - "16 ELECTROMETER IQUANT 0 \n", - "17 IESTAB IQUANT 0 \n", - "18 CASPEED IQUANT 4 \n", - "19 CONVENTION IQUANT 1 \n", - "20 ICHRANGE IQUANT 2 \n", - "21 ICHRANGEMODE TOGGLE T \n", - "22 ICHOFFSETENABLE TOGGLE F \n", - "23 ICHOFFSET QUANT 0 \n", - "24 ICHFILTER IQUANT 3 \n", - "25 VCHRANGE IQUANT 3 \n", - "26 VCHRANGEMODE TOGGLE T \n", - "27 VCHOFFSETENABLE TOGGLE F \n", - "28 VCHOFFSET QUANT 0 \n", - "29 VCHFILTER IQUANT 1 \n", - "30 ACHRANGE IQUANT 2 \n", - "31 ACHOFFSETENABLE TOGGLE F \n", - "32 ACHOFFSET QUANT 0 \n", - "33 ACHFILTER IQUANT 1 \n", - "34 IERANGELOWERLIMIT IQUANT 4 \n", - "35 IERANGEMODE TOGGLE F \n", - "36 IERANGE IQUANT 11 \n", - "37 POSFEEDENABLE TOGGLE F \n", - "38 POSFEEDRESISTANCE QUANT 0 \n", - "39 ACHSELECT IQUANT 0 \n", - "40 SENSECABLEID IQUANT 14 \n", - "41 PWRCABLEID IQUANT 13 \n", - "42 DCCALDATE LABEL 11/22/2022 \n", - "43 ACCALDATE LABEL NaN \n", - "44 THERMOSELECT IQUANT 1 \n", - "45 FRAMEWORKVERSION QUANT 7.07 \n", - "46 INSTRUMENTVERSION LABEL 4.35 \n", - "47 COMPLIANCEVOLTAGE IQUANT 0 \n", - "\n", - " Description \n", - "0 Potentiostat \n", - "1 Initial I (mA/cm^2) \n", - "2 Initial Time (s) \n", - "3 Final I (mA/cm^2) \n", - "4 Final Time (s) \n", - "5 Sample Period (s) \n", - "6 Sample Area (cm^2) \n", - "7 Density (g/cm^3) \n", - "8 Equiv. Wt \n", - "9 IR Comp \n", - "10 Open Circuit (V) \n", - "11 Run as Sequence \n", - "12 Pstat Model \n", - "13 Pstat Section \n", - "14 Pstat Serial Number \n", - "15 Control Mode \n", - "16 RE=0 or CS=1 \n", - "17 I/E Stability \n", - "18 Control Amp Speed \n", - "19 Current Convention \n", - "20 Ich Range \n", - "21 Ich Auto Range \n", - "22 Ich Offset Enable \n", - "23 Ich Offset (V) \n", - "24 Ich Filter \n", - "25 Vch Range \n", - "26 Vch Auto Range \n", - "27 Vch Offset Enable \n", - "28 Vch Offset (V) \n", - "29 Vch Filter \n", - "30 Ach Range \n", - "31 Ach Offset Enable \n", - "32 Ach Offset (V) \n", - "33 Ach Filter \n", - "34 I/E Range Lower Limit \n", - "35 I/E AutoRange \n", - "36 I/E Range \n", - "37 Positive Feedback IR Comp \n", - "38 Positive Feedback Resistance (ohm) \n", - "39 Ach Select \n", - "40 Sense Cable ID \n", - "41 Power Cable ID \n", - "42 DC Calibration Date \n", - "43 AC Calibration Date \n", - "44 Thermo Select \n", - "45 Framework Version \n", - "46 Instrument Version \n", - "47 Compliance Voltage " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gstatic_metadata_df, gstatic_metadata = gstaticparser.extract_metadata(file_index_echem)\n", - "potentiometric_measurement = lib.Measurement(measurement_type=lib.enums.MeasurementType.POTENTIOSTATIC.value, metadata=gstatic_metadata)\n", - "experiment.measurements = [potentiometric_measurement]\n", - "gstatic_metadata_df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "## Section 3: MFM data parsing\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Provide name of the subdirectory containing the mass flow meter measurement data." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "path_mfm = path_raw_data / '03_MFM'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Search directory for further subdirectories and print them." - ] - }, - { - "cell_type": "code", - "execution_count": 27, + "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0: CAD14-Cu@AB\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/03_MFM \n", + "Available subdirectories:\n", + "0: .../CAD14-Cu@AB\n" ] } ], "source": [ - "subdirectories_mfm = {index:directory for index, directory in enumerate(path_mfm.iterdir())}\n", - "for index, directory in subdirectories_mfm.items():\n", - " print(f\"{index}: {directory.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Choose one of the found subdirectory by its index." + "mfm_directories = librarian.enumerate_subdirectories(directory=raw_data_subdirectories[2])" ] }, { @@ -1067,102 +620,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/03_MFM/CAD14-Cu@AB\n" - ] - } - ], - "source": [ - "subdirectory_index_mfm = 0\n", - "selected_subdirectory_mfm = subdirectories_mfm[subdirectory_index_mfm]\n", - "print(selected_subdirectory_mfm)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Provide suffix of the file that contains the data." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "suffix_mfm = 'csv'" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Instantiate the ``MFMParser`` to parse MFM output files and show available files in the selected directory." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: Bench-2h-GSS_CAD14-Cu@AB_200_50c_24h.csv\n", - "1: Bench-2h-GSS_CAD14-Cu@AB_200_50c_24h_truncated.csv\n" - ] - } - ], - "source": [ - "mfmparser = MFMParser(selected_subdirectory_mfm, suffix_mfm)\n", - "files_dict_mfm = mfmparser.available_files\n", - "for index, mfm_file in files_dict_mfm.items():\n", - " print(f\"{index}: {mfm_file.name}\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Chose file to be parsed by its index." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Bench-2h-GSS_CAD14-Cu@AB_200_50c_24h.csv'" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/03_MFM/CAD14-Cu@AB \n", + "Available files:\n", + "0: Bench-2h-GSS_CAD14-Cu@AB_200_50c_24h.csv\n", + "1: Bench-2h-GSS_CAD14-Cu@AB_200_50c_24h_truncated.csv\n" + ] } ], "source": [ - "file_index_mfm = 0\n", - "file_mfm = files_dict_mfm[file_index_mfm]\n", - "file_mfm.name" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Extract the experimental data from it using the ``MFMParser`` and load into the data model." + "mfm_raw_data_files = librarian.enumerate_files(directory=mfm_directories[0], filter='csv')" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1186,10 +658,10 @@ " \n", " \n", " \n", - " Datetime\n", + " Date time\n", " Time\n", " Signal\n", - " Flow_rate\n", + " Volumetric flow rate\n", " \n", " \n", " \n", @@ -1276,35 +748,30 @@ "" ], "text/plain": [ - " Datetime Time Signal Flow_rate\n", - "0 2023-02-06 09:58:48 0 3258 5.090180\n", - "1 2023-02-06 09:58:50 2 3267 5.104674\n", - "2 2023-02-06 09:58:52 4 3273 5.114520\n", - "3 2023-02-06 09:58:54 6 3278 5.122616\n", - "4 2023-02-06 09:58:56 8 3290 5.139893\n", - "... ... ... ... ...\n", - "2848 2023-02-06 11:33:44 5696 3210 5.015965\n", - "2849 2023-02-06 11:33:46 5698 3204 5.006263\n", - "2850 2023-02-06 11:33:48 5700 3202 5.003840\n", - "2851 2023-02-06 11:33:50 5702 3204 5.006141\n", - "2852 2023-02-06 11:33:52 5704 3198 4.996374\n", + " Date time Time Signal Volumetric flow rate\n", + "0 2023-02-06 09:58:48 0 3258 5.090180\n", + "1 2023-02-06 09:58:50 2 3267 5.104674\n", + "2 2023-02-06 09:58:52 4 3273 5.114520\n", + "3 2023-02-06 09:58:54 6 3278 5.122616\n", + "4 2023-02-06 09:58:56 8 3290 5.139893\n", + "... ... ... ... ...\n", + "2848 2023-02-06 11:33:44 5696 3210 5.015965\n", + "2849 2023-02-06 11:33:46 5698 3204 5.006263\n", + "2850 2023-02-06 11:33:48 5700 3202 5.003840\n", + "2851 2023-02-06 11:33:50 5702 3204 5.006141\n", + "2852 2023-02-06 11:33:52 5704 3198 4.996374\n", "\n", "[2853 rows x 4 columns]" ] }, - "execution_count": 32, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "experimental_data_df_mfm, experimental_data_dict_mfm = mfmparser.extract_exp_data(file_index_mfm)\n", - "mfm = lib.Measurement(\n", - " measurement_type=lib.enums.MeasurementType.MFM.value,\n", - " experimental_data=[value for value in experimental_data_dict_mfm.values()],\n", - " )\n", - "experiment.measurements.append(mfm)\n", - "experimental_data_df_mfm" + "mfm_experimental_data_df, mfm_measurement = Measurement.from_parser(parser=mfm_parser, experimental_data_path=mfm_raw_data_files[0])\n", + "mfm_experimental_data_df" ] }, { @@ -1316,350 +783,315 @@ "---" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Provide name of the subdirectory containing the mass flow meter measurement data." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "path_gc = path_raw_data / '02_GC'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Search directory for further subdirectories and print them." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: CAD14-Cu@AB\n" - ] - } - ], - "source": [ - "subdirectories_gc = {index:directory for index, directory in enumerate(path_gc.iterdir())}\n", - "for index, directory in subdirectories_gc.items():\n", - " print(f\"{index}: {directory.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Choose one of the found subdirectory by its index." - ] - }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC \n", + "Available subdirectories:\n", + "0: .../CAD14-Cu@AB\n" ] } ], "source": [ - "subdirectory_index_gc = 0\n", - "selected_subdirectory_gc = subdirectories_gc[subdirectory_index_gc]\n", - "print(selected_subdirectory_gc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Search subdirectory for further subsubdirectories and print them." + "gc_directories = librarian.enumerate_subdirectories(directory=raw_data_subdirectories[1])" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0: JH-1H 2023-02-06 10-00-18\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB \n", + "Available subdirectories:\n", + "0: .../JH-1H 2023-02-06 10-00-18\n" ] } ], "source": [ - "subsubdirectories_gc = {index:directory for index, directory in enumerate(selected_subdirectory_gc.iterdir())}\n", - "for index, directory in subsubdirectories_gc.items():\n", - " print(f\"{index}: {directory.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Choose one of the found subsubdirectory by its index." + "gc_subdirectories = librarian.enumerate_subdirectories(directory=gc_directories[0])" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18\n" + "Parent directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18 \n", + "Available subdirectories:\n", + "0: .../JH_GASPRODUKTE.M\n", + "1: .../JH_GASPRODUKTE_30MIN.M\n", + "2: .../NV-F0101.D\n", + "3: .../NV-F0102.D\n", + "4: .../NV-F0103.D\n", + "5: .../NV-F0104.D\n", + "6: .../NV-F0201.D\n" ] } ], "source": [ - "subsubdirectory_index_gc = 0\n", - "selected_subsubdirectory_gc = subsubdirectories_gc[subsubdirectory_index_gc]\n", - "print(selected_subsubdirectory_gc)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print available directories containg the individual measurement datasets." + "gc_subsubdirectories = librarian.enumerate_subdirectories(directory=gc_subdirectories[0])" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "3: JH_GASPRODUKTE.M\n", - "4: JH_GASPRODUKTE_30MIN.M\n", - "6: NV-F0101.D\n", - "7: NV-F0102.D\n", - "8: NV-F0103.D\n", - "9: NV-F0104.D\n", - "10: NV-F0201.D\n" + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0102.D \n", + "Available files:\n", + "0: report00.CSV\n", + "1: REPORT01.CSV\n" ] } ], "source": [ - "exp_directories_gc = {index:directory for index, directory in enumerate(selected_subsubdirectory_gc.iterdir()) if directory.is_dir()}\n", - "for index, directory in exp_directories_gc.items():\n", - " print(f\"{index}: {directory.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Choose directories of idividual GC measurements to be used for calculation by their indices." + "gc_raw_data_files_list = []\n", + "gc_raw_data_files_1 = librarian.enumerate_files(directory=gc_subsubdirectories[3], filter='CSV')\n", + "gc_raw_data_files_list.append(gc_raw_data_files_1)" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0102.D\n", - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0103.D\n", - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0104.D\n" + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0103.D \n", + "Available files:\n", + "0: report00.CSV\n", + "1: REPORT01.CSV\n" ] } ], "source": [ - "indices_exp_directories_gc = [7,8,9]\n", - "selected_subdirectories_gc = [exp_directories_gc[file] for file in indices_exp_directories_gc]\n", - "for sub in selected_subdirectories_gc: \n", - " print(sub)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Provide filenames of the files that contains the meta data and experimental data, respectively." + "gc_raw_data_files_2 = librarian.enumerate_files(directory=gc_subsubdirectories[4], filter='CSV')\n", + "gc_raw_data_files_list.append(gc_raw_data_files_2)" ] }, { "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "filename_exp_gc = 'report01.CSV'\n", - "filename_meta_gc = 'report00.CSV'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize GCParser." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "gcparser = GCParser(selected_subdirectories_gc, filename_meta_gc, filename_exp_gc)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Show available metadata files contained in the selected directory." - ] - }, - { - "cell_type": "code", - "execution_count": 42, + "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/Rohdaten/02_GC/CAD14-Cu@AB/JH-1H 2023-02-06 10-00-18/NV-F0104.D \n", + "Available files:\n", "0: report00.CSV\n", - "1: report00.CSV\n", - "2: report00.CSV\n" + "1: REPORT01.CSV\n" ] } ], "source": [ - "metadata_dict_gc = gcparser.available_meta_files\n", - "for index, gc_file in metadata_dict_gc.items():\n", - " print(f\"{index}: {gc_file.name}\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Select GC metadata files to be parsed by their indices." + "gc_raw_data_files_3 = librarian.enumerate_files(directory=gc_subsubdirectories[5], filter='CSV')\n", + "gc_raw_data_files_list.append(gc_raw_data_files_3)" ] }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ - "indices_gc_meta = [0,1,2]" + "gc_experimental_data_df_list = []\n", + "gc_metadata_df_list = []\n", + "gc_measurements_list = []\n", + "for data_file in gc_raw_data_files_list:\n", + " gc_metadata_df, gc_experimental_data_df, gc_measurement = Measurement.from_parser(\n", + " parser=gc_parser,\n", + " metadata_path=data_file[0],\n", + " experimental_data_path=data_file[1]\n", + " )\n", + " gc_experimental_data_df_list.append(gc_experimental_data_df)\n", + " gc_metadata_df_list.append(gc_metadata_df)\n", + " gc_measurements_list.append(gc_measurement)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Show available experimental data files contained in the selected directory." + "Show first set of GC experimental data." ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 37, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: report01.CSV\n", - "1: report01.CSV\n", - "2: report01.CSV\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Peak numberRetention timeSignalPeak typePeak areaPeak heightPeak area percentage
011.7299671PBAN69.17157732.5128860.098238
122.9099731BBA65492.7460943794.47827193.013605
233.4342302BV164.15702843.2530980.233138
343.6577942VB141.17393549.4088440.200497
456.0454722BB1624.073730347.8347172.306530
5612.9978221BB2876.95263788.8290254.085884
6714.1946832BB43.73169714.1399350.062108
\n", + "
" + ], + "text/plain": [ + " Peak number Retention time Signal Peak type Peak area Peak height \n", + "0 1 1.729967 1 PBAN 69.171577 32.512886 \\\n", + "1 2 2.909973 1 BBA 65492.746094 3794.478271 \n", + "2 3 3.434230 2 BV 164.157028 43.253098 \n", + "3 4 3.657794 2 VB 141.173935 49.408844 \n", + "4 5 6.045472 2 BB 1624.073730 347.834717 \n", + "5 6 12.997822 1 BB 2876.952637 88.829025 \n", + "6 7 14.194683 2 BB 43.731697 14.139935 \n", + "\n", + " Peak area percentage \n", + "0 0.098238 \n", + "1 93.013605 \n", + "2 0.233138 \n", + "3 0.200497 \n", + "4 2.306530 \n", + "5 4.085884 \n", + "6 0.062108 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "exp_data_dict_gc = gcparser.available_exp_files\n", - "for index, gc_file in exp_data_dict_gc.items():\n", - " print(f\"{index}: {gc_file.name}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Select GC experimental data files to be parsed by their indices." - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [], - "source": [ - "indices_gc_exp = [0,1,2]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Extract the metadata and experimental data from them and load into the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "list_df_meta = []\n", - "list_df_exp = []\n", - "for index in indices_gc_exp:\n", - " metadata_df_gc, metadata_gc= gcparser.extract_metadata(index)\n", - " exp_data_df_gc, exp_data_gc = gcparser.extract_exp_data(index)\n", - " gc = lib.Measurement(\n", - " measurement_type=lib.enums.MeasurementType.GC.value,\n", - " metadata=[value for value in metadata_gc.values()],\n", - " experimental_data=[value for value in exp_data_gc.values()]\n", - " )\n", - " experiment.measurements.append(gc)\n", - " list_df_meta.append(metadata_df_gc)\n", - " list_df_exp.append(exp_data_df_gc)" + "gc_experimental_data_df_list[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Print example content of first metadata file." + "Show first set of GC metadata." ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1971,169 +1403,40 @@ "33 Area % NaN " ] }, - "execution_count": 47, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "list_df_meta[0]" + "gc_metadata_df_list[0]" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 39, "metadata": {}, + "outputs": [], "source": [ - "Print example content of first experimental data file." + "# hplc_path = raw_data_path / '04_HPLC'\n", + "# pressure_path = raw_data_path / '05_Pressure'" ] }, { - "cell_type": "code", - "execution_count": 48, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Peak_numberRetention_timeSignalPeak_typePeak_areaPeak_heightPeak_area_percentage
011.7299671PBAN69.17157732.5128860.098238
122.9099731BBA65492.7460943794.47827193.013605
233.4342302BV164.15702843.2530980.233138
343.6577942VB141.17393549.4088440.200497
456.0454722BB1624.073730347.8347172.306530
5612.9978221BB2876.95263788.8290254.085884
6714.1946832BB43.73169714.1399350.062108
\n", - "
" - ], - "text/plain": [ - " Peak_number Retention_time Signal Peak_type Peak_area Peak_height \n", - "0 1 1.729967 1 PBAN 69.171577 32.512886 \\\n", - "1 2 2.909973 1 BBA 65492.746094 3794.478271 \n", - "2 3 3.434230 2 BV 164.157028 43.253098 \n", - "3 4 3.657794 2 VB 141.173935 49.408844 \n", - "4 5 6.045472 2 BB 1624.073730 347.834717 \n", - "5 6 12.997822 1 BB 2876.952637 88.829025 \n", - "6 7 14.194683 2 BB 43.731697 14.139935 \n", - "\n", - " Peak_area_percentage \n", - "0 0.098238 \n", - "1 93.013605 \n", - "2 0.233138 \n", - "3 0.200497 \n", - "4 2.306530 \n", - "5 4.085884 \n", - "6 0.062108 " - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "list_df_exp[0]" + "Instantiate an experiment object which will hold all the information about one single experiment and append all the measurement objects." ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ - "# hplc_path = raw_data_path / '04_HPLC'\n", - "# pressure_path = raw_data_path / '05_Pressure'" + "experiment = Experiment()\n", + "experiment.measurements = [potentiostatic_measurement, mfm_measurement, *gc_measurements_list]" ] }, { @@ -2149,87 +1452,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Set path to calibration data." - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [], - "source": [ - "path_calibration_data = path_data / 'calibration'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Print json files available in the ```calibration``` directory." + "Search for calibation files in the 'calibration' directory." ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0:/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/calibration/calibration.json\n" + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/calibration \n", + "Available files:\n", + "0: calibration.json\n" ] } ], "source": [ - "files_dict_calibration = Calibrator.available_json_files(path_to_calibration_data=path_calibration_data)\n", - "for count, path in files_dict_calibration.items():\n", - " print(f'{count}:{path}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Select calibration data files to be parsed by its index." - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'calibration.json'" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "file_index_calibration = 0\n", - "file_calibration = files_dict_calibration[file_index_mfm]\n", - "file_calibration.name" + "calibration_files = librarian.enumerate_files(directory=data_subdirectories[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Initialize calibrator by its method ```from_json_file```." + "Initialize calibrator with an available calibration file selected by its index." ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ - "calibrator = Calibrator.from_json_file(path_to_json_file=file_calibration)" + "calibrator = Calibrator.from_json_file(path_to_json_file=calibration_files[0])" ] }, { @@ -2241,7 +1500,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -2269,33 +1528,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Set path for the ``correction`` ``factors``." + "Search for correction factors files in the 'correction factors' directory." ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 44, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/correction_factors \n", + "Available files:\n", + "0: correction_factors.json\n" + ] + } + ], "source": [ - "filename = 'correction_factors.json'\n", - "path_correction_factors = path_data / 'correction_factors' / filename" + "correction_factors_files = librarian.enumerate_files(directory=data_subdirectories[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Load correction factors." + "Load correction factors into the experiment object." ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ - "experiment.read_correction_factors(path_correction_factors)" + "experiment.read_correction_factors(correction_factors_files[0])" ] }, { @@ -2309,33 +1578,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Set path for the ``Faraday`` ``coefficients``." + "Search for faraday coefficients files in the 'correction factors' directory." ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 46, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Directory: \n", + " /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/data/faraday_coefficients \n", + "Available files:\n", + "0: faraday_coefficients.json\n" + ] + } + ], "source": [ - "filename = 'faraday_coefficients.json'\n", - "path_faraday_coefficients = path_data / 'faraday_coefficients' / filename" + "faraday_coefficients_files = librarian.enumerate_files(directory=data_subdirectories[2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Load faraday coefficients." + "Load faraday coefficients into the experiment object." ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ - "experiment.read_faraday_coefficients(path_faraday_coefficients)" + "experiment.read_faraday_coefficients(faraday_coefficients_files[0])" ] }, { @@ -2354,7 +1633,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -2380,35 +1659,49 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "# print(experiment.json())" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Append experiment object to the dataset." + ] + }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "dataset.experiments.append(experiment)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Replace 'old' dataset by its extended version containing all the parsef data." + ] + }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 51, "metadata": {}, "outputs": [], "source": [ - "with open(json_files[index_dataset], \"w\") as f:\n", + "with open(json_dataset, \"w\") as f:\n", " f.write(dataset.json())" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ @@ -2431,7 +1724,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 53, "metadata": {}, "outputs": [ { diff --git a/2.2_Experimental_analysis.ipynb b/2.2_Experimental_analysis.ipynb index 6205f58..c914119 100644 --- a/2.2_Experimental_analysis.ipynb +++ b/2.2_Experimental_analysis.ipynb @@ -21,57 +21,55 @@ ] }, { - "cell_type": "code", - "execution_count": 1, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# from sdRDM.generator import generate_python_api\n", - "from sdRDM import DataModel" + "---\n", + "## Section 0: Imports, Paths, and Logging\n", + "---" ] }, { - "cell_type": "code", - "execution_count": 2, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# generate_python_api('specifications/datamodel_b07_tc.md', '', 'datamodel_b07_tc')" + "In this section all the necessary python packages are imported, the path to this notebook and the logger for this notebook is set up." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Import standard library python packages." + "Activate autoreload." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%reload_ext autoreload\n", - "%autoreload 2\n", - "\n", - "from datamodel_b07_tc.tools import FaradayEfficiencyCalculator\n", - "from datamodel_b07_tc.tools import PeakAreaAssignment\n", - "# from DEXPI2sdRDM import DEXPI2sdRDM" + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import standard library python packages necessary to set up the ``logger``." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "import json\n", - "import ipywidgets as widgets\n", "import logging\n", "import logging.config\n", - "from IPython.display import display\n", "from pathlib import Path" ] }, @@ -79,68 +77,74 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "---\n", - "## Section 0: Paths and Logging\n", - "---" + "Get path to the directory this notebook is located." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "root = Path(os.path.abspath(''))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set path to the directory containing the configuration file for the logger." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "logging_config_path = root / \"datamodel_b07_tc/tools/logging/config_exp_2_1.json\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Get path to the directory this notebook is located and check for correctness." + "Set up logger by reading the .json-type configuration file." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Path to this notebook's location: /mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc\n", - "Is the path valid? True\n" - ] - } - ], + "outputs": [], "source": [ - "root = Path(os.path.abspath(''))\n", - "print(\"Path to this notebook's location:\", root)\n", - "print('Is the path valid?', root.is_dir())" + "with open(logging_config_path) as logging_config_json:\n", + " logging_config = json.load(logging_config_json)\n", + "logging.config.dictConfig(logging_config)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set path for the logger." + "Create a child of the root logger and set its name to the name of the current notebook." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/datamodel_b07_tc/tools/logging/config.json\n" - ] - } - ], + "outputs": [], "source": [ - "config_path = root / \"datamodel_b07_tc/tools/logging/config.json\"\n", - "print(config_path)" + "logger = logging.getLogger(__name__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set up logger." + "Set the level of several third-party module loggers to avoid dumping too much information in the log file.\n", + "
Info: Some third party modules use the same logging module and structure as this notebook, which is unproblematic, unless the level of their corresponding logging handlers is too low. In these cases the logging messages of lower levels, such as 'DEBUG' and 'INFO' are propagated to the parent logger of this notebook.
" ] }, { @@ -149,9 +153,16 @@ "metadata": {}, "outputs": [], "source": [ - "logging_config_path = root / \"datamodel_b07_tc/tools/logging/config.json\"\n", - "with open(logging_config_path) as logging_config_json:\n", - " logging_config = json.load(logging_config_json)" + "third_party_module_loggers = ['markdown_it', 'h5py', 'numexpr', 'git']\n", + "for logger_ in third_party_module_loggers:\n", + " logging.getLogger(logger_).setLevel('WARNING')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import and instantiate the ``Librarian`` module for efficient and clean file and directory handling." ] }, { @@ -160,102 +171,167 @@ "metadata": {}, "outputs": [], "source": [ - "logging.config.dictConfig(logging_config)" + "from datamodel_b07_tc.tools import Librarian\n", + "librarian = Librarian(root_directory=root)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import modfied sdRDM object." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-09-19 15:20:02,956 - __main__ - WARNING - uff\n" - ] - } - ], + "outputs": [], "source": [ - "logger = logging.getLogger(__name__)\n", - "logger.debug(\"obacht\")\n", - "logger.warning('uff')" + "from datamodel_b07_tc.modified.dataset import Dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "---\n", - "## Section 1: Parsing dataset\n", - "---" + "
Info: Python objects created by the sdRDM generator can be equipped with additional features, such as functions or classes, e.g. to parse data or perform internal calculations, which allows for a more modular approach of working with them.
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "In this section the data model and the dataset as well as all the output files necessary for analysis are parsed. " + "Import the data model containing all the objects of sdRDM's python API." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# from sdRDM.generator import generate_python_api\n", + "from sdRDM import DataModel" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - " Set path to datasets." + "Manually generate the sdRDM python objects." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ - "path_to_datasets = root / 'datasets'" + "# generate_python_api('specifications/datamodel_b07_tc.md', '', 'datamodel_b07_tc')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "List all available datasets in the directory.\n" + "Import tools used for the analysis." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from datamodel_b07_tc.tools import FaradayEfficiencyCalculator\n", + "from datamodel_b07_tc.tools import PeakAreaAssignment\n", + "from datamodel_b07_tc.tools import PeakAssigner\n", + "# from datamodel_b07_tc.tools import assignment_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import standard library python packages." + ] + }, + { + "cell_type": "code", + "execution_count": 13, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: b07.json\n" + "ename": "ImportError", + "evalue": "cannot import name 'just_run' from 'nbclient.util' (/home/shambles/miniconda3/envs/b07/lib/python3.10/site-packages/nbclient/util.py)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m/mnt/c/Users/rscho/Documents/GitHub/datamodel_b07_tc/2.2_Experimental_analysis.ipynb Cell 31\u001b[0m line \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mipywidgets\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mwidgets\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mipython_blocking\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mIPython\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdisplay\u001b[39;00m \u001b[39mimport\u001b[39;00m display\n", + "File \u001b[0;32m~/miniconda3/envs/b07/lib/python3.10/site-packages/ipython_blocking/__init__.py:1\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mipython_blocking\u001b[39;00m \u001b[39mimport\u001b[39;00m CaptureExecution\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mipython_magic\u001b[39;00m \u001b[39mimport\u001b[39;00m CaptureMagic, load_ipython_extensions\n\u001b[1;32m 4\u001b[0m __version__ \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m0.3.1\u001b[39m\u001b[39m\"\u001b[39m\n", + "File \u001b[0;32m~/miniconda3/envs/b07/lib/python3.10/site-packages/ipython_blocking/ipython_blocking.py:5\u001b[0m, in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mipykernel\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[39mimport\u001b[39;00m \u001b[39mtornado\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mqueues\u001b[39;00m\n\u001b[0;32m----> 5\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mnbclient\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mutil\u001b[39;00m \u001b[39mimport\u001b[39;00m just_run\n\u001b[1;32m 7\u001b[0m \u001b[39m# If ipykernel is 6+, use just_run to execute async kernel.* methods\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[39m# otherwise use traditional sync kernel.* methods\u001b[39;00m\n\u001b[1;32m 9\u001b[0m MAJ_VERSION \u001b[39m=\u001b[39m \u001b[39mint\u001b[39m(ipykernel\u001b[39m.\u001b[39m__version__\u001b[39m.\u001b[39msplit(\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39m\u001b[39m\"\u001b[39m)[\u001b[39m0\u001b[39m])\n", + "\u001b[0;31mImportError\u001b[0m: cannot import name 'just_run' from 'nbclient.util' (/home/shambles/miniconda3/envs/b07/lib/python3.10/site-packages/nbclient/util.py)" ] } ], "source": [ - "files = path_to_datasets.iterdir()\n", - "json_files = {index:file for index, file in enumerate(files) if file.suffix == '.json'}\n", - "for index, file in json_files.items():\n", - " print(f'{index}: {file.name}')" + "import ipywidgets as widgets\n", + "import ipython_blocking\n", + "from IPython.display import display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Choose dataset to be loaded by its index." + "---\n", + "## Section 1: Dataset and data model parsing\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section the data model and the dataset as well as all the output files necessary for analysis are parsed. " ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "root_subdirectories = librarian.enumerate_subdirectories(directory=root)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "List all available dataset json files in the 'datasets' directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "json_dataset_files = librarian.enumerate_files(directory=root_subdirectories[5], filter='json')" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "index_dataset = 0\n", - "dataset, lib = DataModel.parse(json_files[index_dataset])" + "json_dataset = json_dataset_files[0]\n", + "dataset, lib = DataModel.parse(json_dataset)\n", + "dataset = Dataset(**dataset.__dict__)" ] }, { @@ -267,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -283,7 +359,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -300,1420 +376,49 @@ ] }, { - "cell_type": "code", - "execution_count": 15, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "index_experiment = 0" + "Print all experiments object of the dataset." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "experiment = dataset.experiments[index_experiment]" + "experiments_dict = dataset.enumerate('experiments')" ] }, { - "cell_type": "code", - "execution_count": 17, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[4mExperiment\u001b[0m\n", - "├── \u001b[94mid\u001b[0m = experiment0\n", - "├── \u001b[94mplant_setup\u001b[0m\n", - "│ └── \u001b[4mPlantSetup\u001b[0m\n", - "│ └── \u001b[94mid\u001b[0m = plantsetup0\n", - "├── \u001b[94mmeasurements\u001b[0m\n", - "│ ├── 0\n", - "│ │ └── \u001b[4mMeasurement\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = measurement1\n", - "│ │ ├── \u001b[94mmeasurement_type\u001b[0m = Potentiostatic measurement\n", - "│ │ └── \u001b[94mmetadata\u001b[0m\n", - "│ │ ├── 0\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata1\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = PSTAT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = REF3000-19129\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = PSTAT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Potentiostat\n", - "│ │ ├── 1\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata2\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IINIT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = -2.00000E+002\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Initial I (mA/cm^2)\n", - "│ │ ├── 2\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata3\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = TINIT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 3.60000E+003\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Initial Time (s)\n", - "│ │ ├── 3\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata4\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IFINAL\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = -2.00000E+002\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Final I (mA/cm^2)\n", - "│ │ ├── 4\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata5\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = TFINAL\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0.00000E+000\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Final Time (s)\n", - "│ │ ├── 5\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata6\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = SAMPLETIME\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1.00000E+000\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Sample Period (s)\n", - "│ │ ├── 6\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata7\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = AREA\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1.00000E+000\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Sample Area (cm^2)\n", - "│ │ ├── 7\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata8\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = DENSITY\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 7.87000E+000\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Density (g/cm^3)\n", - "│ │ ├── 8\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata9\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = EQUIV\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 2.79200E+001\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Equiv. Wt\n", - "│ │ ├── 9\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata10\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IRCOMP\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = T\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = IR Comp\n", - "│ │ ├── 10\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata11\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = EOC\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Open Circuit (V)\n", - "│ │ ├── 11\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata12\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = SEQUENCER\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = TRUE\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Run as Sequence\n", - "│ │ ├── 12\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata13\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = PSTATMODEL\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 5\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Pstat Model\n", - "│ │ ├── 13\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata14\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = PSTATSECTION\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = REF3000-19129\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = LABEL\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Pstat Section\n", - "│ │ ├── 14\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata15\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = PSTATSERIALNO\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 19129\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = LABEL\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Pstat Serial Number\n", - "│ │ ├── 15\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata16\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = CTRLMODE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Control Mode\n", - "│ │ ├── 16\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata17\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ELECTROMETER\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = RE=0 or CS=1\n", - "│ │ ├── 17\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata18\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IESTAB\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = I/E Stability\n", - "│ │ ├── 18\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata19\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = CASPEED\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 4\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Control Amp Speed\n", - "│ │ ├── 19\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata20\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = CONVENTION\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Current Convention\n", - "│ │ ├── 20\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata21\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ICHRANGE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ich Range\n", - "│ │ ├── 21\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata22\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ICHRANGEMODE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = T\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ich Auto Range\n", - "│ │ ├── 22\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata23\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ICHOFFSETENABLE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = F\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ich Offset Enable\n", - "│ │ ├── 23\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata24\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ICHOFFSET\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ich Offset (V)\n", - "│ │ ├── 24\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata25\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ICHFILTER\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 3\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ich Filter\n", - "│ │ ├── 25\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata26\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = VCHRANGE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 3\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Vch Range\n", - "│ │ ├── 26\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata27\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = VCHRANGEMODE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = T\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Vch Auto Range\n", - "│ │ ├── 27\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata28\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = VCHOFFSETENABLE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = F\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Vch Offset Enable\n", - "│ │ ├── 28\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata29\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = VCHOFFSET\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Vch Offset (V)\n", - "│ │ ├── 29\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata30\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = VCHFILTER\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Vch Filter\n", - "│ │ ├── 30\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata31\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACHRANGE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ach Range\n", - "│ │ ├── 31\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata32\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACHOFFSETENABLE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = F\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ach Offset Enable\n", - "│ │ ├── 32\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata33\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACHOFFSET\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ach Offset (V)\n", - "│ │ ├── 33\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata34\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACHFILTER\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ach Filter\n", - "│ │ ├── 34\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata35\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IERANGELOWERLIMIT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 4\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = I/E Range Lower Limit\n", - "│ │ ├── 35\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata36\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IERANGEMODE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = F\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = I/E AutoRange\n", - "│ │ ├── 36\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata37\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = IERANGE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 11\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = I/E Range\n", - "│ │ ├── 37\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata38\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = POSFEEDENABLE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = F\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = TOGGLE\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Positive Feedback IR Comp\n", - "│ │ ├── 38\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata39\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = POSFEEDRESISTANCE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Positive Feedback Resistance (ohm)\n", - "│ │ ├── 39\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata40\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACHSELECT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Ach Select\n", - "│ │ ├── 40\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata41\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = SENSECABLEID\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 14\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Sense Cable ID\n", - "│ │ ├── 41\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata42\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = PWRCABLEID\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 13\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Power Cable ID\n", - "│ │ ├── 42\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata43\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = DCCALDATE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 11/22/2022\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = LABEL\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = DC Calibration Date\n", - "│ │ ├── 43\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata44\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = ACCALDATE\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = LABEL\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = AC Calibration Date\n", - "│ │ ├── 44\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata45\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = THERMOSELECT\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Thermo Select\n", - "│ │ ├── 45\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata46\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = FRAMEWORKVERSION\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 7.07\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = QUANT\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Framework Version\n", - "│ │ ├── 46\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata47\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = INSTRUMENTVERSION\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 4.35\n", - "│ │ │ ├── \u001b[94mdata_type\u001b[0m = LABEL\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = Instrument Version\n", - "│ │ └── 47\n", - "│ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = metadata48\n", - "│ │ ├── \u001b[94mparameter\u001b[0m = COMPLIANCEVOLTAGE\n", - "│ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ ├── \u001b[94mdata_type\u001b[0m = IQUANT\n", - "│ │ └── \u001b[94mdescription\u001b[0m = Compliance Voltage\n", - "│ ├── 1\n", - "│ │ └── \u001b[4mMeasurement\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = measurement2\n", - "│ │ ├── \u001b[94mmeasurement_type\u001b[0m = MFM measurement\n", - "│ │ └── \u001b[94mexperimental_data\u001b[0m\n", - "│ │ ├── 0\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data6\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Date time\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [2023-02-06 09:58:48, 2023-02-06 09:58:50, 2023-02-06 09:58:52, 2023-02-06 09:58:54, 2023-02-06 09:58:56, ...]\n", - "│ │ ├── 1\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data7\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Time\n", - "│ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0, 2.0, 4.0, 6.0, 8.0, ...]\n", - "│ │ │ └── \u001b[94munit\u001b[0m = s\n", - "│ │ ├── 2\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data8\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Signal\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [3258.0, 3267.0, 3273.0, 3278.0, 3290.0, ...]\n", - "│ │ └── 3\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data9\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Volumetric flow rate\n", - "│ │ ├── \u001b[94mvalues\u001b[0m = [5.09018, 5.104674, 5.11452, 5.122616, 5.139893, ...]\n", - "│ │ └── \u001b[94munit\u001b[0m = ml / s\n", - "│ ├── 2\n", - "│ │ └── \u001b[4mMeasurement\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = measurement3\n", - "│ │ ├── \u001b[94mmeasurement_type\u001b[0m = GC measurement\n", - "│ │ ├── \u001b[94mmetadata\u001b[0m\n", - "│ │ │ ├── 0\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata49\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Name\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 1\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata50\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Info\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 2\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata51\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Data File\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = NV-F0102.D\n", - "│ │ │ ├── 3\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata52\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Instrument\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Instrument 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 4\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata53\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Analysis Method\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ │ ├── 5\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata54\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Method Info\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 6\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata55\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06.02.2023 10:32:26\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 7\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata56\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created by\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = MS\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 8\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata57\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Method\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 9\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata58\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Injection Date\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:17:24\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 10\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata59\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Operator\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:17:24\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 11\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata60\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Seq. Line\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 12\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata61\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Location\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = -1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 13\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata62\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = unused Loc.\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 14\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata63\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Inj\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 15\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata64\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Inj Volume\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 16\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata65\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Actual Inj Volume\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 17\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata66\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sequence File\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = JH-1H.S\n", - "│ │ │ ├── 18\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata67\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Report Title\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Area Percent Report\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 19\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata68\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sorted By\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 20\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata69\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Multiplier: \n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 21\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata70\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Dilution: \n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 22\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata71\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Signals\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 23\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata72\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 1\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = TCD1 A, Front Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 24\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata73\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 2\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = FID2 B, Back Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 25\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata74\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Errors and Warnings\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 26\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata75\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Columns\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 7\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 27\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata76\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 1\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Number\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 28\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata77\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 2\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = min\n", - "│ │ │ ├── 29\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata78\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 3\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 30\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata79\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 4\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Type\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 31\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata80\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 5\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Area \n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ │ ├── 32\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata81\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 6\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Height\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ │ └── 33\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata82\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 7\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Area %\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ └── \u001b[94mexperimental_data\u001b[0m\n", - "│ │ ├── 0\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data10\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak number\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [1.0, 2.0, 3.0, 4.0, 5.0, ...]\n", - "│ │ ├── 1\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data11\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Retention time\n", - "│ │ │ ├── \u001b[94mvalues\u001b[0m = [1.72996652126312, 2.90997338294983, 3.43423008918762, 3.65779399871826, 6.04547214508057, ...]\n", - "│ │ │ └── \u001b[94munit\u001b[0m = s\n", - "│ │ ├── 2\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data12\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Signal\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [1.0, 1.0, 2.0, 2.0, 2.0, ...]\n", - "│ │ ├── 3\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data13\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak type\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [PBAN, BBA , BV , VB , BB , ...]\n", - "│ │ ├── 4\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data14\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [69.1715774536133, 65492.74609375, 164.157028198242, 141.173934936524, 1624.07373046875, ...]\n", - "│ │ ├── 5\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data15\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak height\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [32.5128860473633, 3794.47827148438, 43.2530975341797, 49.4088439941406, 347.834716796875, ...]\n", - "│ │ └── 6\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data16\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak area percentage\n", - "│ │ ├── \u001b[94mvalues\u001b[0m = [0.0982383270934109, 93.0136054410226, 0.233137835285536, 0.200496962884192, 2.30652953468637, ...]\n", - "│ │ └── \u001b[94munit\u001b[0m = %\n", - "│ ├── 3\n", - "│ │ └── \u001b[4mMeasurement\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = measurement4\n", - "│ │ ├── \u001b[94mmeasurement_type\u001b[0m = GC measurement\n", - "│ │ ├── \u001b[94mmetadata\u001b[0m\n", - "│ │ │ ├── 0\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata83\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Name\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 1\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata84\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Info\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 2\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata85\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Data File\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = NV-F0103.D\n", - "│ │ │ ├── 3\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata86\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Instrument\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Instrument 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 4\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata87\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Analysis Method\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ │ ├── 5\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata88\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Method Info\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 6\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata89\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06.02.2023 10:49:09\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 7\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata90\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created by\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = MS\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 8\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata91\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Method\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 9\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata92\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Injection Date\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:34:09\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 10\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata93\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Operator\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:34:09\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 11\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata94\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Seq. Line\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 12\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata95\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Location\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = -1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 13\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata96\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = unused Loc.\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 14\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata97\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Inj\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 3\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 15\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata98\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Inj Volume\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 16\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata99\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Actual Inj Volume\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 17\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata100\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sequence File\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = JH-1H.S\n", - "│ │ │ ├── 18\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata101\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Report Title\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Area Percent Report\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 19\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata102\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Sorted By\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 20\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata103\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Multiplier: \n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 21\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata104\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Dilution: \n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 22\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata105\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Signals\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 23\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata106\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 1\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = TCD1 A, Front Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 24\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata107\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 2\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = FID2 B, Back Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 25\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata108\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Errors and Warnings\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 26\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata109\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Columns\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = 7\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 27\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata110\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 1\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Number\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 28\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata111\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 2\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = min\n", - "│ │ │ ├── 29\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata112\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 3\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Signal\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 30\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata113\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 4\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Type\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ │ ├── 31\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata114\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 5\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Area \n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ │ ├── 32\n", - "│ │ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ │ ├── \u001b[94mid\u001b[0m = metadata115\n", - "│ │ │ │ ├── \u001b[94mparameter\u001b[0m = Column 6\n", - "│ │ │ │ ├── \u001b[94mvalue\u001b[0m = Height\n", - "│ │ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ │ └── 33\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata116\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 7\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Area %\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ └── \u001b[94mexperimental_data\u001b[0m\n", - "│ │ ├── 0\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data17\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak number\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [1.0, 2.0, 3.0, 4.0, 5.0, ...]\n", - "│ │ ├── 1\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data18\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Retention time\n", - "│ │ │ ├── \u001b[94mvalues\u001b[0m = [1.73203873634339, 2.89946079254151, 3.42624497413635, 3.65776324272156, 6.04652786254883, ...]\n", - "│ │ │ └── \u001b[94munit\u001b[0m = s\n", - "│ │ ├── 2\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data19\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Signal\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [1.0, 1.0, 2.0, 2.0, 2.0, ...]\n", - "│ │ ├── 3\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data20\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak type\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [BBAN, BBA , BV , VB , BB , ...]\n", - "│ │ ├── 4\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data21\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [104.630867004395, 70813.515625, 317.436950683594, 160.268005371094, 1518.81433105469, ...]\n", - "│ │ ├── 5\n", - "│ │ │ └── \u001b[4mData\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = data22\n", - "│ │ │ ├── \u001b[94mquantity\u001b[0m = Peak height\n", - "│ │ │ └── \u001b[94mvalues\u001b[0m = [21.9065132141114, 4055.20532226563, 82.3093490600586, 55.405071258545, 323.761383056641, ...]\n", - "│ │ └── 6\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data23\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak area percentage\n", - "│ │ ├── \u001b[94mvalues\u001b[0m = [0.136511911555066, 92.3904069484319, 0.414160048336486, 0.209101696284392, 1.98159733896495, ...]\n", - "│ │ └── \u001b[94munit\u001b[0m = %\n", - "│ └── 4\n", - "│ └── \u001b[4mMeasurement\u001b[0m\n", - "│ ├── \u001b[94mid\u001b[0m = measurement5\n", - "│ ├── \u001b[94mmeasurement_type\u001b[0m = GC measurement\n", - "│ ├── \u001b[94mmetadata\u001b[0m\n", - "│ │ ├── 0\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata117\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Name\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 1\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata118\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Sample Info\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 2\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata119\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Data File\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = NV-F0104.D\n", - "│ │ ├── 3\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata120\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Instrument\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Instrument 1\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 4\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata121\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Analysis Method\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ ├── 5\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata122\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Method Info\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = nan\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 6\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata123\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 06.02.2023 11:05:56\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 7\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata124\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Results Created by\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = MS\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 8\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata125\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Method\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = JH_GASPRODUKTE.M\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 9\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata126\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Injection Date\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:50:57\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 10\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata127\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Acq. Operator\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 06-Feb-23, 10:50:57\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 11\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata128\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Seq. Line\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 12\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata129\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Location\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = -1\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 13\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata130\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = unused Loc.\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 14\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata131\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Inj\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 4\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 15\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata132\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Inj Volume\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 16\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata133\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Actual Inj Volume\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = No inj\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 17\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata134\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Sequence File\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = D:\\GC\\Kurz\\CAD14-Cu@AB\\JH-1H 2023-02-06 10-00-18\\\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = JH-1H.S\n", - "│ │ ├── 18\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata135\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Report Title\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Area Percent Report\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 19\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata136\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Sorted By\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 20\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata137\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Multiplier: \n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 21\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata138\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Dilution: \n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 1\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 22\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata139\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Signals\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 2\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 23\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata140\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 1\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = TCD1 A, Front Signal\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 24\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata141\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Signal 2\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = FID2 B, Back Signal\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 25\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata142\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Errors and Warnings\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 0\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 26\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata143\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Number of Columns\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = 7\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 27\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata144\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 1\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Number\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 28\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata145\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 2\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Retention Time\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = min\n", - "│ │ ├── 29\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata146\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 3\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Signal\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 30\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata147\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 4\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Peak Type\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ │ ├── 31\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata148\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 5\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Area \n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ ├── 32\n", - "│ │ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ │ ├── \u001b[94mid\u001b[0m = metadata149\n", - "│ │ │ ├── \u001b[94mparameter\u001b[0m = Column 6\n", - "│ │ │ ├── \u001b[94mvalue\u001b[0m = Height\n", - "│ │ │ └── \u001b[94mdescription\u001b[0m = \n", - "│ │ └── 33\n", - "│ │ └── \u001b[4mMetadata\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = metadata150\n", - "│ │ ├── \u001b[94mparameter\u001b[0m = Column 7\n", - "│ │ ├── \u001b[94mvalue\u001b[0m = Area %\n", - "│ │ └── \u001b[94mdescription\u001b[0m = nan\n", - "│ └── \u001b[94mexperimental_data\u001b[0m\n", - "│ ├── 0\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data24\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak number\n", - "│ │ └── \u001b[94mvalues\u001b[0m = [1.0, 2.0, 3.0, 4.0, 5.0, ...]\n", - "│ ├── 1\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data25\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Retention time\n", - "│ │ ├── \u001b[94mvalues\u001b[0m = [1.73309767246247, 2.89876174926758, 3.42548274993897, 3.65832567214966, 6.04824113845825, ...]\n", - "│ │ └── \u001b[94munit\u001b[0m = s\n", - "│ ├── 2\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data26\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Signal\n", - "│ │ └── \u001b[94mvalues\u001b[0m = [1.0, 1.0, 2.0, 2.0, 2.0, ...]\n", - "│ ├── 3\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data27\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak type\n", - "│ │ └── \u001b[94mvalues\u001b[0m = [BBAN, BBA , BV , VB , BB , ...]\n", - "│ ├── 4\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data28\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - "│ │ └── \u001b[94mvalues\u001b[0m = [97.2599182128906, 71603.8515625, 317.305053710938, 159.882797241211, 1266.77111816406, ...]\n", - "│ ├── 5\n", - "│ │ └── \u001b[4mData\u001b[0m\n", - "│ │ ├── \u001b[94mid\u001b[0m = data29\n", - "│ │ ├── \u001b[94mquantity\u001b[0m = Peak height\n", - "│ │ └── \u001b[94mvalues\u001b[0m = [20.2486820220947, 4093.13842773438, 82.8404388427735, 56.0063934326172, 270.260955810547, ...]\n", - "│ └── 6\n", - "│ └── \u001b[4mData\u001b[0m\n", - "│ ├── \u001b[94mid\u001b[0m = data30\n", - "│ ├── \u001b[94mquantity\u001b[0m = Peak area percentage\n", - "│ ├── \u001b[94mvalues\u001b[0m = [0.126447191107516, 93.0918519049058, 0.412526902173047, 0.207862920194027, 1.6469235488905, ...]\n", - "│ └── \u001b[94munit\u001b[0m = %\n", - "└── \u001b[94mspecies_data\u001b[0m\n", - " ├── 0\n", - " │ └── \u001b[4mSpeciesData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = speciesdata0\n", - " │ ├── \u001b[94mspecies\u001b[0m = Hydrogen\n", - " │ ├── \u001b[94mchemical_formula\u001b[0m = H2\n", - " │ ├── \u001b[94mcalibration\u001b[0m\n", - " │ │ └── \u001b[4mCalibration\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = calibration1\n", - " │ │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data6\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ │ └── \u001b[94mvalues\u001b[0m = [71.0, 153.0, 330.0, ...]\n", - " │ │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data7\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [5.0, 10.0, 20.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data18\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0576882835238838, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data19\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [1.0135636425894585, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data20\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [0.9996555416353008, ...]\n", - " │ ├── \u001b[94mcorrection_factor\u001b[0m = 1.01\n", - " │ ├── \u001b[94mfaraday_coefficient\u001b[0m = 2.0\n", - " │ └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ └── \u001b[94mid\u001b[0m = data5\n", - " ├── 1\n", - " │ └── \u001b[4mSpeciesData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = speciesdata1\n", - " │ ├── \u001b[94mspecies\u001b[0m = Carbon monoxide\n", - " │ ├── \u001b[94mchemical_formula\u001b[0m = CO\n", - " │ ├── \u001b[94mcalibration\u001b[0m\n", - " │ │ └── \u001b[4mCalibration\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = calibration2\n", - " │ │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data8\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ │ └── \u001b[94mvalues\u001b[0m = [797.0, 1328.0, 7223.0, ...]\n", - " │ │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data9\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.5, 1.0, 5.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data21\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0006912740171292098, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data22\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.012656829292048588, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data23\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [0.999269735035067, ...]\n", - " │ ├── \u001b[94mcorrection_factor\u001b[0m = 0.74\n", - " │ ├── \u001b[94mfaraday_coefficient\u001b[0m = 2.0\n", - " │ └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ └── \u001b[94mid\u001b[0m = data5\n", - " ├── 2\n", - " │ └── \u001b[4mSpeciesData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = speciesdata2\n", - " │ ├── \u001b[94mspecies\u001b[0m = Carbon dioxide\n", - " │ ├── \u001b[94mchemical_formula\u001b[0m = CO2\n", - " │ ├── \u001b[94mcalibration\u001b[0m\n", - " │ │ └── \u001b[4mCalibration\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = calibration3\n", - " │ │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data10\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ │ └── \u001b[94mvalues\u001b[0m = [0.0, 38653.0, ...]\n", - " │ │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data11\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0, 50.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data24\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0012935606550591157, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data25\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data26\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [1.0, ...]\n", - " │ ├── \u001b[94mcorrection_factor\u001b[0m = 1.0\n", - " │ ├── \u001b[94mfaraday_coefficient\u001b[0m = 2.0\n", - " │ └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ └── \u001b[94mid\u001b[0m = data5\n", - " ├── 3\n", - " │ └── \u001b[4mSpeciesData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = speciesdata3\n", - " │ ├── \u001b[94mspecies\u001b[0m = Methane\n", - " │ ├── \u001b[94mchemical_formula\u001b[0m = CH4\n", - " │ ├── \u001b[94mcalibration\u001b[0m\n", - " │ │ └── \u001b[4mCalibration\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = calibration4\n", - " │ │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data12\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ │ └── \u001b[94mvalues\u001b[0m = [5727.0, 11991.0, ...]\n", - " │ │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data13\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [5.0, 10.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data27\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.0007982120051085569, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data28\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.4286398467432946, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data29\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [1.0, ...]\n", - " │ ├── \u001b[94mcorrection_factor\u001b[0m = 0.76\n", - " │ ├── \u001b[94mfaraday_coefficient\u001b[0m = 8.0\n", - " │ └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ └── \u001b[94mid\u001b[0m = data5\n", - " ├── 4\n", - " │ └── \u001b[4mSpeciesData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = speciesdata4\n", - " │ ├── \u001b[94mspecies\u001b[0m = Ethene\n", - " │ ├── \u001b[94mchemical_formula\u001b[0m = C2H4\n", - " │ ├── \u001b[94mcalibration\u001b[0m\n", - " │ │ └── \u001b[4mCalibration\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = calibration5\n", - " │ │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data14\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ │ └── \u001b[94mvalues\u001b[0m = [1122.0, 4864.0, 7297.0, ...]\n", - " │ │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data15\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.5, 2.0, 3.0, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data30\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.00040452052875149003, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ │ ├── \u001b[94mid\u001b[0m = data31\n", - " │ │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ │ ├── \u001b[94mvalues\u001b[0m = [0.042251272197985745, ...]\n", - " │ │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data32\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [0.9999534565195388, ...]\n", - " │ ├── \u001b[94mfaraday_coefficient\u001b[0m = 12.0\n", - " │ └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ └── \u001b[94mid\u001b[0m = data5\n", - " └── 5\n", - " └── \u001b[4mSpeciesData\u001b[0m\n", - " ├── \u001b[94mid\u001b[0m = speciesdata5\n", - " ├── \u001b[94mspecies\u001b[0m = Ethane\n", - " ├── \u001b[94mchemical_formula\u001b[0m = C2H6\n", - " ├── \u001b[94mcalibration\u001b[0m\n", - " │ └── \u001b[4mCalibration\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = calibration6\n", - " │ ├── \u001b[94mpeak_areas\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data16\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Peak area\n", - " │ │ └── \u001b[94mvalues\u001b[0m = [0.0, 12168.0, ...]\n", - " │ ├── \u001b[94mconcentrations\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data17\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Concentration\n", - " │ │ ├── \u001b[94mvalues\u001b[0m = [0.0, 5.0, ...]\n", - " │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ ├── \u001b[94mslope\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data33\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Slope\n", - " │ │ ├── \u001b[94mvalues\u001b[0m = [0.0004109138724523339, ...]\n", - " │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ ├── \u001b[94mintercept\u001b[0m\n", - " │ │ └── \u001b[4mData\u001b[0m\n", - " │ │ ├── \u001b[94mid\u001b[0m = data34\n", - " │ │ ├── \u001b[94mquantity\u001b[0m = Intercept\n", - " │ │ ├── \u001b[94mvalues\u001b[0m = [4.440892098500626e-16, ...]\n", - " │ │ └── \u001b[94munit\u001b[0m = %\n", - " │ └── \u001b[94mcoefficient_of_determination\u001b[0m\n", - " │ └── \u001b[4mData\u001b[0m\n", - " │ ├── \u001b[94mid\u001b[0m = data35\n", - " │ ├── \u001b[94mquantity\u001b[0m = Coefficient of determination\n", - " │ └── \u001b[94mvalues\u001b[0m = [1.0, ...]\n", - " ├── \u001b[94mfaraday_coefficient\u001b[0m = 16.0\n", - " └── \u001b[94mfaraday_efficiency\u001b[0m\n", - " └── \u001b[4mData\u001b[0m\n", - " └── \u001b[94mid\u001b[0m = data5\n", - "\n" - ] - } - ], "source": [ - "print(experiment)" + "Select experiment object with which the analysis should be performed." ] }, { - "attachments": {}, - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ - "Assign peak areas to species." + "experiment = experiments_dict[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The peak areas recorded by the GC have to be matched with the correct species. The individial ``Area`` is selected by its corresponding ``Peak_Number``. It is possible that the same species is accountable for multiple peaks, i.d. multiple peaks are assigned to the same species.\n" + "### Peak assignment" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Peak assignment" + "
Info: The peak areas recorded by the GC have to be matched with the correct species. The individial Area is selected by its corresponding Peak_Number . It is possible that the same species is accountable for multiple peaks, i.d. multiple peaks are assigned to the same species.
" ] }, { @@ -1725,11 +430,76 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gc_measurements = [gc for gc in experiment.measurements if gc.measurement_type == 'GC measurement']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "species = ['Hydrogen', 'Carbon monoxide', 'Carbon dioxide', 'Methane', 'Ethene', 'Ethane']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "peak_assignment_1 = PeakAssigner.from_gc_measurement(gc_measurements[0], species)\n", + "peak_assignment_1.assign_peaks()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%blockrun button" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "peak_assignment_1._assignment_dict" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "peak_assigner2 = PeakAssigner.from_gc_measurement(gc_measurements[0], species)\n", + "print(type(peak_assigner2))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(peak_assigner1._assignment_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "gc_measurements = experiment.get(\"measurements\", \"measurement_type\", \"GC measurement\")[0]" + "hure" ] }, { @@ -1741,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1757,7 +527,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1766,23 +536,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1:69.1715774536133\n", - "2:65492.74609375\n", - "3:164.157028198242\n", - "4:141.173934936524\n", - "5:1624.07373046875\n", - "6:2876.95263671875\n", - "7:43.7316970825196\n" - ] - } - ], + "outputs": [], "source": [ "peak_area_assignment = PeakAreaAssignment.from_gc_measurement(gc_measurement=first_gc_measurement)\n", "peak_areas_index_dict = peak_area_assignment.get_peak_areas_index_dict\n", @@ -1792,7 +548,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1808,20 +564,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hydrogen:69.1715774536133\n", - "Carbon dioxide:65492.74609375\n", - "Carbon monoxide:2876.95263671875\n", - "Methane:164.157028198242\n" - ] - } - ], + "outputs": [], "source": [ "assigned_peak_areas_dict = peak_area_assignment.assign(peak_assignment_dict=peak_assignment_dict)\n", "list_of_assigned_peak_areas.append(assigned_peak_areas_dict)\n", @@ -1838,7 +583,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1847,23 +592,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1:104.630867004395\n", - "2:70813.515625\n", - "3:317.436950683594\n", - "4:160.268005371094\n", - "5:1518.81433105469\n", - "6:3685.70336914063\n", - "7:45.592227935791\n" - ] - } - ], + "outputs": [], "source": [ "peak_area_assignment = PeakAreaAssignment.from_gc_measurement(gc_measurement=second_gc_measurement)\n", "peak_areas_index_dict = peak_area_assignment.get_peak_areas_index_dict\n", @@ -1873,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1889,20 +620,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hydrogen:104.630867004395\n", - "Carbon dioxide:70813.515625\n", - "Carbon monoxide:3685.70336914063\n", - "Methane:317.436950683594\n" - ] - } - ], + "outputs": [], "source": [ "assigned_peak_areas_dict = peak_area_assignment.assign(peak_assignment_dict=peak_assignment_dict)\n", "list_of_assigned_peak_areas.append(assigned_peak_areas_dict)\n", @@ -1919,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1928,23 +648,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1:97.2599182128906\n", - "2:71603.8515625\n", - "3:317.305053710938\n", - "4:159.882797241211\n", - "5:1266.77111816406\n", - "6:3433.341796875\n", - "7:39.0086631774903\n" - ] - } - ], + "outputs": [], "source": [ "peak_area_assignment = PeakAreaAssignment.from_gc_measurement(gc_measurement=third_gc_measurement)\n", "peak_areas_index_dict = peak_area_assignment.get_peak_areas_index_dict\n", @@ -1954,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1970,20 +676,9 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hydrogen:97.2599182128906\n", - "Carbon dioxide:71603.8515625\n", - "Carbon monoxide:3433.341796875\n", - "Methane:317.305053710938\n" - ] - } - ], + "outputs": [], "source": [ "assigned_peak_areas_dict = peak_area_assignment.assign(peak_assignment_dict=peak_assignment_dict)\n", "list_of_assigned_peak_areas.append(assigned_peak_areas_dict)\n", @@ -2001,7 +696,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2024,7 +719,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2043,7 +738,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2059,19 +754,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2023-02-06 09:58:48\n", - "2023-02-06 09:58:48\n", - "2023-02-06 09:58:48\n" - ] - } - ], + "outputs": [], "source": [ "faraday_efficiencies = []\n", "for gc_measurement, assigned_peak_areas_dict in zip(gc_measurements, list_of_assigned_peak_areas):\n", @@ -2085,77 +770,9 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Faraday_efficiency
Carbon dioxide252.970554
Carbon monoxide6.524397
EthaneNaN
EtheneNaN
Hydrogen17.5246
Methane7.229418
\n", - "
" - ], - "text/plain": [ - " Faraday_efficiency\n", - "Carbon dioxide 252.970554\n", - "Carbon monoxide 6.524397\n", - "Ethane NaN\n", - "Ethene NaN\n", - "Hydrogen 17.5246\n", - "Methane 7.229418" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import pandas as pd\n", "mean_faraday_efficiency = pd.concat(faraday_efficiencies).groupby(level=0).mean()\n", @@ -2164,7 +781,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2244,18 +861,9 @@ "Calculate Faraday efficiency and load into dataset." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "## DaRUS upload\n", - "---" - ] - }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2264,7 +872,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2274,38 +882,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "71c2914ab9bd4db59ae3ede38f362c7f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(description='Append experiment', layout=Layout(height='80px', width='30%'), style=ButtonStyle(button_co…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "de1aaf1d9db94ac0b17240ecf16a981e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Output()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "button = widgets.Button(description=\"Append experiment\", layout=widgets.Layout(width='30%', height='80px'))\n", "button.style.button_color = 'darkcyan'\n", @@ -2326,7 +905,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2347,30 +926,9 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "%%html\n", "