From b4bbeea9e81910c5d68bfa89afa1b7296a4ce8fe Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 21 Oct 2021 11:15:11 -0400 Subject: [PATCH 01/11] started terminology service lookups --- GDC to CCDH conversion.ipynb | 1664 ++++++++++++---------------------- Pipfile | 3 + Pipfile.lock | 515 ++++++----- 3 files changed, 867 insertions(+), 1315 deletions(-) diff --git a/GDC to CCDH conversion.ipynb b/GDC to CCDH conversion.ipynb index 13e8d8b..0f609f1 100644 --- a/GDC to CCDH conversion.ipynb +++ b/GDC to CCDH conversion.ipynb @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "0b848016", "metadata": {}, "outputs": [], @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "8e146c12", "metadata": { "scrolled": false @@ -591,7 +591,7 @@ "[560 rows x 25 columns]" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -620,7 +620,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "a16e6db1", "metadata": { "scrolled": false @@ -634,6 +634,36 @@ " Any material taken as a sample from a biological entity (living or dead), or from a physical object or the\n", " environment. Specimens are usually collected as an example of their kind, often for use in some investigation.\n", " \n", + "Documentation for BodySite: \n", + " A site in the body of an organism, typically described in terms of an anatomical location and optional qualifiers\n", + " (e.g. left/right, upper/lower). But body sites as defined here may include 'non-anatomic' sites, such as the\n", + " location of an implanted medical device.\n", + " \n" + ] + } + ], + "source": [ + "# from ccdh import ccdhmodel as ccdh\n", + "import crdch_model as ccdh\n", + "\n", + "# Documentation for an entity.\n", + "print(f\"Documentation for Specimen: {ccdh.Specimen.__doc__}\")\n", + "\n", + "\n", + "# Documentation for an entity.\n", + "print(f\"Documentation for BodySite: {ccdh.BodySite.__doc__}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "df14d2c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ "Documentation for Specimen.specimen_type: \n", " A high-level type of specimen, based on its derivation provenance (i.e. how far removed it is from the original\n", " sample extracted from a source).\n", @@ -643,22 +673,20 @@ " - Value \"aliquot\": A specimen that results from the division of some parent specimen into equal amounts for downstream analysis.\n", " - Value \"analyte\": A specimen generated through the extraction of a specified class of substance/chemical (e.g. DNA, RNA, protein) from a parent specimen, which is stored in solution as an analyte.\n", " - Value \"slide\": A specimen that is mounted on a slide or coverslip for microscopic analysis.\n", - " - Value \"initial sample\": A specimen representing the material that was directly collected from a subject (i.e. not generated through portioning, aliquoting, or analyte extraction from an existing specimen).\n" + " - Value \"Fresh Specimen\": A specimen representing the material that was directly collected from a subject (i.e. not generated through portioning, aliquoting, or analyte extraction from an existing specimen).\n" ] } ], "source": [ - "from ccdh import ccdhmodel as ccdh\n", - "\n", - "# Documentation for an entity.\n", - "print(f\"Documentation for Specimen: {ccdh.Specimen.__doc__}\")\n", - "\n", "# Documentation for an enumeration.\n", - "print(f\"Documentation for Specimen.specimen_type: {ccdh.EnumCCDHSpecimenSpecimenType.__doc__}\")\n", + "# print(f\"Documentation for Specimen.specimen_type: {ccdh.EnumCCDHSpecimenSpecimenType.__doc__}\")\n", + "print(f\"Documentation for Specimen.specimen_type: {ccdh.EnumCRDCHSpecimenSpecimenType.__doc__}\")\n", "\n", "# List of permissible values for Specimen.specimen_type\n", + "# wiht move to codeable concepts,this may be of limited usefulness now\n", "print(\"Permissible values in enumeration Specimen.specimen_type:\")\n", - "pvalues = [pv for key, pv in ccdh.EnumCCDHSpecimenSpecimenType.__dict__.items() if isinstance(pv, ccdh.PermissibleValue)]\n", + "# pvalues = [pv for key, pv in ccdh.EnumCCDHSpecimenSpecimenType.__dict__.items() if isinstance(pv, ccdh.PermissibleValue)]\n", + "pvalues = [pv for key, pv in ccdh.EnumCRDCHSpecimenSpecimenType.__dict__.items() if isinstance(pv, ccdh.PermissibleValue)]\n", "for pv in pvalues:\n", " print(f' - Value \"{pv.text}\": {pv.description}')" ] @@ -680,59 +708,165 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 38, "id": "76578a61", "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import pandas as pd\n", + "import difflib\n", + "\n", + "# use terminology.ccdh.io to drive mapping strings to codable concepts\n", + "# paramterize the URL below\n", + "response = requests.get(\n", + " \"https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site\"\n", + ")\n", + "resp_struct = response.json()\n", + "BodyPart_frame = pd.DataFrame(resp_struct[\"concept_references\"])\n", + "\n", + "\n", + "def create_body_site(site_name):\n", + " \"\"\"Create a CCDH BodySite based on the name of a site in the human body.\"\"\"\n", + "\n", + " # Accept 'None'.\n", + " if site_name is None:\n", + " return None\n", + " #\n", + " # # Some body sites are not currently included in the CCDH model. We will need to translate these sites\n", + " # # into values that *are* included in the CCDH model.\n", + " # # site_mappings = {\n", + " # # 'Larynx, NOS': ccdh.EnumCCDHBodySiteSite.Larynx\n", + " # # }\n", + " # site_mappings = {\n", + " # 'Larynx, NOS': ccdh.CodeableConcept(coding=[ccdh.Coding(code=\"UBERON:0001737\", system=\"http://purl.obolibrary.org/obo/uberon.owl\", label=\"larynx\")])\n", + " # }\n", + " #\n", + " # # previously: Map values if needed. Otherwise, pass them through unmapped.\n", + " # # now: can't pass through text because the site has to be a codable concept.\n", + " # # should the mapping be done here in the application, via the CCDH terminology serivce?\n", + " # # mock up for now with some other lookup service?\n", + " # if site_name in site_mappings:\n", + " # return ccdh.BodySite(site=(site_mappings[site_name]))\n", + " # else:\n", + " # return None\n", + " #\n", + " # # return ccdh.BodySite(site=site_name)\n", + " \n", + " # blindly get closest match\n", + " closest_BodyPart_label = difflib.get_close_matches(\n", + " site_name, list(BodyPart_frame[\"designation\"])\n", + " )[0]\n", + " # send to logger or wrap as an optional debug mode\n", + " print(\"input site: \" + site_name)\n", + " print(\"closest match: \" + closest_BodyPart_label)\n", + " closest_BodyPart = BodyPart_frame.loc[\n", + " BodyPart_frame[\"designation\"] == closest_BodyPart_label\n", + " ]\n", + " closest_BodyPart = closest_BodyPart.to_dict(orient=\"records\")[0]\n", + " print(closest_BodyPart)\n", + " # this doesn't really say what the \"system\" should be\n", + " mapped = ccdh.BodySite(\n", + " site=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=closest_BodyPart[\"code\"],\n", + " system=\"https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site\",\n", + " label=closest_BodyPart[\"designation\"],\n", + " )\n", + " ]\n", + " )\n", + " )\n", + " return mapped\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "56ff4218", + "metadata": {}, + "outputs": [], + "source": [ + "# # Try to create a body site for a site name not currently included in the CCDH model.\n", + "# try:\n", + "# created = create_body_site('Laryn') # Note misspelling.\n", + "# except ValueError as v:\n", + "# print(f'Could not create BodySite: {v}')\n", + "# print(created)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9b6d02c5", + "metadata": {}, + "outputs": [], + "source": [ + "# # Using a valid name generates no errors.\n", + "# create_body_site('Larynx') \n", + "\n", + "# # Using a mapped name generates no errors, as it is mapped to a valid name.\n", + "# create_body_site('Larynx, NOS')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7db02802", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PermissibleValue(text='Larynx', description='Larynx', meaning=None, is_a=None, mixins=[], extensions={}, annotations={}, alt_descriptions={}, deprecated=None, todos=[], notes=[], comments=[], examples=[], in_subset=[], from_schema=None, imported_from=None, see_also=[], deprecated_element_has_exact_replacement=None, deprecated_element_has_possible_replacement=None)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# how is this still useful? why is it still in the model?\n", + "ccdh.EnumCRDCHBodySiteSite.Larynx" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b0b9747b", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Could not create BodySite: Unknown EnumCCDHBodySiteSite enumeration code: Laryn\n" + "input site: Laryn\n", + "closest match: Larynx\n", + "{'code': 'C12420', 'uri': 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C12420', 'designation': 'Larynx', 'definition': 'The cartilaginous structure of the respiratory tract between the pharynx and the trachea. It contains elastic vocal cords required for sound production.', 'reference': 'https://ncit.nci.nih.gov/ncitbrowser/pages/concept_details.jsf?dictionary=NCI%20Thesaurus&code=C12420'}\n" ] }, { "data": { "text/plain": [ - "BodySite(site=(text='Larynx', description='Larynx'), qualifier=[])" + "BodySite(site=CodeableConcept(coding=[Coding(code='C12420', system='https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site', label='Larynx', system_version=None, value_set=None, value_set_version=None, tag=[])], text=None), qualifier=[])" ] }, - "execution_count": 5, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def create_body_site(site_name):\n", - " \"\"\" Create a CCDH BodySite based on the name of a site in the human body.\"\"\"\n", - " \n", - " # Accept 'None'.\n", - " if site_name is None:\n", - " return None\n", - " \n", - " # Some body sites are not currently included in the CCDH model. We will need to translate these sites\n", - " # into values that *are* included in the CCDH model.\n", - " site_mappings = {\n", - " 'Larynx, NOS': ccdh.EnumCCDHBodySiteSite.Larynx\n", - " }\n", - " \n", - " # Map values if needed. Otherwise, pass them through unmapped.\n", - " if site_name in site_mappings:\n", - " return ccdh.BodySite(site=(site_mappings[site_name]))\n", - " \n", - " return ccdh.BodySite(site=site_name)\n", - "\n", - "# Try to create a body site for a site name not currently included in the CCDH model.\n", - "try:\n", - " create_body_site('Laryn') # Note misspelling.\n", - "except ValueError as v:\n", - " print(f'Could not create BodySite: {v}')\n", - "\n", - "# Using a valid name generates no errors.\n", - "create_body_site('Larynx') \n", - "\n", - "# Using a mapped name generates no errors, as it is mapped to a valid name.\n", - "create_body_site('Larynx, NOS')" + "create_body_site(\"Laryn\")" + ] + }, + { + "cell_type": "markdown", + "id": "83a7dfe9", + "metadata": {}, + "source": [ + "---" ] }, { @@ -745,23 +879,286 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "2d661175", - "metadata": { - "scrolled": true - }, + "execution_count": 36, + "id": "c7c33259", + "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "CancerStageObservationSet(id=None, category=None, focus=[], subject=None, method_type=[(text='AJCC staging system 7th edition', description='The 7th edition of the criteria developed by the American Joint Committee on Cancer (AJCC) in 2010, used for the classification and staging of neoplastic diseases.')], performed_by=None, observations=[CancerStageObservation(observation_type=(text='Overall', description='The overall stage of the disease'), valueCodeableConcept=(text='Stage IVC', description='Stage IVC'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Clinical Overall', description='The overall stage of the disease; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)'), valueCodeableConcept=(text='Stage IVC', description='Stage IVC'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Clinical Tumor (T)', description='T classifies the size or direct extent of the primary tumor; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)'), valueCodeableConcept=(text='T3', description='T3 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Clinical Node (N)', description='N classifies the degree of spread to regional lymph nodes; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)'), valueCodeableConcept=(text='N1', description='N1 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Clinical Metastasis (M)', description='M classifies the presence of distant metastasis; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)'), valueCodeableConcept=(text='M1', description='M1 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Pathological Overall', description='The overall stage of the disease; stage given by histopathologic examination of a surgical specimen'), valueCodeableConcept=(text='Stage IVC', description='Stage IVC'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Pathological Tumor (T)', description='T classifies the size or direct extent of the primary tumor; stage given by histopathologic examination of a surgical specimen'), valueCodeableConcept=(text='T3', description='T3 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Pathological Node (N)', description='N classifies the degree of spread to regional lymph nodes; stage given by histopathologic examination of a surgical specimen'), valueCodeableConcept=(text='N1', description='N1 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None), CancerStageObservation(observation_type=(text='Pathological Metastasis (M)', description='M classifies the presence of distant metastasis; stage given by histopathologic examination of a surgical specimen'), valueCodeableConcept=(text='M1', description='M1 Stage Finding'), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, valueEntity=None)])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "- observation_type:\n", + " coding:\n", + " - code: age_at_diagnosis\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: '22107'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_clinical_m\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: M1\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_clinical_n\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: N1\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_clinical_stage\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: Stage IVC\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_clinical_t\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: T3\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_pathologic_m\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: M1\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_pathologic_n\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: N1\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_pathologic_stage\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: Stage IVC\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_pathologic_t\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: T3\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: ajcc_staging_system_edition\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 7th\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: classification_of_tumor\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: not reported\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: days_to_diagnosis\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: '0'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: diagnosis_id\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 9e30aa6c-91e6-5dd3-9512-75c162a89913\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: icd_10_code\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: C32.9\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: last_known_disease_status\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: not reported\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: morphology\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 8070/3\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: primary_diagnosis\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: Squamous cell carcinoma, NOS\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: prior_malignancy\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 'no'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: prior_treatment\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 'No'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: progression_or_recurrence\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: not reported\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: site_of_resection_or_biopsy\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: Larynx, NOS\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: state\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: released\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: submitter_id\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: TCGA-QK-A8Z8_diagnosis\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: synchronous_malignancy\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: 'No'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: tissue_or_organ_of_origin\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: Larynx, NOS\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: tumor_grade\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: not reported\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: tumor_stage\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: stage ivc\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: updated_datetime\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: '2019-08-08T16:48:06.888156-05:00'\n", + " system: Y\n", + "- observation_type:\n", + " coding:\n", + " - code: year_of_diagnosis\n", + " system: Y\n", + " value_codeable_concept:\n", + " coding:\n", + " - code: '2013'\n", + " system: Y\n", + "\n" + ] } ], + "source": [ + "from linkml_runtime.dumpers import yaml_dumper\n", + "\n", + "example_observation_set = []\n", + "\n", + "\n", + "def diag_cc_mapper(diag_info_type, diag_info_val):\n", + " # print(diag_info_type + \": \" + str(diag_info_val))\n", + " if diag_info_val is not None:\n", + " current_observation = ccdh.CancerStageObservation(\n", + " observation_type=ccdh.CodeableConcept(\n", + " coding=[ccdh.Coding(code=diag_info_type, system=\"Y\")]\n", + " ),\n", + " value_codeable_concept=ccdh.CodeableConcept(\n", + " coding=[ccdh.Coding(code=diag_info_val, system=\"Y\")]\n", + " ),\n", + " )\n", + " # print(current_observation)\n", + " example_observation_set.append(current_observation)\n", + "\n", + "\n", + "diagnosis_dict = gdc_head_and_mouth[131][\"diagnoses\"][0]\n", + "for k, v in diagnosis_dict.items():\n", + " diag_cc_mapper(k, v)\n", + "\n", + "print(yaml_dumper.dumps(example_observation_set))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d661175", + "metadata": { + "scrolled": true + }, + "outputs": [], "source": [ "def create_stage_observation(type, value):\n", " \"\"\" Create a CCDHCancerStageObservation from a type of observation and a codeable concept.\"\"\"\n", @@ -846,91 +1243,24 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "14d23f3f", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "observations:\n", - "- observation_type:\n", - " text: Overall\n", - " description: The overall stage of the disease\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - "- observation_type:\n", - " text: Clinical Overall\n", - " description: The overall stage of the disease; clinical stage is determined from\n", - " evidence acquired before treatment (including clinical examination, imaging,\n", - " endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - "- observation_type:\n", - " text: Clinical Tumor (T)\n", - " description: T classifies the size or direct extent of the primary tumor; clinical\n", - " stage is determined from evidence acquired before treatment (including clinical\n", - " examination, imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: T3\n", - " description: T3 Stage Finding\n", - "- observation_type:\n", - " text: Clinical Node (N)\n", - " description: N classifies the degree of spread to regional lymph nodes; clinical\n", - " stage is determined from evidence acquired before treatment (including clinical\n", - " examination, imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: N1\n", - " description: N1 Stage Finding\n", - "- observation_type:\n", - " text: Clinical Metastasis (M)\n", - " description: M classifies the presence of distant metastasis; clinical stage is\n", - " determined from evidence acquired before treatment (including clinical examination,\n", - " imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: M1\n", - " description: M1 Stage Finding\n", - "- observation_type:\n", - " text: Pathological Overall\n", - " description: The overall stage of the disease; stage given by histopathologic\n", - " examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - "- observation_type:\n", - " text: Pathological Tumor (T)\n", - " description: T classifies the size or direct extent of the primary tumor; stage\n", - " given by histopathologic examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: T3\n", - " description: T3 Stage Finding\n", - "- observation_type:\n", - " text: Pathological Node (N)\n", - " description: N classifies the degree of spread to regional lymph nodes; stage\n", - " given by histopathologic examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: N1\n", - " description: N1 Stage Finding\n", - "- observation_type:\n", - " text: Pathological Metastasis (M)\n", - " description: M classifies the presence of distant metastasis; stage given by histopathologic\n", - " examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: M1\n", - " description: M1 Stage Finding\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "from linkml_runtime.dumpers import yaml_dumper\n", "\n", "print(yaml_dumper.dumps(example_observation_set))" ] }, + { + "cell_type": "markdown", + "id": "adfafac7", + "metadata": {}, + "source": [ + "## Trying to replicate up to this ^ point today" + ] + }, { "cell_type": "markdown", "id": "7d65dc11", @@ -941,21 +1271,10 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "d5e41d21", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Specimen(id='69a89590-eb61-41d5-b33e-e7bc5adb92bf', identifier=[], description=None, specimen_type=None, analyte_type=None, associated_project=None, data_provider=None, source_material_type='Solid Tissue Normal', parent_specimen=[], source_subject=None, tumor_status_at_collection=None, creation_activity=SpecimenCreationActivity(activity_type=None, date_started=None, date_ended=TimePoint(id=None, dateTime=None, indexTimePoint=None, offsetFromIndex=None, eventType=[]), performed_by=None, collection_method_type=None, derivation_method_type=None, additive=[], collection_site=None, quantity_collected=None, execution_time_observation=[], execution_condition_observation=[], specimen_order=None), processing_activity=[], storage_activity=[], transport_activity=[], contained_in=None, dimensional_measures=None, quantity_measure=[], quality_measure=[], cellular_composition_type=None, histological_composition_measures=[], general_tissue_morphology='Not Reported', specific_tissue_morphology=None, preinvasive_tissue_morphology=None, morphology_pathologically_confirmed=None, morphology_assessor_role=None, morphlogy_assessment_method=None, degree_of_dysplasia=None, dysplasia_fraction=None, related_document=[], section_location=None, derived_product=[], distance_from_paired_specimen=None)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def transform_sample_to_specimen(sample):\n", " \"\"\"\n", @@ -988,112 +1307,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "bf62937c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "id: 9e30aa6c-91e6-5dd3-9512-75c162a89913\n", - "identifier:\n", - "- value: TCGA-QK-A8Z8_diagnosis\n", - " system: GDC-submitter-id\n", - "year_at_diagnosis: 2013\n", - "condition:\n", - " text: Squamous cell carcinoma, NOS\n", - "metastatic_site:\n", - "- site:\n", - " text: Larynx\n", - " description: Larynx\n", - "stage:\n", - "- observations:\n", - " - observation_type:\n", - " text: Overall\n", - " description: The overall stage of the disease\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - " - observation_type:\n", - " text: Clinical Overall\n", - " description: The overall stage of the disease; clinical stage is determined\n", - " from evidence acquired before treatment (including clinical examination, imaging,\n", - " endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - " - observation_type:\n", - " text: Clinical Tumor (T)\n", - " description: T classifies the size or direct extent of the primary tumor; clinical\n", - " stage is determined from evidence acquired before treatment (including clinical\n", - " examination, imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: T3\n", - " description: T3 Stage Finding\n", - " - observation_type:\n", - " text: Clinical Node (N)\n", - " description: N classifies the degree of spread to regional lymph nodes; clinical\n", - " stage is determined from evidence acquired before treatment (including clinical\n", - " examination, imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: N1\n", - " description: N1 Stage Finding\n", - " - observation_type:\n", - " text: Clinical Metastasis (M)\n", - " description: M classifies the presence of distant metastasis; clinical stage\n", - " is determined from evidence acquired before treatment (including clinical\n", - " examination, imaging, endoscopy, biopsy, surgical exploration)\n", - " valueCodeableConcept:\n", - " text: M1\n", - " description: M1 Stage Finding\n", - " - observation_type:\n", - " text: Pathological Overall\n", - " description: The overall stage of the disease; stage given by histopathologic\n", - " examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: Stage IVC\n", - " description: Stage IVC\n", - " - observation_type:\n", - " text: Pathological Tumor (T)\n", - " description: T classifies the size or direct extent of the primary tumor; stage\n", - " given by histopathologic examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: T3\n", - " description: T3 Stage Finding\n", - " - observation_type:\n", - " text: Pathological Node (N)\n", - " description: N classifies the degree of spread to regional lymph nodes; stage\n", - " given by histopathologic examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: N1\n", - " description: N1 Stage Finding\n", - " - observation_type:\n", - " text: Pathological Metastasis (M)\n", - " description: M classifies the presence of distant metastasis; stage given by\n", - " histopathologic examination of a surgical specimen\n", - " valueCodeableConcept:\n", - " text: M1\n", - " description: M1 Stage Finding\n", - "morphology:\n", - " text: 8070/3\n", - "related_specimen:\n", - "- id: a118da56-784d-4b67-aade-d9a7a8b49f18\n", - " source_material_type: Primary Tumor\n", - " general_tissue_morphology: Not Reported\n", - "- id: cff6967e-e8f7-4a25-aa31-9328e4b42816\n", - " source_material_type: Primary Tumor\n", - " creation_activity:\n", - " date_ended:\n", - " dateTime: '2018-05-17T12:19:46.292188-05:00'\n", - " general_tissue_morphology: Not Reported\n", - "- id: 1efb2d28-ac51-4d70-a24d-667a2b53467a\n", - " source_material_type: Blood Derived Normal\n", - " general_tissue_morphology: Not Reported\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "def transform_diagnosis(diagnosis, case):\n", " ccdh_diagnosis = ccdh.Diagnosis(\n", @@ -1139,816 +1356,12 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "c9d31519", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\n", - " \"id\": \"9e30aa6c-91e6-5dd3-9512-75c162a89913\",\n", - " \"identifier\": [\n", - " {\n", - " \"value\": \"TCGA-QK-A8Z8_diagnosis\",\n", - " \"system\": \"GDC-submitter-id\"\n", - " }\n", - " ],\n", - " \"year_at_diagnosis\": 2013,\n", - " \"condition\": {\n", - " \"text\": \"Squamous cell carcinoma, NOS\"\n", - " },\n", - " \"metastatic_site\": [\n", - " {\n", - " \"site\": {\n", - " \"text\": \"Larynx\",\n", - " \"description\": \"Larynx\"\n", - " }\n", - " }\n", - " ],\n", - " \"stage\": [\n", - " {\n", - " \"observations\": [\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Overall\",\n", - " \"description\": \"The overall stage of the disease\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"Stage IVC\",\n", - " \"description\": \"Stage IVC\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Clinical Overall\",\n", - " \"description\": \"The overall stage of the disease; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"Stage IVC\",\n", - " \"description\": \"Stage IVC\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Clinical Tumor (T)\",\n", - " \"description\": \"T classifies the size or direct extent of the primary tumor; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"T3\",\n", - " \"description\": \"T3 Stage Finding\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Clinical Node (N)\",\n", - " \"description\": \"N classifies the degree of spread to regional lymph nodes; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"N1\",\n", - " \"description\": \"N1 Stage Finding\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Clinical Metastasis (M)\",\n", - " \"description\": \"M classifies the presence of distant metastasis; clinical stage is determined from evidence acquired before treatment (including clinical examination, imaging, endoscopy, biopsy, surgical exploration)\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"M1\",\n", - " \"description\": \"M1 Stage Finding\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Pathological Overall\",\n", - " \"description\": \"The overall stage of the disease; stage given by histopathologic examination of a surgical specimen\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"Stage IVC\",\n", - " \"description\": \"Stage IVC\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Pathological Tumor (T)\",\n", - " \"description\": \"T classifies the size or direct extent of the primary tumor; stage given by histopathologic examination of a surgical specimen\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"T3\",\n", - " \"description\": \"T3 Stage Finding\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Pathological Node (N)\",\n", - " \"description\": \"N classifies the degree of spread to regional lymph nodes; stage given by histopathologic examination of a surgical specimen\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"N1\",\n", - " \"description\": \"N1 Stage Finding\"\n", - " }\n", - " },\n", - " {\n", - " \"observation_type\": {\n", - " \"text\": \"Pathological Metastasis (M)\",\n", - " \"description\": \"M classifies the presence of distant metastasis; stage given by histopathologic examination of a surgical specimen\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"text\": \"M1\",\n", - " \"description\": \"M1 Stage Finding\"\n", - " }\n", - " }\n", - " ]\n", - " }\n", - " ],\n", - " \"morphology\": {\n", - " \"text\": \"8070/3\"\n", - " },\n", - " \"related_specimen\": [\n", - " {\n", - " \"id\": \"a118da56-784d-4b67-aade-d9a7a8b49f18\",\n", - " \"source_material_type\": \"Primary Tumor\",\n", - " \"general_tissue_morphology\": \"Not Reported\"\n", - " },\n", - " {\n", - " \"id\": \"cff6967e-e8f7-4a25-aa31-9328e4b42816\",\n", - " \"source_material_type\": \"Primary Tumor\",\n", - " \"creation_activity\": {\n", - " \"date_ended\": {\n", - " \"dateTime\": \"2018-05-17T12:19:46.292188-05:00\"\n", - " }\n", - " },\n", - " \"general_tissue_morphology\": \"Not Reported\"\n", - " },\n", - " {\n", - " \"id\": \"1efb2d28-ac51-4d70-a24d-667a2b53467a\",\n", - " \"source_material_type\": \"Blood Derived Normal\",\n", - " \"general_tissue_morphology\": \"Not Reported\"\n", - " }\n", - " ],\n", - " \"@type\": \"Diagnosis\",\n", - " \"@context\": {\n", - " \"GDC\": \"http://example.org/gdc/\",\n", - " \"HTAN\": \"http://example.org/htan/\",\n", - " \"ICDC\": \"http://example.org/icdc/\",\n", - " \"NCIT\": {\n", - " \"@id\": \"http://purl.obolibrary.org/obo/NCIT_\",\n", - " \"@prefix\": true\n", - " },\n", - " \"PDC\": \"http://example.org/pdc/\",\n", - " \"ccdh\": \"https://example.org/ccdh/\",\n", - " \"linkml\": \"https://w3id.org/linkml/\",\n", - " \"skos\": \"http://www.w3.org/2004/02/skos/core#\",\n", - " \"@vocab\": \"https://example.org/ccdh/\",\n", - " \"category\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"focus\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"method_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"observation_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"performed_by\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"subject\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"valueCodeableConcept\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"valueInteger\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"identifier\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"passage_number\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"product_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"qualifier\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"site\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"observations\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"valueEntity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"coding\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"age_at_diagnosis\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"condition\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"disease_status\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"grade\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"metastatic_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"method_of_diagnosis\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"morphology\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"primary_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"primary_tumor_dimensional_measures\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"prior_diagnosis\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"related_specimen\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"stage\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"supporting_observation\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"year_at_diagnosis\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"valueQuantity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"document_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"alcohol_exposure\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"environmental_exposure\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"tobacco_exposure\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"valueBoolean\": {\n", - " \"@type\": \"xsd:boolean\"\n", - " },\n", - " \"valueDateTime\": {\n", - " \"@type\": \"xsd:dateTime\"\n", - " },\n", - " \"valueDecimal\": {\n", - " \"@type\": \"xsd:decimal\"\n", - " },\n", - " \"unit\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"associated_timepoint\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"date_ended\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"date_started\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"part_of\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"primary_anatomic_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"research_project_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"age_at_enrollment\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"associated_subject\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"comorbid_diagnosis\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"index_timepoint\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"member_of_research_project\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"originating_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"primary_diagnosis\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"primary_diagnosis_condition\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"primary_diagnosis_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"analyte_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"associated_project\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"cellular_composition_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"contained_in\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"creation_activity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"data_provider\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"degree_of_dysplasia\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"derived_product\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"dimensional_measures\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"distance_from_paired_specimen\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"general_tissue_morphology\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"histological_composition_measures\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"morphlogy_assessment_method\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"morphology_assessor_role\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"morphology_pathologically_confirmed\": {\n", - " \"@type\": \"xsd:boolean\"\n", - " },\n", - " \"parent_specimen\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"preinvasive_tissue_morphology\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"processing_activity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"quality_measure\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"quantity_measure\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"related_document\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"section_location\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"source_material_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"source_subject\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"specific_tissue_morphology\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"specimen_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"storage_activity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"transport_activity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"tumor_status_at_collection\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"additive\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"container_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"parent_container\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"activity_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"collection_method_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"collection_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"derivation_method_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"execution_condition_observation\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"execution_time_observation\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"quantity_collected\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"specimen_order\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"duration\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"container\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"transport_destination\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"transport_origin\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"age_at_death\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"breed\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"cause_of_death\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"ethnicity\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"race\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"sex\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"species\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"vital_status\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"year_of_birth\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"year_of_death\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"role\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"substance_quantity\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"substance_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"periodEnd_end\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"periodStart_start\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"dateTime\": {\n", - " \"@type\": \"xsd:dateTime\"\n", - " },\n", - " \"eventType\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"indexTimePoint\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"offsetFromIndex\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"concurrent_treatment\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"number_of_cycles\": {\n", - " \"@type\": \"xsd:integer\"\n", - " },\n", - " \"regimen\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"therapeutic_agent\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"treatment_anatomic_site\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"treatment_effect\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"treatment_end_reason\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"treatment_for_diagnosis\": {\n", - " \"@type\": \"@id\"\n", - " },\n", - " \"treatment_frequency\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"treatment_intent\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"treatment_outcome\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " },\n", - " \"treatment_type\": {\n", - " \"@context\": {\n", - " \"@vocab\": \"@null\",\n", - " \"text\": \"skos:notation\",\n", - " \"description\": \"skos:prefLabel\",\n", - " \"meaning\": \"@id\"\n", - " }\n", - " }\n", - " }\n", - "}\n" - ] - } - ], + "outputs": [], "source": [ "from linkml.generators.jsonldcontextgen import ContextGenerator\n", "from linkml_runtime.dumpers import json_dumper\n", @@ -1970,7 +1383,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "1aa40681", "metadata": {}, "outputs": [], @@ -2002,34 +1415,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "3300fabd", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "@prefix : .\n", - "@prefix ccdh: .\n", - "\n", - "[] ccdh:condition [ ccdh:text \"Squamous cell carcinoma, NOS\" ] ;\n", - " ccdh:id \"4dbbefaa-8e8e-4a44-943b-48687f123673\" ;\n", - " ccdh:identifier [ ccdh:system \"GDC-submitter-id\" ;\n", - " ccdh:value \"GENIE-MSK-P-0010088-T01-IM5_diagnosis\" ] ;\n", - " ccdh:metastatic_site [ ccdh:site [ ccdh:description \"Oropharynx\" ;\n", - " ccdh:text \"Oropharynx\" ] ] ;\n", - " ccdh:morphology [ ccdh:text \"8070/3\" ] ;\n", - " ccdh:related_specimen [ ccdh:creation_activity [ ccdh:date_ended [ ccdh:dateTime \"2018-10-03T04:13:38.880466-05:00\"^^ ] ] ;\n", - " ccdh:general_tissue_morphology \"Not Reported\" ;\n", - " ccdh:id \"b5da1115-1fe3-49a4-892b-ef43e64dbee4\" ;\n", - " ccdh:source_material_type \"Metastatic\" ] ;\n", - " ccdh:stage [ ccdh:observations [ ccdh:observation_type [ ccdh:description \"The overall stage of the disease\" ;\n", - " ccdh:text \"Overall\" ] ;\n", - " ccdh:\n" - ] - } - ], + "outputs": [], "source": [ "# We can read this JSON-LD in Turtle.\n", "from rdflib import Graph\n", @@ -2041,6 +1430,107 @@ "with open('head-and-mouth/diagnoses.ttl', 'w') as file:\n", " file.write(rdfAsTurtle)" ] + }, + { + "cell_type": "markdown", + "id": "372dbf27", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7a21993", + "metadata": {}, + "outputs": [], + "source": [ + "# maybe not that helpful\n", + "# ccdh.BodySite.__dict__\n", + "# see also https://cancerdhc.github.io/ccdhmodel/v1.1/BodySite/\n", + "# takes a CodeableConcept in the mandatory site and optional qualifier 0 slots\n", + "# CodeableConcept takes the following slots\n", + "# \n", + "# coding 0..*\n", + "# Description: A reference to a code defined by a terminology system\n", + "# Range: Coding\n", + "# text 0..1\n", + "# Description: A human language representation of the concept represented by the Coding.\n", + "# Range: CrdchString\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "add2ee49", + "metadata": {}, + "outputs": [], + "source": [ + "uberon_larynx_coding = ccdh.Coding(code=\"UBERON:0001737\", system=\"http://purl.obolibrary.org/obo/uberon.owl\")\n", + "uberon_larynx_coding" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1711256", + "metadata": {}, + "outputs": [], + "source": [ + "uberon_larynx__cc = ccdh.CodeableConcept(coding=[test_coding])\n", + "uberon_larynx__cc" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e8898458", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "uberon_larynx_bs = ccdh.BodySite(site=test_cc)\n", + "uberon_larynx_bs" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4bf85ea1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "CodeableConcept(coding=[Coding(code='UBERON:0001737', system='http://purl.obolibrary.org/obo/uberon.owl', label='larynx', system_version=None, value_set=None, value_set_version=None, tag=[])], text=None)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=\"UBERON:0001737\",\n", + " system=\"http://purl.obolibrary.org/obo/uberon.owl\",\n", + " label=\"larynx\",\n", + " )\n", + " ]\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a5f085c6", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -2059,7 +1549,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/Pipfile b/Pipfile index a32e02f..16c6c16 100644 --- a/Pipfile +++ b/Pipfile @@ -13,4 +13,7 @@ pip = "*" crdch-model = "*" pandas = "*" +# conflicts? +# black = "*" + [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 7a24b85..19f4a4a 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -87,60 +87,65 @@ }, "certifi": { "hashes": [ - "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", - "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" + "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", + "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" ], - "version": "==2021.5.30" + "version": "==2021.10.8" }, "cffi": { "hashes": [ - "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d", - "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771", - "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872", - "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c", - "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc", - "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762", - "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202", - "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5", - "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548", - "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a", - "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f", - "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20", - "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218", - "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c", - "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e", - "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56", - "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224", - "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a", - "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2", - "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a", - "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819", - "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346", - "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b", - "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e", - "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534", - "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb", - "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0", - "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156", - "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd", - "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87", - "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc", - "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195", - "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33", - "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f", - "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d", - "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd", - "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728", - "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7", - "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca", - "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99", - "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf", - "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e", - "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c", - "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5", - "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69" - ], - "version": "==1.14.6" + "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3", + "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2", + "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636", + "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20", + "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728", + "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27", + "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66", + "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443", + "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0", + "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7", + "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39", + "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605", + "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a", + "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37", + "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029", + "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139", + "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc", + "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df", + "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14", + "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880", + "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2", + "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a", + "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e", + "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474", + "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024", + "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8", + "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0", + "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e", + "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a", + "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e", + "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032", + "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6", + "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e", + "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b", + "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e", + "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954", + "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962", + "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c", + "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4", + "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55", + "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962", + "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023", + "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c", + "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6", + "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8", + "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382", + "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7", + "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc", + "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997", + "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796" + ], + "version": "==1.15.0" }, "cfgraph": { "hashes": [ @@ -150,11 +155,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6", - "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f" + "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0", + "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b" ], "markers": "python_version >= '3'", - "version": "==2.0.6" + "version": "==2.0.7" }, "click": { "hashes": [ @@ -165,37 +170,37 @@ }, "crdch-model": { "hashes": [ - "sha256:0d432d832aa64f3c9f8250b2b4d3559c1299f74af24de3d827afa5cfa9f484ef", - "sha256:287a5e6f9cdb3eceee3aeaf9eece170c6e3e692ec85b888660eaf3f17b5cac3b" + "sha256:47ba08d7158e852f50a474aacc0b8d8ff73ff3a73022336c15bc27744c0b032c", + "sha256:b101fa148f33678a0fa49de39c1d3496e4e6ec30c90b38379392e09ef6188b74" ], "index": "pypi", - "version": "==1.1.3" + "version": "==1.1.5" }, "debugpy": { "hashes": [ - "sha256:098753d30232d1e4264eee37e1ddd5d106dc5c4bc6d8d7f4dadad9e44736cd48", - "sha256:1283e418f595262d11abc5fae6a3ac629c5fc3b44d3988511ea755414aab3062", - "sha256:33e8a9b4949be8b4f5fcfff07e24bd63c565060659f1c79773c08d19eee012f2", - "sha256:72093ea83226d5264b3697b948c07a3cfcc4953da14a78a50c4e623a2bb99ad8", - "sha256:77b5233b23a248cd930bf03ecd684da065c6e7d2a57d137516b6fa1698a58317", - "sha256:82c4fa1293981a28c435d196a3714e06df761daff0da3336234475ceff1b042c", - "sha256:86febd61fc351cee926060eef008e242b7259957d71d25eef82860d0cc59b4dc", - "sha256:8e7391a08a351adce6e5154ed35e4cf90c5f3c10dbf7c8f6a234faef300588d6", - "sha256:990228f15de4ccbc52c2accf41a63b3b8d0a01e3de9876e02e77e487c4b1ffab", - "sha256:9f3bed64027bd80a8fe1f35491ec0ec2d2c85f1e63dac7c0311e400bfe58cf05", - "sha256:a03051ba4fdf6720ee83a42e9f803e3a0b69a48b00436b97d16aeda49d28a8bf", - "sha256:be7ca2baef5a634dfbd086d9c1d6b5e0783c6d0f6d0a004b43d36f625d4fc0a9", - "sha256:c3184666cfe1768bf110f8075bafea59d2afce3cc54f4c501f2371c7238bc69d", - "sha256:cdaf6baaf8176644e752aed321b3f810dcf8b0439709f7edd9ae542f849a639b", - "sha256:ce0794d50391c87813bb148548c34dc638fb4d58198d275334968f63c088aa69", - "sha256:dacdb0a3377063d638bd8736c80b7274ae341ce778fec0f883ef1cbb79538bf2", - "sha256:dd0e8d5e099444c22b27511dafd48e8bdcd7051b811ddd0ab2062965fe36ac80", - "sha256:de56775b3dbbfc02bc9fb0682da4a960e0a5bada699eac5e22e0723c4107ec9f", - "sha256:ef71eb8eb276370f8e74ab3f8c7648bbdc9aabac814a5b2840c8dd38a7bc7251", - "sha256:f058c204341fd7ff800ee0edafc106ca0fb1c9857e8a8895a6e04cca3ddcb7bf", - "sha256:fda623aa1036b34d554a1225a09cae6bf02b06c0ad903a9f0b8ac3cb74eddc15" + "sha256:01e98c594b3e66d529e40edf314f849cd1a21f7a013298df58cd8e263bf8e184", + "sha256:16db27b4b91991442f91d73604d32080b30de655aca9ba821b1972ea8171021b", + "sha256:17a25ce9d7714f92fc97ef00cc06269d7c2b163094990ada30156ed31d9a5030", + "sha256:194f95dd3e84568b5489aab5689a3a2c044e8fdc06f1890b8b4f70b6b89f2778", + "sha256:1ec3a086e14bba6c472632025b8fe5bdfbaef2afa1ebd5c6615ce6ed8d89bc67", + "sha256:23df67fc56d59e386c342428a7953c2c06cc226d8525b11319153e96afb65b0c", + "sha256:26fbe53cca45a608679094791ce587b6e2798acd1d4777a8b303b07622e85182", + "sha256:2b073ad5e8d8c488fbb6a116986858bab0c9c4558f28deb8832c7a5a27405bd6", + "sha256:318f81f37341e4e054b4267d39896b73cddb3612ca13b39d7eea45af65165e1d", + "sha256:3a457ad9c0059a21a6c7d563c1f18e924f5cf90278c722bd50ede6f56b77c7fe", + "sha256:4404a62fb5332ea5c8c9132290eef50b3a0ba38cecacad5529e969a783bcbdd7", + "sha256:5d76a4fd028d8009c3faf1185b4b78ceb2273dd2499447664b03939e0368bb90", + "sha256:70b422c63a833630c33e3f9cdbd9b6971f8c5afd452697e464339a21bbe862ba", + "sha256:82f5f9ce93af6861a0713f804e62ab390bb12a17f113153e47fea8bbb1dfbe36", + "sha256:a2aa64f6d2ca7ded8a7e8a4e7cae3bc71866b09876b7b05cecad231779cb9156", + "sha256:b2df2c373e85871086bd55271c929670cd4e1dba63e94a08d442db830646203b", + "sha256:b5b3157372e0e0a1297a8b6b5280bcf1d35a40f436c7973771c972726d1e32d5", + "sha256:d2b09e91fbd1efa4f4fda121d49af89501beda50c18ed7499712c71a4bf3452e", + "sha256:d876db8c312eeb02d85611e0f696abe66a2c1515e6405943609e725d5ff36f2a", + "sha256:f3a3dca9104aa14fd4210edcce6d9ce2b65bd9618c0b222135a40b9d6e2a9eeb", + "sha256:f73988422b17f071ad3c4383551ace1ba5ed810cbab5f9c362783d22d40a08dc" ], - "version": "==1.5.0" + "version": "==1.5.1" }, "decorator": { "hashes": [ @@ -318,11 +323,11 @@ }, "idna": { "hashes": [ - "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a", - "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3" + "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", + "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" ], "markers": "python_version >= '3'", - "version": "==3.2" + "version": "==3.3" }, "imagesize": { "hashes": [ @@ -340,16 +345,17 @@ }, "ipykernel": { "hashes": [ - "sha256:a3f6c2dda2ecf63b37446808a70ed825fea04790779ca524889c596deae0def8", - "sha256:df3355e5eec23126bc89767a676c5f0abfc7f4c3497d118c592b83b316e8c0cd" + "sha256:0140f78bfd60e47e387b6433b4bed0f228986420dc4d5fac0e251c9711e23e29", + "sha256:5657a0ab3d9a9eba3eb78b261771d22158388f182e85668c536c1a9932b80e03" ], - "version": "==6.4.1" + "version": "==6.4.2" }, "ipython": { "hashes": [ "sha256:2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11", "sha256:f16148f9163e1e526f1008d7c8d966d9c15600ca20d1a754287cf96d00ba6f1d" ], + "markers": "python_version >= '3.3'", "version": "==7.28.0" }, "ipython-genutils": { @@ -432,11 +438,11 @@ }, "jsonschema": { "hashes": [ - "sha256:48f4e74f8bec0c2f75e9fcfffa264e78342873e1b57e2cfeae54864cc5e9e4dd", - "sha256:9938802041347f2c62cad2aef59e9a0826cd34584f3609db950efacb4dbf6518" + "sha256:166870c8ab27bd712a8627e0598de4685bd8d199c4d7bd7cacc3d941ba0c6ca0", + "sha256:5c1a282ee6b74235057421fd0f766ac5f2972f77440927f6471c9e8493632fac" ], "index": "pypi", - "version": "==4.0.1" + "version": "==4.1.2" }, "jupyter": { "hashes": [ @@ -485,11 +491,11 @@ }, "linkml": { "hashes": [ - "sha256:2b00e45bae6da5eecb9fc0060544ab5885cfbda2c75e3cb66ce05f70f19122bb", - "sha256:999a4b64cd6cc983a75f23ad12b09c8e3e0bcafafdb4f44b22bbf1ecda9a1d0f" + "sha256:3693ea4dba981157a79792a472fc17d85083d6c196344ee32afdb2426c331a40", + "sha256:cb184f5b4c8a7b21febcaf9d96ed353f93c1d5f77af99894ba9dd2007aaea0f0" ], "index": "pypi", - "version": "==1.1.8" + "version": "==1.1.10" }, "linkml-runtime": { "hashes": [ @@ -682,45 +688,49 @@ }, "notebook": { "hashes": [ - "sha256:26b0095c568e307a310fd78818ad8ebade4f00462dada4c0e34cbad632b9085d", - "sha256:33488bdcc5cbef23c3cfa12cd51b0b5459a211945b5053d17405980611818149" + "sha256:872e20da9ae518bbcac3e4e0092d5bd35454e847dedb8cb9739e9f3b68406be0", + "sha256:f7b4362698fed34f44038de0517b2e5136c1e7c379797198c1736121d3d597bd" ], - "version": "==6.4.4" + "version": "==6.4.5" }, "numpy": { "hashes": [ - "sha256:09858463db6dd9f78b2a1a05c93f3b33d4f65975771e90d2cf7aadb7c2f66edf", - "sha256:209666ce9d4a817e8a4597cd475b71b4878a85fa4b8db41d79fdb4fdee01dde2", - "sha256:298156f4d3d46815eaf0fcf0a03f9625fc7631692bd1ad851517ab93c3168fc6", - "sha256:30fc68307c0155d2a75ad19844224be0f2c6f06572d958db4e2053f816b859ad", - "sha256:423216d8afc5923b15df86037c6053bf030d15cc9e3224206ef868c2d63dd6dc", - "sha256:426a00b68b0d21f2deb2ace3c6d677e611ad5a612d2c76494e24a562a930c254", - "sha256:466e682264b14982012887e90346d33435c984b7fead7b85e634903795c8fdb0", - "sha256:51a7b9db0a2941434cd930dacaafe0fc9da8f3d6157f9d12f761bbde93f46218", - "sha256:52a664323273c08f3b473548bf87c8145b7513afd63e4ebba8496ecd3853df13", - "sha256:550564024dc5ceee9421a86fc0fb378aa9d222d4d0f858f6669eff7410c89bef", - "sha256:5de64950137f3a50b76ce93556db392e8f1f954c2d8207f78a92d1f79aa9f737", - "sha256:640c1ccfd56724f2955c237b6ccce2e5b8607c3bc1cc51d3933b8c48d1da3723", - "sha256:7fdc7689daf3b845934d67cb221ba8d250fdca20ac0334fea32f7091b93f00d3", - "sha256:805459ad8baaf815883d0d6f86e45b3b0b67d823a8f3fa39b1ed9c45eaf5edf1", - "sha256:92a0ab128b07799dd5b9077a9af075a63467d03ebac6f8a93e6440abfea4120d", - "sha256:9f2dc79c093f6c5113718d3d90c283f11463d77daa4e83aeeac088ec6a0bda52", - "sha256:a5109345f5ce7ddb3840f5970de71c34a0ff7fceb133c9441283bb8250f532a3", - "sha256:a55e4d81c4260386f71d22294795c87609164e22b28ba0d435850fbdf82fc0c5", - "sha256:a9da45b748caad72ea4a4ed57e9cd382089f33c5ec330a804eb420a496fa760f", - "sha256:b160b9a99ecc6559d9e6d461b95c8eec21461b332f80267ad2c10394b9503496", - "sha256:b342064e647d099ca765f19672696ad50c953cac95b566af1492fd142283580f", - "sha256:b5e8590b9245803c849e09bae070a8e1ff444f45e3f0bed558dd722119eea724", - "sha256:bf75d5825ef47aa51d669b03ce635ecb84d69311e05eccea083f31c7570c9931", - "sha256:c01b59b33c7c3ba90744f2c695be571a3bd40ab2ba7f3d169ffa6db3cfba614f", - "sha256:d96a6a7d74af56feb11e9a443150216578ea07b7450f7c05df40eec90af7f4a7", - "sha256:dd0e3651d210068d13e18503d75aaa45656eef51ef0b261f891788589db2cc38", - "sha256:e167b9805de54367dcb2043519382be541117503ce99e3291cc9b41ca0a83557", - "sha256:e42029e184008a5fd3d819323345e25e2337b0ac7f5c135b7623308530209d57", - "sha256:f545c082eeb09ae678dd451a1b1dbf17babd8a0d7adea02897a76e639afca310", - "sha256:fde50062d67d805bc96f1a9ecc0d37bfc2a8f02b937d2c50824d186aa91f2419" - ], - "version": "==1.21.2" + "sha256:043e83bfc274649c82a6f09836943e4a4aebe5e33656271c7dbf9621dd58b8ec", + "sha256:160ccc1bed3a8371bf0d760971f09bfe80a3e18646620e9ded0ad159d9749baa", + "sha256:188031f833bbb623637e66006cf75e933e00e7231f67e2b45cf8189612bb5dc3", + "sha256:28f15209fb535dd4c504a7762d3bc440779b0e37d50ed810ced209e5cea60d96", + "sha256:29fb3dcd0468b7715f8ce2c0c2d9bbbaf5ae686334951343a41bd8d155c6ea27", + "sha256:2a6ee9620061b2a722749b391c0d80a0e2ae97290f1b32e28d5a362e21941ee4", + "sha256:300321e3985c968e3ae7fbda187237b225f3ffe6528395a5b7a5407f73cf093e", + "sha256:32437f0b275c1d09d9c3add782516413e98cd7c09e6baf4715cbce781fc29912", + "sha256:3c09418a14471c7ae69ba682e2428cae5b4420a766659605566c0fa6987f6b7e", + "sha256:49c6249260890e05b8111ebfc391ed58b3cb4b33e63197b2ec7f776e45330721", + "sha256:4cc9b512e9fb590797474f58b7f6d1f1b654b3a94f4fa8558b48ca8b3cfc97cf", + "sha256:508b0b513fa1266875524ba8a9ecc27b02ad771fe1704a16314dc1a816a68737", + "sha256:50cd26b0cf6664cb3b3dd161ba0a09c9c1343db064e7c69f9f8b551f5104d654", + "sha256:5c4193f70f8069550a1788bd0cd3268ab7d3a2b70583dfe3b2e7f421e9aace06", + "sha256:5dfe9d6a4c39b8b6edd7990091fea4f852888e41919d0e6722fe78dd421db0eb", + "sha256:63571bb7897a584ca3249c86dd01c10bcb5fe4296e3568b2e9c1a55356b6410e", + "sha256:75621882d2230ab77fb6a03d4cbccd2038511491076e7964ef87306623aa5272", + "sha256:75eb7cadc8da49302f5b659d40ba4f6d94d5045fbd9569c9d058e77b0514c9e4", + "sha256:88a5d6b268e9ad18f3533e184744acdaa2e913b13148160b1152300c949bbb5f", + "sha256:8a10968963640e75cc0193e1847616ab4c718e83b6938ae74dea44953950f6b7", + "sha256:90bec6a86b348b4559b6482e2b684db4a9a7eed1fa054b86115a48d58fbbf62a", + "sha256:98339aa9911853f131de11010f6dd94c8cec254d3d1f7261528c3b3e3219f139", + "sha256:a99a6b067e5190ac6d12005a4d85aa6227c5606fa93211f86b1dafb16233e57d", + "sha256:bffa2eee3b87376cc6b31eee36d05349571c236d1de1175b804b348dc0941e3f", + "sha256:c6c2d535a7beb1f8790aaa98fd089ceab2e3dd7ca48aca0af7dc60e6ef93ffe1", + "sha256:cc14e7519fab2a4ed87d31f99c31a3796e4e1fe63a86ebdd1c5a1ea78ebd5896", + "sha256:dd0482f3fc547f1b1b5d6a8b8e08f63fdc250c58ce688dedd8851e6e26cff0f3", + "sha256:dde972a1e11bb7b702ed0e447953e7617723760f420decb97305e66fb4afc54f", + "sha256:e54af82d68ef8255535a6cdb353f55d6b8cf418a83e2be3569243787a4f4866f", + "sha256:e606e6316911471c8d9b4618e082635cfe98876007556e89ce03d52ff5e8fcf0", + "sha256:f41b018f126aac18583956c54544db437f25c7ee4794bcb23eb38bef8e5e192a", + "sha256:f8f4625536926a155b80ad2bbff44f8cc59e9f2ad14cdda7acf4c135b4dc8ff2", + "sha256:fe52dbe47d9deb69b05084abd4b0df7abb39a3c51957c09f635520abd49b29dd" + ], + "markers": "platform_machine != 'aarch64' and platform_machine != 'arm64' and python_version < '3.10'", + "version": "==1.21.3" }, "openpyxl": { "hashes": [ @@ -738,30 +748,30 @@ }, "pandas": { "hashes": [ - "sha256:272c8cb14aa9793eada6b1ebe81994616e647b5892a370c7135efb2924b701df", - "sha256:3334a5a9eeaca953b9db1b2b165dcdc5180b5011f3bec3a57a3580c9c22eae68", - "sha256:37d63e78e87eb3791da7be4100a65da0383670c2b59e493d9e73098d7a879226", - "sha256:3f5020613c1d8e304840c34aeb171377dc755521bf5e69804991030c2a48aec3", - "sha256:45649503e167d45360aa7c52f18d1591a6d5c70d2f3a26bc90a3297a30ce9a66", - "sha256:49fd2889d8116d7acef0709e4c82b8560a8b22b0f77471391d12c27596e90267", - "sha256:4def2ef2fb7fcd62f2aa51bacb817ee9029e5c8efe42fe527ba21f6a3ddf1a9f", - "sha256:53e2fb11f86f6253bb1df26e3aeab3bf2e000aaa32a953ec394571bec5dc6fd6", - "sha256:629138b7cf81a2e55aa29ce7b04c1cece20485271d1f6c469c6a0c03857db6a4", - "sha256:68408a39a54ebadb9014ee5a4fae27b2fe524317bc80adf56c9ac59e8f8ea431", - "sha256:7326b37de08d42dd3fff5b7ef7691d0fd0bf2428f4ba5a2bdc3b3247e9a52e4c", - "sha256:7557b39c8e86eb0543a17a002ac1ea0f38911c3c17095bc9350d0a65b32d801c", - "sha256:86b16b1b920c4cb27fdd65a2c20258bcd9c794be491290660722bb0ea765054d", - "sha256:a800df4e101b721e94d04c355e611863cc31887f24c0b019572e26518cbbcab6", - "sha256:a9f1b54d7efc9df05320b14a48fb18686f781aa66cc7b47bb62fabfc67a0985c", - "sha256:c399200631db9bd9335d013ec7fce4edb98651035c249d532945c78ad453f23a", - "sha256:e574c2637c9d27f322e911650b36e858c885702c5996eda8a5a60e35e6648cf2", - "sha256:e9bc59855598cb57f68fdabd4897d3ed2bc3a3b3bef7b868a0153c4cd03f3207", - "sha256:ebbed7312547a924df0cbe133ff1250eeb94cdff3c09a794dc991c5621c8c735", - "sha256:ed2f29b4da6f6ae7c68f4b3708d9d9e59fa89b2f9e87c2b64ce055cbd39f729e", - "sha256:f7d84f321674c2f0f31887ee6d5755c54ca1ea5e144d6d54b3bbf566dd9ea0cc" + "sha256:003ba92db58b71a5f8add604a17a059f3068ef4e8c0c365b088468d0d64935fd", + "sha256:10e10a2527db79af6e830c3d5842a4d60383b162885270f8cffc15abca4ba4a9", + "sha256:22808afb8f96e2269dcc5b846decacb2f526dd0b47baebc63d913bf847317c8f", + "sha256:2d1dc09c0013d8faa7474574d61b575f9af6257ab95c93dcf33a14fd8d2c1bab", + "sha256:35c77609acd2e4d517da41bae0c11c70d31c87aae8dd1aabd2670906c6d2c143", + "sha256:372d72a3d8a5f2dbaf566a5fa5fa7f230842ac80f29a931fb4b071502cf86b9a", + "sha256:42493f8ae67918bf129869abea8204df899902287a7f5eaf596c8e54e0ac7ff4", + "sha256:5298a733e5bfbb761181fd4672c36d0c627320eb999c59c65156c6a90c7e1b4f", + "sha256:5ba0aac1397e1d7b654fccf263a4798a9e84ef749866060d19e577e927d66e1b", + "sha256:a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc", + "sha256:a388960f979665b447f0847626e40f99af8cf191bce9dc571d716433130cb3a7", + "sha256:a51528192755f7429c5bcc9e80832c517340317c861318fea9cea081b57c9afd", + "sha256:b528e126c13816a4374e56b7b18bfe91f7a7f6576d1aadba5dee6a87a7f479ae", + "sha256:c1aa4de4919358c5ef119f6377bc5964b3a7023c23e845d9db7d9016fa0c5b1c", + "sha256:c2646458e1dce44df9f71a01dc65f7e8fa4307f29e5c0f2f92c97f47a5bf22f5", + "sha256:d47750cf07dee6b55d8423471be70d627314277976ff2edd1381f02d52dbadf9", + "sha256:d99d2350adb7b6c3f7f8f0e5dfb7d34ff8dd4bc0a53e62c445b7e43e163fce63", + "sha256:dd324f8ee05925ee85de0ea3f0d66e1362e8c80799eb4eb04927d32335a3e44a", + "sha256:eaca36a80acaacb8183930e2e5ad7f71539a66805d6204ea88736570b2876a7b", + "sha256:f567e972dce3bbc3a8076e0b675273b4a9e8576ac629149cf8286ee13c259ae5", + "sha256:fe48e4925455c964db914b958f6e7032d285848b7538a5e1b19aeb26ffaea3ec" ], "index": "pypi", - "version": "==1.3.3" + "version": "==1.3.4" }, "pandocfilters": { "hashes": [ @@ -846,7 +856,6 @@ "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220" ], - "markers": "os_name != 'nt'", "version": "==0.7.0" }, "py": { @@ -863,6 +872,33 @@ ], "version": "==2.20" }, + "pydantic": { + "hashes": [ + "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd", + "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739", + "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f", + "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840", + "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23", + "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287", + "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62", + "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b", + "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb", + "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820", + "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3", + "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b", + "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e", + "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3", + "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316", + "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b", + "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4", + "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20", + "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e", + "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505", + "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1", + "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833" + ], + "version": "==1.8.2" + }, "pygments": { "hashes": [ "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380", @@ -995,6 +1031,7 @@ }, "pyzmq": { "hashes": [ + "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b", "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74", "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb", "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0", @@ -1003,7 +1040,10 @@ "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f", "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9", "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df", + "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067", "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0", + "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966", + "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666", "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d", "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd", "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd", @@ -1014,24 +1054,30 @@ "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf", "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b", "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c", + "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e", "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356", "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e", "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36", "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70", + "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92", "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c", "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7", "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7", + "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59", "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57", "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2", + "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b", "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2", "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115", "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a", "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364", "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b", "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea", + "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1", "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973", "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45", - "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93" + "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93", + "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3" ], "version": "==22.3.0" }, @@ -1221,38 +1267,44 @@ }, "sqlalchemy": { "hashes": [ - "sha256:0566a6e90951590c0307c75f9176597c88ef4be2724958ca1d28e8ae05ec8822", - "sha256:08d9396a2a38e672133266b31ed39b2b1f2b5ec712b5bff5e08033970563316a", - "sha256:0b08a53e40b34205acfeb5328b832f44437956d673a6c09fce55c66ab0e54916", - "sha256:16ef07e102d2d4f974ba9b0d4ac46345a411ad20ad988b3654d59ff08e553b1c", - "sha256:1adf3d25e2e33afbcd48cfad8076f9378793be43e7fec3e4334306cac6bec138", - "sha256:1b38db2417b9f7005d6ceba7ce2a526bf10e3f6f635c0f163e6ed6a42b5b62b2", - "sha256:1ebd69365717becaa1b618220a3df97f7c08aa68e759491de516d1c3667bba54", - "sha256:26b0cd2d5c7ea96d3230cb20acac3d89de3b593339c1447b4d64bfcf4eac1110", - "sha256:2ed67aae8cde4d32aacbdba4f7f38183d14443b714498eada5e5a7a37769c0b7", - "sha256:33a1e86abad782e90976de36150d910748b58e02cd7d35680d441f9a76806c18", - "sha256:41a916d815a3a23cb7fff8d11ad0c9b93369ac074e91e428075e088fe57d5358", - "sha256:6003771ea597346ab1e97f2f58405c6cacbf6a308af3d28a9201a643c0ac7bb3", - "sha256:6400b22e4e41cc27623a9a75630b7719579cd9a3a2027bcf16ad5aaa9a7806c0", - "sha256:6b602e3351f59f3999e9fb8b87e5b95cb2faab6a6ecdb482382ac6fdfbee5266", - "sha256:75cd5d48389a7635393ff5a9214b90695c06b3d74912109c3b00ce7392b69c6c", - "sha256:7ad59e2e16578b6c1a2873e4888134112365605b08a6067dd91e899e026efa1c", - "sha256:7b7778a205f956755e05721eebf9f11a6ac18b2409bff5db53ce5fe7ede79831", - "sha256:842c49dd584aedd75c2ee05f6c950730c3ffcddd21c5824ed0f820808387e1e3", - "sha256:90fe429285b171bcc252e21515703bdc2a4721008d1f13aa5b7150336f8a8493", - "sha256:91cd87d1de0111eaca11ccc3d31af441c753fa2bc22df72e5009cfb0a1af5b03", - "sha256:9a1df8c93a0dd9cef0839917f0c6c49f46c75810cf8852be49884da4a7de3c59", - "sha256:9ebe49c3960aa2219292ea2e5df6acdc425fc828f2f3d50b4cfae1692bcb5f02", - "sha256:a28fe28c359835f3be20c89efd517b35e8f97dbb2ca09c6cf0d9ac07f62d7ef6", - "sha256:a36ea43919e51b0de0c0bc52bcfdad7683f6ea9fb81b340cdabb9df0e045e0f7", - "sha256:a505ecc0642f52e7c65afb02cc6181377d833b7df0994ecde15943b18d0fa89c", - "sha256:a79abdb404d9256afb8aeaa0d3a4bc7d3b6d8b66103d8b0f2f91febd3909976e", - "sha256:c211e8ec81522ce87b0b39f0cf0712c998d4305a030459a0e115a2b3dc71598f", - "sha256:dd4ed12a775f2cde4519f4267d3601990a97d8ecde5c944ab06bfd6e8e8ea177", - "sha256:e37621b37c73b034997b5116678862f38ee70e5a054821c7b19d0e55df270dec", - "sha256:e93978993a2ad0af43f132be3ea8805f56b2f2cd223403ec28d3e7d5c6d39ed1" - ], - "version": "==1.4.25" + "sha256:07ac4461a1116b317519ddf6f34bcb00b011b5c1370ebeaaf56595504ffc7e84", + "sha256:090536fd23bf49077ee94ff97142bc5ee8bad24294c3d7c8d5284267c885dde7", + "sha256:1dee515578d04bc80c4f9a8c8cfe93f455db725059e885f1b1da174d91c4d077", + "sha256:1ef37c9ec2015ce2f0dc1084514e197f2f199d3dc3514190db7620b78e6004c8", + "sha256:295b90efef1278f27fe27d94a45460ae3c17f5c5c2b32c163e29c359740a1599", + "sha256:2ce42ad1f59eb85c55c44fb505f8854081ee23748f76b62a7f569cfa9b6d0604", + "sha256:2feb028dc75e13ba93456a42ac042b255bf94dbd692bf80b47b22653bb25ccf8", + "sha256:31f4426cfad19b5a50d07153146b2bcb372a279975d5fa39f98883c0ef0f3313", + "sha256:3c0c5f54560a92691d54b0768d67b4d3159e514b426cfcb1258af8c195577e8f", + "sha256:463ef692259ff8189be42223e433542347ae17e33f91c1013e9c5c64e2798088", + "sha256:4a882dedb9dfa6f33524953c3e3d72bcf518a5defd6d5863150a821928b19ad3", + "sha256:4c185c928e2638af9bae13acc3f70e0096eac76471a1101a10f96b80666b8270", + "sha256:5039faa365e7522a8eb4736a54afd24a7e75dcc33b81ab2f0e6c456140f1ad64", + "sha256:5c6774b34782116ad9bdec61c2dbce9faaca4b166a0bc8e7b03c2b870b121d94", + "sha256:6bc7f9d7d90ef55e8c6db1308a8619cd8f40e24a34f759119b95e7284dca351a", + "sha256:7e8ef103eaa72a857746fd57dda5b8b5961e8e82a528a3f8b7e2884d8506f0b7", + "sha256:7ef421c3887b39c6f352e5022a53ac18de8387de331130481cb956b2d029cad6", + "sha256:908fad32c53b17aad12d722379150c3c5317c422437e44032256a77df1746292", + "sha256:91efbda4e6d311812f23996242bad7665c1392209554f8a31ec6db757456db5c", + "sha256:a6506c17b0b6016656783232d0bdd03fd333f1f654d51a14d93223f953903646", + "sha256:a95bf9c725012dcd7ea3cac16bf647054e0d62b31d67467d228338e6a163e4ff", + "sha256:ad7e403fc1e3cb76e802872694e30d6ca6129b9bc6ad4e7caa48ca35f8a144f8", + "sha256:b86f762cee3709722ab4691981958cbec475ea43406a6916a7ec375db9cbd9e9", + "sha256:ba84026e84379326bbf2f0c50792f2ae56ab9c01937df5597b6893810b8ca369", + "sha256:bca660b76672e15d70a7dba5e703e1ce451a0257b6bd2028e62b0487885e8ae9", + "sha256:c24c01dcd03426a5fe5ee7af735906bec6084977b9027a3605d11d949a565c01", + "sha256:c2f2114b0968a280f94deeeaa31cfbac9175e6ac7bd3058b3ce6e054ecd762b3", + "sha256:c46f013ff31b80cbe36410281675e1fb4eaf3e25c284fd8a69981c73f6fa4cb4", + "sha256:c757ba1279b85b3460e72e8b92239dae6f8b060a75fb24b3d9be984dd78cfa55", + "sha256:cc6b21f19bc9d4cd77cbcba5f3b260436ce033f1053cea225b6efea2603d201e", + "sha256:dbf588ab09e522ac2cbd010919a592c6aae2f15ccc3cd9a96d01c42fbc13f63e", + "sha256:de996756d894a2d52c132742e3b6d64ecd37e0919ddadf4dc3981818777c7e67", + "sha256:e700d48056475d077f867e6a36e58546de71bdb6fdc3d34b879e3240827fefab", + "sha256:f1e97c5f36b94542f72917b62f3a2f92be914b2cf33b80fa69cede7529241d2a", + "sha256:fb2aa74a6e3c2cebea38dd21633671841fbe70ea486053cba33d68e3e22ccc0a", + "sha256:ff8f91a7b1c4a1c7772caa9efe640f2768828897044748f2458b708f1026e2d4" + ], + "version": "==1.4.26" }, "terminado": { "hashes": [ @@ -1335,6 +1387,14 @@ ], "version": "==5.1.0" }, + "typing-extensions": { + "hashes": [ + "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e", + "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7", + "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34" + ], + "version": "==3.10.0.2" + }, "urllib3": { "hashes": [ "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", @@ -1393,53 +1453,52 @@ }, "wrapt": { "hashes": [ - "sha256:04312fbf51e9dd15261228e6b4bed0c0ed5723ccf986645d2c7308511dccba35", - "sha256:04a00cef5d1b9e0e8db997816437b436e859106283c4771a40c4de4759344765", - "sha256:0b2cbe418beeff3aadb3afc39a67d3f5f6a3eb020ceb5f2bcf56bef14b33629a", - "sha256:19b2c992668c9ca764899bae52987a04041ebc21859d2646db0b27e089c2fd6b", - "sha256:1b46e4fe0f9efbfaf1ee82fc79f9cb044c69b67b181c58370440d396fe40736e", - "sha256:21c1710f61aa95b4be83a32b6d6facbb0efdfac22dee65e1caa72a83deed7cda", - "sha256:2d18618440df6bc072762625e9c843d32a7328347c321b89f8df3a7c4a72ce6c", - "sha256:2f6fbea8936ba862425664fc689182a8ef50a6d88cd49f3cd073eccd3e78c930", - "sha256:3658ae9c704906cab5865a00c1aa9e1fd3555074d1a4462fa1742d7fea8260ae", - "sha256:3816922f0941f1637869a04e25d1e5261dfa55cc6b39c73872cbf192ea562443", - "sha256:40fd2cebad4010787de4221ec27a650635eed3e49e4bbfa8244fc34836cc2457", - "sha256:4f3f99bb8eed5d394bbb898c5191ed91ebf21187d52b2c45895733ae2798f373", - "sha256:5dc6c8cfaf4ff2a4632f8f97d29f555d6951eb0f905d3d47b3fd69bddb653214", - "sha256:6aa687da5565674c9696fafd2b8d44a04fb697ec2431af21c3def9cbedc4082a", - "sha256:6b81913fdba96e286f0c6007eb61f0158e64a1941bfc72fee61b34a4f8f9877f", - "sha256:6c241b4ef0744590ae0ee89305743977e478200cff961bdcc6b3d0530aea3377", - "sha256:77fef0bfdc612f5f30e43392a9f67dddaf4f48f299421bf25f910d0f47173f3d", - "sha256:7929ce97be2f7c49f454a6f8e014225e53cc3767fe48cce94b188de2225232ac", - "sha256:8055f8cc9a80dc1db01f31af6399b83f597ec164f07b7251d2a1bf1c6c025190", - "sha256:836c73f53a0cefc7ba10c6f4a0d78894cb4876f56035fe500b029e0a1ae0ffe9", - "sha256:8a184c655bb41295a9b0c28745a1b762c0c86025e43808b7e814f9cedc6c563d", - "sha256:8a6ba1b00d07f5a90a2d2eb1804a42e2067a6145b7745a8297664a75a8a232ba", - "sha256:909a80ce028821c7ad01bdcaa588126825931d177cdccd00b3545818d4a195ce", - "sha256:947a8d9d7829364e11eca88af18394713c8f98571cbc672b12545977d837f054", - "sha256:95c9fcfc326fdd3e2fd264e808f6474ca7ffd253feb3a505ee5ceb4d78216ef7", - "sha256:972099fa9cf4e43c255701c78ec5098c2fec4d6ea669a110b3414a158e772b0a", - "sha256:97f016514ceac524832e7d1bd41cf928b992ebe0324d59736f84ad5f4bbe0632", - "sha256:9d200716eb4bb1d73f47f3ccc4f98fdf979dcc82d752183828f1be2e332b6874", - "sha256:9f839c47698052ef5c2c094e21f8a06d0828aebe52d20cdb505faa318c62e886", - "sha256:aa637733f1d599077522f6a1f0c6c40389aa90a44cba37afcefef26f8e53d28f", - "sha256:b0eed9b295039a619f64667f27cffbffcfc0559073d562700912ca6266bc8b28", - "sha256:b1137e6aef3ac267c2af7d3af0266ef3f8dd1e5cde67b8eac9fa3b94e7fa0ada", - "sha256:b41ce8ee3825634e67883dd4dab336f95d0cc9d223fb7e224dcd36d66af93694", - "sha256:bc42803987eb46b5fc67ec9a072df15a72ee9db61e3b7dd955d82581bf141f60", - "sha256:bd705e341baccc3d1ef20e790b1f6383bd4ae92a77ba87a86ece8189fab8793c", - "sha256:c803526c0d3fa426e06de379b4eb56102234f2dc3c3a24a500d7962a83ca6166", - "sha256:cb0b12b365b054bee2a53078a67df81781be0686cc3f3ab8bbdd16b2e188570a", - "sha256:d0ae90fd60c7473e437b0dd48ae323c11f631fe47c243056f9e7505d26e8e2f6", - "sha256:db0daf2afca9f3b3a76e96ecb5f55ba82615ec584471d7aa27c1bdeb9e3888bb", - "sha256:e2eb4f38441b56698b4d40d48fd331e4e8a0477264785d08cbced63813d4bd29", - "sha256:e5a0727ea56de6e9a17693589bcf913d6bf1ec49f12d4671993321f3325fda4f", - "sha256:ec803c9d6e4ce037201132d903ff8b0dd26c9688be50ce4c77c420c076e78ff7", - "sha256:f1e2cea943192e24070b65bda862901c02bdf7c6abcd66ef5381ad6511921067", - "sha256:f4377eda306b488255ea4336662cd9015a902d6dc2ed77a3e4c1e3b42387453a", - "sha256:fd5320bf61a2e8d3b46d9e183323293c9a695df8f38c98d17c45e1846758f9a9" - ], - "version": "==1.13.1" + "sha256:0473d1558b93e314e84313cc611f6c86be779369f9d3734302bf185a4d2625b1", + "sha256:0582180566e7a13030f896c2f1ac6a56134ab5f3c3f4c5538086f758b1caf3f2", + "sha256:15eee0e6fd07f48af2f66d0e6f2ff1916ffe9732d464d5e2390695296872cad9", + "sha256:1c5c4cf188b5643a97e87e2110bbd4f5bc491d54a5b90633837b34d5df6a03fe", + "sha256:1eb657ed84f4d3e6ad648483c8a80a0cf0a78922ef94caa87d327e2e1ad49b48", + "sha256:22142afab65daffc95863d78effcbd31c19a8003eca73de59f321ee77f73cadb", + "sha256:283e402e5357e104ac1e3fba5791220648e9af6fb14ad7d9cc059091af2b31d2", + "sha256:3de7b4d3066cc610054e7aa2c005645e308df2f92be730aae3a47d42e910566a", + "sha256:3e0d16eedc242d01a6f8cf0623e9cdc3b869329da3f97a15961d8864111d8cf0", + "sha256:3e33c138d1e3620b1e0cc6fd21e46c266393ed5dae0d595b7ed5a6b73ed57aa0", + "sha256:3f87042623530bcffea038f824b63084180513c21e2e977291a9a7e65a66f13b", + "sha256:53c6706a1bcfb6436f1625511b95b812798a6d2ccc51359cd791e33722b5ea32", + "sha256:593cb049ce1c391e0288523b30426c4430b26e74c7e6f6e2844bd99ac7ecc831", + "sha256:6e6d1a8eeef415d7fb29fe017de0e48f45e45efd2d1bfda28fc50b7b330859ef", + "sha256:724ed2bc9c91a2b9026e5adce310fa60c6e7c8760b03391445730b9789b9d108", + "sha256:728e2d9b7a99dd955d3426f237b940fc74017c4a39b125fec913f575619ddfe9", + "sha256:7574de567dcd4858a2ffdf403088d6df8738b0e1eabea220553abf7c9048f59e", + "sha256:8164069f775c698d15582bf6320a4f308c50d048c1c10cf7d7a341feaccf5df7", + "sha256:81a4cf257263b299263472d669692785f9c647e7dca01c18286b8f116dbf6b38", + "sha256:82223f72eba6f63eafca87a0f614495ae5aa0126fe54947e2b8c023969e9f2d7", + "sha256:8318088860968c07e741537030b1abdd8908ee2c71fbe4facdaade624a09e006", + "sha256:83f2793ec6f3ef513ad8d5b9586f5ee6081cad132e6eae2ecb7eac1cc3decae0", + "sha256:87ee3c73bdfb4367b26c57259995935501829f00c7b3eed373e2ad19ec21e4e4", + "sha256:8860c8011a6961a651b1b9f46fdbc589ab63b0a50d645f7d92659618a3655867", + "sha256:9adee1891253670575028279de8365c3a02d3489a74a66d774c321472939a0b1", + "sha256:a0cdedf681db878416c05e1831ec69691b0e6577ac7dca9d4f815632e3549580", + "sha256:a70d876c9aba12d3bd7f8f1b05b419322c6789beb717044eea2c8690d35cb91b", + "sha256:ada5e29e59e2feb710589ca1c79fd989b1dd94d27079dc1d199ec954a6ecc724", + "sha256:af9480de8e63c5f959a092047aaf3d7077422ded84695b3398f5d49254af3e90", + "sha256:b20703356cae1799080d0ad15085dc3213c1ac3f45e95afb9f12769b98231528", + "sha256:bc85d17d90201afd88e3d25421da805e4e135012b5d1f149e4de2981394b2a52", + "sha256:bff0a59387a0a2951cb869251257b6553663329a1b5525b5226cab8c88dcbe7e", + "sha256:c65e623ea7556e39c4f0818200a046cbba7575a6b570ff36122c276fdd30ab0a", + "sha256:c6ee5f8734820c21b9b8bf705e99faba87f21566d20626568eeb0d62cbeaf23c", + "sha256:c7ac2c7a8e34bd06710605b21dd1f3576764443d68e069d2afba9b116014d072", + "sha256:ccb34ce599cab7f36a4c90318697ead18312c67a9a76327b3f4f902af8f68ea1", + "sha256:d0d717e10f952df7ea41200c507cc7e24458f4c45b56c36ad418d2e79dacd1d4", + "sha256:d90520616fce71c05dedeac3a0fe9991605f0acacd276e5f821842e454485a70", + "sha256:dca56cc5963a5fd7c2aa8607017753f534ee514e09103a6c55d2db70b50e7447", + "sha256:df3eae297a5f1594d1feb790338120f717dac1fa7d6feed7b411f87e0f2401c7", + "sha256:e634136f700a21e1fcead0c137f433dde928979538c14907640607d43537d468", + "sha256:fbad5ba74c46517e6488149514b2e2348d40df88cd6b52a83855b7a8bf04723f", + "sha256:fbe6aebc9559fed7ea27de51c2bf5c25ba2a4156cf0017556f72883f2496ee9a", + "sha256:fdede980273aeca591ad354608778365a3a310e0ecdd7a3587b38bc5be9b1808" + ], + "version": "==1.13.2" } }, "develop": {} From 8282948ca609b457d25f5f0d8ed126d022a7734b Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 28 Oct 2021 08:50:35 -0400 Subject: [PATCH 02/11] good morning --- GDC to CCDH conversion.ipynb | 801 +++++++++++++++++++++++++---------- Pipfile.lock | 1 - 2 files changed, 568 insertions(+), 234 deletions(-) diff --git a/GDC to CCDH conversion.ipynb b/GDC to CCDH conversion.ipynb index 0f609f1..3c6d57b 100644 --- a/GDC to CCDH conversion.ipynb +++ b/GDC to CCDH conversion.ipynb @@ -708,7 +708,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 5, "id": "76578a61", "metadata": {}, "outputs": [], @@ -725,6 +725,9 @@ "resp_struct = response.json()\n", "BodyPart_frame = pd.DataFrame(resp_struct[\"concept_references\"])\n", "\n", + "# could also use\n", + "# https://terminology.ccdh.io/enumerations/CRDC-H.BodySite.site\n", + "\n", "\n", "def create_body_site(site_name):\n", " \"\"\"Create a CCDH BodySite based on the name of a site in the human body.\"\"\"\n", @@ -772,9 +775,9 @@ " ccdh.Coding(\n", " code=closest_BodyPart[\"code\"],\n", " system=\"https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site\",\n", - " label=closest_BodyPart[\"designation\"],\n", + " label=closest_BodyPart[\"designation\"]\n", " )\n", - " ]\n", + " ], text = site_name\n", " )\n", " )\n", " return mapped\n" @@ -845,20 +848,31 @@ "closest match: Larynx\n", "{'code': 'C12420', 'uri': 'http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C12420', 'designation': 'Larynx', 'definition': 'The cartilaginous structure of the respiratory tract between the pharynx and the trachea. It contains elastic vocal cords required for sound production.', 'reference': 'https://ncit.nci.nih.gov/ncitbrowser/pages/concept_details.jsf?dictionary=NCI%20Thesaurus&code=C12420'}\n" ] - }, + } + ], + "source": [ + "created_body_site = create_body_site(\"Laryn\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "41ef6178", + "metadata": {}, + "outputs": [ { "data": { "text/plain": [ - "BodySite(site=CodeableConcept(coding=[Coding(code='C12420', system='https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site', label='Larynx', system_version=None, value_set=None, value_set_version=None, tag=[])], text=None), qualifier=[])" + "BodySite(site=CodeableConcept(coding=[Coding(code='C12420', system='https://terminology.ccdh.io/models/CRDC-H/entities/BodySite/attributes/site', label='Larynx', system_version=None, value_set=None, value_set_version=None, tag=[])], text='Laryn'), qualifier=[])" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "create_body_site(\"Laryn\")" + "created_body_site" ] }, { @@ -877,288 +891,620 @@ "We need a more sophisticated transformation method for transforming the GDC cancer stage information into [CCDH Cancer Stage Observation Set](https://cancerdhc.github.io/ccdhmodel/latest/CancerStageObservationSet/). Each observation set is made up of a number of [CCDH Cancer Stage Observations](https://cancerdhc.github.io/ccdhmodel/latest/CancerStageObservation/), each of which represents a different type of observation." ] }, + { + "cell_type": "markdown", + "id": "66a25c65", + "metadata": {}, + "source": [ + "https://terminology.ccdh.io/models/CRDC-H/entities/CancerStageObservation/attributes\n", + "\n", + "```\n", + "[\n", + " {\n", + " \"name\": \"category\"\n", + " },\n", + " {\n", + " \"name\": \"observation_type\"\n", + " },\n", + " {\n", + " \"name\": \"method_type\"\n", + " },\n", + " {\n", + " \"name\": \"valueCodeableConcept\"\n", + " },\n", + " {\n", + " \"name\": \"id\"\n", + " },\n", + " {\n", + " \"name\": \"focus\"\n", + " },\n", + " {\n", + " \"name\": \"subject\"\n", + " },\n", + " {\n", + " \"name\": \"performed_by\"\n", + " },\n", + " {\n", + " \"name\": \"valueEntity\"\n", + " }\n", + "]\n", + "```\n", + "\n", + "`enum_CRDCH_CancerStageObservation_observation_type` still has `permissible_values` but I don't see a codeable concept endpoint for these like I showed for the BodySites above." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4dec653c", + "metadata": {}, + "outputs": [], + "source": [ + "# pvalues = [pv for key, pv in ccdh.EnumCRDCHCancerStageObservationObservationType.__dict__.items() if isinstance(pv, ccdh.PermissibleValue)]\n", + "# csoot_list = []\n", + "# for pv in pvalues:\n", + "# csoot_list.append(pv.text)\n", + "# csoot_list.sort()\n", + "# csoot_list\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c08d80b5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'M classifies the presence of distant metastasis; stage given by histopathologic examination of a surgical specimen'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pvalues = [pv for key, pv in ccdh.EnumCRDCHCancerStageObservationObservationType.__dict__.items() if isinstance(pv, ccdh.PermissibleValue)]\n", + "# pvalues\n", + "ccdh.EnumCRDCHCancerStageObservationObservationType['Pathological Metastasis (M)'].description" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e10411e7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "age_at_diagnosis\n", + " 22107\n", + "ajcc_clinical_m\n", + " M1\n", + "ajcc_clinical_n\n", + " N1\n", + "ajcc_clinical_stage\n", + " Stage IVC\n", + "ajcc_clinical_t\n", + " T3\n", + "ajcc_pathologic_m\n", + " M1\n", + "ajcc_pathologic_n\n", + " N1\n", + "ajcc_pathologic_stage\n", + " Stage IVC\n", + "ajcc_pathologic_t\n", + " T3\n", + "ajcc_staging_system_edition\n", + " 7th\n", + "classification_of_tumor\n", + " not reported\n", + "created_datetime\n", + " None\n", + "days_to_diagnosis\n", + " 0\n", + "days_to_last_follow_up\n", + " None\n", + "days_to_last_known_disease_status\n", + " None\n", + "days_to_recurrence\n", + " None\n", + "diagnosis_id\n", + " 9e30aa6c-91e6-5dd3-9512-75c162a89913\n", + "icd_10_code\n", + " C32.9\n", + "last_known_disease_status\n", + " not reported\n", + "morphology\n", + " 8070/3\n", + "primary_diagnosis\n", + " Squamous cell carcinoma, NOS\n", + "prior_malignancy\n", + " no\n", + "prior_treatment\n", + " No\n", + "progression_or_recurrence\n", + " not reported\n", + "site_of_resection_or_biopsy\n", + " Larynx, NOS\n", + "state\n", + " released\n", + "submitter_id\n", + " TCGA-QK-A8Z8_diagnosis\n", + "synchronous_malignancy\n", + " No\n", + "tissue_or_organ_of_origin\n", + " Larynx, NOS\n", + "tumor_grade\n", + " not reported\n", + "tumor_stage\n", + " stage ivc\n", + "updated_datetime\n", + " 2019-08-08T16:48:06.888156-05:00\n", + "year_of_diagnosis\n", + " 2013\n" + ] + } + ], + "source": [ + "\n", + "temp = gdc_head_and_mouth[131]['diagnoses'][0]\n", + "for k,v in temp.items():\n", + " print(k)\n", + " print(\" \" + str(v))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4dc921d7", + "metadata": {}, + "outputs": [], + "source": [ + "gdc_to_crdch_csoot_dict = [\n", + " {\"GDC\": \"ajcc_clinical_m\", \"CRDC-H\": \"Clinical Metastasis (M)\"},\n", + " {\"GDC\": \"ajcc_clinical_n\", \"CRDC-H\": \"Clinical Node (N)\"},\n", + " {\"GDC\": \"ajcc_clinical_stage\", \"CRDC-H\": \"Clinical Overall\"},\n", + " {\"GDC\": \"ajcc_clinical_t\", \"CRDC-H\": \"Clinical Tumor (T)\"},\n", + " {\"GDC\": \"tumor_stage\", \"CRDC-H\": \"Overall\"},\n", + " {\"GDC\": \"ajcc_pathologic_m\", \"CRDC-H\": \"Pathological Metastasis (M)\"},\n", + " {\"GDC\": \"ajcc_pathologic_n\", \"CRDC-H\": \"Pathological Node (N)\"},\n", + " {\"GDC\": \"ajcc_pathologic_stage\", \"CRDC-H\": \"Pathological Overall\"},\n", + " {\"GDC\": \"ajcc_pathologic_t\", \"CRDC-H\": \"Pathological Tumor (T)\"},\n", + " {\"GDC\": \"age_at_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"ajcc_staging_system_edition\", \"CRDC-H\": None},\n", + " {\"GDC\": \"classification_of_tumor\", \"CRDC-H\": None},\n", + " {\"GDC\": \"created_datetime\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_last_follow_up\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_last_known_disease_status\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_recurrence\", \"CRDC-H\": None},\n", + " {\"GDC\": \"diagnosis_id\", \"CRDC-H\": None},\n", + " {\"GDC\": \"icd_10_code\", \"CRDC-H\": None},\n", + " {\"GDC\": \"last_known_disease_status\", \"CRDC-H\": None},\n", + " {\"GDC\": \"morphology\", \"CRDC-H\": None},\n", + " {\"GDC\": \"primary_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"prior_malignancy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"prior_treatment\", \"CRDC-H\": None},\n", + " {\"GDC\": \"progression_or_recurrence\", \"CRDC-H\": None},\n", + " {\"GDC\": \"site_of_resection_or_biopsy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"state\", \"CRDC-H\": None},\n", + " {\"GDC\": \"submitter_id\", \"CRDC-H\": None},\n", + " {\"GDC\": \"synchronous_malignancy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"tissue_or_organ_of_origin\", \"CRDC-H\": None},\n", + " {\"GDC\": \"tumor_grade\", \"CRDC-H\": None},\n", + " {\"GDC\": \"updated_datetime\", \"CRDC-H\": None},\n", + " {\"GDC\": \"year_of_diagnosis\", \"CRDC-H\": None},\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "0748f138", + "metadata": {}, + "outputs": [], + "source": [ + "gdc_to_crdch_csoot_frame = pd.DataFrame(gdc_to_crdch_csoot_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b11fc7cd", + "metadata": {}, + "outputs": [], + "source": [ + "gdc_to_crdch_csoot_frame_complete = gdc_to_crdch_csoot_frame.loc[ ~ gdc_to_crdch_csoot_frame['CRDC-H'].isnull()]" + ] + }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 17, + "id": "cddb36a5", + "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", + "
GDCCRDC-H
0ajcc_clinical_mClinical Metastasis (M)
1ajcc_clinical_nClinical Node (N)
2ajcc_clinical_stageClinical Overall
3ajcc_clinical_tClinical Tumor (T)
4tumor_stageOverall
5ajcc_pathologic_mPathological Metastasis (M)
6ajcc_pathologic_nPathological Node (N)
7ajcc_pathologic_stagePathological Overall
8ajcc_pathologic_tPathological Tumor (T)
\n", + "
" + ], + "text/plain": [ + " GDC CRDC-H\n", + "0 ajcc_clinical_m Clinical Metastasis (M)\n", + "1 ajcc_clinical_n Clinical Node (N)\n", + "2 ajcc_clinical_stage Clinical Overall\n", + "3 ajcc_clinical_t Clinical Tumor (T)\n", + "4 tumor_stage Overall\n", + "5 ajcc_pathologic_m Pathological Metastasis (M)\n", + "6 ajcc_pathologic_n Pathological Node (N)\n", + "7 ajcc_pathologic_stage Pathological Overall\n", + "8 ajcc_pathologic_t Pathological Tumor (T)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdc_to_crdch_csoot_frame_complete" + ] + }, + { + "cell_type": "code", + "execution_count": 18, "id": "c7c33259", "metadata": {}, + "outputs": [], + "source": [ + "from linkml_runtime.dumpers import yaml_dumper\n", + "\n", + "cancer_stage_method_type = None\n", + "# if diagnosis.get('ajcc_staging_system_edition') == '7th':\n", + "# cancer_stage_method_type = 'AJCC staging system 7th edition'\n", + "\n", + "# Create an observation set\n", + "obs = ccdh.CancerStageObservationSet(method_type=cancer_stage_method_type)\n", + "\n", + "\n", + "def diag_cc_mapper(diag_info_type, diag_info_val):\n", + " if diag_info_val is not None:\n", + " crdch_diag_info_type = gdc_to_crdch_csoot_frame_complete[\"CRDC-H\"].loc[\n", + " gdc_to_crdch_csoot_frame_complete[\"GDC\"] == diag_info_type\n", + " ]\n", + " crdch_diag_info_type = list(crdch_diag_info_type)\n", + " if len(crdch_diag_info_type) == 1:\n", + " crdch_diag_info_type = crdch_diag_info_type[0]\n", + " # we could look up the sescription for the mapped type enum\n", + " # but where would we put it in the obs structure?\n", + " crdch_diag_info_type_desc = (\n", + " ccdh.EnumCRDCHCancerStageObservationObservationType[\n", + " crdch_diag_info_type\n", + " ].description\n", + " )\n", + " current_observation = ccdh.CancerStageObservation(\n", + " observation_type=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=crdch_diag_info_type,\n", + " system=\"crdch-model 1.1.5 legacy enums\",\n", + " )\n", + " ],\n", + " text=diag_info_type,\n", + " ),\n", + " # valueCodeableConcept ?\n", + " value_codeable_concept=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=diag_info_val, system=\"crdch-model 1.1.5 legacy enums\"\n", + " )\n", + " ]\n", + " ),\n", + " )\n", + " obs.observations.append(current_observation)\n", + "\n", + "\n", + "diagnosis_dict = gdc_head_and_mouth[131][\"diagnoses\"][0]\n", + "for k, v in diagnosis_dict.items():\n", + " diag_cc_mapper(k, v)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "9c531670", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "CancerStageObservation(observation_type=CodeableConcept(coding=[Coding(code='Clinical Metastasis (M)', system='crdch-model 1.1.5 legacy enums', label=None, system_version=None, value_set=None, value_set_version=None, tag=[])], text='ajcc_clinical_m'), value_codeable_concept=CodeableConcept(coding=[Coding(code='M1', system='crdch-model 1.1.5 legacy enums', label=None, system_version=None, value_set=None, value_set_version=None, tag=[])], text=None), id=None, category=None, method_type=None, focus=None, subject=None, performed_by=None, value_entity=None)\n" + ] + } + ], + "source": [ + "print(obs.observations[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "482376b6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "observations:\n", "- observation_type:\n", " coding:\n", - " - code: age_at_diagnosis\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: '22107'\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: ajcc_clinical_m\n", - " system: Y\n", + " - code: Clinical Metastasis (M)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_clinical_m\n", " value_codeable_concept:\n", " coding:\n", " - code: M1\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_clinical_n\n", - " system: Y\n", + " - code: Clinical Node (N)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_clinical_n\n", " value_codeable_concept:\n", " coding:\n", " - code: N1\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_clinical_stage\n", - " system: Y\n", + " - code: Clinical Overall\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_clinical_stage\n", " value_codeable_concept:\n", " coding:\n", " - code: Stage IVC\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_clinical_t\n", - " system: Y\n", + " - code: Clinical Tumor (T)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_clinical_t\n", " value_codeable_concept:\n", " coding:\n", " - code: T3\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_pathologic_m\n", - " system: Y\n", + " - code: Pathological Metastasis (M)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_pathologic_m\n", " value_codeable_concept:\n", " coding:\n", " - code: M1\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_pathologic_n\n", - " system: Y\n", + " - code: Pathological Node (N)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_pathologic_n\n", " value_codeable_concept:\n", " coding:\n", " - code: N1\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_pathologic_stage\n", - " system: Y\n", + " - code: Pathological Overall\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_pathologic_stage\n", " value_codeable_concept:\n", " coding:\n", " - code: Stage IVC\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: ajcc_pathologic_t\n", - " system: Y\n", + " - code: Pathological Tumor (T)\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: ajcc_pathologic_t\n", " value_codeable_concept:\n", " coding:\n", " - code: T3\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: ajcc_staging_system_edition\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 7th\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: classification_of_tumor\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: not reported\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: days_to_diagnosis\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: '0'\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: diagnosis_id\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 9e30aa6c-91e6-5dd3-9512-75c162a89913\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: icd_10_code\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: C32.9\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: last_known_disease_status\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: not reported\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: morphology\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 8070/3\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: primary_diagnosis\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: Squamous cell carcinoma, NOS\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: prior_malignancy\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 'no'\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: prior_treatment\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 'No'\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "- observation_type:\n", " coding:\n", - " - code: progression_or_recurrence\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: not reported\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: site_of_resection_or_biopsy\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: Larynx, NOS\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: state\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: released\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: submitter_id\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: TCGA-QK-A8Z8_diagnosis\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: synchronous_malignancy\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: 'No'\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: tissue_or_organ_of_origin\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: Larynx, NOS\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: tumor_grade\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: not reported\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: tumor_stage\n", - " system: Y\n", + " - code: Overall\n", + " system: crdch-model 1.1.5 legacy enums\n", + " text: tumor_stage\n", " value_codeable_concept:\n", " coding:\n", " - code: stage ivc\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: updated_datetime\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: '2019-08-08T16:48:06.888156-05:00'\n", - " system: Y\n", - "- observation_type:\n", - " coding:\n", - " - code: year_of_diagnosis\n", - " system: Y\n", - " value_codeable_concept:\n", - " coding:\n", - " - code: '2013'\n", - " system: Y\n", + " system: crdch-model 1.1.5 legacy enums\n", "\n" ] } ], "source": [ - "from linkml_runtime.dumpers import yaml_dumper\n", - "\n", - "example_observation_set = []\n", - "\n", - "\n", - "def diag_cc_mapper(diag_info_type, diag_info_val):\n", - " # print(diag_info_type + \": \" + str(diag_info_val))\n", - " if diag_info_val is not None:\n", - " current_observation = ccdh.CancerStageObservation(\n", - " observation_type=ccdh.CodeableConcept(\n", - " coding=[ccdh.Coding(code=diag_info_type, system=\"Y\")]\n", - " ),\n", - " value_codeable_concept=ccdh.CodeableConcept(\n", - " coding=[ccdh.Coding(code=diag_info_val, system=\"Y\")]\n", - " ),\n", - " )\n", - " # print(current_observation)\n", - " example_observation_set.append(current_observation)\n", - "\n", + "print(yaml_dumper.dumps(obs))" + ] + }, + { + "cell_type": "markdown", + "id": "104a932f", + "metadata": {}, + "source": [ + "## Expecting something like this:\n", "\n", - "diagnosis_dict = gdc_head_and_mouth[131][\"diagnoses\"][0]\n", - "for k, v in diagnosis_dict.items():\n", - " diag_cc_mapper(k, v)\n", + "```\n", + "observations:\n", + "- observation_type:\n", + " text: Overall\n", + " description: The overall stage of the disease\n", + " valueCodeableConcept:\n", + " text: Stage IVC\n", + " description: Stage IVC\n", + "- observation_type:\n", + " text: Clinical Overall\n", + " description: The overall stage of the disease; clinical stage is determined from\n", + " evidence acquired before treatment (including clinical examination, imaging,\n", + " endoscopy, biopsy, surgical exploration)\n", + " valueCodeableConcept:\n", + " text: Stage IVC\n", + " description: Stage IVC\n", + "- observation_type:\n", + " text: Clinical Tumor (T)\n", + " description: T classifies the size or direct extent of the primary tumor; clinical\n", + " stage is determined from evidence acquired before treatment (including clinical\n", + " examination, imaging, endoscopy, biopsy, surgical exploration)\n", + " valueCodeableConcept:\n", + " text: T3\n", + " description: T3 Stage Finding\n", + "- observation_type:\n", + " text: Clinical Node (N)\n", + " description: N classifies the degree of spread to regional lymph nodes; clinical\n", + " stage is determined from evidence acquired before treatment (including clinical\n", + " examination, imaging, endoscopy, biopsy, surgical exploration)\n", + " valueCodeableConcept:\n", + " text: N1\n", + " description: N1 Stage Finding\n", + "- observation_type:\n", + " text: Clinical Metastasis (M)\n", + " description: M classifies the presence of distant metastasis; clinical stage is\n", + " determined from evidence acquired before treatment (including clinical examination,\n", + " imaging, endoscopy, biopsy, surgical exploration)\n", + " valueCodeableConcept:\n", + " text: M1\n", + " description: M1 Stage Finding\n", + "- observation_type:\n", + " text: Pathological Overall\n", + " description: The overall stage of the disease; stage given by histopathologic\n", + " examination of a surgical specimen\n", + " valueCodeableConcept:\n", + " text: Stage IVC\n", + " description: Stage IVC\n", + "- observation_type:\n", + " text: Pathological Tumor (T)\n", + " description: T classifies the size or direct extent of the primary tumor; stage\n", + " given by histopathologic examination of a surgical specimen\n", + " valueCodeableConcept:\n", + " text: T3\n", + " description: T3 Stage Finding\n", + "- observation_type:\n", + " text: Pathological Node (N)\n", + " description: N classifies the degree of spread to regional lymph nodes; stage\n", + " given by histopathologic examination of a surgical specimen\n", + " valueCodeableConcept:\n", + " text: N1\n", + " description: N1 Stage Finding\n", + "- observation_type:\n", + " text: Pathological Metastasis (M)\n", + " description: M classifies the presence of distant metastasis; stage given by histopathologic\n", + " examination of a surgical specimen\n", + " valueCodeableConcept:\n", + " text: M1\n", + " description: M1 Stage Finding\n", "\n", - "print(yaml_dumper.dumps(example_observation_set))" + "```" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "2d661175", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "TypeError", + "evalue": "type object argument after ** must be a mapping, not str", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_338501/868770706.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[0;31m# Note that the resulting CancerStageObservationSet contains descriptions for the concepts included in it.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;31m# example_observation_set = create_stage_from_gdc(gdc_head_and_mouth[131]['diagnoses'][0], ccdh.Subject(id='1234'))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m \u001b[0mexample_observation_set\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcreate_stage_from_gdc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgdc_head_and_mouth\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m131\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'diagnoses'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 71\u001b[0m \u001b[0mexample_observation_set\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/tmp/ipykernel_338501/868770706.py\u001b[0m in \u001b[0;36mcreate_stage_from_gdc\u001b[0;34m(diagnosis)\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0;31m# Create an observation set\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 33\u001b[0;31m obs = ccdh.CancerStageObservationSet(\n\u001b[0m\u001b[1;32m 34\u001b[0m \u001b[0mmethod_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcancer_stage_method_type\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m )\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/crdch_model.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, id, category, focus, subject, method_type, performed_by, observations, **kwargs)\u001b[0m\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/crdch_model.py\u001b[0m in \u001b[0;36m__post_init__\u001b[0;34m(self, *_, **kwargs)\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 437\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 438\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCodeableConcept\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mCodeableConcept\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mas_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 439\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 440\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mperformed_by\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mperformed_by\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mOrganization\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/crdch_model.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 437\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 438\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCodeableConcept\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mCodeableConcept\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mas_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmethod_type\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 439\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 440\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mperformed_by\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mperformed_by\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mOrganization\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: type object argument after ** must be a mapping, not str" + ] + } + ], "source": [ "def create_stage_observation(type, value):\n", " \"\"\" Create a CCDHCancerStageObservation from a type of observation and a codeable concept.\"\"\"\n", @@ -1497,21 +1843,10 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "id": "4bf85ea1", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "CodeableConcept(coding=[Coding(code='UBERON:0001737', system='http://purl.obolibrary.org/obo/uberon.owl', label='larynx', system_version=None, value_set=None, value_set_version=None, tag=[])], text=None)" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "ccdh.CodeableConcept(\n", " coding=[\n", diff --git a/Pipfile.lock b/Pipfile.lock index 19f4a4a..395cb59 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -355,7 +355,6 @@ "sha256:2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11", "sha256:f16148f9163e1e526f1008d7c8d966d9c15600ca20d1a754287cf96d00ba6f1d" ], - "markers": "python_version >= '3.3'", "version": "==7.28.0" }, "ipython-genutils": { From dbbb81eeadbb39acc7d0bb13c2282528a1263005 Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 28 Oct 2021 15:04:27 -0400 Subject: [PATCH 03/11] GDC to CCDH conversion --- via_terminology_server.ipynb | 580 +++++++++++++++++++++++++++++++++++ 1 file changed, 580 insertions(+) create mode 100644 via_terminology_server.ipynb diff --git a/via_terminology_server.ipynb b/via_terminology_server.ipynb new file mode 100644 index 0000000..6a17d14 --- /dev/null +++ b/via_terminology_server.ipynb @@ -0,0 +1,580 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f0aa79f9", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import pandas as pd\n", + "import json\n", + "import crdch_model as ccdh\n", + "from linkml_runtime.dumpers import yaml_dumper" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "74625ec4", + "metadata": {}, + "outputs": [], + "source": [ + "with open('head-and-mouth/gdc-head-and-mouth.json') as file:\n", + " gdc_head_and_mouth = json.load(file)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ae7fb14c", + "metadata": {}, + "outputs": [], + "source": [ + "suggested_row_num = 131\n", + "suggested_diag_num = 0\n", + "suggested_row = gdc_head_and_mouth[suggested_row_num]\n", + "# suggested_row" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "536f4e1f", + "metadata": {}, + "outputs": [], + "source": [ + "suggested_diagnosis_dict = suggested_row[\"diagnoses\"][suggested_diag_num]\n", + "# suggested_diagnosis_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "cae20189", + "metadata": {}, + "outputs": [], + "source": [ + "# derrived from Gaurav's code\n", + "# how to DISCOVER?\n", + "# close_mappings ?\n", + "# how to convert these legacy CRDC-H strings to codable concepts?\n", + "gdc_to_crdch_csoot_dict = [\n", + " {\"GDC\": \"ajcc_clinical_m\", \"CRDC-H\": \"Clinical Metastasis (M)\"},\n", + " {\"GDC\": \"ajcc_clinical_n\", \"CRDC-H\": \"Clinical Node (N)\"},\n", + " {\"GDC\": \"ajcc_clinical_stage\", \"CRDC-H\": \"Clinical Overall\"},\n", + " {\"GDC\": \"ajcc_clinical_t\", \"CRDC-H\": \"Clinical Tumor (T)\"},\n", + " {\"GDC\": \"tumor_stage\", \"CRDC-H\": \"Overall\"},\n", + " {\"GDC\": \"ajcc_pathologic_m\", \"CRDC-H\": \"Pathological Metastasis (M)\"},\n", + " {\"GDC\": \"ajcc_pathologic_n\", \"CRDC-H\": \"Pathological Node (N)\"},\n", + " {\"GDC\": \"ajcc_pathologic_stage\", \"CRDC-H\": \"Pathological Overall\"},\n", + " {\"GDC\": \"ajcc_pathologic_t\", \"CRDC-H\": \"Pathological Tumor (T)\"},\n", + " {\"GDC\": \"age_at_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"ajcc_staging_system_edition\", \"CRDC-H\": None},\n", + " {\"GDC\": \"classification_of_tumor\", \"CRDC-H\": None},\n", + " {\"GDC\": \"created_datetime\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_last_follow_up\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_last_known_disease_status\", \"CRDC-H\": None},\n", + " {\"GDC\": \"days_to_recurrence\", \"CRDC-H\": None},\n", + " {\"GDC\": \"diagnosis_id\", \"CRDC-H\": None},\n", + " {\"GDC\": \"icd_10_code\", \"CRDC-H\": None},\n", + " {\"GDC\": \"last_known_disease_status\", \"CRDC-H\": None},\n", + " {\"GDC\": \"morphology\", \"CRDC-H\": None},\n", + " {\"GDC\": \"primary_diagnosis\", \"CRDC-H\": None},\n", + " {\"GDC\": \"prior_malignancy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"prior_treatment\", \"CRDC-H\": None},\n", + " {\"GDC\": \"progression_or_recurrence\", \"CRDC-H\": None},\n", + " {\"GDC\": \"site_of_resection_or_biopsy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"state\", \"CRDC-H\": None},\n", + " {\"GDC\": \"submitter_id\", \"CRDC-H\": None},\n", + " {\"GDC\": \"synchronous_malignancy\", \"CRDC-H\": None},\n", + " {\"GDC\": \"tissue_or_organ_of_origin\", \"CRDC-H\": None},\n", + " {\"GDC\": \"tumor_grade\", \"CRDC-H\": None},\n", + " {\"GDC\": \"updated_datetime\", \"CRDC-H\": None},\n", + " {\"GDC\": \"year_of_diagnosis\", \"CRDC-H\": None},\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a1b0bb2d", + "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", + "
GDCCRDC-H
0ajcc_clinical_mClinical Metastasis (M)
1ajcc_clinical_nClinical Node (N)
2ajcc_clinical_stageClinical Overall
3ajcc_clinical_tClinical Tumor (T)
4tumor_stageOverall
5ajcc_pathologic_mPathological Metastasis (M)
6ajcc_pathologic_nPathological Node (N)
7ajcc_pathologic_stagePathological Overall
8ajcc_pathologic_tPathological Tumor (T)
\n", + "
" + ], + "text/plain": [ + " GDC CRDC-H\n", + "0 ajcc_clinical_m Clinical Metastasis (M)\n", + "1 ajcc_clinical_n Clinical Node (N)\n", + "2 ajcc_clinical_stage Clinical Overall\n", + "3 ajcc_clinical_t Clinical Tumor (T)\n", + "4 tumor_stage Overall\n", + "5 ajcc_pathologic_m Pathological Metastasis (M)\n", + "6 ajcc_pathologic_n Pathological Node (N)\n", + "7 ajcc_pathologic_stage Pathological Overall\n", + "8 ajcc_pathologic_t Pathological Tumor (T)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdc_to_crdch_csoot_frame = pd.DataFrame(gdc_to_crdch_csoot_dict)\n", + "gdc_to_crdch_csoot_frame_complete = gdc_to_crdch_csoot_frame.loc[ ~ gdc_to_crdch_csoot_frame['CRDC-H'].isnull()]\n", + "gdc_to_crdch_csoot_frame_complete" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "cb104514", + "metadata": {}, + "outputs": [], + "source": [ + "# initialize\n", + "global_mapping_table = pd.DataFrame()\n", + "\n", + "def get_mapping_table(model_name, class_name, slot_name):\n", + " global global_mapping_table\n", + " current_url = f\"https://terminology.ccdh.io/models/{model_name}/entities/{class_name}/attributes/{slot_name}/mappings\"\n", + " response = requests.get(current_url)\n", + " resp_struct = response.json()\n", + " current_mappings = pd.DataFrame(resp_struct[\"mappings\"])\n", + " global_mapping_table = global_mapping_table.append(current_mappings)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5949bcf5", + "metadata": {}, + "outputs": [], + "source": [ + "# add suggestion to pull new content into global_mapping_table if no hits\n", + "# add required predicate handling\n", + "# add handling for len(results.index) == 0 or > 1\n", + "# add option for closest match via difflib.get_close_matches \n", + "# or something more quantitative\n", + "def get_mapping(model_name, mf, sl, required_pred=\"\"):\n", + " prefixed_mf = model_name + \".\" + mf\n", + " # print(prefixed_mf)\n", + " results = global_mapping_table.loc[\n", + " global_mapping_table['subject_match_field'].eq(prefixed_mf) &\n", + " global_mapping_table['subject_label'].eq(sl)\n", + " ]\n", + " if len(results.index) == 1:\n", + " return results.to_dict(orient=\"records\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d6494aad", + "metadata": {}, + "outputs": [], + "source": [ + "global_mapping_table = pd.DataFrame()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9019eece", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, 0)\n", + "(1402, 9)\n", + "(2081, 9)\n" + ] + } + ], + "source": [ + "\n", + "print(global_mapping_table.shape)\n", + "get_mapping_table(\"CRDC-H\", \"BodySite\", \"site\")\n", + "print(global_mapping_table.shape)\n", + "get_mapping_table(\"CRDC-H\", \"CancerStageObservation\", \"valueCodeableConcept\")\n", + "print(global_mapping_table.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4cb0009b", + "metadata": {}, + "outputs": [], + "source": [ + "# global_mapping_table" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "18f879c7", + "metadata": {}, + "outputs": [], + "source": [ + "# get_mapping(\"GDC.Case\", \"primary_site\", \"Brain\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "21a48c20", + "metadata": {}, + "outputs": [], + "source": [ + "# suggested_row['samples'][0]['sample_id']" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "17d589e7", + "metadata": {}, + "outputs": [], + "source": [ + "# suggested_row['primary_site']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "31005b07", + "metadata": {}, + "outputs": [], + "source": [ + "def transform_sample_to_specimen(sample):\n", + " \"\"\"\n", + " A method for transforming a GDC Sample into CCDH Specimen.\n", + " \"\"\"\n", + "\n", + " specimen = ccdh.Specimen(id = sample.get('sample_id'))\n", + " specimen.source_material_type = sample.get('sample_type')\n", + " specimen.general_tissue_morphology = sample.get('tissue_type')\n", + " specimen.specific_tissue_morphology = sample.get('tumor_code')\n", + " specimen.tumor_status_at_collection = sample.get('tumor_descriptor')\n", + " # we don't consistentely have created_datetimes\n", + " # need to check their format too\n", + "# if 'created_datetime' in sample and sample['created_datetime'] is not None :\n", + "# specimen.creation_activity = ccdh.SpecimenCreationActivity(\n", + "# date_ended=ccdh.TimePoint(\n", + "# dateTime=sample.get('created_datetime')\n", + "# )\n", + "# )\n", + "# else:\n", + "# print(\"creation_activity not created because created_datetime absent or equals None\")\n", + " return specimen\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "d065d4cd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Specimen(id='a118da56-784d-4b67-aade-d9a7a8b49f18', identifier=[], description=None, specimen_type=None, analyte_type=None, associated_project=None, data_provider=None, source_material_type='Primary Tumor', parent_specimen=[], source_subject=None, tumor_status_at_collection=None, creation_activity=None, processing_activity=[], storage_activity=[], transport_activity=[], contained_in=None, dimensional_measures=None, quantity_measure=[], quality_measure=[], cellular_composition_type=None, histological_composition_measures=[], general_tissue_pathology=None, specific_tissue_pathology=None, preinvasive_tissue_morphology=None, morphology_pathologically_confirmed=None, morphology_assessor_role=None, morphology_assessment_method=None, degree_of_dysplasia=None, dysplasia_fraction=None, related_document=[], section_location=None, derived_product=[], distance_from_paired_specimen=None)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's try creating a test specimen.\n", + "test_specimen = transform_sample_to_specimen(suggested_row['samples'][0])\n", + "test_specimen" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "53cad32f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Diagnosis(id=None, identifier=[], subject=None, age_at_diagnosis=Quantity(value_decimal=Decimal('123'), value_codeable_concept=None, unit=None), diagnosis_date=None, condition=None, primary_site=[], metastatic_site=[], stage=[], grade=[], morphology=None, disease_status=None, prior_diagnosis=None, method_of_diagnosis=None, related_specimen=[], primary_tumor_dimensional_measures=None, supporting_observation=[])" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ccdh.Diagnosis(age_at_diagnosis = ccdh.Quantity(value_decimal=\"123\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "107150ad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'age_at_diagnosis': 22107, 'ajcc_clinical_m': 'M1', 'ajcc_clinical_n': 'N1', 'ajcc_clinical_stage': 'Stage IVC', 'ajcc_clinical_t': 'T3', 'ajcc_pathologic_m': 'M1', 'ajcc_pathologic_n': 'N1', 'ajcc_pathologic_stage': 'Stage IVC', 'ajcc_pathologic_t': 'T3', 'ajcc_staging_system_edition': '7th', 'classification_of_tumor': 'not reported', 'created_datetime': None, 'days_to_diagnosis': 0, 'days_to_last_follow_up': None, 'days_to_last_known_disease_status': None, 'days_to_recurrence': None, 'diagnosis_id': '9e30aa6c-91e6-5dd3-9512-75c162a89913', 'icd_10_code': 'C32.9', 'last_known_disease_status': 'not reported', 'morphology': '8070/3', 'primary_diagnosis': 'Squamous cell carcinoma, NOS', 'prior_malignancy': 'no', 'prior_treatment': 'No', 'progression_or_recurrence': 'not reported', 'site_of_resection_or_biopsy': 'Larynx, NOS', 'state': 'released', 'submitter_id': 'TCGA-QK-A8Z8_diagnosis', 'synchronous_malignancy': 'No', 'tissue_or_organ_of_origin': 'Larynx, NOS', 'tumor_grade': 'not reported', 'tumor_stage': 'stage ivc', 'updated_datetime': '2019-08-08T16:48:06.888156-05:00', 'year_of_diagnosis': 2013}\n", + "primary_diagnosis = Squamous cell carcinoma, NOS\n", + "morphology = 8070/3\n", + "grade = None\n", + "year_of_diagnosis = 2013\n" + ] + }, + { + "ename": "ValueError", + "evalue": " Unknown argument: year_at_diagnosis = Quantity(value_decimal=Decimal('2013'), ", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_383721/3442452710.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 112\u001b[0;31m example_diagnosis = transform_diagnosis(\n\u001b[0m\u001b[1;32m 113\u001b[0m \u001b[0mgdc_head_and_mouth\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m131\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"diagnoses\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgdc_head_and_mouth\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m131\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 114\u001b[0m )\n", + "\u001b[0;32m/tmp/ipykernel_383721/3442452710.py\u001b[0m in \u001b[0;36mtransform_diagnosis\u001b[0;34m(diagnosis, case)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[0mlist_to_pii\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdiagnosis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"primary_diagnosis\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"morphology\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"grade\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"year_of_diagnosis\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 79\u001b[0;31m ccdh_diagnosis = ccdh.Diagnosis(\n\u001b[0m\u001b[1;32m 80\u001b[0m \u001b[0mid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdiagnosis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"diagnosis_id\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m related_specimen=[\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/crdch_model.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, id, identifier, subject, age_at_diagnosis, diagnosis_date, condition, primary_site, metastatic_site, stage, grade, morphology, disease_status, prior_diagnosis, method_of_diagnosis, related_specimen, primary_tumor_dimensional_measures, supporting_observation, **kwargs)\u001b[0m\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/crdch_model.py\u001b[0m in \u001b[0;36m__post_init__\u001b[0;34m(self, *_, **kwargs)\u001b[0m\n\u001b[1;32m 604\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_normalize_inlined_as_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mslot_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"supporting_observation\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mslot_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mObservation\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey_name\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"observation_type\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeyed\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 605\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 606\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__post_init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 607\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 608\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/.local/share/virtualenvs/example-data-8chtNU61/lib/python3.8/site-packages/linkml_runtime/utils/yamlutils.py\u001b[0m in \u001b[0;36m__post_init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrepr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m40\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreplace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'\\n'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'\\\\n'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0mmessages\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"{TypedNode.yaml_loc(k)} Unknown argument: {k} = {v}\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'\\n'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfiltr\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mCallable\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdict\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdict\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Unknown argument: year_at_diagnosis = Quantity(value_decimal=Decimal('2013'), " + ] + } + ], + "source": [ + "def create_body_site(site_input):\n", + " the_mapping = get_mapping(\"GDC.Case\", \"primary_site\", site_input)\n", + " mapped = ccdh.BodySite(\n", + " site=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=the_mapping[0][\"object_id\"],\n", + " system=\"undefined\",\n", + " label=the_mapping[0][\"object_label\"],\n", + " )\n", + " ],\n", + " text=site_input,\n", + " )\n", + " )\n", + " return mapped\n", + "\n", + "\n", + "def create_stage_from_gdc(current_prefix, diagnosis):\n", + " cancer_stage_method_type = None\n", + " \n", + " # if diagnosis.get('ajcc_staging_system_edition') == '7th':\n", + " # cancer_stage_method_type = 'AJCC staging system 7th edition'\n", + " \n", + " # Create an observation set\n", + " obs = ccdh.CancerStageObservationSet(method_type=cancer_stage_method_type)\n", + " for k, v in diagnosis.items():\n", + " # print(f\"trying {k} of {v}\")\n", + " qk = current_prefix + str(k)\n", + " current_mapping = get_mapping(current_prefix, k, v)\n", + " # print(current_mapping)\n", + " if current_mapping is not None:\n", + " crdch_diag_info_type = gdc_to_crdch_csoot_frame_complete[\"CRDC-H\"].loc[\n", + " gdc_to_crdch_csoot_frame_complete[\"GDC\"] == k\n", + " ]\n", + " crdch_diag_info_type = list(crdch_diag_info_type)\n", + " if len(crdch_diag_info_type) == 1:\n", + " crdch_diag_info_type = crdch_diag_info_type[0]\n", + " current_observation = ccdh.CancerStageObservation(\n", + " observation_type=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=crdch_diag_info_type,\n", + " system=\"undefined\",\n", + " )\n", + " ],\n", + " text=k,\n", + " ),\n", + " value_codeable_concept=ccdh.CodeableConcept(\n", + " coding=[\n", + " ccdh.Coding(\n", + " code=current_mapping[0][\"object_id\"],\n", + " system=\"undefined\",\n", + " label=current_mapping[0][\"object_label\"],\n", + " )\n", + " ],\n", + " text=v,\n", + " ),\n", + " )\n", + " # print(current_observation)\n", + " obs.observations.append(current_observation)\n", + " # print(obs)\n", + " return obs\n", + "\n", + "def printifin(current_dict, current_key):\n", + " if current_key in current_dict:\n", + " print(f\"{current_key} = {current_dict[current_key]}\")\n", + " else:\n", + " print(f\"{current_key} = {None}\")\n", + " \n", + "def list_to_pii(current_dict, key_list):\n", + " for i in key_list:\n", + " printifin(current_dict, i)\n", + "\n", + "\n", + "def transform_diagnosis(diagnosis, case):\n", + " print(diagnosis)\n", + " list_to_pii(diagnosis, [\"primary_diagnosis\", \"morphology\", \"grade\", \"year_of_diagnosis\"])\n", + " \n", + " ccdh_diagnosis = ccdh.Diagnosis(\n", + " id=diagnosis.get(\"diagnosis_id\"),\n", + " related_specimen=[\n", + " transform_sample_to_specimen(sample) for sample in case.get(\"samples\")\n", + " ],\n", + " stage=create_stage_from_gdc(\"GDC.Diagnosis\", diagnosis),\n", + "# age_at_diagnosis = ccdh.Quantity(value_decimal=diagnosis['year_of_diagnosis'])\n", + " )\n", + "\n", + " # ccdh_diagnosis = ccdh.Diagnosis(\n", + " # condition=diagnosis.get('primary_diagnosis'),\n", + " # morphology=diagnosis.get('morphology'),\n", + " # grade=diagnosis.get('grade'),\n", + " # year_at_diagnosis=diagnosis.get('year_of_diagnosis'),\n", + " # )\n", + "\n", + " ccdh_diagnosis.identifier = [\n", + " ccdh.Identifier(system=\"GDC-submitter-id\", value=diagnosis.get(\"submitter_id\"))\n", + " ]\n", + "\n", + " if \"primary_site\" in case and case[\"primary_site\"] != \"\":\n", + " body_site = create_body_site(case[\"primary_site\"])\n", + " if body_site is not None:\n", + " ccdh_diagnosis.metastatic_site.append(body_site)\n", + " else:\n", + " print(\"returned body_site is None\")\n", + " else:\n", + " print(\"case didn't seem to have a populated primary_site\")\n", + "\n", + " return ccdh_diagnosis\n", + " pass\n", + "\n", + "\n", + "example_diagnosis = transform_diagnosis(\n", + " gdc_head_and_mouth[131][\"diagnoses\"][0], gdc_head_and_mouth[131]\n", + ")\n", + "print(\"\\n\")\n", + "print(yaml_dumper.dumps(example_diagnosis))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1be21d55", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 13884758f013b82ff1db416f5ff166c88947dd12 Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 4 Nov 2021 13:41:56 -0400 Subject: [PATCH 04/11] recapitulate --- Diagnosis.yaml | 23 ++++++++++++++++++++++ cancer_stage_observation_set.py | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 Diagnosis.yaml create mode 100644 cancer_stage_observation_set.py diff --git a/Diagnosis.yaml b/Diagnosis.yaml new file mode 100644 index 0000000..c56abed --- /dev/null +++ b/Diagnosis.yaml @@ -0,0 +1,23 @@ +stage: +- method_type: + - coding: + - code: C125738 + system: http://ncithesaurus.nci.nih.gov/ + label: FIGO Stage + tag: + - harmonized + observations: + - observation_type: + coding: + - code: C25605 + system: http://ncithesaurus.nci.nih.gov/ + label: Overall + tag: + - harmonized + value_codeable_concept: + coding: + - code: C96258 + system: http://ncithesaurus.nci.nih.gov/ + label: FIGO Stage IIIC + tag: + - harmonized diff --git a/cancer_stage_observation_set.py b/cancer_stage_observation_set.py new file mode 100644 index 0000000..587f0fd --- /dev/null +++ b/cancer_stage_observation_set.py @@ -0,0 +1,34 @@ +import crdch_model as cm +from linkml_runtime.dumpers import yaml_dumper + +csos = cm.CancerStageObservationSet() + +ncit_sys_url = "http://ncithesaurus.nci.nih.gov/" + +ot = cm.Coding(code="C25605", system=ncit_sys_url, label="Overall") + +ot.tag.append("harmonized") + +otc = cm.CodeableConcept(coding=ot) + +vc = cm.Coding(code="C96258", system=ncit_sys_url, label="FIGO Stage IIIC") + +vc.tag.append("harmonized") + +vcc = cm.CodeableConcept(coding=vc) + +cso = cm.CancerStageObservation(observation_type=otc, value_codeable_concept=vcc) + +csos.observations.append(cso) + +mt = cm.Coding(code="C125738", system=ncit_sys_url, label="FIGO Stage") +mt.tag.append("harmonized") +mtc = cm.CodeableConcept(coding=mt) + +csos.method_type.append(mtc) + +d = cm.Diagnosis() + +d.stage.append(csos) + +yaml_dumper.dump(d, to_file="Diagnosis.yaml") From dcb96604f6c60512b8d881952904a8ce9bcd9d30 Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 11 Nov 2021 08:29:24 -0500 Subject: [PATCH 05/11] recreate 'bugs' for LinkML FAQ' --- Diagnosis_id.yaml | 59 ++++++++++++++++++++++++++++++++++++++++ instantiate_from_yaml.py | 8 ++++++ 2 files changed, 67 insertions(+) create mode 100644 Diagnosis_id.yaml create mode 100644 instantiate_from_yaml.py diff --git a/Diagnosis_id.yaml b/Diagnosis_id.yaml new file mode 100644 index 0000000..5005762 --- /dev/null +++ b/Diagnosis_id.yaml @@ -0,0 +1,59 @@ +id: "pdc-diagnosis:ff2f0efb-70ca-11e8-bcf1-0a2705229b82" +#identifier: # type = Identifier +# - value: "tcga:TCGA-13-1409-DX" +age_at_diagnosis: # type = Quantity + value_decimal: 26836 + unit: # type = CodeableConcept + coding: # type = Coding + - code: C25301 + label: Day + system: http://ncithesaurus.nci.nih.gov/ + tag: + - harmonized +morphology: # type = CodeableConcept + coding: # type = Coding + - code: C3778 + label: Serous Cystadenocarcinoma + system: https://ncithesaurus.nci.nih.gov/ + tag: + - harmonized +condition: # type = CodeableConcept + coding: # type = Coding + - code: C3778 + label: Serous Cystadenocarcinoma + system: https://ncithesaurus.nci.nih.gov/ + tag: + - harmonized +#primary_site: # type = BodySite +# - site: # type = CodeableConcept +# coding: # type = Coding +# - code: C12404 +# label: Ovary +# system: https://ncithesaurus.nci.nih.gov/ +# tag: +# - harmonized +stage: # type = CancerStageObservationSet + - method_type: # type = CodeableConcept + - coding: # type = Coding + - code: C125738 + label: FIGO Stage + system: https://ncithesaurus.nci.nih.gov/ + tag: + - harmonized +# - observations: # type = CancerStageObservation +# - observation_type: # type = CodeableConcept +# coding: # type = Coding +# - code: C25605 +# label: Overall +# system: http://ncithesaurus.nci.nih.gov/ +# tag: +# - harmonized +# value_codeable_concept: # type = CodeableConcept +# coding: # type = Coding +# - code: C96258 +# label: FIGO Stage IIIC +# system: http://ncithesaurus.nci.nih.gov/ +# tag: +# - harmonized +#diagnosis_date: +# date_time: 2008 diff --git a/instantiate_from_yaml.py b/instantiate_from_yaml.py new file mode 100644 index 0000000..cd38991 --- /dev/null +++ b/instantiate_from_yaml.py @@ -0,0 +1,8 @@ +from crdch_model import Diagnosis, CancerStageObservationSet, CodeableConcept +from linkml_runtime.loaders import yaml_loader + +full_fname = "Diagnosis_id.yaml" + +d = yaml_loader.load(full_fname, Diagnosis) + +print(d) From e4ca81443a3d64a03fad58d0b8e09596f699fb85 Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 11 Nov 2021 08:50:00 -0500 Subject: [PATCH 06/11] unhashable codable concept?! --- .gitignore | 2 ++ cancer_stage_observation_set.py | 34 -------------------------- gen_diag_with_stage_obs_set.py | 31 +++++++++++++++++++++++ gen_diag_with_stage_obs_set.yaml | 23 +++++++++++++++++ instantiate_diag_with_stage_obs_set.py | 8 ++++++ instantiate_from_yaml.py | 8 ------ 6 files changed, 64 insertions(+), 42 deletions(-) delete mode 100644 cancer_stage_observation_set.py create mode 100644 gen_diag_with_stage_obs_set.py create mode 100644 gen_diag_with_stage_obs_set.yaml create mode 100644 instantiate_diag_with_stage_obs_set.py delete mode 100644 instantiate_from_yaml.py diff --git a/.gitignore b/.gitignore index b6e4761..715b946 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.idea + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/cancer_stage_observation_set.py b/cancer_stage_observation_set.py deleted file mode 100644 index 587f0fd..0000000 --- a/cancer_stage_observation_set.py +++ /dev/null @@ -1,34 +0,0 @@ -import crdch_model as cm -from linkml_runtime.dumpers import yaml_dumper - -csos = cm.CancerStageObservationSet() - -ncit_sys_url = "http://ncithesaurus.nci.nih.gov/" - -ot = cm.Coding(code="C25605", system=ncit_sys_url, label="Overall") - -ot.tag.append("harmonized") - -otc = cm.CodeableConcept(coding=ot) - -vc = cm.Coding(code="C96258", system=ncit_sys_url, label="FIGO Stage IIIC") - -vc.tag.append("harmonized") - -vcc = cm.CodeableConcept(coding=vc) - -cso = cm.CancerStageObservation(observation_type=otc, value_codeable_concept=vcc) - -csos.observations.append(cso) - -mt = cm.Coding(code="C125738", system=ncit_sys_url, label="FIGO Stage") -mt.tag.append("harmonized") -mtc = cm.CodeableConcept(coding=mt) - -csos.method_type.append(mtc) - -d = cm.Diagnosis() - -d.stage.append(csos) - -yaml_dumper.dump(d, to_file="Diagnosis.yaml") diff --git a/gen_diag_with_stage_obs_set.py b/gen_diag_with_stage_obs_set.py new file mode 100644 index 0000000..e8dab6a --- /dev/null +++ b/gen_diag_with_stage_obs_set.py @@ -0,0 +1,31 @@ +import crdch_model as cm +from linkml_runtime.dumpers import yaml_dumper + +ncit_sys_url = "http://ncithesaurus.nci.nih.gov/" +harmonized_tag = "harmonized" +diagnosis_fn = "gen_diag_with_stage_obs_set.yaml" + +stage_obs_set = cm.CancerStageObservationSet() + +obs_type_coding = cm.Coding(code="C25605", system=ncit_sys_url, label="Overall") +obs_type_coding.tag.append(harmonized_tag) +obs_type_cc = cm.CodeableConcept(coding=obs_type_coding) + +stage_value_coding = cm.Coding(code="C96258", system=ncit_sys_url, label="FIGO Stage IIIC") +stage_value_coding.tag.append(harmonized_tag) +stage_value_cc = cm.CodeableConcept(coding=stage_value_coding) + +stage_obs = cm.CancerStageObservation(observation_type=obs_type_cc, value_codeable_concept=stage_value_cc) + +stage_obs_set.observations.append(stage_obs) + +meth_type_coding = cm.Coding(code="C125738", system=ncit_sys_url, label="FIGO Stage") +meth_type_coding.tag.append(harmonized_tag) +meth_type_cc = cm.CodeableConcept(coding=meth_type_coding) + +stage_obs_set.method_type.append(meth_type_cc) + +diag = cm.Diagnosis() +diag.stage.append(stage_obs_set) + +yaml_dumper.dump(diag, to_file=diagnosis_fn) diff --git a/gen_diag_with_stage_obs_set.yaml b/gen_diag_with_stage_obs_set.yaml new file mode 100644 index 0000000..c56abed --- /dev/null +++ b/gen_diag_with_stage_obs_set.yaml @@ -0,0 +1,23 @@ +stage: +- method_type: + - coding: + - code: C125738 + system: http://ncithesaurus.nci.nih.gov/ + label: FIGO Stage + tag: + - harmonized + observations: + - observation_type: + coding: + - code: C25605 + system: http://ncithesaurus.nci.nih.gov/ + label: Overall + tag: + - harmonized + value_codeable_concept: + coding: + - code: C96258 + system: http://ncithesaurus.nci.nih.gov/ + label: FIGO Stage IIIC + tag: + - harmonized diff --git a/instantiate_diag_with_stage_obs_set.py b/instantiate_diag_with_stage_obs_set.py new file mode 100644 index 0000000..4996cab --- /dev/null +++ b/instantiate_diag_with_stage_obs_set.py @@ -0,0 +1,8 @@ +from crdch_model import Diagnosis +from linkml_runtime.loaders import yaml_loader + +diagnosis_fn = "gen_diag_with_stage_obs_set.yaml" + +diag = yaml_loader.load(diagnosis_fn, Diagnosis) + +print(diagnosis_fn) diff --git a/instantiate_from_yaml.py b/instantiate_from_yaml.py deleted file mode 100644 index cd38991..0000000 --- a/instantiate_from_yaml.py +++ /dev/null @@ -1,8 +0,0 @@ -from crdch_model import Diagnosis, CancerStageObservationSet, CodeableConcept -from linkml_runtime.loaders import yaml_loader - -full_fname = "Diagnosis_id.yaml" - -d = yaml_loader.load(full_fname, Diagnosis) - -print(d) From 7a23c1cd0f762fbae8c76be1a88cb169368f683e Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 11 Nov 2021 08:56:18 -0500 Subject: [PATCH 07/11] makefile illustrates unhashable codable concept --- Makefile | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..876846b --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +.PHONY: all clean instantiate + +all: clean gen_diag_with_stage_obs_set.yaml instantiate + +clean: + rm -rf gen_diag_with_stage_obs_set.yaml + +gen_diag_with_stage_obs_set.yaml: gen_diag_with_stage_obs_set.py + pipenv run python $< + cat $@ + +instantiate: instantiate_diag_with_stage_obs_set.py + pipenv run python $< From ba83e7362ee2a0e1e44afb19b003d999426b0f7f Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 11 Nov 2021 09:02:16 -0500 Subject: [PATCH 08/11] more make automation and documnetation --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index 876846b..9d0c7d0 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,10 @@ all: clean gen_diag_with_stage_obs_set.yaml instantiate clean: rm -rf gen_diag_with_stage_obs_set.yaml + rm -rf Pipfile.lock + pipenv --rm + pipenv install + pipenv run pip list gen_diag_with_stage_obs_set.yaml: gen_diag_with_stage_obs_set.py pipenv run python $< From 061556713077371d25b8b252e142dc08c03ae7a9 Mon Sep 17 00:00:00 2001 From: "Mark A. Miller" Date: Thu, 11 Nov 2021 13:49:20 -0500 Subject: [PATCH 09/11] tobacco observation roundtrip --- Pipfile.lock | 686 +++++++++++++++++++++++++++--------------------- bottom_up.py | 0 tobacco_expo.py | 17 ++ 3 files changed, 402 insertions(+), 301 deletions(-) create mode 100644 bottom_up.py create mode 100644 tobacco_expo.py diff --git a/Pipfile.lock b/Pipfile.lock index 395cb59..ca51bba 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -23,9 +23,17 @@ }, "antlr4-python3-runtime": { "hashes": [ - "sha256:31f5abdc7faf16a1a6e9bf2eb31565d004359b821b09944436a34361929ae85a" + "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b" ], - "version": "==4.9.2" + "version": "==4.9.3" + }, + "appnope": { + "hashes": [ + "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442", + "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a" + ], + "markers": "platform_system == 'Darwin'", + "version": "==0.1.2" }, "argon2-cffi": { "hashes": [ @@ -41,6 +49,7 @@ "sha256:f710b61103d1a1f692ca3ecbd1373e28aa5e545ac625ba067ff2feca1b2bb870", "sha256:fa7e7d1fc22514a32b1761fdfa1882b6baa5c36bb3ef557bdd69e6fc9ba14a41" ], + "markers": "python_version >= '3.5'", "version": "==21.1.0" }, "argparse": { @@ -55,6 +64,7 @@ "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==21.2.0" }, "babel": { @@ -62,6 +72,7 @@ "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9", "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.9.1" }, "backcall": { @@ -76,6 +87,7 @@ "sha256:0900d8b37eba61a802ee40ac0061f8c2b5dee29c1927dd1d233e075ebf5a71da", "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994" ], + "markers": "python_version >= '3.6'", "version": "==4.1.0" }, "cachetools": { @@ -83,6 +95,7 @@ "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693", "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1" ], + "markers": "python_version ~= '3.5'", "version": "==4.2.4" }, "certifi": { @@ -166,6 +179,7 @@ "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, "crdch-model": { @@ -200,6 +214,7 @@ "sha256:f3a3dca9104aa14fd4210edcce6d9ce2b65bd9618c0b222135a40b9d6e2a9eeb", "sha256:f73988422b17f071ad3c4383551ace1ba5ed810cbab5f9c362783d22d40a08dc" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.5.1" }, "decorator": { @@ -207,6 +222,7 @@ "sha256:7b12e7c3c6ab203a29e157335e9122cb03de9ab7264b137594103fd4a683b374", "sha256:e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7" ], + "markers": "python_version >= '3.5'", "version": "==5.1.0" }, "defusedxml": { @@ -214,6 +230,7 @@ "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.7.1" }, "deprecated": { @@ -221,6 +238,7 @@ "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d", "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.2.13" }, "docutils": { @@ -228,6 +246,7 @@ "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125", "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.17.1" }, "entrypoints": { @@ -235,6 +254,7 @@ "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" ], + "markers": "python_version >= '2.7'", "version": "==0.3" }, "et-xmlfile": { @@ -242,83 +262,31 @@ "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c", "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada" ], + "markers": "python_version >= '3.6'", "version": "==1.1.0" }, "frozendict": { "hashes": [ - "sha256:3f00de72805cf4c9e81b334f3f04809278b967d2fed84552313a0fcce511beb1", - "sha256:5d3f75832c35d4df041f0e19c268964cbef29c1eb34cd3517cf883f1c2d089b9" + "sha256:a68f609d1af67da80b45519fdcfca2d60249c0a8c96e68279c1b6ddd92128204", + "sha256:d650f9cf3d2c5438b1631488a975a49b3bdd12c7a97eec59b85e57821eebf28a" ], - "version": "==2.0.6" + "markers": "python_version >= '3.6'", + "version": "==2.0.7" }, "graphviz": { "hashes": [ - "sha256:5dadec94046d82adaae6019311a30e0487536d9d5a60d85451f0ba32f9fc6559", - "sha256:ef6e2c5deb9cdcc0c7eece1d89625fd07b0f2208ea2bcb483520907ddf8b4e12" - ], - "version": "==0.17" - }, - "greenlet": { - "hashes": [ - "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711", - "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd", - "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073", - "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708", - "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67", - "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23", - "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1", - "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08", - "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd", - "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa", - "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8", - "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40", - "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab", - "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6", - "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc", - "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b", - "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e", - "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963", - "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3", - "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d", - "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d", - "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28", - "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3", - "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e", - "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c", - "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d", - "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0", - "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497", - "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee", - "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713", - "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58", - "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a", - "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06", - "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88", - "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4", - "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5", - "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c", - "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a", - "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1", - "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43", - "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627", - "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b", - "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168", - "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d", - "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5", - "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478", - "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf", - "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce", - "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c", - "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b" - ], - "markers": "python_version >= '3' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))", - "version": "==1.1.2" + "sha256:0f04e5f939d3a839b524283d590e941892c56e75e60e0f5238c431264f490022", + "sha256:f8bab3bf3eda40ab259bb96f786811b5dec6fd6957fa70a5b1977534e1ee2a40" + ], + "markers": "python_version >= '3.6'", + "version": "==0.18" }, "hbreader": { "hashes": [ "sha256:9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801", "sha256:d2c132f8ba6276d794c66224c3297cec25c8079d0a4cf019c061611e0a3b94fa" ], + "markers": "python_version >= '3.7'", "version": "==0.9.1" }, "idna": { @@ -331,10 +299,11 @@ }, "imagesize": { "hashes": [ - "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1", - "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1" + "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c", + "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d" ], - "version": "==1.2.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.3.0" }, "iniconfig": { "hashes": [ @@ -345,17 +314,19 @@ }, "ipykernel": { "hashes": [ - "sha256:0140f78bfd60e47e387b6433b4bed0f228986420dc4d5fac0e251c9711e23e29", - "sha256:5657a0ab3d9a9eba3eb78b261771d22158388f182e85668c536c1a9932b80e03" + "sha256:299795cca2c4aed7e233e3ad5360e1c73627fd0dcec11a9e75d5b2df43629353", + "sha256:f43de132feea90f86d68c51013afe9694f9415f440053ec9909dd656c75b04b5" ], - "version": "==6.4.2" + "markers": "python_version >= '3.7'", + "version": "==6.5.0" }, "ipython": { "hashes": [ - "sha256:2097be5c814d1b974aea57673176a924c4c8c9583890e7a5f082f547b9975b11", - "sha256:f16148f9163e1e526f1008d7c8d966d9c15600ca20d1a754287cf96d00ba6f1d" + "sha256:4f69d7423a5a1972f6347ff233e38bbf4df6a150ef20fbb00c635442ac3060aa", + "sha256:a658beaf856ce46bc453366d5dc6b2ddc6c481efd3540cb28aa3943819caac9f" ], - "version": "==7.28.0" + "markers": "python_version >= '3.7'", + "version": "==7.29.0" }, "ipython-genutils": { "hashes": [ @@ -383,34 +354,38 @@ "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93", "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707" ], + "markers": "python_version >= '3.6'", "version": "==0.18.0" }, "jinja2": { "hashes": [ - "sha256:827a0e32839ab1600d4eb1c4c33ec5a8edfbc5cb42dafa13b81f182f97784b45", - "sha256:8569982d3f0889eed11dd620c706d39b60c36d6d25843961f33f77fb6bc6b20c" + "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", + "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" ], - "version": "==3.0.2" + "markers": "python_version >= '3.6'", + "version": "==3.0.3" }, "json-flattener": { "hashes": [ "sha256:9a3d7c45e0b3636268efdb1a9d78734f0573e2a05ec4f00b6a677c69a63d1e3f", "sha256:af41c05fb15b6b9881faa95191e942e1387e305574b2269ebbecb4289173395b" ], + "markers": "python_version >= '3.7'", "version": "==0.1.7" }, "jsonasobj": { "hashes": [ - "sha256:221af946bbe4171505e81ea1f0c31d652e69c68e02fff742e37543abe08ff7d9", - "sha256:e87c47ec5ec3db65a212e15236fdefc38dd01bdcf563b0d53021095066cd5963" + "sha256:b9e329dc1ceaae7cf5d5b214684a0b100e0dad0be6d5bbabac281ec35ddeca65", + "sha256:d52e0544a54a08f6ea3f77fa3387271e3648655e0eace2f21e825c26370e44a2" ], - "version": "==2.0.1" + "version": "==1.3.1" }, "jsonasobj2": { "hashes": [ "sha256:12e86f86324d54fcf60632db94ea74488d5314e3da554c994fe1e2c6f29acb79", "sha256:f50b1668ef478004aa487b2d2d094c304e5cb6b79337809f4a1f2975cc7fbb4e" ], + "markers": "python_version >= '3.6'", "version": "==1.0.4" }, "jsonpatch": { @@ -418,6 +393,7 @@ "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397", "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==1.32" }, "jsonpath-ng": { @@ -430,18 +406,19 @@ }, "jsonpointer": { "hashes": [ - "sha256:150f80c5badd02c757da6644852f612f88e8b4bc2f9852dcbf557c8738919686", - "sha256:5a34b698db1eb79ceac454159d3f7c12a451a91f6334a4f638454327b7a89962" + "sha256:26d9a47a72d4dc3e3ae72c4c6cd432afd73c680164cd2540772eab53cb3823b6", + "sha256:f09f8deecaaa5aea65b5eb4f67ca4e54e1a61f7a11c75085e360fe6feb6a48bf" ], - "version": "==2.1" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.2" }, "jsonschema": { "hashes": [ - "sha256:166870c8ab27bd712a8627e0598de4685bd8d199c4d7bd7cacc3d941ba0c6ca0", - "sha256:5c1a282ee6b74235057421fd0f766ac5f2972f77440927f6471c9e8493632fac" + "sha256:2a0f162822a64d95287990481b45d82f096e99721c86534f48201b64ebca6e8c", + "sha256:390713469ae64b8a58698bb3cbc3859abe6925b565a973f87323ef21b09a27a8" ], "index": "pypi", - "version": "==4.1.2" + "version": "==4.2.1" }, "jupyter": { "hashes": [ @@ -457,6 +434,7 @@ "sha256:074bdeb1ffaef4a3095468ee16313938cfdc48fc65ca95cc18980b956c2e5d79", "sha256:8b6e06000eb9399775e0a55c52df6c1be4766666209c22f90c2691ded0e338dc" ], + "markers": "python_full_version >= '3.6.1'", "version": "==7.0.6" }, "jupyter-console": { @@ -464,14 +442,16 @@ "sha256:242248e1685039cd8bff2c2ecb7ce6c1546eb50ee3b08519729e6e881aec19c7", "sha256:7799c4ea951e0e96ba8260575423cb323ea5a03fcf5503560fa3e15748869e27" ], + "markers": "python_version >= '3.6'", "version": "==6.4.0" }, "jupyter-core": { "hashes": [ - "sha256:8dd262ec8afae95bd512518eb003bc546b76adbf34bf99410e9accdf4be9aa3a", - "sha256:ef210dcb4fca04de07f2ead4adf408776aca94d17151d6f750ad6ded0b91ea16" + "sha256:1c091f3bbefd6f2a8782f2c1db662ca8478ac240e962ae2c66f0b87c818154ea", + "sha256:dce8a7499da5a53ae3afd5a9f4b02e5df1d57250cf48f3ad79da23b4778cd6fa" ], - "version": "==4.8.1" + "markers": "python_version >= '3.6'", + "version": "==4.9.1" }, "jupyterlab-pygments": { "hashes": [ @@ -490,84 +470,100 @@ }, "linkml": { "hashes": [ - "sha256:3693ea4dba981157a79792a472fc17d85083d6c196344ee32afdb2426c331a40", - "sha256:cb184f5b4c8a7b21febcaf9d96ed353f93c1d5f77af99894ba9dd2007aaea0f0" + "sha256:232725199d6a9f703fd535c55a81fe23cde9100173a0b742cae49fe40bfc62be", + "sha256:ecf24ad3095cc398a8f2d4247c3c58dc7ed437105a646c1cea2a6d3d199f837b" ], "index": "pypi", - "version": "==1.1.10" + "version": "==1.1.12" }, "linkml-runtime": { "hashes": [ - "sha256:9479bac297aa3b30f053f663406603c3c4d27f58c2ed5f5728f1061530905334", - "sha256:a5d23cd8ab1d3fbc3567eb41e003abb5cc54fdf17bfda6ee7828a9a52e52cc4a" + "sha256:36b52c8737c53b0be76b4102abdc781f363fc213bd5ac59e3ed72c2051c9d12e", + "sha256:397a9556d1e942e768dd182743e5d6269fa37cc2ce3874dc0b1ccb8836a46124" ], - "version": "==1.1.2" + "markers": "python_version >= '3.7'", + "version": "==1.1.6" }, "linkml-runtime-api": { "hashes": [ "sha256:b18541410dabedfe61bb90ad2830e794c72417a4451563a2a02c486783df2ef4", "sha256:fb619e0e10a878502051eb316af431bd81849dc1966a926ee09c83b90ba24e59" ], + "markers": "python_version >= '3.7'", "version": "==0.0.4" }, "lxml": { "hashes": [ - "sha256:079f3ae844f38982d156efce585bc540c16a926d4436712cf4baee0cce487a3d", - "sha256:0fbcf5565ac01dff87cbfc0ff323515c823081c5777a9fc7703ff58388c258c3", - "sha256:122fba10466c7bd4178b07dba427aa516286b846b2cbd6f6169141917283aae2", - "sha256:1b38116b6e628118dea5b2186ee6820ab138dbb1e24a13e478490c7db2f326ae", - "sha256:1b7584d421d254ab86d4f0b13ec662a9014397678a7c4265a02a6d7c2b18a75f", - "sha256:26e761ab5b07adf5f555ee82fb4bfc35bf93750499c6c7614bd64d12aaa67927", - "sha256:289e9ca1a9287f08daaf796d96e06cb2bc2958891d7911ac7cae1c5f9e1e0ee3", - "sha256:2a9d50e69aac3ebee695424f7dbd7b8c6d6eb7de2a2eb6b0f6c7db6aa41e02b7", - "sha256:3082c518be8e97324390614dacd041bb1358c882d77108ca1957ba47738d9d59", - "sha256:33bb934a044cf32157c12bfcfbb6649807da20aa92c062ef51903415c704704f", - "sha256:3439c71103ef0e904ea0a1901611863e51f50b5cd5e8654a151740fde5e1cade", - "sha256:36108c73739985979bf302006527cf8a20515ce444ba916281d1c43938b8bb96", - "sha256:39b78571b3b30645ac77b95f7c69d1bffc4cf8c3b157c435a34da72e78c82468", - "sha256:4289728b5e2000a4ad4ab8da6e1db2e093c63c08bdc0414799ee776a3f78da4b", - "sha256:4bff24dfeea62f2e56f5bab929b4428ae6caba2d1eea0c2d6eb618e30a71e6d4", - "sha256:4c61b3a0db43a1607d6264166b230438f85bfed02e8cff20c22e564d0faff354", - "sha256:542d454665a3e277f76954418124d67516c5f88e51a900365ed54a9806122b83", - "sha256:5a0a14e264069c03e46f926be0d8919f4105c1623d620e7ec0e612a2e9bf1c04", - "sha256:5c8c163396cc0df3fd151b927e74f6e4acd67160d6c33304e805b84293351d16", - "sha256:64812391546a18896adaa86c77c59a4998f33c24788cadc35789e55b727a37f4", - "sha256:66e575c62792c3f9ca47cb8b6fab9e35bab91360c783d1606f758761810c9791", - "sha256:6f12e1427285008fd32a6025e38e977d44d6382cf28e7201ed10d6c1698d2a9a", - "sha256:74f7d8d439b18fa4c385f3f5dfd11144bb87c1da034a466c5b5577d23a1d9b51", - "sha256:7610b8c31688f0b1be0ef882889817939490a36d0ee880ea562a4e1399c447a1", - "sha256:76fa7b1362d19f8fbd3e75fe2fb7c79359b0af8747e6f7141c338f0bee2f871a", - "sha256:7728e05c35412ba36d3e9795ae8995e3c86958179c9770e65558ec3fdfd3724f", - "sha256:8157dadbb09a34a6bd95a50690595e1fa0af1a99445e2744110e3dca7831c4ee", - "sha256:820628b7b3135403540202e60551e741f9b6d3304371712521be939470b454ec", - "sha256:884ab9b29feaca361f7f88d811b1eea9bfca36cf3da27768d28ad45c3ee6f969", - "sha256:89b8b22a5ff72d89d48d0e62abb14340d9e99fd637d046c27b8b257a01ffbe28", - "sha256:92e821e43ad382332eade6812e298dc9701c75fe289f2a2d39c7960b43d1e92a", - "sha256:b007cbb845b28db4fb8b6a5cdcbf65bacb16a8bd328b53cbc0698688a68e1caa", - "sha256:bc4313cbeb0e7a416a488d72f9680fffffc645f8a838bd2193809881c67dd106", - "sha256:bccbfc27563652de7dc9bdc595cb25e90b59c5f8e23e806ed0fd623755b6565d", - "sha256:c1a40c06fd5ba37ad39caa0b3144eb3772e813b5fb5b084198a985431c2f1e8d", - "sha256:c47ff7e0a36d4efac9fd692cfa33fbd0636674c102e9e8d9b26e1b93a94e7617", - "sha256:c4f05c5a7c49d2fb70223d0d5bcfbe474cf928310ac9fa6a7c6dddc831d0b1d4", - "sha256:cdaf11d2bd275bf391b5308f86731e5194a21af45fbaaaf1d9e8147b9160ea92", - "sha256:ce256aaa50f6cc9a649c51be3cd4ff142d67295bfc4f490c9134d0f9f6d58ef0", - "sha256:d2e35d7bf1c1ac8c538f88d26b396e73dd81440d59c1ef8522e1ea77b345ede4", - "sha256:d916d31fd85b2f78c76400d625076d9124de3e4bda8b016d25a050cc7d603f24", - "sha256:df7c53783a46febb0e70f6b05df2ba104610f2fb0d27023409734a3ecbb78fb2", - "sha256:e1cbd3f19a61e27e011e02f9600837b921ac661f0c40560eefb366e4e4fb275e", - "sha256:efac139c3f0bf4f0939f9375af4b02c5ad83a622de52d6dfa8e438e8e01d0eb0", - "sha256:efd7a09678fd8b53117f6bae4fa3825e0a22b03ef0a932e070c0bdbb3a35e654", - "sha256:f2380a6376dfa090227b663f9678150ef27543483055cc327555fb592c5967e2", - "sha256:f8380c03e45cf09f8557bdaa41e1fa7c81f3ae22828e1db470ab2a6c96d8bc23", - "sha256:f90ba11136bfdd25cae3951af8da2e95121c9b9b93727b1b896e3fa105b2f586" - ], - "version": "==4.6.3" + "sha256:08eb9200d88b376a8ed5e50f1dc1d1a45b49305169674002a3b5929943390591", + "sha256:0b12c95542f04d10cba46b3ff28ea52ea56995b78cf918f0b11b05e75812bb79", + "sha256:0c15e1cd55055956e77b0732270f1c6005850696bc3ef3e03d01e78af84eaa42", + "sha256:15d0381feb56f08f78c5cc4fc385ddfe0bde1456e37f54a9322833371aec4060", + "sha256:197b7cb7a753cf553a45115739afd8458464a28913da00f5c525063f94cd3f48", + "sha256:20d7c8d90d449c6a353b15ee0459abae8395dbe59ad01e406ccbf30cd81c6f98", + "sha256:240db6f3228d26e3c6f4fad914b9ddaaf8707254e8b3efd564dc680c8ec3c264", + "sha256:2901625f4a878a055d275beedc20ba9cb359cefc4386a967222fee29eb236038", + "sha256:2b06a91cf7b8acea7793006e4ae50646cef0fe35ce5acd4f5cb1c77eb228e4a1", + "sha256:2eb90f6ec3c236ef2f1bb38aee7c0d23e77d423d395af6326e7cca637519a4cb", + "sha256:351482da8dd028834028537f08724b1de22d40dcf3bb723b469446564f409074", + "sha256:35752ee40f7bbf6adc9ff4e1f4b84794a3593736dcce80db32e3c2aa85e294ac", + "sha256:38b9de0de3aa689fe9fb9877ae1be1e83b8cf9621f7e62049d0436b9ecf4ad64", + "sha256:433df8c7dde0f9e41cbf4f36b0829d50a378116ef5e962ba3881f2f5f025c7be", + "sha256:4341d135f5660db10184963d9c3418c3e28d7f868aaf8b11a323ebf85813f7f4", + "sha256:45fdb2899c755138722797161547a40b3e2a06feda620cc41195ee7e97806d81", + "sha256:4717123f7c11c81e0da69989e5a64079c3f402b0efeb4c6241db6c369d657bd8", + "sha256:47e955112ce64241fdb357acf0216081f9f3255b3ac9c502ca4b3323ec1ca558", + "sha256:48eaac2991b3036175b42ee8d3c23f4cca13f2be8426bf29401a690ab58c88f4", + "sha256:4aa349c5567651f34d4eaae7de6ed5b523f6d70a288f9c6fbac22d13a0784e04", + "sha256:4ba74afe5ee5cb5e28d83b513a6e8f0875fda1dc1a9aea42cc0065f029160d2a", + "sha256:4ec9a80dd5704ecfde54319b6964368daf02848c8954d3bacb9b64d1c7659159", + "sha256:50790313df028aa05cf22be9a8da033b86c42fa32523e4fd944827b482b17bf0", + "sha256:51a0e5d243687596f46e24e464121d4b232ad772e2d1785b2a2c0eb413c285d4", + "sha256:523f195948a1ba4f9f5b7294d83c6cd876547dc741820750a7e5e893a24bbe38", + "sha256:543b239b191bb3b6d9bef5f09f1fb2be5b7eb09ab4d386aa655e4d53fbe9ff47", + "sha256:5ff5bb2a198ea67403bb6818705e9a4f90e0313f2215428ec51001ce56d939fb", + "sha256:601f0ab75538b280aaf1e720eb9d68d4fa104ac274e1e9e6971df488f4dcdb0f", + "sha256:6020c70ff695106bf80651953a23e37718ef1fee9abd060dcad8e32ab2dc13f3", + "sha256:619c6d2b552bba00491e96c0518aad94002651c108a0f7364ff2d7798812c00e", + "sha256:6298f5b42a26581206ef63fffa97c754245d329414108707c525512a5197f2ba", + "sha256:662523cd2a0246740225c7e32531f2e766544122e58bee70e700a024cfc0cf81", + "sha256:6764998345552b1dfc9326a932d2bad6367c6b37a176bb73ada6b9486bf602f7", + "sha256:6d422b3c729737d8a39279a25fa156c983a56458f8b2f97661ee6fb22b80b1d6", + "sha256:72e730d33fe2e302fd07285f14624fca5e5e2fb2bb4fb2c3941e318c41c443d1", + "sha256:75d3c5bbc0ddbad03bb68b9be638599f67e4b98ed3dcd0fec9f6f39e41ee96cb", + "sha256:7ae7089d81fc502df4b217ad77f03c54039fe90dac0acbe70448d7e53bfbc57e", + "sha256:80d10d53d3184837445ff8562021bdd37f57c4cadacbf9d8726cc16220a00d54", + "sha256:877666418598f6cb289546c77ff87590cfd212f903b522b0afa0b9fb73b3ccfb", + "sha256:9b87727561c1150c0cc91c5d9d389448b37a7d15f0ba939ed3d1acb2f11bf6c5", + "sha256:9c91a73971a922c13070fd8fa5a114c858251791ba2122a941e6aa781c713e44", + "sha256:9db24803fa71e3305fe4a7812782b708da21a0b774b130dd1860cf40a6d7a3ee", + "sha256:a75c1ad05eedb1a3ff2a34a52a4f0836cfaa892e12796ba39a7732c82701eff4", + "sha256:a77a3470ba37e11872c75ca95baf9b3312133a3d5a5dc720803b23098c653976", + "sha256:ab6db93a2b6b66cbf62b4e4a7135f476e708e8c5c990d186584142c77d7f975a", + "sha256:afd60230ad9d8bcba005945ec3a343722f09e0b7f8ae804246e5d2cfc6bd71a6", + "sha256:b0ca0ada9d3bc18bd6f611bd001a28abdd49ab9698bd6d717f7f5394c8e94628", + "sha256:b567178a74a2261345890eac66fbf394692a6e002709d329f28a673ca6042473", + "sha256:b667c51682fe9b9788c69465956baa8b6999531876ccedcafc895c74ad716cd8", + "sha256:bbf2dc330bd44bfc0254ab37677ec60f7c7ecea55ad8ba1b8b2ea7bf20c265f5", + "sha256:bdc224f216ead849e902151112efef6e96c41ee1322e15d4e5f7c8a826929aee", + "sha256:cf201bf5594d1aab139fe53e3fca457e4f8204a5bbd65d48ab3b82a16f517868", + "sha256:d43bd68714049c84e297c005456a15ecdec818f7b5aa5868c8b0a865cfb78a44", + "sha256:daf9bd1fee31f1c7a5928b3e1059e09a8d683ea58fb3ffc773b6c88cb8d1399c", + "sha256:e678a643177c0e5ec947b645fa7bc84260dfb9b6bf8fb1fdd83008dfc2ca5928", + "sha256:e91d24623e747eeb2d8121f4a94c6a7ad27dc48e747e2dc95bfe88632bd028a2", + "sha256:e95da348d57eb448d226a44b868ff2ca5786fbcbe417ac99ff62d0a7d724b9c7", + "sha256:ee9e4b07b0eba4b6a521509e9e1877476729c1243246b6959de697ebea739643", + "sha256:f5dd358536b8a964bf6bd48de038754c1609e72e5f17f5d21efe2dda17594dbf", + "sha256:ffd65cfa33fed01735c82aca640fde4cc63f0414775cba11e06f84fae2085a6e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==4.6.4" }, "markdown-it-py": { "hashes": [ "sha256:36be6bb3ad987bfdb839f5ba78ddf094552ca38ccbd784ae4f74a4e1419fc6e3", "sha256:98080fc0bc34c4f2bcf0846a096a9429acbd9d5d8e67ed34026c03c61c464389" ], + "markers": "python_version ~= '3.6'", "version": "==1.1.0" }, "markupsafe": { @@ -575,6 +571,7 @@ "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298", "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64", "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b", + "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194", "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567", "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff", "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724", @@ -582,6 +579,7 @@ "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646", "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35", "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6", + "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a", "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6", "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad", "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26", @@ -589,27 +587,36 @@ "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac", "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7", "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6", + "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047", "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75", "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f", + "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b", "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135", "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8", "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a", "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a", + "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1", "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9", "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864", "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914", + "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee", + "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f", "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18", "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8", "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2", "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d", "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b", "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b", + "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86", + "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6", "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f", "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb", "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833", "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28", + "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e", "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415", "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902", + "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f", "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d", "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9", "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d", @@ -617,16 +624,21 @@ "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066", "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c", "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1", + "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a", + "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207", "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f", "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53", + "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd", "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134", "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85", + "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9", "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5", "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94", "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509", "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51", "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872" ], + "markers": "python_version >= '3.6'", "version": "==2.0.1" }, "matplotlib-inline": { @@ -634,6 +646,7 @@ "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee", "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c" ], + "markers": "python_version >= '3.5'", "version": "==0.1.3" }, "mdit-py-plugins": { @@ -641,6 +654,7 @@ "sha256:1833bf738e038e35d89cb3a07eb0d227ed647ce7dd357579b65343740c6d249c", "sha256:5991cef645502e80a5388ec4fc20885d2313d4871e8b8e320ca2de14ac0c015f" ], + "markers": "python_version ~= '3.6'", "version": "==0.2.8" }, "mistune": { @@ -655,20 +669,23 @@ "sha256:40124b6f27a4c42ac7f06b385e23a9dcd03d84801e9c7130b59b3729a554b1f9", "sha256:f7f3b2d62db7655cde658eb5d62b2ec2a4631308137bd8d10f296a40d57bbbeb" ], + "markers": "python_version >= '3.6'", "version": "==0.15.2" }, "nbclient": { "hashes": [ - "sha256:6c8ad36a28edad4562580847f9f1636fe5316a51a323ed85a24a4ad37d4aefce", - "sha256:95a300c6fbe73721736cf13972a46d8d666f78794b832866ed7197a504269e11" + "sha256:542b1dfd492bc2524fff52064461149208ac3d53fa6353ce21da2219910b0cfc", + "sha256:ed7d18431393750d29a64da432e0b7889274eb5a5056682be5691b1b1dc8f755" ], - "version": "==0.5.4" + "markers": "python_full_version >= '3.6.1'", + "version": "==0.5.5" }, "nbconvert": { "hashes": [ "sha256:16ceecd0afaa8fd26c245fa32e2c52066c02f13aa73387fffafd84750baea863", "sha256:b1b9dc4f1ff6cafae0e6d91f42fb9046fdc32e6beb6d7e2fa2cd7191ad535240" ], + "markers": "python_version >= '3.7'", "version": "==6.2.0" }, "nbformat": { @@ -676,6 +693,7 @@ "sha256:b516788ad70771c6250977c1374fcca6edebe6126fd2adb5a69aa5c2356fd1c8", "sha256:eb8447edd7127d043361bc17f2f5a807626bc8e878c7709a1c647abda28a9171" ], + "markers": "python_version >= '3.5'", "version": "==5.1.3" }, "nest-asyncio": { @@ -683,6 +701,7 @@ "sha256:76d6e972265063fe92a90b9cc4fb82616e07d586b346ed9d2c89a4187acea39c", "sha256:afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa" ], + "markers": "python_version >= '3.5'", "version": "==1.5.1" }, "notebook": { @@ -690,60 +709,60 @@ "sha256:872e20da9ae518bbcac3e4e0092d5bd35454e847dedb8cb9739e9f3b68406be0", "sha256:f7b4362698fed34f44038de0517b2e5136c1e7c379797198c1736121d3d597bd" ], + "markers": "python_version >= '3.6'", "version": "==6.4.5" }, "numpy": { "hashes": [ - "sha256:043e83bfc274649c82a6f09836943e4a4aebe5e33656271c7dbf9621dd58b8ec", - "sha256:160ccc1bed3a8371bf0d760971f09bfe80a3e18646620e9ded0ad159d9749baa", - "sha256:188031f833bbb623637e66006cf75e933e00e7231f67e2b45cf8189612bb5dc3", - "sha256:28f15209fb535dd4c504a7762d3bc440779b0e37d50ed810ced209e5cea60d96", - "sha256:29fb3dcd0468b7715f8ce2c0c2d9bbbaf5ae686334951343a41bd8d155c6ea27", - "sha256:2a6ee9620061b2a722749b391c0d80a0e2ae97290f1b32e28d5a362e21941ee4", - "sha256:300321e3985c968e3ae7fbda187237b225f3ffe6528395a5b7a5407f73cf093e", - "sha256:32437f0b275c1d09d9c3add782516413e98cd7c09e6baf4715cbce781fc29912", - "sha256:3c09418a14471c7ae69ba682e2428cae5b4420a766659605566c0fa6987f6b7e", - "sha256:49c6249260890e05b8111ebfc391ed58b3cb4b33e63197b2ec7f776e45330721", - "sha256:4cc9b512e9fb590797474f58b7f6d1f1b654b3a94f4fa8558b48ca8b3cfc97cf", - "sha256:508b0b513fa1266875524ba8a9ecc27b02ad771fe1704a16314dc1a816a68737", - "sha256:50cd26b0cf6664cb3b3dd161ba0a09c9c1343db064e7c69f9f8b551f5104d654", - "sha256:5c4193f70f8069550a1788bd0cd3268ab7d3a2b70583dfe3b2e7f421e9aace06", - "sha256:5dfe9d6a4c39b8b6edd7990091fea4f852888e41919d0e6722fe78dd421db0eb", - "sha256:63571bb7897a584ca3249c86dd01c10bcb5fe4296e3568b2e9c1a55356b6410e", - "sha256:75621882d2230ab77fb6a03d4cbccd2038511491076e7964ef87306623aa5272", - "sha256:75eb7cadc8da49302f5b659d40ba4f6d94d5045fbd9569c9d058e77b0514c9e4", - "sha256:88a5d6b268e9ad18f3533e184744acdaa2e913b13148160b1152300c949bbb5f", - "sha256:8a10968963640e75cc0193e1847616ab4c718e83b6938ae74dea44953950f6b7", - "sha256:90bec6a86b348b4559b6482e2b684db4a9a7eed1fa054b86115a48d58fbbf62a", - "sha256:98339aa9911853f131de11010f6dd94c8cec254d3d1f7261528c3b3e3219f139", - "sha256:a99a6b067e5190ac6d12005a4d85aa6227c5606fa93211f86b1dafb16233e57d", - "sha256:bffa2eee3b87376cc6b31eee36d05349571c236d1de1175b804b348dc0941e3f", - "sha256:c6c2d535a7beb1f8790aaa98fd089ceab2e3dd7ca48aca0af7dc60e6ef93ffe1", - "sha256:cc14e7519fab2a4ed87d31f99c31a3796e4e1fe63a86ebdd1c5a1ea78ebd5896", - "sha256:dd0482f3fc547f1b1b5d6a8b8e08f63fdc250c58ce688dedd8851e6e26cff0f3", - "sha256:dde972a1e11bb7b702ed0e447953e7617723760f420decb97305e66fb4afc54f", - "sha256:e54af82d68ef8255535a6cdb353f55d6b8cf418a83e2be3569243787a4f4866f", - "sha256:e606e6316911471c8d9b4618e082635cfe98876007556e89ce03d52ff5e8fcf0", - "sha256:f41b018f126aac18583956c54544db437f25c7ee4794bcb23eb38bef8e5e192a", - "sha256:f8f4625536926a155b80ad2bbff44f8cc59e9f2ad14cdda7acf4c135b4dc8ff2", - "sha256:fe52dbe47d9deb69b05084abd4b0df7abb39a3c51957c09f635520abd49b29dd" - ], - "markers": "platform_machine != 'aarch64' and platform_machine != 'arm64' and python_version < '3.10'", - "version": "==1.21.3" + "sha256:0b78ecfa070460104934e2caf51694ccd00f37d5e5dbe76f021b1b0b0d221823", + "sha256:1247ef28387b7bb7f21caf2dbe4767f4f4175df44d30604d42ad9bd701ebb31f", + "sha256:1403b4e2181fc72664737d848b60e65150f272fe5a1c1cbc16145ed43884065a", + "sha256:170b2a0805c6891ca78c1d96ee72e4c3ed1ae0a992c75444b6ab20ff038ba2cd", + "sha256:2e4ed57f45f0aa38beca2a03b6532e70e548faf2debbeb3291cfc9b315d9be8f", + "sha256:32fe5b12061f6446adcbb32cf4060a14741f9c21e15aaee59a207b6ce6423469", + "sha256:34f3456f530ae8b44231c63082c8899fe9c983fd9b108c997c4b1c8c2d435333", + "sha256:4c9c23158b87ed0e70d9a50c67e5c0b3f75bcf2581a8e34668d4e9d7474d76c6", + "sha256:5d95668e727c75b3f5088ec7700e260f90ec83f488e4c0aaccb941148b2cd377", + "sha256:615d4e328af7204c13ae3d4df7615a13ff60a49cb0d9106fde07f541207883ca", + "sha256:69077388c5a4b997442b843dbdc3a85b420fb693ec8e33020bb24d647c164fa5", + "sha256:74b85a17528ca60cf98381a5e779fc0264b4a88b46025e6bcbe9621f46bb3e63", + "sha256:81225e58ef5fce7f1d80399575576fc5febec79a8a2742e8ef86d7b03beef49f", + "sha256:8890b3360f345e8360133bc078d2dacc2843b6ee6059b568781b15b97acbe39f", + "sha256:92aafa03da8658609f59f18722b88f0a73a249101169e28415b4fa148caf7e41", + "sha256:9864424631775b0c052f3bd98bc2712d131b3e2cd95d1c0c68b91709170890b0", + "sha256:9e6f5f50d1eff2f2f752b3089a118aee1ea0da63d56c44f3865681009b0af162", + "sha256:a3deb31bc84f2b42584b8c4001c85d1934dbfb4030827110bc36bfd11509b7bf", + "sha256:ad010846cdffe7ec27e3f933397f8a8d6c801a48634f419e3d075db27acf5880", + "sha256:b1e2312f5b8843a3e4e8224b2b48fe16119617b8fc0a54df8f50098721b5bed2", + "sha256:bc988afcea53e6156546e5b2885b7efab089570783d9d82caf1cfd323b0bb3dd", + "sha256:c449eb870616a7b62e097982c622d2577b3dbc800aaf8689254ec6e0197cbf1e", + "sha256:c74c699b122918a6c4611285cc2cad4a3aafdb135c22a16ec483340ef97d573c", + "sha256:c885bfc07f77e8fee3dc879152ba993732601f1f11de248d4f357f0ffea6a6d4", + "sha256:e3c3e990274444031482a31280bf48674441e0a5b55ddb168f3a6db3e0c38ec8", + "sha256:e4799be6a2d7d3c33699a6f77201836ac975b2e1b98c2a07f66a38f499cb50ce", + "sha256:e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0", + "sha256:e89717274b41ebd568cd7943fc9418eeb49b1785b66031bc8a7f6300463c5898", + "sha256:f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73", + "sha256:fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d" + ], + "markers": "platform_machine == 'arm64' and python_version < '3.10'", + "version": "==1.21.4" }, "openpyxl": { "hashes": [ "sha256:40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f", "sha256:8f3b11bd896a95468a4ab162fc4fcd260d46157155d1f8bfaabb99d88cfcf79f" ], + "markers": "python_version >= '3.6'", "version": "==3.0.9" }, "packaging": { "hashes": [ - "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7", - "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14" + "sha256:096d689d78ca690e4cd8a89568ba06d07ca097e3306a4381635073ca91479966", + "sha256:14317396d1e8cdb122989b916fa2c7e9ca8e2be9e8060a6eff75b6b7b4d8a7e0" ], - "version": "==21.0" + "markers": "python_version >= '3.6'", + "version": "==21.2" }, "pandas": { "hashes": [ @@ -754,14 +773,17 @@ "sha256:35c77609acd2e4d517da41bae0c11c70d31c87aae8dd1aabd2670906c6d2c143", "sha256:372d72a3d8a5f2dbaf566a5fa5fa7f230842ac80f29a931fb4b071502cf86b9a", "sha256:42493f8ae67918bf129869abea8204df899902287a7f5eaf596c8e54e0ac7ff4", + "sha256:4acc28364863127bca1029fb72228e6f473bb50c32e77155e80b410e2068eeac", "sha256:5298a733e5bfbb761181fd4672c36d0c627320eb999c59c65156c6a90c7e1b4f", "sha256:5ba0aac1397e1d7b654fccf263a4798a9e84ef749866060d19e577e927d66e1b", + "sha256:9707bdc1ea9639c886b4d3be6e2a45812c1ac0c2080f94c31b71c9fa35556f9b", "sha256:a2aa18d3f0b7d538e21932f637fbfe8518d085238b429e4790a35e1e44a96ffc", "sha256:a388960f979665b447f0847626e40f99af8cf191bce9dc571d716433130cb3a7", "sha256:a51528192755f7429c5bcc9e80832c517340317c861318fea9cea081b57c9afd", "sha256:b528e126c13816a4374e56b7b18bfe91f7a7f6576d1aadba5dee6a87a7f479ae", "sha256:c1aa4de4919358c5ef119f6377bc5964b3a7023c23e845d9db7d9016fa0c5b1c", "sha256:c2646458e1dce44df9f71a01dc65f7e8fa4307f29e5c0f2f92c97f47a5bf22f5", + "sha256:c2f44425594ae85e119459bb5abb0748d76ef01d9c08583a667e3339e134218e", "sha256:d47750cf07dee6b55d8423471be70d627314277976ff2edd1381f02d52dbadf9", "sha256:d99d2350adb7b6c3f7f8f0e5dfb7d34ff8dd4bc0a53e62c445b7e43e163fce63", "sha256:dd324f8ee05925ee85de0ea3f0d66e1362e8c80799eb4eb04927d32335a3e44a", @@ -777,6 +799,7 @@ "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38", "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.5.0" }, "parse": { @@ -790,6 +813,7 @@ "sha256:12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398", "sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22" ], + "markers": "python_version >= '3.6'", "version": "==0.8.2" }, "pexpect": { @@ -807,11 +831,20 @@ ], "version": "==0.7.5" }, + "pip": { + "hashes": [ + "sha256:deaf32dcd9ab821e359cd8330786bcd077604b5c5730c0b096eda46f95c24a2d", + "sha256:fd11ba3d0fdb4c07fbc5ecbba0b1b719809420f25038f8ee3cd913d3faa3033a" + ], + "index": "pypi", + "version": "==21.3.1" + }, "pluggy": { "hashes": [ "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" ], + "markers": "python_version >= '3.6'", "version": "==1.0.0" }, "ply": { @@ -838,17 +871,19 @@ }, "prometheus-client": { "hashes": [ - "sha256:3a8baade6cb80bcfe43297e33e7623f3118d660d41387593758e2fb1ea173a86", - "sha256:b014bc76815eb1399da8ce5fc84b7717a3e63652b0c0f8804092c9363acab1b2" + "sha256:1b12ba48cee33b9b0b9de64a1047cbd3c5f2d0ab6ebcead7ddda613a750ec3c5", + "sha256:317453ebabff0a1b02df7f708efbab21e3489e7072b61cb6957230dd004a0af0" ], - "version": "==0.11.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.12.0" }, "prompt-toolkit": { "hashes": [ - "sha256:6076e46efae19b1e0ca1ec003ed37a933dc94b4d20f486235d436e64771dcd5c", - "sha256:eb71d5a6b72ce6db177af4a7d4d7085b99756bf656d98ffcc4fecd36850eea6c" + "sha256:449f333dd120bd01f5d296a8ce1452114ba3a71fae7288d2f0ae2c918764fa72", + "sha256:48d85cdca8b6c4f16480c7ce03fd193666b62b0a21667ca56b4bb5ad679d1170" ], - "version": "==3.0.20" + "markers": "python_full_version >= '3.6.2'", + "version": "==3.0.22" }, "ptyprocess": { "hashes": [ @@ -859,17 +894,18 @@ }, "py": { "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" + "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", + "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" ], - "version": "==1.10.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.11.0" }, "pycparser": { "hashes": [ - "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", - "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", + "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" ], - "version": "==2.20" + "version": "==2.21" }, "pydantic": { "hashes": [ @@ -896,6 +932,7 @@ "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1", "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833" ], + "markers": "python_full_version >= '3.6.1'", "version": "==1.8.2" }, "pygments": { @@ -903,6 +940,7 @@ "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380", "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6" ], + "markers": "python_version >= '3.5'", "version": "==2.10.0" }, "pyjsg": { @@ -930,6 +968,7 @@ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.4.7" }, "pyrsistent": { @@ -956,6 +995,7 @@ "sha256:f3ef98d7b76da5eb19c37fda834d50262ff9167c65658d1d8f974d2e4d90676b", "sha256:f4c8cabb46ff8e5d61f56a037974228e978f26bfefce4f61a4b1ac0ba7a2ab72" ], + "markers": "python_version >= '3.6'", "version": "==0.18.0" }, "pyshex": { @@ -963,6 +1003,7 @@ "sha256:3ea61c2a3f7436bac725bd5001072ba08d2dff5b836d5388ce9ff6f5251c2707", "sha256:6c9cecd7726461c2105330a9b2d5fd054f0e7966bfc9e3a73e7136b8be63d089" ], + "markers": "python_version >= '3.6'", "version": "==0.7.20" }, "pyshexc": { @@ -970,6 +1011,7 @@ "sha256:6f75e26dfda605c994031a72ca74b2b0079e1f7b12ab713e030078d8fa05dc3a", "sha256:ad83bb2a645f64becbf946d4bd170e35fd9b903616c7ee25d5a4ed188cf2d1dd" ], + "markers": "python_version >= '3.7'", "version": "==0.8.3" }, "pytest": { @@ -985,6 +1027,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.8.2" }, "pytz": { @@ -1026,6 +1069,7 @@ "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==5.4.1" }, "pyzmq": { @@ -1078,20 +1122,23 @@ "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93", "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3" ], + "markers": "python_version >= '3.6'", "version": "==22.3.0" }, "qtconsole": { "hashes": [ - "sha256:73994105b0369bb99f4164df4a131010f3c7b33a7b5169c37366358d8744675b", - "sha256:bbc34bca14f65535afcb401bc74b752bac955e5313001ba640383f7e5857dc49" + "sha256:6bb4df839609f240194213407872076f871e3a3884cf8e785068e8c7f39344c6", + "sha256:a287f9f0f7365ccb2f2a88e0cd4da883822e94d15b75dc19098cd8eec44d70d1" ], - "version": "==5.1.1" + "markers": "python_version >= '3.6'", + "version": "==5.2.0" }, "qtpy": { "hashes": [ "sha256:83c502973e9fdd7b648d8267a421229ea3d9a0651c22e4c65a4d9228479c39b6", "sha256:d6e4ae3a41f1fcb19762b58f35ad6dd443b4bdc867a4cb81ef10ccd85403c92b" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.11.2" }, "rdflib": { @@ -1120,14 +1167,16 @@ "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24", "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==2.26.0" }, "ruamel.yaml": { "hashes": [ - "sha256:1a771fc92d3823682b7f0893ad56cb5a5c87c48e62b5399d6f42c8759a583b33", - "sha256:ea21da1198c4b41b8e7a259301cc9710d3b972bf8ba52f06218478e6802dd1f1" + "sha256:9751de4cbb57d4bfbf8fc394e125ed4a2f170fbff3dc3d78abf50be85924f8be", + "sha256:9af3ec5d7f8065582f3aa841305465025d0afd26c5fb54e15b964e11838fc74f" ], - "version": "==0.17.16" + "markers": "python_version >= '3'", + "version": "==0.17.17" }, "ruamel.yaml.clib": { "hashes": [ @@ -1163,6 +1212,14 @@ ], "version": "==1.8.0" }, + "setuptools": { + "hashes": [ + "sha256:a481fbc56b33f5d8f6b33dce41482e64c68b668be44ff42922903b03872590bf", + "sha256:dae6b934a965c8a59d6d230d3867ec408bb95e73bd538ff77e71fedf1eaca729" + ], + "markers": "python_version >= '3.6'", + "version": "==58.5.3" + }, "shexjsg": { "hashes": [ "sha256:788991c4df2ca9b24258fb68c94107c3e140c70bbe398fb15f00338d2a9155e5", @@ -1175,6 +1232,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "snowballstemmer": { @@ -1189,6 +1247,7 @@ "sha256:0808cf53923c9ffbf069f80310c73a41d3ae170c266d805b56b6978a066f63e3", "sha256:e1decb006837c5b8f1f404710d86a36a6cd09301910c79165094a1354ddae487" ], + "markers": "python_version >= '3.6'", "version": "==0.4.1" }, "sparqlwrapper": { @@ -1203,23 +1262,26 @@ }, "sphinx": { "hashes": [ - "sha256:94078db9184491e15bce0a56d9186e0aec95f16ac20b12d00e06d4e36f1058a6", - "sha256:98a535c62a4fcfcc362528592f69b26f7caec587d32cd55688db580be0287ae0" + "sha256:6d051ab6e0d06cba786c4656b0fe67ba259fe058410f49e95bee6e49c4052cbf", + "sha256:7e2b30da5f39170efcd95c6270f07669d623c276521fee27ad6c380f49d2bf5b" ], - "version": "==4.2.0" + "markers": "python_version >= '3.6'", + "version": "==4.3.0" }, "sphinx-click": { "hashes": [ - "sha256:9b24c46f3b8f25fc639f47c97ac0361d9f80d48c2ed6b3917de2865bbdbe1785", - "sha256:e9ee2237e5a6b6620e9996b8214934afdf8f7f9f9fc082482c77be0e4379038e" + "sha256:29896dd12bfaacb566a8c7af2e2b675d010d69b0c5aad3b52495d4842358b15b", + "sha256:8529a02bea8cd2cd47daba2f71d7935c727c89d70baabec7fca31af49a0c379f" ], - "version": "==3.0.1" + "markers": "python_version >= '3.6'", + "version": "==3.0.2" }, "sphinx-rtd-theme": { "hashes": [ "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8", "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.0.0" }, "sphinxcontrib-applehelp": { @@ -1227,6 +1289,7 @@ "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a", "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58" ], + "markers": "python_version >= '3.5'", "version": "==1.0.2" }, "sphinxcontrib-devhelp": { @@ -1234,6 +1297,7 @@ "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e", "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4" ], + "markers": "python_version >= '3.5'", "version": "==1.0.2" }, "sphinxcontrib-htmlhelp": { @@ -1241,6 +1305,7 @@ "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07", "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2" ], + "markers": "python_version >= '3.6'", "version": "==2.0.0" }, "sphinxcontrib-jsmath": { @@ -1248,6 +1313,7 @@ "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8" ], + "markers": "python_version >= '3.5'", "version": "==1.0.1" }, "sphinxcontrib-qthelp": { @@ -1255,6 +1321,7 @@ "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72", "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6" ], + "markers": "python_version >= '3.5'", "version": "==1.0.3" }, "sphinxcontrib-serializinghtml": { @@ -1262,54 +1329,57 @@ "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd", "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952" ], + "markers": "python_version >= '3.5'", "version": "==1.1.5" }, "sqlalchemy": { "hashes": [ - "sha256:07ac4461a1116b317519ddf6f34bcb00b011b5c1370ebeaaf56595504ffc7e84", - "sha256:090536fd23bf49077ee94ff97142bc5ee8bad24294c3d7c8d5284267c885dde7", - "sha256:1dee515578d04bc80c4f9a8c8cfe93f455db725059e885f1b1da174d91c4d077", - "sha256:1ef37c9ec2015ce2f0dc1084514e197f2f199d3dc3514190db7620b78e6004c8", - "sha256:295b90efef1278f27fe27d94a45460ae3c17f5c5c2b32c163e29c359740a1599", - "sha256:2ce42ad1f59eb85c55c44fb505f8854081ee23748f76b62a7f569cfa9b6d0604", - "sha256:2feb028dc75e13ba93456a42ac042b255bf94dbd692bf80b47b22653bb25ccf8", - "sha256:31f4426cfad19b5a50d07153146b2bcb372a279975d5fa39f98883c0ef0f3313", - "sha256:3c0c5f54560a92691d54b0768d67b4d3159e514b426cfcb1258af8c195577e8f", - "sha256:463ef692259ff8189be42223e433542347ae17e33f91c1013e9c5c64e2798088", - "sha256:4a882dedb9dfa6f33524953c3e3d72bcf518a5defd6d5863150a821928b19ad3", - "sha256:4c185c928e2638af9bae13acc3f70e0096eac76471a1101a10f96b80666b8270", - "sha256:5039faa365e7522a8eb4736a54afd24a7e75dcc33b81ab2f0e6c456140f1ad64", - "sha256:5c6774b34782116ad9bdec61c2dbce9faaca4b166a0bc8e7b03c2b870b121d94", - "sha256:6bc7f9d7d90ef55e8c6db1308a8619cd8f40e24a34f759119b95e7284dca351a", - "sha256:7e8ef103eaa72a857746fd57dda5b8b5961e8e82a528a3f8b7e2884d8506f0b7", - "sha256:7ef421c3887b39c6f352e5022a53ac18de8387de331130481cb956b2d029cad6", - "sha256:908fad32c53b17aad12d722379150c3c5317c422437e44032256a77df1746292", - "sha256:91efbda4e6d311812f23996242bad7665c1392209554f8a31ec6db757456db5c", - "sha256:a6506c17b0b6016656783232d0bdd03fd333f1f654d51a14d93223f953903646", - "sha256:a95bf9c725012dcd7ea3cac16bf647054e0d62b31d67467d228338e6a163e4ff", - "sha256:ad7e403fc1e3cb76e802872694e30d6ca6129b9bc6ad4e7caa48ca35f8a144f8", - "sha256:b86f762cee3709722ab4691981958cbec475ea43406a6916a7ec375db9cbd9e9", - "sha256:ba84026e84379326bbf2f0c50792f2ae56ab9c01937df5597b6893810b8ca369", - "sha256:bca660b76672e15d70a7dba5e703e1ce451a0257b6bd2028e62b0487885e8ae9", - "sha256:c24c01dcd03426a5fe5ee7af735906bec6084977b9027a3605d11d949a565c01", - "sha256:c2f2114b0968a280f94deeeaa31cfbac9175e6ac7bd3058b3ce6e054ecd762b3", - "sha256:c46f013ff31b80cbe36410281675e1fb4eaf3e25c284fd8a69981c73f6fa4cb4", - "sha256:c757ba1279b85b3460e72e8b92239dae6f8b060a75fb24b3d9be984dd78cfa55", - "sha256:cc6b21f19bc9d4cd77cbcba5f3b260436ce033f1053cea225b6efea2603d201e", - "sha256:dbf588ab09e522ac2cbd010919a592c6aae2f15ccc3cd9a96d01c42fbc13f63e", - "sha256:de996756d894a2d52c132742e3b6d64ecd37e0919ddadf4dc3981818777c7e67", - "sha256:e700d48056475d077f867e6a36e58546de71bdb6fdc3d34b879e3240827fefab", - "sha256:f1e97c5f36b94542f72917b62f3a2f92be914b2cf33b80fa69cede7529241d2a", - "sha256:fb2aa74a6e3c2cebea38dd21633671841fbe70ea486053cba33d68e3e22ccc0a", - "sha256:ff8f91a7b1c4a1c7772caa9efe640f2768828897044748f2458b708f1026e2d4" - ], - "version": "==1.4.26" + "sha256:015511c52c650eebf1059ed8a21674d9d4ae567ebfd80fc73f8252faccd71864", + "sha256:0438bccc16349db2d5203598be6073175ce16d4e53b592d6e6cef880c197333e", + "sha256:10230364479429437f1b819a8839f1edc5744c018bfeb8d01320930f97695bc9", + "sha256:2146ef996181e3d4dd20eaf1d7325eb62d6c8aa4dc1677c1872ddfa8561a47d9", + "sha256:24828c5e74882cf41516740c0b150702bee4c6817d87d5c3d3bafef2e6896f80", + "sha256:2717ceae35e71de1f58b0d1ee7e773d3aab5c403c6e79e8d262277c7f7f95269", + "sha256:2e93624d186ea7a738ada47314701c8830e0e4b021a6bce7fbe6f39b87ee1516", + "sha256:435b1980c1333ffe3ab386ad28d7b209590b0fa83ea8544d853e7a22f957331b", + "sha256:486f7916ef77213103467924ef25f5ea1055ae901f385fe4d707604095fdf6a9", + "sha256:4ac8306e04275d382d6393e557047b0a9d7ddf9f7ca5da9b3edbd9323ea75bd9", + "sha256:4d1d707b752137e6bf45720648e1b828d5e4881d690df79cca07f7217ea06365", + "sha256:52f23a76544ed29573c0f3ee41f0ca1aedbab3a453102b60b540cc6fa55448ad", + "sha256:5beeff18b4e894f6cb73c8daf2c0d8768844ef40d97032bb187d75b1ec8de24b", + "sha256:6510f4a5029643301bdfe56b61e806093af2101d347d485c42a5535847d2c699", + "sha256:6afa9e4e63f066e0fd90a21db7e95e988d96127f52bfb298a0e9bec6999357a9", + "sha256:771eca9872b47a629010665ff92de1c248a6979b8d1603daced37773d6f6e365", + "sha256:78943451ab3ffd0e27876f9cea2b883317518b418f06b90dadf19394534637e9", + "sha256:8327e468b1775c0dfabc3d01f39f440585bf4d398508fcbbe2f0d931c502337d", + "sha256:8dbe5f639e6d035778ebf700be6d573f82a13662c3c2c3aa0f1dba303b942806", + "sha256:9134e5810262203388b203c2022bbcbf1a22e89861eef9340e772a73dd9076fa", + "sha256:9369f927f4d19b58322cfea8a51710a3f7c47a0e7f3398d94a4632760ecd74f6", + "sha256:987fe2f84ceaf744fa0e48805152abe485a9d7002c9923b18a4b2529c7bff218", + "sha256:a5881644fc51af7b232ab8d64f75c0f32295dfe88c2ee188023795cdbd4cf99b", + "sha256:a81e40dfa50ed3c472494adadba097640bfcf43db160ed783132045eb2093cb1", + "sha256:aadc6d1e58e14010ae4764d1ba1fd0928dbb9423b27a382ea3a1444f903f4084", + "sha256:ad8ec6b69d03e395db48df8991aa15fce3cd23e378b73e01d46a26a6efd5c26d", + "sha256:b02eee1577976acb4053f83d32b7826424f8b9f70809fa756529a52c6537eda4", + "sha256:bac949be7579fed824887eed6672f44b7c4318abbfb2004b2c6968818b535a2f", + "sha256:c035184af4e58e154b0977eea52131edd096e0754a88f7d5a847e7ccb3510772", + "sha256:c7d0a1b1258efff7d7f2e6cfa56df580d09ba29d35a1e3f604f867e1f685feb2", + "sha256:cc49fb8ff103900c20e4a9c53766c82a7ebbc183377fb357a8298bad216e9cdd", + "sha256:d768359daeb3a86644f3854c6659e4496a3e6bba2b4651ecc87ce7ad415b320c", + "sha256:d81c84c9d2523b3ea20f8e3aceea68615768a7464c0f9a9899600ce6592ec570", + "sha256:ec1c908fa721f2c5684900cc8ff75555b1a5a2ae4f5a5694eb0e37a5263cea44", + "sha256:fa52534076394af7315306a8701b726a6521b591d95e8f4e5121c82f94790e8d", + "sha256:fd421a14edf73cfe01e8f51ed8966294ee3b3db8da921cacc88e497fd6e977af" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.4.27" }, "terminado": { "hashes": [ "sha256:09fdde344324a1c9c6e610ee4ca165c4bb7f5bbf982fceeeb38998a988ef8452", "sha256:b20fd93cc57c1678c799799d117874367cc07a3d2d55be95205b1a88fa08393f" ], + "markers": "python_version >= '3.6'", "version": "==0.12.1" }, "testfixtures": { @@ -1324,6 +1394,7 @@ "sha256:1acf7a0bcd3004ae8357409fc33751e16d37ccc650921da1094a86581ad1e417", "sha256:8044f9a0bab6567fc644a3593164e872543bb44225b0e24846e2c89237937589" ], + "markers": "python_version >= '3.5'", "version": "==0.5.0" }, "toml": { @@ -1331,6 +1402,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", "version": "==0.10.2" }, "tornado": { @@ -1377,14 +1449,16 @@ "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68", "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5" ], + "markers": "python_version >= '3.5'", "version": "==6.1" }, "traitlets": { "hashes": [ - "sha256:03f172516916220b58c9f19d7f854734136dd9528103d04e9bf139a92c9f54c4", - "sha256:bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d" + "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7", + "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033" ], - "version": "==5.1.0" + "markers": "python_version >= '3.7'", + "version": "==5.1.1" }, "typing-extensions": { "hashes": [ @@ -1399,6 +1473,7 @@ "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece", "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", "version": "==1.26.7" }, "watchdog": { @@ -1427,6 +1502,7 @@ "sha256:e0f30db709c939cabf64a6dc5babb276e6d823fd84464ab916f9b9ba5623ca15", "sha256:e92c2d33858c8f560671b448205a268096e17870dcf60a9bb3ac7bfbafb7f5f9" ], + "markers": "python_version >= '3.6'", "version": "==2.1.6" }, "wcwidth": { @@ -1445,59 +1521,67 @@ }, "widgetsnbextension": { "hashes": [ - "sha256:079f87d87270bce047512400efd70238820751a11d2d8cb137a5a5bdbaf255c7", - "sha256:bd314f8ceb488571a5ffea6cc5b9fc6cba0adaf88a9d2386b93a489751938bcd" + "sha256:763a9fdc836d141fa080005a886d63f66f73d56dba1fb5961afc239c77708569", + "sha256:e0731a60ba540cd19bbbefe771a9076dcd2dde90713a8f87f27f53f2d1db7727" ], - "version": "==3.5.1" + "version": "==3.5.2" }, "wrapt": { "hashes": [ - "sha256:0473d1558b93e314e84313cc611f6c86be779369f9d3734302bf185a4d2625b1", - "sha256:0582180566e7a13030f896c2f1ac6a56134ab5f3c3f4c5538086f758b1caf3f2", - "sha256:15eee0e6fd07f48af2f66d0e6f2ff1916ffe9732d464d5e2390695296872cad9", - "sha256:1c5c4cf188b5643a97e87e2110bbd4f5bc491d54a5b90633837b34d5df6a03fe", - "sha256:1eb657ed84f4d3e6ad648483c8a80a0cf0a78922ef94caa87d327e2e1ad49b48", - "sha256:22142afab65daffc95863d78effcbd31c19a8003eca73de59f321ee77f73cadb", - "sha256:283e402e5357e104ac1e3fba5791220648e9af6fb14ad7d9cc059091af2b31d2", - "sha256:3de7b4d3066cc610054e7aa2c005645e308df2f92be730aae3a47d42e910566a", - "sha256:3e0d16eedc242d01a6f8cf0623e9cdc3b869329da3f97a15961d8864111d8cf0", - "sha256:3e33c138d1e3620b1e0cc6fd21e46c266393ed5dae0d595b7ed5a6b73ed57aa0", - "sha256:3f87042623530bcffea038f824b63084180513c21e2e977291a9a7e65a66f13b", - "sha256:53c6706a1bcfb6436f1625511b95b812798a6d2ccc51359cd791e33722b5ea32", - "sha256:593cb049ce1c391e0288523b30426c4430b26e74c7e6f6e2844bd99ac7ecc831", - "sha256:6e6d1a8eeef415d7fb29fe017de0e48f45e45efd2d1bfda28fc50b7b330859ef", - "sha256:724ed2bc9c91a2b9026e5adce310fa60c6e7c8760b03391445730b9789b9d108", - "sha256:728e2d9b7a99dd955d3426f237b940fc74017c4a39b125fec913f575619ddfe9", - "sha256:7574de567dcd4858a2ffdf403088d6df8738b0e1eabea220553abf7c9048f59e", - "sha256:8164069f775c698d15582bf6320a4f308c50d048c1c10cf7d7a341feaccf5df7", - "sha256:81a4cf257263b299263472d669692785f9c647e7dca01c18286b8f116dbf6b38", - "sha256:82223f72eba6f63eafca87a0f614495ae5aa0126fe54947e2b8c023969e9f2d7", - "sha256:8318088860968c07e741537030b1abdd8908ee2c71fbe4facdaade624a09e006", - "sha256:83f2793ec6f3ef513ad8d5b9586f5ee6081cad132e6eae2ecb7eac1cc3decae0", - "sha256:87ee3c73bdfb4367b26c57259995935501829f00c7b3eed373e2ad19ec21e4e4", - "sha256:8860c8011a6961a651b1b9f46fdbc589ab63b0a50d645f7d92659618a3655867", - "sha256:9adee1891253670575028279de8365c3a02d3489a74a66d774c321472939a0b1", - "sha256:a0cdedf681db878416c05e1831ec69691b0e6577ac7dca9d4f815632e3549580", - "sha256:a70d876c9aba12d3bd7f8f1b05b419322c6789beb717044eea2c8690d35cb91b", - "sha256:ada5e29e59e2feb710589ca1c79fd989b1dd94d27079dc1d199ec954a6ecc724", - "sha256:af9480de8e63c5f959a092047aaf3d7077422ded84695b3398f5d49254af3e90", - "sha256:b20703356cae1799080d0ad15085dc3213c1ac3f45e95afb9f12769b98231528", - "sha256:bc85d17d90201afd88e3d25421da805e4e135012b5d1f149e4de2981394b2a52", - "sha256:bff0a59387a0a2951cb869251257b6553663329a1b5525b5226cab8c88dcbe7e", - "sha256:c65e623ea7556e39c4f0818200a046cbba7575a6b570ff36122c276fdd30ab0a", - "sha256:c6ee5f8734820c21b9b8bf705e99faba87f21566d20626568eeb0d62cbeaf23c", - "sha256:c7ac2c7a8e34bd06710605b21dd1f3576764443d68e069d2afba9b116014d072", - "sha256:ccb34ce599cab7f36a4c90318697ead18312c67a9a76327b3f4f902af8f68ea1", - "sha256:d0d717e10f952df7ea41200c507cc7e24458f4c45b56c36ad418d2e79dacd1d4", - "sha256:d90520616fce71c05dedeac3a0fe9991605f0acacd276e5f821842e454485a70", - "sha256:dca56cc5963a5fd7c2aa8607017753f534ee514e09103a6c55d2db70b50e7447", - "sha256:df3eae297a5f1594d1feb790338120f717dac1fa7d6feed7b411f87e0f2401c7", - "sha256:e634136f700a21e1fcead0c137f433dde928979538c14907640607d43537d468", - "sha256:fbad5ba74c46517e6488149514b2e2348d40df88cd6b52a83855b7a8bf04723f", - "sha256:fbe6aebc9559fed7ea27de51c2bf5c25ba2a4156cf0017556f72883f2496ee9a", - "sha256:fdede980273aeca591ad354608778365a3a310e0ecdd7a3587b38bc5be9b1808" - ], - "version": "==1.13.2" + "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179", + "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096", + "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374", + "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df", + "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185", + "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785", + "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7", + "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909", + "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918", + "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33", + "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068", + "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829", + "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af", + "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79", + "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce", + "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc", + "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36", + "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade", + "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca", + "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32", + "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125", + "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e", + "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709", + "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f", + "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b", + "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb", + "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb", + "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489", + "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640", + "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb", + "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851", + "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d", + "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44", + "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13", + "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2", + "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb", + "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b", + "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9", + "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755", + "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c", + "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a", + "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf", + "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3", + "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229", + "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e", + "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de", + "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554", + "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10", + "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80", + "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056", + "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==1.13.3" } }, "develop": {} diff --git a/bottom_up.py b/bottom_up.py new file mode 100644 index 0000000..e69de29 diff --git a/tobacco_expo.py b/tobacco_expo.py new file mode 100644 index 0000000..b7c1201 --- /dev/null +++ b/tobacco_expo.py @@ -0,0 +1,17 @@ +import crdch_model as cm +from linkml_runtime.dumpers import yaml_dumper +from linkml_runtime.loaders import yaml_loader + +obs_type_coding = cm.Coding(code="123", system="http://example.com/system") +obs_type_cc = cm.CodeableConcept(coding=obs_type_coding) +tobacco_expo = cm.TobaccoExposureObservation(observation_type=obs_type_cc) + +print(tobacco_expo) + +tobacco_expo_file = "tobacco_expo.yaml" + +yaml_dumper.dump(tobacco_expo, to_file=tobacco_expo_file) + +instantiated = yaml_loader.load(tobacco_expo_file, cm.TobaccoExposureObservation) + +print(instantiated) From 01f0599afcb43f2e354ae318ba4084054bb87cd2 Mon Sep 17 00:00:00 2001 From: Mark Andrew Miller Date: Wed, 1 Dec 2021 16:44:02 -0500 Subject: [PATCH 10/11] linkml_linkml_issue_463_test --- .gitignore | 1 + Pipfile.lock | 202 +++++++++++------- gen_diag_with_stage_obs_set.py | 4 +- gen_diag_with_stage_obs_set.yaml | 23 -- instantiate_diag_with_stage_obs_set.py | 2 +- linkml_linkml_issue_463_test.py | 32 +++ .../CancerStageObservation.yaml | 13 ++ .../CancerStageObservationSet.yaml | 28 +++ .../CodeableConcept.yaml | 5 + linkml_linkml_issue_463_test_data/Coding.yaml | 2 + 10 files changed, 213 insertions(+), 99 deletions(-) delete mode 100644 gen_diag_with_stage_obs_set.yaml create mode 100644 linkml_linkml_issue_463_test.py create mode 100644 linkml_linkml_issue_463_test_data/CancerStageObservation.yaml create mode 100644 linkml_linkml_issue_463_test_data/CancerStageObservationSet.yaml create mode 100644 linkml_linkml_issue_463_test_data/CodeableConcept.yaml create mode 100644 linkml_linkml_issue_463_test_data/Coding.yaml diff --git a/.gitignore b/.gitignore index 715b946..75cb1b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store .idea # Byte-compiled / optimized / DLL files diff --git a/Pipfile.lock b/Pipfile.lock index ca51bba..9d6625e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -168,11 +168,11 @@ }, "charset-normalizer": { "hashes": [ - "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0", - "sha256:f7af805c321bfa1ce6714c51f254e0d5bb5e5834039bc17db7ebe3a4cec9492b" + "sha256:735e240d9a8506778cd7a453d97e817e536bb1fc29f4f6961ce297b9c7a917b0", + "sha256:83fcdeb225499d6344c8f7f34684c2981270beacc32ede2e669e94f7fa544405" ], "markers": "python_version >= '3'", - "version": "==2.0.7" + "version": "==2.0.8" }, "click": { "hashes": [ @@ -267,19 +267,75 @@ }, "frozendict": { "hashes": [ - "sha256:a68f609d1af67da80b45519fdcfca2d60249c0a8c96e68279c1b6ddd92128204", - "sha256:d650f9cf3d2c5438b1631488a975a49b3bdd12c7a97eec59b85e57821eebf28a" + "sha256:655b879217dd445a2023e16154cc231febef802b5c812d5c2e822280ad69e1dc", + "sha256:bbad8ef1a428f5e6f7e195742fd739f56a5a602f9cf9bbe86f55a4848b1fabd6" ], "markers": "python_version >= '3.6'", - "version": "==2.0.7" + "version": "==2.1.1" }, "graphviz": { "hashes": [ - "sha256:0f04e5f939d3a839b524283d590e941892c56e75e60e0f5238c431264f490022", - "sha256:f8bab3bf3eda40ab259bb96f786811b5dec6fd6957fa70a5b1977534e1ee2a40" + "sha256:60704af002770700b099e5d684b7f2bd59c06bbaec8f575def7fba7a31a1a27a", + "sha256:b42554a1c47f24a9473b7f4e380d17b228586a067c97ea69d5354d6074be8dfd" ], "markers": "python_version >= '3.6'", - "version": "==0.18" + "version": "==0.19" + }, + "greenlet": { + "hashes": [ + "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711", + "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd", + "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073", + "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708", + "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67", + "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23", + "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1", + "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08", + "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd", + "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa", + "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8", + "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40", + "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab", + "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6", + "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc", + "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b", + "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e", + "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963", + "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3", + "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d", + "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d", + "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28", + "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3", + "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e", + "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c", + "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d", + "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0", + "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497", + "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee", + "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713", + "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58", + "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a", + "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06", + "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88", + "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4", + "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5", + "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c", + "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a", + "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1", + "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43", + "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627", + "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b", + "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168", + "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d", + "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5", + "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478", + "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf", + "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce", + "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c", + "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b" + ], + "markers": "python_version >= '3' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", + "version": "==1.1.2" }, "hbreader": { "hashes": [ @@ -314,19 +370,19 @@ }, "ipykernel": { "hashes": [ - "sha256:299795cca2c4aed7e233e3ad5360e1c73627fd0dcec11a9e75d5b2df43629353", - "sha256:f43de132feea90f86d68c51013afe9694f9415f440053ec9909dd656c75b04b5" + "sha256:3a227788216b43982d9ac28195949467627b0d16e6b8af9741d95dcaa8c41a89", + "sha256:82ded8919fa7f5483be2b6219c3b13380d93faab1fc49cc2cfcd10e9e24cc158" ], "markers": "python_version >= '3.7'", - "version": "==6.5.0" + "version": "==6.6.0" }, "ipython": { "hashes": [ - "sha256:4f69d7423a5a1972f6347ff233e38bbf4df6a150ef20fbb00c635442ac3060aa", - "sha256:a658beaf856ce46bc453366d5dc6b2ddc6c481efd3540cb28aa3943819caac9f" + "sha256:c8f3e07aefb9cf9e067f39686f035ce09b27a1ee602116a3030b91b6fc138ee4", + "sha256:d41f8e80b99690122400f9b2069b12f670246a1b4cc5d332bd6c4e2500e6d6fb" ], "markers": "python_version >= '3.7'", - "version": "==7.29.0" + "version": "==7.30.0" }, "ipython-genutils": { "hashes": [ @@ -351,11 +407,11 @@ }, "jedi": { "hashes": [ - "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93", - "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707" + "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d", + "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab" ], "markers": "python_version >= '3.6'", - "version": "==0.18.0" + "version": "==0.18.1" }, "jinja2": { "hashes": [ @@ -431,11 +487,11 @@ }, "jupyter-client": { "hashes": [ - "sha256:074bdeb1ffaef4a3095468ee16313938cfdc48fc65ca95cc18980b956c2e5d79", - "sha256:8b6e06000eb9399775e0a55c52df6c1be4766666209c22f90c2691ded0e338dc" + "sha256:64d93752d8cbfba0c1030c3335c3f0d9797cd1efac012652a14aac1653db11a3", + "sha256:a5f995a73cffb314ed262713ae6dfce53c6b8216cea9f332071b8ff44a6e1654" ], "markers": "python_full_version >= '3.6.1'", - "version": "==7.0.6" + "version": "==7.1.0" }, "jupyter-console": { "hashes": [ @@ -470,19 +526,19 @@ }, "linkml": { "hashes": [ - "sha256:232725199d6a9f703fd535c55a81fe23cde9100173a0b742cae49fe40bfc62be", - "sha256:ecf24ad3095cc398a8f2d4247c3c58dc7ed437105a646c1cea2a6d3d199f837b" + "sha256:8d0eec8968900fed7079030f803d712936acb59d056ba8a2bcf1abca3357f285", + "sha256:ecb86e4cb3e1e129647028ff9a78c1b94943b65adb7b7697645f6781aa736985" ], "index": "pypi", - "version": "==1.1.12" + "version": "==1.1.13" }, "linkml-runtime": { "hashes": [ - "sha256:36b52c8737c53b0be76b4102abdc781f363fc213bd5ac59e3ed72c2051c9d12e", - "sha256:397a9556d1e942e768dd182743e5d6269fa37cc2ce3874dc0b1ccb8836a46124" + "sha256:67f16cec969456489d025a707456774c163415010fbf7f6568aa783bfc015784", + "sha256:d8f4a6ed685b31f1bb8f242a40e890ccd39d049b93b35777a9b3aa1c22c39b36" ], "markers": "python_version >= '3.7'", - "version": "==1.1.6" + "version": "==1.1.7" }, "linkml-runtime-api": { "hashes": [ @@ -674,19 +730,19 @@ }, "nbclient": { "hashes": [ - "sha256:542b1dfd492bc2524fff52064461149208ac3d53fa6353ce21da2219910b0cfc", - "sha256:ed7d18431393750d29a64da432e0b7889274eb5a5056682be5691b1b1dc8f755" + "sha256:8a307be4129cce5f70eb83a57c3edbe45656623c31de54e38bb6fdfbadc428b3", + "sha256:99e46ddafacd0b861293bf246fed8540a184adfa3aa7d641f89031ec070701e0" ], "markers": "python_full_version >= '3.6.1'", - "version": "==0.5.5" + "version": "==0.5.9" }, "nbconvert": { "hashes": [ - "sha256:16ceecd0afaa8fd26c245fa32e2c52066c02f13aa73387fffafd84750baea863", - "sha256:b1b9dc4f1ff6cafae0e6d91f42fb9046fdc32e6beb6d7e2fa2cd7191ad535240" + "sha256:5e77d6203854944520105e38f2563a813a4a3708e8563aa598928a3b5ee1081a", + "sha256:8f23fbeabda4a500685d788ee091bf22cf34119304314304fb39f16e2fc32f37" ], "markers": "python_version >= '3.7'", - "version": "==6.2.0" + "version": "==6.3.0" }, "nbformat": { "hashes": [ @@ -698,19 +754,19 @@ }, "nest-asyncio": { "hashes": [ - "sha256:76d6e972265063fe92a90b9cc4fb82616e07d586b346ed9d2c89a4187acea39c", - "sha256:afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa" + "sha256:21b4e6b9ee3fe9108a048e6f6f2f1bdc5d9926022c6c4592d668ea3493784d46", + "sha256:5df9667bed073cb93b299fd2f4e0c9372a370c237ec59ee24aa552867818d10e" ], "markers": "python_version >= '3.5'", - "version": "==1.5.1" + "version": "==1.5.2" }, "notebook": { "hashes": [ - "sha256:872e20da9ae518bbcac3e4e0092d5bd35454e847dedb8cb9739e9f3b68406be0", - "sha256:f7b4362698fed34f44038de0517b2e5136c1e7c379797198c1736121d3d597bd" + "sha256:5cad068fa82cd4fb98d341c052100ed50cd69fbfb4118cb9b8ab5a346ef27551", + "sha256:7bcdf79bd1cda534735bd9830d2cbedab4ee34d8fe1df6e7b946b3aab0902ba3" ], "markers": "python_version >= '3.6'", - "version": "==6.4.5" + "version": "==6.4.6" }, "numpy": { "hashes": [ @@ -745,7 +801,7 @@ "sha256:f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73", "sha256:fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d" ], - "markers": "platform_machine == 'arm64' and python_version < '3.10'", + "markers": "python_version < '3.10' and platform_machine != 'aarch64' and platform_machine != 'arm64'", "version": "==1.21.4" }, "openpyxl": { @@ -758,11 +814,11 @@ }, "packaging": { "hashes": [ - "sha256:096d689d78ca690e4cd8a89568ba06d07ca097e3306a4381635073ca91479966", - "sha256:14317396d1e8cdb122989b916fa2c7e9ca8e2be9e8060a6eff75b6b7b4d8a7e0" + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], "markers": "python_version >= '3.6'", - "version": "==21.2" + "version": "==21.3" }, "pandas": { "hashes": [ @@ -810,11 +866,11 @@ }, "parso": { "hashes": [ - "sha256:12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398", - "sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22" + "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", + "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75" ], "markers": "python_version >= '3.6'", - "version": "==0.8.2" + "version": "==0.8.3" }, "pexpect": { "hashes": [ @@ -879,11 +935,11 @@ }, "prompt-toolkit": { "hashes": [ - "sha256:449f333dd120bd01f5d296a8ce1452114ba3a71fae7288d2f0ae2c918764fa72", - "sha256:48d85cdca8b6c4f16480c7ce03fd193666b62b0a21667ca56b4bb5ad679d1170" + "sha256:5f29d62cb7a0ecacfa3d8ceea05a63cd22500543472d64298fc06ddda906b25d", + "sha256:7053aba00895473cb357819358ef33f11aa97e4ac83d38efb123e5649ceeecaf" ], "markers": "python_full_version >= '3.6.2'", - "version": "==3.0.22" + "version": "==3.0.23" }, "ptyprocess": { "hashes": [ @@ -965,11 +1021,11 @@ }, "pyparsing": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4", + "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", - "version": "==2.4.7" + "markers": "python_version >= '3.6'", + "version": "==3.0.6" }, "pyrsistent": { "hashes": [ @@ -1027,7 +1083,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pytz": { @@ -1127,11 +1183,11 @@ }, "qtconsole": { "hashes": [ - "sha256:6bb4df839609f240194213407872076f871e3a3884cf8e785068e8c7f39344c6", - "sha256:a287f9f0f7365ccb2f2a88e0cd4da883822e94d15b75dc19098cd8eec44d70d1" + "sha256:37317e9ee7faa2faaa927b09a6ec24a45cd7b19c9975d97ab6fd8985354839f1", + "sha256:bb3b9f0d674055e627c1097779c0d5e028176706d3b6be39cf52235f6ddcc88e" ], "markers": "python_version >= '3.6'", - "version": "==5.2.0" + "version": "==5.2.1" }, "qtpy": { "hashes": [ @@ -1202,7 +1258,7 @@ "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed", "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c" ], - "markers": "platform_python_implementation == 'CPython' and python_version < '3.10'", + "markers": "python_version < '3.10' and platform_python_implementation == 'CPython'", "version": "==0.2.6" }, "send2trash": { @@ -1214,11 +1270,11 @@ }, "setuptools": { "hashes": [ - "sha256:a481fbc56b33f5d8f6b33dce41482e64c68b668be44ff42922903b03872590bf", - "sha256:dae6b934a965c8a59d6d230d3867ec408bb95e73bd538ff77e71fedf1eaca729" + "sha256:b4c634615a0cf5b02cf83c7bedffc8da0ca439f00e79452699454da6fbd4153d", + "sha256:feb5ff19b354cde9efd2344ef6d5e79880ce4be643037641b49508bbb850d060" ], "markers": "python_version >= '3.6'", - "version": "==58.5.3" + "version": "==59.4.0" }, "shexjsg": { "hashes": [ @@ -1232,15 +1288,15 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "snowballstemmer": { "hashes": [ - "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2", - "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914" + "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", + "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a" ], - "version": "==2.1.0" + "version": "==2.2.0" }, "sparqlslurper": { "hashes": [ @@ -1262,11 +1318,11 @@ }, "sphinx": { "hashes": [ - "sha256:6d051ab6e0d06cba786c4656b0fe67ba259fe058410f49e95bee6e49c4052cbf", - "sha256:7e2b30da5f39170efcd95c6270f07669d623c276521fee27ad6c380f49d2bf5b" + "sha256:048dac56039a5713f47a554589dc98a442b39226a2b9ed7f82797fcb2fe9253f", + "sha256:32a5b3e9a1b176cc25ed048557d4d3d01af635e6b76c5bc7a43b0a34447fbd45" ], "markers": "python_version >= '3.6'", - "version": "==4.3.0" + "version": "==4.3.1" }, "sphinx-click": { "hashes": [ @@ -1402,7 +1458,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "tornado": { @@ -1462,11 +1518,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e", - "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7", - "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34" + "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e", + "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b" ], - "version": "==3.10.0.2" + "markers": "python_version >= '3.6'", + "version": "==4.0.1" }, "urllib3": { "hashes": [ diff --git a/gen_diag_with_stage_obs_set.py b/gen_diag_with_stage_obs_set.py index e8dab6a..863dcb9 100644 --- a/gen_diag_with_stage_obs_set.py +++ b/gen_diag_with_stage_obs_set.py @@ -15,7 +15,7 @@ stage_value_coding.tag.append(harmonized_tag) stage_value_cc = cm.CodeableConcept(coding=stage_value_coding) -stage_obs = cm.CancerStageObservation(observation_type=obs_type_cc, value_codeable_concept=stage_value_cc) +stage_obs = cm.CancerStageObservation(id=1, observation_type=obs_type_cc, value_codeable_concept=stage_value_cc) stage_obs_set.observations.append(stage_obs) @@ -25,7 +25,7 @@ stage_obs_set.method_type.append(meth_type_cc) -diag = cm.Diagnosis() +diag = cm.Diagnosis(id=1) diag.stage.append(stage_obs_set) yaml_dumper.dump(diag, to_file=diagnosis_fn) diff --git a/gen_diag_with_stage_obs_set.yaml b/gen_diag_with_stage_obs_set.yaml deleted file mode 100644 index c56abed..0000000 --- a/gen_diag_with_stage_obs_set.yaml +++ /dev/null @@ -1,23 +0,0 @@ -stage: -- method_type: - - coding: - - code: C125738 - system: http://ncithesaurus.nci.nih.gov/ - label: FIGO Stage - tag: - - harmonized - observations: - - observation_type: - coding: - - code: C25605 - system: http://ncithesaurus.nci.nih.gov/ - label: Overall - tag: - - harmonized - value_codeable_concept: - coding: - - code: C96258 - system: http://ncithesaurus.nci.nih.gov/ - label: FIGO Stage IIIC - tag: - - harmonized diff --git a/instantiate_diag_with_stage_obs_set.py b/instantiate_diag_with_stage_obs_set.py index 4996cab..a6febaf 100644 --- a/instantiate_diag_with_stage_obs_set.py +++ b/instantiate_diag_with_stage_obs_set.py @@ -5,4 +5,4 @@ diag = yaml_loader.load(diagnosis_fn, Diagnosis) -print(diagnosis_fn) +print(diag) diff --git a/linkml_linkml_issue_463_test.py b/linkml_linkml_issue_463_test.py new file mode 100644 index 0000000..e9cc3a8 --- /dev/null +++ b/linkml_linkml_issue_463_test.py @@ -0,0 +1,32 @@ +from crdch_model import Coding, CodeableConcept, CancerStageObservation, CancerStageObservationSet +from linkml_runtime.loaders import yaml_loader + +Coding_fn = "linkml_linkml_issue_463_test_data/Coding.yaml" +CodeableConcept_fn = "linkml_linkml_issue_463_test_data/CodeableConcept.yaml" +CancerStageObservation_fn = "linkml_linkml_issue_463_test_data/CancerStageObservation.yaml" +CancerStageObservationSet_fn = "linkml_linkml_issue_463_test_data/CancerStageObservationSet.yaml" + + +def load_and_type(fn, expected_type): + obj = None + try: + obj = yaml_loader.load(fn, expected_type) + except: + print(f"Exception on loading {fn} vs crdch_model") + assert isinstance(obj, expected_type) + + +def test_Coding(): + load_and_type(Coding_fn, Coding) + + +def test_CodeableConcept(): + load_and_type(CodeableConcept_fn, CodeableConcept) + + +def test_CancerStageObservation(): + load_and_type(CancerStageObservation_fn, CancerStageObservation) + + +def test_CancerStageObservationSet(): + load_and_type(CancerStageObservationSet_fn, CancerStageObservationSet) diff --git a/linkml_linkml_issue_463_test_data/CancerStageObservation.yaml b/linkml_linkml_issue_463_test_data/CancerStageObservation.yaml new file mode 100644 index 0000000..190242f --- /dev/null +++ b/linkml_linkml_issue_463_test_data/CancerStageObservation.yaml @@ -0,0 +1,13 @@ +id: 1 +observation_type: + coding: + - code: 'abc1' + system: 'xxx' + - code: 'abc2' + system: 'xxx' +value_codeable_concept: + coding: + - code: 'abc1' + system: 'xxx' + - code: 'abc2' + system: 'xxx' diff --git a/linkml_linkml_issue_463_test_data/CancerStageObservationSet.yaml b/linkml_linkml_issue_463_test_data/CancerStageObservationSet.yaml new file mode 100644 index 0000000..8039600 --- /dev/null +++ b/linkml_linkml_issue_463_test_data/CancerStageObservationSet.yaml @@ -0,0 +1,28 @@ +id: '1' +observations: +- observation_type: + coding: + - code: abc1 + system: xxx + - code: abc2 + system: xxx + value_codeable_concept: + coding: + - code: abc1 + system: xxx + - code: abc2 + system: xxx + id: '1' +- observation_type: + coding: + - code: abc1 + system: xxx + - code: abc2 + system: xxx + value_codeable_concept: + coding: + - code: abc1 + system: xxx + - code: abc2 + system: xxx + id: '2' diff --git a/linkml_linkml_issue_463_test_data/CodeableConcept.yaml b/linkml_linkml_issue_463_test_data/CodeableConcept.yaml new file mode 100644 index 0000000..46b137c --- /dev/null +++ b/linkml_linkml_issue_463_test_data/CodeableConcept.yaml @@ -0,0 +1,5 @@ +coding: + - code: 'abc1' + system: 'xxx' + - code: 'abc2' + system: 'xxx' \ No newline at end of file diff --git a/linkml_linkml_issue_463_test_data/Coding.yaml b/linkml_linkml_issue_463_test_data/Coding.yaml new file mode 100644 index 0000000..520c448 --- /dev/null +++ b/linkml_linkml_issue_463_test_data/Coding.yaml @@ -0,0 +1,2 @@ +code: 'abc' +system: 'xxx' From bb828edb8335d4dd6582e70fb0afab9d33129a8b Mon Sep 17 00:00:00 2001 From: Mark Andrew Miller Date: Fri, 3 Dec 2021 13:44:19 -0500 Subject: [PATCH 11/11] linkml_linkml_issue_463_test.py updates --- linkml_linkml_issue_463_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkml_linkml_issue_463_test.py b/linkml_linkml_issue_463_test.py index e9cc3a8..a27e863 100644 --- a/linkml_linkml_issue_463_test.py +++ b/linkml_linkml_issue_463_test.py @@ -11,7 +11,7 @@ def load_and_type(fn, expected_type): obj = None try: obj = yaml_loader.load(fn, expected_type) - except: + except Exception: print(f"Exception on loading {fn} vs crdch_model") assert isinstance(obj, expected_type)