From 9572025cdd3abe9458aa1a78f4fb16d53e01d753 Mon Sep 17 00:00:00 2001 From: puja-trivedi Date: Fri, 4 Oct 2024 04:02:26 +0000 Subject: [PATCH] pydantic version of library_generation model (library_generation.py) was updated. Pushed from brain-bican/model repository --- bkbit/models/library_generation.py | 13764 +++++++++++++++++++++++++-- 1 file changed, 13178 insertions(+), 586 deletions(-) diff --git a/bkbit/models/library_generation.py b/bkbit/models/library_generation.py index d19570f..9771a85 100644 --- a/bkbit/models/library_generation.py +++ b/bkbit/models/library_generation.py @@ -1,34 +1,32 @@ from __future__ import annotations + +import re +import sys from datetime import ( + date, datetime, - date + time ) from decimal import Decimal from enum import Enum -import re -import sys from typing import ( Any, + ClassVar, + Dict, List, Literal, - Dict, Optional, Union ) -from pydantic.version import VERSION as PYDANTIC_VERSION -if int(PYDANTIC_VERSION[0])>=2: - from pydantic import ( - BaseModel, - ConfigDict, - Field, - field_validator - ) -else: - from pydantic import ( - BaseModel, - Field, - validator - ) + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + RootModel, + field_validator +) + metamodel_version = "None" version = "None" @@ -46,6 +44,91 @@ class ConfiguredBaseModel(BaseModel): pass + + +class LinkMLMeta(RootModel): + root: Dict[str, Any] = {} + model_config = ConfigDict(frozen=True) + + def __getattr__(self, key:str): + return getattr(self.root, key) + + def __getitem__(self, key:str): + return self.root[key] + + def __setitem__(self, key:str, value): + self.root[key] = value + + def __contains__(self, key:str) -> bool: + return key in self.root + + +linkml_meta = LinkMLMeta({'default_prefix': 'bican', + 'default_range': 'string', + 'description': 'The Library Generation schema is designed to represent types ' + 'and relationships of samples and digital data assets ' + 'generated during processes that generate multimodal genomic ' + 'data.', + 'id': 'https://identifiers.org/brain-bican/library-generation-schema', + 'imports': ['bican_biolink', 'bican_prov', 'bican_core', 'linkml:types'], + 'name': 'library-generation-schema', + 'prefixes': {'NIMP': {'prefix_prefix': 'NIMP', + 'prefix_reference': 'http://example.org/NIMP/'}, + 'bican': {'prefix_prefix': 'bican', + 'prefix_reference': 'https://identifiers.org/brain-bican/vocab/'}, + 'linkml': {'prefix_prefix': 'linkml', + 'prefix_reference': 'https://w3id.org/linkml/'}, + 'ncbi': {'prefix_prefix': 'ncbi', + 'prefix_reference': 'https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi'}, + 'schema': {'prefix_prefix': 'schema', + 'prefix_reference': 'http://schema.org/'}, + 'spdx': {'prefix_prefix': 'spdx', + 'prefix_reference': 'http://spdx.org/rdf/terms#'}}, + 'source_file': 'library_generation.yaml', + 'subsets': {'alignment': {'description': 'A subset of slots/attributes that ' + 'are required for alignment.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'alignment'}, + 'analysis': {'description': 'A subset of slots/attributes that ' + 'are required for analysis.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'analysis'}, + 'bican': {'description': 'A subset of classes that are associated ' + 'with BICAN.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'bican'}, + 'library_generation': {'description': 'A subset of classes that ' + 'are associated with ' + 'library generation.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'library_generation'}, + 'processing_elements': {'description': 'A subset of classes that ' + 'are associated with ' + 'processing.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'processing_elements'}, + 'sequencing_elements': {'description': 'A subset of classes that ' + 'are associated with ' + 'sequencing.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'sequencing_elements'}, + 'tissue_specimen': {'description': 'A subset of classes that are ' + 'associated with tissue ' + 'specimens.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'tissue_specimen'}, + 'tracking': {'description': 'A subset of slots/attributes that ' + 'are required for tracking.', + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'name': 'tracking'}}, + 'title': 'Library Generation Schema'} ) + +class DigestType(str, Enum): + SHA1 = "spdx:checksumAlgorithm_sha1" + MD5 = "spdx:checksumAlgorithm_md5" + SHA256 = "spdx:checksumAlgorithm_sha256" + + class AmplifiedCdnaRnaAmplificationPassFail(str, Enum): # The RNA amplification passed the QA/QC Pass = "Pass" @@ -1220,17 +1303,65 @@ class AgeAtDeathUnit(str, Enum): years = "years" + class OntologyClass(ConfiguredBaseModel): """ a concept or class in an ontology, vocabulary or thesaurus. Note that nodes in a biolink compatible KG can be considered both instances of biolink classes, and OWL classes in their own right. In general you should not need to use this class directly. Instead, use the appropriate biolink class. For example, for the GO concept of endocytosis (GO:0006897), use bl:BiologicalProcess as the type. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:OntologyClass', + 'comments': ["This is modeled as a mixin. 'ontology class' should not be the " + 'primary type of a node in the KG. Instead you should use an ' + 'informative bioloink category, such as AnatomicalEntity (for ' + 'Uberon classes), ChemicalSubstance (for CHEBI or CHEMBL), etc', + 'Note that formally this is a metaclass. Instances of this class ' + "are instances in the graph, but can be the object of 'type' " + 'edges. For example, if we had a node in the graph representing ' + 'a specific brain of a specific patient (e.g brain001), this ' + 'could have a category of bl:Sample, and by typed more ' + 'specifically with an ontology class UBERON:nnn, which has as ' + 'category bl:AnatomicalEntity'], + 'definition_uri': 'https://w3id.org/biolink/vocab/OntologyClass', + 'exact_mappings': ['owl:Class', 'schema:Class'], + 'examples': [{'description': "the class 'brain' from the Uberon anatomy " + 'ontology', + 'value': 'UBERON:0000955'}], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['MESH', 'UMLS', 'KEGG.BRITE'], + 'mixin': True, + 'see_also': ['https://github.com/biolink/biolink-model/issues/486']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) class Annotation(ConfiguredBaseModel): """ Biolink Model root class for entity annotations. """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'biolink:Annotation', + 'definition_uri': 'https://w3id.org/biolink/vocab/Annotation', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) + pass @@ -1238,138 +1369,2139 @@ class QuantityValue(Annotation): """ A value of an attribute that is quantitative and measurable, expressed as a combination of a unit and a numeric value """ - has_unit: Optional[str] = Field(None, description="""connects a quantity value to a unit""") - has_numeric_value: Optional[float] = Field(None, description="""connects a quantity value to a number""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:QuantityValue', + 'definition_uri': 'https://w3id.org/biolink/vocab/QuantityValue', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) + + has_unit: Optional[str] = Field(None, description="""connects a quantity value to a unit""", json_schema_extra = { "linkml_meta": {'alias': 'has_unit', + 'close_mappings': ['EFO:0001697', 'UO-PROPERTY:is_unit_of'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_unit', + 'domain': 'quantity value', + 'domain_of': ['quantity value'], + 'exact_mappings': ['qud:unit', 'IAO:0000039'], + 'in_subset': ['samples'], + 'narrow_mappings': ['SNOMED:has_concentration_strength_denominator_unit', + 'SNOMED:has_concentration_strength_numerator_unit', + 'SNOMED:has_presentation_strength_denominator_unit', + 'SNOMED:has_presentation_strength_numerator_unit', + 'SNOMED:has_unit_of_presentation'], + 'slot_uri': 'biolink:has_unit'} }) + has_numeric_value: Optional[float] = Field(None, description="""connects a quantity value to a number""", json_schema_extra = { "linkml_meta": {'alias': 'has_numeric_value', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_numeric_value', + 'domain': 'quantity value', + 'domain_of': ['quantity value'], + 'exact_mappings': ['qud:quantityValue'], + 'in_subset': ['samples'], + 'slot_uri': 'biolink:has_numeric_value'} }) class Entity(ConfiguredBaseModel): """ Root Biolink Model class for all things and informational relationships, real or imagined. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'class_uri': 'biolink:Entity', + 'definition_uri': 'https://w3id.org/biolink/vocab/Entity', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Entity","biolink:Entity"]] = Field(["biolink:Entity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) class NamedThing(Entity): """ a databased entity or concept/class """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:NamedThing', + 'definition_uri': 'https://w3id.org/biolink/vocab/NamedThing', + 'exact_mappings': ['BFO:0000001', + 'WIKIDATA:Q35120', + 'UMLSSG:OBJC', + 'STY:T071', + 'dcid:Thing'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/NamedThing","biolink:NamedThing"]] = Field(["biolink:NamedThing"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) class Attribute(NamedThing, OntologyClass): """ A property or characteristic of an entity. For example, an apple may have properties such as color, shape, age, crispiness. An environmental sample may have attributes such as depth, lat, long, material. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - attribute_name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""") - has_attribute_type: str = Field(..., description="""connects an attribute to a class that describes it""") - has_quantitative_value: Optional[List[QuantityValue]] = Field(None, description="""connects an attribute to a value""") - has_qualitative_value: Optional[str] = Field(None, description="""connects an attribute to a value""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Attribute', + 'definition_uri': 'https://w3id.org/biolink/vocab/Attribute', + 'exact_mappings': ['SIO:000614'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['EDAM-DATA', 'EDAM-FORMAT', 'EDAM-OPERATION', 'EDAM-TOPIC'], + 'in_subset': ['samples'], + 'mixins': ['ontology class'], + 'slot_usage': {'name': {'description': "The human-readable 'attribute name' " + 'can be set to a string which reflects ' + 'its context of interpretation, e.g. ' + 'SEPIO evidence/provenance/confidence ' + 'annotation or it can default to the ' + "name associated with the 'has " + "attribute type' slot ontology term.", + 'name': 'name'}}}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Attribute","biolink:Attribute"]] = Field(["biolink:Attribute"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + name: Optional[str] = Field(None, description="""The human-readable 'attribute name' can be set to a string which reflects its context of interpretation, e.g. SEPIO evidence/provenance/confidence annotation or it can default to the name associated with the 'has attribute type' slot ontology term.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + has_attribute_type: str = Field(..., description="""connects an attribute to a class that describes it""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute_type', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute_type', + 'domain': 'attribute', + 'domain_of': ['attribute'], + 'in_subset': ['samples'], + 'narrow_mappings': ['LOINC:has_modality_type', 'LOINC:has_view_type'], + 'slot_uri': 'biolink:has_attribute_type'} }) + has_quantitative_value: Optional[List[QuantityValue]] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_quantitative_value', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_quantitative_value', + 'domain': 'attribute', + 'domain_of': ['attribute'], + 'exact_mappings': ['qud:quantityValue'], + 'in_subset': ['samples'], + 'narrow_mappings': ['SNOMED:has_concentration_strength_numerator_value', + 'SNOMED:has_presentation_strength_denominator_value', + 'SNOMED:has_presentation_strength_numerator_value'], + 'slot_uri': 'biolink:has_quantitative_value'} }) + has_qualitative_value: Optional[str] = Field(None, description="""connects an attribute to a value""", json_schema_extra = { "linkml_meta": {'alias': 'has_qualitative_value', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_qualitative_value', + 'domain': 'attribute', + 'domain_of': ['attribute'], + 'in_subset': ['samples'], + 'slot_uri': 'biolink:has_qualitative_value'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) class TaxonomicRank(OntologyClass): """ A descriptor for the rank within a taxonomic classification. Example instance: TAXRANK:0000017 (kingdom) """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:TaxonomicRank', + 'definition_uri': 'https://w3id.org/biolink/vocab/TaxonomicRank', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['TAXRANK'], + 'mappings': ['WIKIDATA:Q427626']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) class OrganismTaxon(NamedThing): """ A classification of a set of organisms. Example instances: NCBITaxon:9606 (Homo sapiens), NCBITaxon:2 (Bacteria). Can also be used to represent strains or subspecies. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - has_taxonomic_rank: Optional[str] = Field(None) + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['taxon', 'taxonomic classification'], + 'class_uri': 'biolink:OrganismTaxon', + 'definition_uri': 'https://w3id.org/biolink/vocab/OrganismTaxon', + 'exact_mappings': ['WIKIDATA:Q16521', 'STY:T001', 'bioschemas:Taxon'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['NCBITaxon', 'MESH', 'UMLS'], + 'in_subset': ['model_organism_database'], + 'narrow_mappings': ['dcid:BiologicalSpecies'], + 'values_from': ['NCBITaxon']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/OrganismTaxon","biolink:OrganismTaxon"]] = Field(["biolink:OrganismTaxon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + has_taxonomic_rank: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'has_taxonomic_rank', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_taxonomic_rank', + 'domain': 'named thing', + 'domain_of': ['organism taxon'], + 'is_a': 'node property', + 'mappings': ['WIKIDATA:P105'], + 'slot_uri': 'biolink:has_taxonomic_rank'} }) class InformationContentEntity(NamedThing): """ a piece of information that typically describes some topic of discourse or is used as support. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - license: Optional[str] = Field(None) - rights: Optional[str] = Field(None) - format: Optional[str] = Field(None) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'aliases': ['information', 'information artefact', 'information entity'], + 'class_uri': 'biolink:InformationContentEntity', + 'definition_uri': 'https://w3id.org/biolink/vocab/InformationContentEntity', + 'exact_mappings': ['IAO:0000030'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['doi'], + 'narrow_mappings': ['UMLSSG:CONC', + 'STY:T077', + 'STY:T078', + 'STY:T079', + 'STY:T080', + 'STY:T081', + 'STY:T082', + 'STY:T089', + 'STY:T102', + 'STY:T169', + 'STY:T171', + 'STY:T185']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/InformationContentEntity","biolink:InformationContentEntity"]] = Field(["biolink:InformationContentEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + 'definition_uri': 'https://w3id.org/biolink/vocab/license', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:license'], + 'is_a': 'node property', + 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], + 'slot_uri': 'biolink:license'} }) + rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + 'definition_uri': 'https://w3id.org/biolink/vocab/rights', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:rights'], + 'is_a': 'node property', + 'slot_uri': 'biolink:rights'} }) + format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + 'definition_uri': 'https://w3id.org/biolink/vocab/format', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], + 'is_a': 'node property', + 'slot_uri': 'biolink:format'} }) + creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + 'aliases': ['publication date'], + 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', + 'domain': 'named thing', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:createdOn', 'WIKIDATA_PROPERTY:P577'], + 'is_a': 'node property', + 'slot_uri': 'biolink:creation_date'} }) class Dataset(InformationContentEntity): """ an item that refers to a collection of data from a data source. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - license: Optional[str] = Field(None) - rights: Optional[str] = Field(None) - format: Optional[str] = Field(None) - creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Dataset', + 'definition_uri': 'https://w3id.org/biolink/vocab/Dataset', + 'exact_mappings': ['IAO:0000100', + 'dctypes:Dataset', + 'schema:dataset', + 'dcid:Dataset'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema'}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Dataset","biolink:Dataset"]] = Field(["biolink:Dataset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + 'definition_uri': 'https://w3id.org/biolink/vocab/license', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:license'], + 'is_a': 'node property', + 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], + 'slot_uri': 'biolink:license'} }) + rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + 'definition_uri': 'https://w3id.org/biolink/vocab/rights', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:rights'], + 'is_a': 'node property', + 'slot_uri': 'biolink:rights'} }) + format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + 'definition_uri': 'https://w3id.org/biolink/vocab/format', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], + 'is_a': 'node property', + 'slot_uri': 'biolink:format'} }) + creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + 'aliases': ['publication date'], + 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', + 'domain': 'named thing', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:createdOn', 'WIKIDATA_PROPERTY:P577'], + 'is_a': 'node property', + 'slot_uri': 'biolink:creation_date'} }) class PhysicalEssenceOrOccurrent(ConfiguredBaseModel): """ Either a physical or processual entity. """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:PhysicalEssenceOrOccurrent', + 'definition_uri': 'https://w3id.org/biolink/vocab/PhysicalEssenceOrOccurrent', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1377,6 +3509,11 @@ class PhysicalEssence(PhysicalEssenceOrOccurrent): """ Semantic mixin concept. Pertains to entities that have physical properties such as mass, volume, or charge. """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:PhysicalEssence', + 'definition_uri': 'https://w3id.org/biolink/vocab/PhysicalEssence', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1384,24 +3521,350 @@ class PhysicalEntity(PhysicalEssence, NamedThing): """ An entity that has material reality (a.k.a. physical essence). """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:PhysicalEntity', + 'definition_uri': 'https://w3id.org/biolink/vocab/PhysicalEntity', + 'exact_mappings': ['STY:T072'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixins': ['physical essence'], + 'narrow_mappings': ['STY:T073']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/PhysicalEntity","biolink:PhysicalEntity"]] = Field(["biolink:PhysicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) class Occurrent(PhysicalEssenceOrOccurrent): """ A processual entity. """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Occurrent', + 'definition_uri': 'https://w3id.org/biolink/vocab/Occurrent', + 'exact_mappings': ['BFO:0000003'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1409,6 +3872,12 @@ class ActivityAndBehavior(Occurrent): """ Activity or behavior of any independent integral living, organization or mechanical actor in the world """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:ActivityAndBehavior', + 'definition_uri': 'https://w3id.org/biolink/vocab/ActivityAndBehavior', + 'exact_mappings': ['UMLSSG:ACTI'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1416,42 +3885,694 @@ class Activity(ActivityAndBehavior, NamedThing): """ An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Activity', + 'definition_uri': 'https://w3id.org/biolink/vocab/Activity', + 'exact_mappings': ['prov:Activity', 'NCIT:C43431', 'STY:T052'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixins': ['activity and behavior'], + 'narrow_mappings': ['STY:T056', + 'STY:T057', + 'STY:T064', + 'STY:T066', + 'STY:T062', + 'STY:T065', + 'STY:T058']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Activity","biolink:Activity"]] = Field(["biolink:Activity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) class Procedure(ActivityAndBehavior, NamedThing): """ A series of actions conducted in a certain order or manner """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Procedure', + 'definition_uri': 'https://w3id.org/biolink/vocab/Procedure', + 'exact_mappings': ['UMLSSG:PROC', 'dcid:MedicalProcedure'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['CPT'], + 'mixins': ['activity and behavior'], + 'narrow_mappings': ['STY:T059', 'STY:T060', 'STY:T061', 'STY:T063']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Procedure","biolink:Procedure"]] = Field(["biolink:Procedure"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) class SubjectOfInvestigation(ConfiguredBaseModel): """ An entity that has the role of being studied in an investigation, study, or experiment """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:SubjectOfInvestigation', + 'definition_uri': 'https://w3id.org/biolink/vocab/SubjectOfInvestigation', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1459,53 +4580,768 @@ class MaterialSample(SubjectOfInvestigation, PhysicalEntity): """ A sample is a limited quantity of something (e.g. an individual or set of individuals from a population, or a portion of a substance) to be used for testing, analysis, inspection, investigation, demonstration, or trial use. [SIO] """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'aliases': ['biospecimen', 'sample', 'biosample', 'physical sample'], + 'class_uri': 'biolink:MaterialSample', + 'definition_uri': 'https://w3id.org/biolink/vocab/MaterialSample', + 'exact_mappings': ['OBI:0000747', 'SIO:001050'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['BIOSAMPLE', 'GOLD.META'], + 'mixins': ['subject of investigation']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/MaterialSample","biolink:MaterialSample"]] = Field(["biolink:MaterialSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) class ThingWithTaxon(ConfiguredBaseModel): """ A mixin that can be used on any entity that can be taxonomically classified. This includes individual organisms; genes, their products and other molecular entities; body parts; biological processes """ - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""") - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:ThingWithTaxon', + 'definition_uri': 'https://w3id.org/biolink/vocab/ThingWithTaxon', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + + in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + 'aliases': ['instance of', + 'is organism source of gene product', + 'organism has gene', + 'gene found in organism', + 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['RO:0002162', 'WIKIDATA_PROPERTY:P703'], + 'in_subset': ['translator_minimal'], + 'inherited': True, + 'is_a': 'related to at instance level', + 'narrow_mappings': ['RO:0002160'], + 'slot_uri': 'biolink:in_taxon'} }) + in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P225'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'slot_uri': 'biolink:in_taxon_label'} }) class BiologicalEntity(ThingWithTaxon, NamedThing): - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""") - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'abstract': True, + 'aliases': ['bioentity'], + 'class_uri': 'biolink:BiologicalEntity', + 'definition_uri': 'https://w3id.org/biolink/vocab/BiologicalEntity', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixins': ['thing with taxon'], + 'narrow_mappings': ['WIKIDATA:Q28845870', + 'STY:T050', + 'SIO:010046', + 'STY:T129']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/BiologicalEntity","biolink:BiologicalEntity"]] = Field(["biolink:BiologicalEntity"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + 'aliases': ['instance of', + 'is organism source of gene product', + 'organism has gene', + 'gene found in organism', + 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['RO:0002162', 'WIKIDATA_PROPERTY:P703'], + 'in_subset': ['translator_minimal'], + 'inherited': True, + 'is_a': 'related to at instance level', + 'narrow_mappings': ['RO:0002160'], + 'slot_uri': 'biolink:in_taxon'} }) + in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P225'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'slot_uri': 'biolink:in_taxon_label'} }) class GenomicEntity(ConfiguredBaseModel): - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:GenomicEntity', + 'definition_uri': 'https://w3id.org/biolink/vocab/GenomicEntity', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'in_subset': ['translator_minimal'], + 'mixin': True, + 'narrow_mappings': ['STY:T028', 'GENO:0000897']}) + + has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', + 'domain': 'named thing', + 'domain_of': ['genomic entity', 'gene', 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:has_biological_sequence'} }) class ChemicalEntityOrGeneOrGeneProduct(ConfiguredBaseModel): """ A union of chemical entities and children, and gene or gene product. This mixin is helpful to use when searching across chemical entities that must include genes and their children as chemical entities. """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:ChemicalEntityOrGeneOrGeneProduct', + 'definition_uri': 'https://w3id.org/biolink/vocab/ChemicalEntityOrGeneOrGeneProduct', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + pass @@ -1513,90 +5349,1616 @@ class MacromolecularMachineMixin(ConfiguredBaseModel): """ A union of gene locus, gene product, and macromolecular complex. These are the basic units of function in a cell. They either carry out individual biological activities, or they encode molecules which do this. """ - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:MacromolecularMachineMixin', + 'definition_uri': 'https://w3id.org/biolink/vocab/MacromolecularMachineMixin', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'mixin': True}) + + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) class GeneOrGeneProduct(MacromolecularMachineMixin): """ A union of gene loci or gene products. Frequently an identifier for one will be used as proxy for another """ - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:GeneOrGeneProduct', + 'definition_uri': 'https://w3id.org/biolink/vocab/GeneOrGeneProduct', + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['CHEMBL.TARGET', 'IUPHAR.FAMILY'], + 'mixin': True}) + + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) class Gene(GeneOrGeneProduct, ChemicalEntityOrGeneOrGeneProduct, GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): """ A region (or regions) that includes all of the sequence elements necessary to encode a functional transcript. A gene locus may include regulatory regions, transcribed regions and/or other functional sequence regions. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""") - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""") - symbol: Optional[str] = Field(None, description="""Symbol for a particular thing""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'broad_mappings': ['NCIT:C45822'], + 'class_uri': 'biolink:Gene', + 'definition_uri': 'https://w3id.org/biolink/vocab/Gene', + 'exact_mappings': ['SO:0000704', 'SIO:010035', 'WIKIDATA:Q7187', 'dcid:Gene'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'id_prefixes': ['NCBIGene', + 'ENSEMBL', + 'HGNC', + 'MGI', + 'ZFIN', + 'dictyBase', + 'WB', + 'WormBase', + 'FB', + 'RGD', + 'SGD', + 'PomBase', + 'OMIM', + 'KEGG.GENES', + 'UMLS', + 'Xenbase', + 'AspGD', + 'PHARMGKB.GENE'], + 'in_subset': ['translator_minimal', 'model_organism_database'], + 'mixins': ['gene or gene product', + 'genomic entity', + 'chemical entity or gene or gene product', + 'physical essence', + 'ontology class'], + 'narrow_mappings': ['bioschemas:gene']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Gene","biolink:Gene"]] = Field(["biolink:Gene"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + 'aliases': ['instance of', + 'is organism source of gene product', + 'organism has gene', + 'gene found in organism', + 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['RO:0002162', 'WIKIDATA_PROPERTY:P703'], + 'in_subset': ['translator_minimal'], + 'inherited': True, + 'is_a': 'related to at instance level', + 'narrow_mappings': ['RO:0002160'], + 'slot_uri': 'biolink:in_taxon'} }) + in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P225'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'slot_uri': 'biolink:in_taxon_label'} }) + symbol: Optional[str] = Field(None, description="""Symbol for a particular thing""", json_schema_extra = { "linkml_meta": {'alias': 'symbol', + 'definition_uri': 'https://w3id.org/biolink/vocab/symbol', + 'domain': 'named thing', + 'domain_of': ['gene'], + 'exact_mappings': ['AGRKB:symbol', 'gpi:DB_Object_Symbol'], + 'is_a': 'node property', + 'slot_uri': 'biolink:symbol'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', + 'domain': 'named thing', + 'domain_of': ['genomic entity', 'gene', 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:has_biological_sequence'} }) class Genome(GenomicEntity, BiologicalEntity, PhysicalEssence, OntologyClass): """ A genome is the sum of genetic material within a cell or virion. """ - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""") - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""") - has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'biolink:Genome', + 'close_mappings': ['dcid:GenomeAssemblyUnit'], + 'definition_uri': 'https://w3id.org/biolink/vocab/Genome', + 'exact_mappings': ['SO:0001026', 'SIO:000984', 'WIKIDATA:Q7020'], + 'from_schema': 'https://w3id.org/biolink/bican-biolink-schema', + 'in_subset': ['model_organism_database'], + 'mixins': ['genomic entity', 'physical essence', 'ontology class']}) + + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://w3id.org/biolink/vocab/Genome","biolink:Genome"]] = Field(["biolink:Genome"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + 'aliases': ['instance of', + 'is organism source of gene product', + 'organism has gene', + 'gene found in organism', + 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['RO:0002162', 'WIKIDATA_PROPERTY:P703'], + 'in_subset': ['translator_minimal'], + 'inherited': True, + 'is_a': 'related to at instance level', + 'narrow_mappings': ['RO:0002160'], + 'slot_uri': 'biolink:in_taxon'} }) + in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P225'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'slot_uri': 'biolink:in_taxon_label'} }) + has_biological_sequence: Optional[str] = Field(None, description="""connects a genomic feature to its sequence""", json_schema_extra = { "linkml_meta": {'alias': 'has_biological_sequence', + 'definition_uri': 'https://w3id.org/biolink/vocab/has_biological_sequence', + 'domain': 'named thing', + 'domain_of': ['genomic entity', 'gene', 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:has_biological_sequence'} }) class ProvActivity(ConfiguredBaseModel): """ An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities. """ - used: Optional[str] = Field(None, description="""Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Activity', + 'from_schema': 'https://identifiers.org/brain-bican/genome-prov-schema', + 'mixin': True}) + + used: Optional[str] = Field(None, description="""Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) -class DissectionRoiDelineation(ProvActivity, Procedure): +class ProvEntity(ConfiguredBaseModel): """ - The process of outlining a region of interest on a brain slab image to guide the dissection and generation of a tissue sample. + An entity is a physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'class_uri': 'prov:Entity', + 'from_schema': 'https://identifiers.org/brain-bican/genome-prov-schema', + 'mixin': True}) + + was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + + +class Checksum(Entity): + """ + Checksum values associated with digital entities. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/bican-core-schema'}) + + checksum_algorithm: Optional[DigestType] = Field(None, description="""The type of cryptographic hash function used to calculate the checksum value.""", json_schema_extra = { "linkml_meta": {'alias': 'checksum_algorithm', 'domain_of': ['checksum']} }) + value: Optional[str] = Field(None, description="""The checksum value obtained from a specific cryotographic hash function.""", json_schema_extra = { "linkml_meta": {'alias': 'value', 'domain_of': ['checksum']} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/Checksum","bican:Checksum"]] = Field(["bican:Checksum"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + + +class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): + """ + A person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor. """ - used: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiDelineation","bican:DissectionRoiDelineation"]] = Field(["bican:DissectionRoiDelineation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Donor'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'mixins': ['thing with taxon', 'ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of person or organism that is ' + 'the source of a biological sample for ' + 'scientific study. Many biological ' + 'samples are generated from a single ' + 'donor.', + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'donor_local_id'}}, + 'name': 'name'}}}) + + name: Optional[str] = Field(None, description="""Name of person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'donor_local_id'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + biological_sex: Optional[Sex] = Field(None, description="""Biological sex of donor at birth""", json_schema_extra = { "linkml_meta": {'alias': 'biological_sex', + 'domain_of': ['Donor'], + 'exact_mappings': ['NIMP:PD-LXUBTM45'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'sex'}}, + 'slot_uri': 'bican:632d3d3f-f85b-4efc-a1ab-010fe417ae81'} }) + age_at_death_description: Optional[str] = Field(None, description="""Text description of the age of death following typical scientific convention for the species or developmental stage. For example: P56, E11.5""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_description', + 'domain_of': ['Donor'], + 'exact_mappings': ['NIMP:PD-ZJZJLE33'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'age_at_death_description'}}, + 'slot_uri': 'bican:0630a265-4a63-48f4-8853-66b929002306'} }) + age_at_death_reference_point: Optional[AgeAtDeathReferencePoint] = Field(None, description="""The reference point for an age interval; for example, birth or conception.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_reference_point', + 'domain_of': ['Donor'], + 'exact_mappings': ['NIMP:PD-RARAGG39'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'age_at_death_reference_point'}}, + 'slot_uri': 'bican:3bed1f94-9d82-4ed7-afdf-79d896b24dbb'} }) + age_at_death_unit: Optional[AgeAtDeathUnit] = Field(None, description="""The unit used for representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_unit', + 'domain_of': ['Donor'], + 'exact_mappings': ['NIMP:PD-AVAVEV39'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'age_at_death_unit'}}, + 'slot_uri': 'bican:b5436e99-f0a7-4c30-825d-56b88ee2ac1d'} }) + age_at_death_value: Optional[float] = Field(None, description="""The value representing the donor age from the reference point.""", json_schema_extra = { "linkml_meta": {'alias': 'age_at_death_value', + 'domain_of': ['Donor'], + 'exact_mappings': ['NIMP:PD-FTFTCP24'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'age_at_death'}}, + 'slot_uri': 'bican:57e24d3c-c9c7-4ef3-9809-a35802d563ec'} }) + donor_species: Optional[str] = Field(None, description="""Species of donor.""", json_schema_extra = { "linkml_meta": {'alias': 'donor_species', + 'domain_of': ['Donor'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'donor_species'}}, + 'slot_uri': 'bican:6837cb02-6bd7-4fb8-838c-9062ead96ba4'} }) + in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon', + 'aliases': ['instance of', + 'is organism source of gene product', + 'organism has gene', + 'gene found in organism', + 'gene product has organism source'], + 'annotations': {'canonical_predicate': {'tag': 'canonical_predicate', + 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['RO:0002162', 'WIKIDATA_PROPERTY:P703'], + 'in_subset': ['translator_minimal'], + 'inherited': True, + 'is_a': 'related to at instance level', + 'narrow_mappings': ['RO:0002160'], + 'slot_uri': 'biolink:in_taxon'} }) + in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""", json_schema_extra = { "linkml_meta": {'alias': 'in_taxon_label', + 'annotations': {'denormalized': {'tag': 'denormalized', 'value': True}}, + 'definition_uri': 'https://w3id.org/biolink/vocab/in_taxon_label', + 'domain': 'thing with taxon', + 'domain_of': ['thing with taxon', 'biological entity', 'gene', 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P225'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'slot_uri': 'biolink:in_taxon_label'} }) + was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/Donor","bican:Donor"]] = Field(["bican:Donor"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1604,31 +6966,396 @@ def pattern_category(cls, v): return v -class TissueDissection(ProvActivity, Procedure): +class BrainSlab(ProvEntity, MaterialSample): """ - The process of dissecting a tissue sample from a brain slab guided by a dissection region of interest (ROI) delineation. + A thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs. """ - used: Optional[str] = Field(None, description="""The brain slab from which the tissue sample was dissected from.""") - was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon which was used to guide the tissue dissection.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueDissection","bican:TissueDissection"]] = Field(["bican:TissueDissection"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Slab'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'tissue_specimen'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a thick flat piece of brain ' + 'tissue obtained by slicing a whole ' + 'brain, brain hemisphere or ' + 'subdivision with a blade at regular ' + 'interval. When multiple brain slabs ' + 'are obtained from the slicing ' + 'process, an ordinal is assigned to ' + 'provide information about the ' + 'relative positioning of the slabs.', + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'local_name'}}, + 'name': 'name'}, + 'was_derived_from': {'any_of': [{'range': 'Donor'}, + {'range': 'BrainSlab'}], + 'description': 'The donor from which the ' + 'brain slab was derived ' + 'from.', + 'exact_mappings': ['NIMP:has_parent'], + 'name': 'was_derived_from'}}}) + + was_derived_from: Optional[str] = Field(None, description="""The donor from which the brain slab was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'any_of': [{'range': 'Donor'}, {'range': 'BrainSlab'}], + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of a thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/BrainSlab","bican:BrainSlab"]] = Field(["bican:BrainSlab"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1636,31 +7363,404 @@ def pattern_category(cls, v): return v -class CellDissociation(ProvActivity, Procedure): +class TissueSample(ProvEntity, MaterialSample): """ - The process of generating dissociated cells from an input tissue sample. This process could also introduce a tissue-source barcode (eg cell hashing), allowing mixing of cell dissociation samples at the cell barcoding step. + The final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an region of interest polygon (ROI) associated with it. """ - used: Optional[List[str]] = Field(default_factory=list, description="""The input tissue sample(s) from which the dissociated cell sample was derived from.""") - process_date: Optional[str] = Field(None, description="""Date of cell dissociation process.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellDissociation","bican:CellDissociation"]] = Field(["bican:CellDissociation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Tissue'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Identifier name for final intact ' + 'piece of tissue before cell or nuclei ' + 'prep. This piece of tissue will be ' + 'used in dissociation and has an ROI ' + 'associated with it.', + 'exact_mappings': ['NIMP:PD-LJCRCC35'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'tissue_sample_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:2e4ca2fc-2d77-4d19-af45-d0fb7bbc2269'}, + 'was_derived_from': {'description': 'The donor or brain slab ' + 'from which the tissue ' + 'sample was derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'name': 'was_derived_from', + 'range': 'Donor'}, + 'was_generated_by': {'description': 'The dissection process ' + 'from which the tissue ' + 'sample was generated by.', + 'name': 'was_generated_by', + 'range': 'TissueDissection'}}}) + + was_derived_from: Optional[str] = Field(None, description="""The donor or brain slab from which the tissue sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + was_generated_by: Optional[str] = Field(None, description="""The dissection process from which the tissue sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + name: Optional[str] = Field(None, description="""Identifier name for final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an ROI associated with it.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-LJCRCC35'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'tissue_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:2e4ca2fc-2d77-4d19-af45-d0fb7bbc2269'} }) + dissection_was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon that was used to guide the dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'dissection_was_guided_by', + 'domain_of': ['TissueSample'], + 'exact_mappings': ['NIMP:has_parent']} }) + tissue_sample_structure: Optional[List[str]] = Field(None, description="""Strucure of tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'tissue_sample_structure', + 'domain_of': ['TissueSample'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'structure'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueSample","bican:TissueSample"]] = Field(["bican:TissueSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1668,31 +7768,411 @@ def pattern_category(cls, v): return v -class CellEnrichment(ProvActivity, Procedure): +class DissociatedCellSample(ProvEntity, MaterialSample): """ - The process of enriching a dissociated cell sample by including or excluding cells of different types based on an enrichment plan using techniques such as fluorescence-activated cell sorting (FACS). This process could also introduce a tissue-source barcode (eg cell hashing), allowing mixing of cell enriched samples at the cell barcoding step. + A collection of dissociated cells or nuclei derived from dissociation of a tissue sample. """ - used: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated cell sample(s) from which the enriched cell sample was derived from.""") - process_date: Optional[str] = Field(None, description="""Date of cell enrichment process.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellEnrichment","bican:CellEnrichment"]] = Field(["bican:CellEnrichment"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Dissociated%20Cell%20Sample'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a collection of dissociated ' + 'cells or nuclei derived from ' + 'dissociation of a tissue sample.', + 'exact_mappings': ['NIMP:PD-RQRWHS40'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'dissociated_cell_sample_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:65e2c7da-9eb4-45b2-8ccb-d69ef9785ee2'}, + 'was_derived_from': {'description': 'The input tissue ' + 'sample(s) from which ' + 'dissociated cell sample ' + 'was derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'multivalued': True, + 'name': 'was_derived_from', + 'range': 'TissueSample'}, + 'was_generated_by': {'description': 'The cell dissociation ' + 'process from which the ' + 'dissociated cell sample ' + 'was generated by.', + 'name': 'was_generated_by', + 'range': 'CellDissociation'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The cell dissociation process from which the dissociated cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[List[str]] = Field(None, description="""The input tissue sample(s) from which dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of a collection of dissociated cells or nuclei derived from dissociation of a tissue sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-RQRWHS40'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'dissociated_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:65e2c7da-9eb4-45b2-8ccb-d69ef9785ee2'} }) + dissociated_cell_sample_cell_prep_type: Optional[DissociatedCellSampleCellPrepType] = Field(None, description="""The type of cell preparation. For example: Cells, Nuclei. This is a property of dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell sample cell prep type', + 'domain_of': ['DissociatedCellSample'], + 'exact_mappings': ['NIMP:PD-RELLGO26'], + 'in_subset': ['analysis', 'tracking'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'dissociated_cell_sample_cell_prep_type'}}, + 'slot_uri': 'bican:baae4ac3-f959-4594-b943-3a82ec19bd34'} }) + dissociated_cell_oligo_tag_name: Optional[DissociatedCellSampleCellLabelBarcode] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the dissociated cell sample and allows separate dissociated cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source dissociated cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'dissociated cell oligo tag name', + 'domain_of': ['DissociatedCellSample', 'EnrichedCellSample'], + 'exact_mappings': ['NIMP:PD-CFCFPS27'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'dissociated_cell_sample_cell_label_barcode'}}, + 'slot_uri': 'bican:184abbaf-baff-4b5f-b51e-dd38de6006af'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissociatedCellSample","bican:DissociatedCellSample"]] = Field(["bican:DissociatedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1700,30 +8180,425 @@ def pattern_category(cls, v): return v -class EnrichedCellSampleSplitting(ProvActivity, Procedure): +class EnrichedCellSample(ProvEntity, MaterialSample): """ - The process of splitting an enriched cell sample into several portions. Each portion may be used by the same or different groups for different scientific studies. + A collection of enriched cells or nuclei after enrichment process, usually via fluorescence-activated cell sorting (FACS) using the enrichment plan, is applied to dissociated cell sample. """ - used: Optional[str] = Field(None, description="""The enrichment cell sample splitting process from which the enriched cell sample was generated by.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSampleSplitting","bican:EnrichedCellSampleSplitting"]] = Field(["bican:EnrichedCellSampleSplitting"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Enriched%20Cell%20Sample'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of collection of enriched cells ' + 'or nuclei after enrichment process ' + '(usually via FACS using the ' + 'Enrichment Plan) applied to ' + 'dissociated_cell_sample.', + 'exact_mappings': ['NIMP:PD-BERWTM41'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'enriched_cell_sample_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:bb3fc701-23a7-45c1-890d-7471730e0ec1'}, + 'was_derived_from': {'description': 'The dissociated or ' + 'enriched cell sample(s) ' + 'from which the enriched ' + 'cell sample was derived ' + 'from.', + 'exact_mappings': ['NIMP:has_parent'], + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'multivalued': True, + 'name': 'was_derived_from'}, + 'was_generated_by': {'any_of': [{'range': 'CellEnrichment'}, + {'range': 'EnrichedCellSampleSplitting'}], + 'description': 'The cell enrichment or ' + 'sample splitting process ' + 'from which the enriched ' + 'cell sample was generated ' + 'by.', + 'name': 'was_generated_by'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The cell enrichment or sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'any_of': [{'range': 'CellEnrichment'}, + {'range': 'EnrichedCellSampleSplitting'}], + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[List[str]] = Field(None, description="""The dissociated or enriched cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of collection of enriched cells or nuclei after enrichment process (usually via FACS using the Enrichment Plan) applied to dissociated_cell_sample.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-BERWTM41'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'enriched_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:bb3fc701-23a7-45c1-890d-7471730e0ec1'} }) + enrichment_population: Optional[str] = Field(None, description="""Actual percentage of cells as a result of using set of fluorescent marker label(s) to enrich dissociated_cell_sample with desired mix of cell populations. This plan can also be used to describe 'No FACS' where no enrichment was performed. This is a property of enriched_cell_prep_container.""", json_schema_extra = { "linkml_meta": {'alias': 'enrichment population', + 'domain_of': ['EnrichedCellSample'], + 'exact_mappings': ['NIMP:PD-TZTZPI37'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'enrichment_population'}}, + 'slot_uri': 'bican:875f1c70-f5aa-45e3-94b9-5e482f6c4830'} }) + cell_source_oligo_name: Optional[str] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the enriched cell sample and allows separate enriched cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source enriched cell sample.""", json_schema_extra = { "linkml_meta": {'alias': 'cell_source_oligo_name', + 'domain_of': ['DissociatedCellSample', 'EnrichedCellSample'], + 'exact_mappings': ['NIMP:PD-CFCFPS27'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'enriched_cell_sample_cell_label_barcode'}}} }) + histone_modification_marker: Optional[str] = Field(None, description="""Histone modification marker antibodies (eg H3K27ac, H3K27me3, H3K9me3) used in conjunction with an Enriched Cell Source Barcode in order to combine multiple Enriched Cell Populations before Barcoded Cell Sample step for 10xMultiome method. Each of the Histone antibodies captures an essential part of the epigenome.""", json_schema_extra = { "linkml_meta": {'alias': 'histone_modification_marker', + 'domain_of': ['EnrichedCellSample'], + 'exact_mappings': ['NIMP:PD-ESESLW44'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'histone_modification_marker'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSample","bican:EnrichedCellSample"]] = Field(["bican:EnrichedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1731,34 +8606,415 @@ def pattern_category(cls, v): return v -class CellBarcoding(ProvActivity, Procedure): +class BarcodedCellSample(ProvEntity, MaterialSample): """ - The process of adding a molecular barcode to individual cells in a sample. The input will be either dissociated cell sample or enriched cell sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated cell sample or enriched cell sample can lead to multiple barcoded cell samples. + A collection of molecularly barcoded cells. Input will be either dissociated cell sample or enriched cell sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated cell sample or enriched cell sample can lead to multiple barcoded cell samples. The sequences of the molecular barcodes are revealed during alignment of the resulting fastq files for the barcoded cell sample. The barcoded cell sample name and the cell level molecular barcode together uniquely identify a single cell. """ - used: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""") - port_well: Optional[str] = Field(None, description="""Specific position of the loaded port of the 10x chip. An Enriched or Dissociated Cell Sample is loaded into a port on a chip (creating a Barcoded Cell Sample). Can be left null for non-10x methods.""") - input_quantity: Optional[int] = Field(None, description="""Number of enriched or dissociated cells/nuclei going into the barcoding process.""") - process_date: Optional[str] = Field(None, description="""Date of cell barcoding process.""") - method: Optional[BarcodedCellSampleTechnique] = Field(None, description="""Standardized nomenclature to describe the general barcoding method used. For example: Multiome, ATAC Only, GEX Only or snm3C-seq.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/CellBarcoding","bican:CellBarcoding"]] = Field(["bican:CellBarcoding"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Barcoded%20Cell%20Sample'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a collection of barcoded ' + 'cells. Input will be either ' + 'dissociated_cell_sample or ' + 'enriched_cell_sample. Cell barcodes ' + 'are only guaranteed to be unique ' + 'within this one collection. One ' + 'dissociated_cell_sample or ' + 'enriched_cell_sample can lead to ' + 'multiple barcoded_cell_samples.', + 'exact_mappings': ['NIMP:PD-XEMDJF38'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:4c0e6380-e53f-4173-a474-d41e836fefe3'}, + 'was_derived_from': {'description': 'The input dissociated or ' + 'enriched cell sample(s) ' + 'from which the barcoded ' + 'cell sample was derived ' + 'from.', + 'exact_mappings': ['NIMP:has_parent'], + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'multivalued': True, + 'name': 'was_derived_from'}, + 'was_generated_by': {'description': 'The barcoding process ' + 'from which the barcoded ' + 'cell sample is generated ' + 'from.', + 'name': 'was_generated_by', + 'range': 'CellBarcoding'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The barcoding process from which the barcoded cell sample is generated from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[List[str]] = Field(None, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of a collection of barcoded cells. Input will be either dissociated_cell_sample or enriched_cell_sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated_cell_sample or enriched_cell_sample can lead to multiple barcoded_cell_samples.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-XEMDJF38'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:4c0e6380-e53f-4173-a474-d41e836fefe3'} }) + expected_cell_capture: Optional[int] = Field(None, description="""Expected number of cells/nuclei of a barcoded_cell_sample that will be barcoded and available for sequencing. This is a derived number from 'Barcoded cell input quantity count' that is dependent on the \"capture rate\" of the barcoding method. It is usually a calculated fraction of the 'Barcoded cell input quantity count' going into the barcoding method.""", json_schema_extra = { "linkml_meta": {'alias': 'expected cell capture', + 'domain_of': ['BarcodedCellSample'], + 'exact_mappings': ['NIMP:PD-ONONEV39'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_number_of_expected_cells'}}, + 'slot_uri': 'bican:f10e928d-5a2b-4943-af18-d8fe5d05528d'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/BarcodedCellSample","bican:BarcodedCellSample"]] = Field(["bican:BarcodedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1766,33 +9022,425 @@ def pattern_category(cls, v): return v -class CdnaAmplification(ProvActivity, Procedure): +class AmplifiedCdna(ProvEntity, MaterialSample): """ - The process of creating a collection of cDNA molecules derived and amplified from an input barcoded cell sample. A large amount of cDNA is needed to have accurate and reliable sequencing detection of gene expression. This process generates multiple copies of each mRNA transcript (expressed gene) within each cell while retaining the cell's unique barcode from the barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods. + A collection of cDNA molecules derived and amplified from an input barcoded cell sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods. """ - used: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""") - pcr_cycles: Optional[int] = Field(None, description="""Number of PCR cycles used during cDNA amplification for this cDNA.""") - process_date: Optional[date] = Field(None, description="""Date of cDNA amplification.""") - set: Optional[str] = Field(None, description="""cDNA amplification set, containing multiple amplified_cDNA_names that were processed at the same time.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/CdnaAmplification","bican:CdnaAmplification"]] = Field(["bican:CdnaAmplification"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Amplified%20cDNA'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a collection of cDNA ' + 'molecules derived and amplified from ' + 'an input barcoded_cell_sample. These ' + 'cDNA molecules represent the gene ' + 'expression of each cell, with all ' + 'cDNA molecules from a given cell ' + "retaining that cell's unique barcode " + 'from the cell barcoding step. This ' + 'is a necessary step for GEX methods ' + 'but is not used for ATAC methods.', + 'exact_mappings': ['NIMP:PD-YAAGGG39'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:e2606a11-114e-472f-9e05-33f9b6fc3089'}, + 'was_derived_from': {'description': 'The input barcoded cell ' + 'sample from which ' + 'amplified cDNA was ' + 'derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'name': 'was_derived_from', + 'range': 'BarcodedCellSample'}, + 'was_generated_by': {'description': 'The cDNA amplification ' + 'process from which the ' + 'amplified cDNA was ' + 'generated by.', + 'name': 'was_generated_by', + 'range': 'CdnaAmplification'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The cDNA amplification process from which the amplified cDNA was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of a collection of cDNA molecules derived and amplified from an input barcoded_cell_sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-YAAGGG39'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:e2606a11-114e-472f-9e05-33f9b6fc3089'} }) + amplified_cDNA_amplified_quantity_ng: Optional[float] = Field(None, description="""Amount of cDNA produced after cDNA amplification measured in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA amplified quantity ng', + 'domain_of': ['AmplifiedCdna', 'Library'], + 'exact_mappings': ['NIMP:PD-TITIIC26'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_amplified_quantity_ng'}}, + 'slot_uri': 'bican:0db79d05-8612-4896-b9d3-eb1558841449'} }) + amplified_cDNA_RNA_amplification_pass_fail: Optional[AmplifiedCdnaRnaAmplificationPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of cDNA yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA RNA amplification pass-fail', + 'domain_of': ['AmplifiedCdna', 'Library'], + 'exact_mappings': ['NIMP:PD-XXXXFQ31'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_rna_amplification_pass_fail'}}, + 'slot_uri': 'bican:bc62bdb2-7dc8-4404-bb84-ce0bbcae59e5'} }) + amplified_cDNA_percent_cDNA_longer_than_400bp: Optional[float] = Field(None, description="""QC metric to measure mRNA degradation of cDNA. Higher % is higher quality starting material. Over 400bp is used as a universal cutoff for intact (full length) vs degraded cDNA and is a common output from Bioanalyzer and Fragment Analyzer elecropheragrams.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA percent cDNA longer than 400bp', + 'domain_of': ['AmplifiedCdna'], + 'exact_mappings': ['NIMP:PD-JJJJWD35'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_percent_cdna_longer_than_400bp'}}, + 'slot_uri': 'bican:8d150467-f69e-461c-b54c-bcfd22f581e5'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/AmplifiedCdna","bican:AmplifiedCdna"]] = Field(["bican:AmplifiedCdna"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1800,34 +9448,443 @@ def pattern_category(cls, v): return v -class LibraryConstruction(ProvActivity, Procedure): +class Library(ProvEntity, MaterialSample): """ - The process of constructing a library from input material (such as amplified cDNA or barcoded cell sample) derived from one or more cell samples. cDNA is fragmented into smaller pieces appropriate for sequencing and at the same time a library index barcode is incorporated to enable identification of library origin, allowing libraries to be pooled together for sequencing. + A collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing. """ - used: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""") - method: Optional[LibraryTechnique] = Field(None, description="""Standardized nomenclature to describe the specific library method used. This specifies the alignment method required for the library. For example, 10xV3.1 (for RNASeq single assay), 10xMult-GEX (for RNASeq multiome assay), and 10xMult-ATAC (for ATACSeq multiome assay).""") - process_date: Optional[date] = Field(None, description="""Date of library construction.""") - input_quantity_ng: Optional[float] = Field(None, description="""Amount of cDNA going into library construction in nanograms.""") - set: Optional[str] = Field(None, description="""Library set, containing multiple library_names that were processed at the same time.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryConstruction","bican:LibraryConstruction"]] = Field(["bican:LibraryConstruction"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Library'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a library, which is a ' + 'collection of fragmented and ' + 'barcode-indexed DNA molecules for ' + 'sequencing. An index or barcode is ' + 'typically introduced to enable ' + 'identification of library origin to ' + 'allow libraries to be pooled together ' + 'for sequencing.', + 'exact_mappings': ['NIMP:PD-AJJUCC35'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:f717e254-3630-4342-be7b-4d56376e7afe'}, + 'was_derived_from': {'any_of': [{'range': 'BarcodedCellSample'}, + {'range': 'AmplifiedCdna'}], + 'description': 'The input barcoded cell ' + 'sample or amplified cDNA ' + 'from which the library ' + 'was derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'name': 'was_derived_from'}, + 'was_generated_by': {'description': 'The library construction ' + 'process from which the ' + 'library was generated by.', + 'name': 'was_generated_by', + 'range': 'LibraryConstruction'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The library construction process from which the library was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'any_of': [{'range': 'BarcodedCellSample'}, {'range': 'AmplifiedCdna'}], + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Name of a library, which is a collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-AJJUCC35'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:f717e254-3630-4342-be7b-4d56376e7afe'} }) + library_avg_size_bp: Optional[int] = Field(None, description="""Average size of the library in terms of base pairs. This is used to calculate the molarity before pooling and sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library avg size bp', + 'domain_of': ['Library'], + 'exact_mappings': ['NIMP:PD-VJVJLC46'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_avg_size_bp'}}, + 'slot_uri': 'bican:f851eba9-56d1-4472-9d0c-d7f8bc33000a'} }) + library_concentration_nm: Optional[float] = Field(None, description="""Concentration of library in terms of nM (nMol/L). Number of molecules is needed for accurate pooling of the libraries and for generating the number of target reads/cell in sequencing.""", json_schema_extra = { "linkml_meta": {'alias': 'library concentration nm', + 'domain_of': ['Library'], + 'exact_mappings': ['NIMP:PD-DCDCLD43'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_concentration_nm'}}, + 'slot_uri': 'bican:90805b3f-f380-4f23-b159-e7eaa0c8f052'} }) + library_prep_pass_fail: Optional[LibraryPrepPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of library yield and size.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep pass-fail', + 'domain_of': ['AmplifiedCdna', 'Library'], + 'exact_mappings': ['NIMP:PD-QHQHQB42'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_prep_pass_fail'}}, + 'slot_uri': 'bican:6817ede2-7ead-402d-9dbc-131aca627c6c'} }) + library_quantification_fmol: Optional[float] = Field(None, description="""Amount of library generated in terms of femtomoles""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification fmol', + 'domain_of': ['Library'], + 'exact_mappings': ['NIMP:PD-JYJYDK42'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_quantification_fmol'}}, + 'slot_uri': 'bican:4c09ada7-c116-48bc-8fb1-0dcf5c4b939a'} }) + library_quantification_ng: Optional[float] = Field(None, description="""Amount of library generated in terms of nanograms""", json_schema_extra = { "linkml_meta": {'alias': 'library quantification ng', + 'domain_of': ['AmplifiedCdna', 'Library'], + 'exact_mappings': ['NIMP:PD-TNTNXP37'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_quantification_ng'}}, + 'slot_uri': 'bican:318b2d3a-dae7-4c63-bfbb-93862b92f63e'} }) + R1/R2_index_name: Optional[LibraryR1R2Index] = Field(None, description="""Name of the pair of library indexes used for sequencing. Indexes allow libraries to be pooled together for sequencing. Sequencing output (fastq) are demultiplexed by using the indexes for each library. The name will be associated with the sequences of i7, i5, and i5as, which are needed by SeqCores for demultiplexing. The required direction of the sequence (sense or antisense) of the index can differ depending on sequencing instruments.""", json_schema_extra = { "linkml_meta": {'alias': 'R1/R2 index name', + 'domain_of': ['Library'], + 'exact_mappings': ['NIMP:PD-VLLMWZ60'], + 'in_subset': ['analysis', 'tracking'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_r1_r2_index'}}, + 'slot_uri': 'bican:c94b5d8a-e92d-47af-8c0e-ea3b58be4d06'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/Library","bican:Library"]] = Field(["bican:Library"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1835,31 +9892,397 @@ def pattern_category(cls, v): return v -class LibraryPooling(ProvActivity, Procedure): +class LibraryAliquot(ProvEntity, MaterialSample): """ - The process of constructing of a libray pool by combining library aliquots from a set of input libraries. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. + One library in the library pool. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library aliquot name. A given library may produce multiple library aliquots, which is done in the case of resequencing. Each library aliquot will produce a set of fastq files. """ - used: Optional[List[str]] = Field(default_factory=list, description="""The input aliquot(s) from which the library pool was derived from.""") - process_date: Optional[str] = Field(None, description="""Date of library pooling process.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPooling","bican:LibraryPooling"]] = Field(["bican:LibraryPooling"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""") - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Library%20Aliquot'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'One library in the library pool. ' + 'Each Library_aliquot_name in a ' + 'library pool will have a unique R1/R2 ' + 'index to allow for sequencing ' + 'together then separating the ' + 'sequencing output by originating ' + 'library aliquot through the process ' + 'of demultiplexing. The resulting ' + 'demultiplexed fastq files will ' + 'include the library_aliquot_name.', + 'exact_mappings': ['NIMP:PD-XCXCCC35'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_aliquot_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:34191bad-d167-4335-8224-ade897d3728e'}, + 'was_derived_from': {'description': 'The input library from ' + 'which the library aliquot ' + 'was derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'name': 'was_derived_from', + 'range': 'Library'}}}) + + was_derived_from: Optional[str] = Field(None, description="""The input library from which the library aliquot was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""One library in the library pool. Each Library_aliquot_name in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library_aliquot_name.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-XCXCCC35'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_aliquot_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:34191bad-d167-4335-8224-ade897d3728e'} }) + was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryAliquot","bican:LibraryAliquot"]] = Field(["bican:LibraryAliquot"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1867,47 +10290,410 @@ def pattern_category(cls, v): return v -class ProvEntity(ConfiguredBaseModel): - """ - An entity is a physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. - """ - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""") - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""") - - -class Donor(ProvEntity, ThingWithTaxon, PhysicalEntity): +class LibraryPool(ProvEntity, MaterialSample): """ - A person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor. + A library pool is made up of library aliquots from multiple libraries. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. """ - name: Optional[str] = Field(None, description="""Name of person or organism that is the source of a biological sample for scientific study. Many biological samples are generated from a single donor.""") - biological_sex: Optional[Sex] = Field(None, description="""Biological sex of donor at birth""") - age_at_death_description: Optional[str] = Field(None, description="""Text description of the age of death following typical scientific convention for the species or developmental stage. For example: P56, E11.5""") - age_at_death_reference_point: Optional[AgeAtDeathReferencePoint] = Field(None, description="""The reference point for an age interval; for example, birth or conception.""") - age_at_death_unit: Optional[AgeAtDeathUnit] = Field(None, description="""The unit used for representing the donor age from the reference point.""") - age_at_death_value: Optional[float] = Field(None, description="""The value representing the donor age from the reference point.""") - species: Optional[str] = Field(None, description="""Species of donor.""") - in_taxon: Optional[List[str]] = Field(None, description="""connects an entity to its taxonomic classification. Only certain kinds of entities can be taxonomically classified; see 'thing with taxon'""") - in_taxon_label: Optional[str] = Field(None, description="""The human readable scientific name for the taxon of the entity.""") - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""") - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/Donor","bican:Donor"]] = Field(["bican:Donor"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Library%20Pool'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': "Library lab's library pool name. For " + 'some labs this may be the same as ' + '"Libray pool tube local name". ' + 'Other labs distinguish between the ' + 'local tube label of the library pool ' + 'and the library pool name provided to ' + 'SeqCore for tracking. Local Pool ' + 'Name is used to communicate ' + 'sequencing status between SeqCore and ' + 'Library Labs.', + 'exact_mappings': ['NIMP:PD-KKIAPA48'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_pool_local_name'}}, + 'name': 'name', + 'slot_uri': 'bican:29e0578b-6427-4c93-b29b-bde27fbadeec'}, + 'was_derived_from': {'description': 'The input aliquot(s) from ' + 'which the library pool ' + 'was derived from.', + 'exact_mappings': ['NIMP:has_parent'], + 'multivalued': True, + 'name': 'was_derived_from', + 'range': 'LibraryAliquot'}, + 'was_generated_by': {'description': 'The pooling process from ' + 'which the library pool ' + 'was generated by.', + 'name': 'was_generated_by', + 'range': 'LibraryPooling'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The pooling process from which the library pool was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + was_derived_from: Optional[List[str]] = Field(None, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'exact_mappings': ['NIMP:has_parent'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + name: Optional[str] = Field(None, description="""Library lab's library pool name. For some labs this may be the same as \"Libray pool tube local name\". Other labs distinguish between the local tube label of the library pool and the library pool name provided to SeqCore for tracking. Local Pool Name is used to communicate sequencing status between SeqCore and Library Labs.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:PD-KKIAPA48'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_pool_local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'bican:29e0578b-6427-4c93-b29b-bde27fbadeec'} }) + library_pool_tube_internal_label: Optional[str] = Field(None, description="""Library Pool Tube local name. Label of the tube containing the library pool, which is made up of multiple library_aliquots. This is a Library Lab local tube name, before the pool is aliquoted to the Seq Core provided tube 'Library Pool Tube Name'.""", json_schema_extra = { "linkml_meta": {'alias': 'library_pool_tube_internal_label', + 'domain_of': ['LibraryPool'], + 'exact_mappings': ['NIMP:PD-WNYWPA48'], + 'in_subset': ['analysis', 'tracking'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_pool_local_tube_id'}}, + 'slot_uri': 'bican:f1fdea98-7849-4def-a62f-a04cbbf98922'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPool","bican:LibraryPool"]] = Field(["bican:LibraryPool"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1915,31 +10701,364 @@ def pattern_category(cls, v): return v -class BrainSlab(ProvEntity, MaterialSample): +class DissectionRoiDelineation(ProvActivity, Procedure): """ - A thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs. + The process of outlining a region of interest on a brain slab image to guide the dissection and generation of a tissue sample. """ - was_derived_from: Optional[str] = Field(None, description="""The donor from which the brain slab was derived from.""") - name: Optional[str] = Field(None, description="""Name of a thick flat piece of brain tissue obtained by slicing a whole brain, brain hemisphere or subdivision with a blade at regular interval. When multiple brain slabs are obtained from the slicing process, an ordinal is assigned to provide information about the relative positioning of the slabs.""") - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/BrainSlab","bican:BrainSlab"]] = Field(["bican:BrainSlab"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The brain slab that was annotated by ' + 'the delineation process.', + 'name': 'used', + 'range': 'BrainSlab'}}}) + + used: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiDelineation","bican:DissectionRoiDelineation"]] = Field(["bican:DissectionRoiDelineation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1947,33 +11066,365 @@ def pattern_category(cls, v): return v -class TissueSample(ProvEntity, MaterialSample): +class TissueDissection(ProvActivity, Procedure): """ - The final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an region of interest polygon (ROI) associated with it. + The process of dissecting a tissue sample from a brain slab guided by a dissection region of interest (ROI) delineation. """ - was_derived_from: Optional[str] = Field(None, description="""The donor or brain slab from which the tissue sample was derived from.""") - was_generated_by: Optional[str] = Field(None, description="""The dissection process from which the tissue sample was generated by.""") - name: Optional[str] = Field(None, description="""Identifier name for final intact piece of tissue before cell or nuclei prep. This piece of tissue will be used in dissociation and has an ROI associated with it.""") - dissection_was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon that was used to guide the dissection.""") - structure: Optional[List[str]] = Field(default_factory=list, description="""Strucure of tissue sample.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueSample","bican:TissueSample"]] = Field(["bican:TissueSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The brain slab from which the tissue ' + 'sample was dissected from.', + 'name': 'used', + 'range': 'BrainSlab'}}}) + + used: Optional[str] = Field(None, description="""The brain slab from which the tissue sample was dissected from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + was_guided_by: Optional[str] = Field(None, description="""The dissection ROI polygon which was used to guide the tissue dissection.""", json_schema_extra = { "linkml_meta": {'alias': 'was_guided_by', 'domain_of': ['TissueDissection']} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/TissueDissection","bican:TissueDissection"]] = Field(["bican:TissueDissection"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -1981,33 +11432,376 @@ def pattern_category(cls, v): return v -class DissociatedCellSample(ProvEntity, MaterialSample): +class CellDissociation(ProvActivity, Procedure): """ - A collection of dissociated cells or nuclei derived from dissociation of a tissue sample. + The process of generating dissociated cells from an input tissue sample. This process could also introduce a tissue-source barcode (eg cell hashing), allowing mixing of cell dissociation samples at the cell barcoding step. """ - was_generated_by: Optional[str] = Field(None, description="""The cell dissociation process from which the dissociated cell sample was generated by.""") - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input tissue sample(s) from which dissociated cell sample was derived from.""") - name: Optional[str] = Field(None, description="""Name of a collection of dissociated cells or nuclei derived from dissociation of a tissue sample.""") - cell_prep_type: Optional[DissociatedCellSampleCellPrepType] = Field(None, description="""The type of cell preparation. For example: Cells, Nuclei. This is a property of dissociated_cell_sample.""") - cell_source_oligo_name: Optional[DissociatedCellSampleCellLabelBarcode] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the dissociated cell sample and allows separate dissociated cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source dissociated cell sample.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissociatedCellSample","bican:DissociatedCellSample"]] = Field(["bican:DissociatedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The input tissue sample(s) from which ' + 'the dissociated cell sample was ' + 'derived from.', + 'multivalued': True, + 'name': 'used', + 'range': 'TissueSample'}}}) + + used: Optional[List[str]] = Field(None, description="""The input tissue sample(s) from which the dissociated cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + process_date: Optional[str] = Field(None, description="""Date of cell dissociation process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-BUBUFE27'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'dissociated_cell_sample_preparation_date'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellDissociation","bican:CellDissociation"]] = Field(["bican:CellDissociation"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2015,34 +11809,376 @@ def pattern_category(cls, v): return v -class EnrichedCellSample(ProvEntity, MaterialSample): +class CellEnrichment(ProvActivity, Procedure): """ - A collection of enriched cells or nuclei after enrichment process, usually via fluorescence-activated cell sorting (FACS) using the enrichment plan, is applied to dissociated cell sample. + The process of enriching a dissociated cell sample by including or excluding cells of different types based on an enrichment plan using techniques such as fluorescence-activated cell sorting (FACS). This process could also introduce a tissue-source barcode (eg cell hashing), allowing mixing of cell enriched samples at the cell barcoding step. """ - was_generated_by: Optional[str] = Field(None, description="""The cell enrichment or sample splitting process from which the enriched cell sample was generated by.""") - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The dissociated or enriched cell sample(s) from which the enriched cell sample was derived from.""") - name: Optional[str] = Field(None, description="""Name of collection of enriched cells or nuclei after enrichment process (usually via FACS using the Enrichment Plan) applied to dissociated_cell_sample.""") - enrichment_population: Optional[str] = Field(None, description="""Actual percentage of cells as a result of using set of fluorescent marker label(s) to enrich dissociated_cell_sample with desired mix of cell populations. This plan can also be used to describe 'No FACS' where no enrichment was performed. This is a property of enriched_cell_prep_container.""") - cell_source_oligo_name: Optional[str] = Field(None, description="""Name of cell source oligo used in cell plexing. The oligo molecularly tags all the cells in the enriched cell sample and allows separate enriched cell samples to be combined downstream in the barcoded cell sample. The oligo name is associated with a sequence in a lookup table. This sequence will be needed during alignment to associate reads with the parent source enriched cell sample.""") - histone_modification_marker: Optional[str] = Field(None, description="""Histone modification marker antibodies (eg H3K27ac, H3K27me3, H3K9me3) used in conjunction with an Enriched Cell Source Barcode in order to combine multiple Enriched Cell Populations before Barcoded Cell Sample step for 10xMultiome method. Each of the Histone antibodies captures an essential part of the epigenome.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSample","bican:EnrichedCellSample"]] = Field(["bican:EnrichedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The input dissociated cell sample(s) ' + 'from which the enriched cell sample ' + 'was derived from.', + 'multivalued': True, + 'name': 'used', + 'range': 'DissociatedCellSample'}}}) + + used: Optional[List[str]] = Field(None, description="""The input dissociated cell sample(s) from which the enriched cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + process_date: Optional[str] = Field(None, description="""Date of cell enrichment process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-PFPFFC28'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'enriched_cell_sample_preparation_date'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellEnrichment","bican:CellEnrichment"]] = Field(["bican:CellEnrichment"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2050,32 +12186,365 @@ def pattern_category(cls, v): return v -class BarcodedCellSample(ProvEntity, MaterialSample): +class EnrichedCellSampleSplitting(ProvActivity, Procedure): """ - A collection of molecularly barcoded cells. Input will be either dissociated cell sample or enriched cell sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated cell sample or enriched cell sample can lead to multiple barcoded cell samples. The sequences of the molecular barcodes are revealed during alignment of the resulting fastq files for the barcoded cell sample. The barcoded cell sample name and the cell level molecular barcode together uniquely identify a single cell. + The process of splitting an enriched cell sample into several portions. Each portion may be used by the same or different groups for different scientific studies. """ - was_generated_by: Optional[str] = Field(None, description="""The barcoding process from which the barcoded cell sample is generated from.""") - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""") - name: Optional[str] = Field(None, description="""Name of a collection of barcoded cells. Input will be either dissociated_cell_sample or enriched_cell_sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated_cell_sample or enriched_cell_sample can lead to multiple barcoded_cell_samples.""") - number_of_expected_cells: Optional[int] = Field(None, description="""Expected number of cells/nuclei of a barcoded_cell_sample that will be barcoded and available for sequencing. This is a derived number from 'Barcoded cell input quantity count' that is dependent on the \"capture rate\" of the barcoding method. It is usually a calculated fraction of the 'Barcoded cell input quantity count' going into the barcoding method.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/BarcodedCellSample","bican:BarcodedCellSample"]] = Field(["bican:BarcodedCellSample"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The enrichment cell sample splitting ' + 'process from which the enriched cell ' + 'sample was generated by.', + 'name': 'used', + 'range': 'EnrichedCellSample'}}}) + + used: Optional[str] = Field(None, description="""The enrichment cell sample splitting process from which the enriched cell sample was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/EnrichedCellSampleSplitting","bican:EnrichedCellSampleSplitting"]] = Field(["bican:EnrichedCellSampleSplitting"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2083,34 +12552,399 @@ def pattern_category(cls, v): return v -class AmplifiedCdna(ProvEntity, MaterialSample): +class CellBarcoding(ProvActivity, Procedure): """ - A collection of cDNA molecules derived and amplified from an input barcoded cell sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods. + The process of adding a molecular barcode to individual cells in a sample. The input will be either dissociated cell sample or enriched cell sample. Cell barcodes are only guaranteed to be unique within this one collection. One dissociated cell sample or enriched cell sample can lead to multiple barcoded cell samples. """ - was_generated_by: Optional[str] = Field(None, description="""The cDNA amplification process from which the amplified cDNA was generated by.""") - was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""") - name: Optional[str] = Field(None, description="""Name of a collection of cDNA molecules derived and amplified from an input barcoded_cell_sample. These cDNA molecules represent the gene expression of each cell, with all cDNA molecules from a given cell retaining that cell's unique barcode from the cell barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods.""") - quantity_ng: Optional[float] = Field(None, description="""Amount of cDNA produced after cDNA amplification measured in nanograms.""") - pass_fail_result: Optional[AmplifiedCdnaRnaAmplificationPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of cDNA yield and size.""") - percent_cdna_longer_than_400bp: Optional[float] = Field(None, description="""QC metric to measure mRNA degradation of cDNA. Higher % is higher quality starting material. Over 400bp is used as a universal cutoff for intact (full length) vs degraded cDNA and is a common output from Bioanalyzer and Fragment Analyzer elecropheragrams.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/AmplifiedCdna","bican:AmplifiedCdna"]] = Field(["bican:AmplifiedCdna"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The input dissociated or enriched ' + 'cell sample(s) from which the ' + 'barcoded cell sample was derived ' + 'from.', + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'multivalued': True, + 'name': 'used'}}}) + + used: Optional[List[str]] = Field(None, description="""The input dissociated or enriched cell sample(s) from which the barcoded cell sample was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exactly_one_of': [{'range': 'DissociatedCellSample'}, + {'range': 'EnrichedCellSample'}], + 'slot_uri': 'prov:used'} }) + barcoded_cell_sample_port_well: Optional[str] = Field(None, description="""Specific position of the loaded port of the 10x chip. An Enriched or Dissociated Cell Sample is loaded into a port on a chip (creating a Barcoded Cell Sample). Can be left null for non-10x methods.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell sample port well', + 'domain_of': ['CellBarcoding'], + 'exact_mappings': ['NIMP:PD-KJKJZK32'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_port_well'}}, + 'slot_uri': 'bican:aca38100-d245-4be4-9be3-ba27192779fe'} }) + barcoded_cell_input_quantity_count: Optional[int] = Field(None, description="""Number of enriched or dissociated cells/nuclei going into the barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'barcoded cell input quantity count', + 'domain_of': ['CellBarcoding'], + 'exact_mappings': ['NIMP:PD-ZZZZWQ40'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_input_quantity_count'}}, + 'slot_uri': 'bican:aa534269-7c9b-4b63-b990-eea8cda56d0e'} }) + process_date: Optional[str] = Field(None, description="""Date of cell barcoding process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-SHSHZS25'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_preparation_date'}}} }) + method: Optional[BarcodedCellSampleTechnique] = Field(None, description="""Standardized nomenclature to describe the general barcoding method used. For example: Multiome, ATAC Only, GEX Only or snm3C-seq.""", json_schema_extra = { "linkml_meta": {'alias': 'method', + 'domain_of': ['CellBarcoding', 'LibraryConstruction'], + 'exact_mappings': ['NIMP:PD-TDTDDF25'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'barcoded_cell_sample_technique'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/CellBarcoding","bican:CellBarcoding"]] = Field(["bican:CellBarcoding"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2118,37 +12952,390 @@ def pattern_category(cls, v): return v -class Library(ProvEntity, MaterialSample): +class CdnaAmplification(ProvActivity, Procedure): """ - A collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing. + The process of creating a collection of cDNA molecules derived and amplified from an input barcoded cell sample. A large amount of cDNA is needed to have accurate and reliable sequencing detection of gene expression. This process generates multiple copies of each mRNA transcript (expressed gene) within each cell while retaining the cell's unique barcode from the barcoding step. This is a necessary step for GEX methods but is not used for ATAC methods. """ - was_generated_by: Optional[str] = Field(None, description="""The library construction process from which the library was generated by.""") - was_derived_from: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""") - name: Optional[str] = Field(None, description="""Name of a library, which is a collection of fragmented and barcode-indexed DNA molecules for sequencing. An index or barcode is typically introduced to enable identification of library origin to allow libraries to be pooled together for sequencing.""") - average_size_bp: Optional[int] = Field(None, description="""Average size of the library in terms of base pairs. This is used to calculate the molarity before pooling and sequencing.""") - concentration_nm: Optional[float] = Field(None, description="""Concentration of library in terms of nM (nMol/L). Number of molecules is needed for accurate pooling of the libraries and for generating the number of target reads/cell in sequencing.""") - pass_fail_result: Optional[LibraryPrepPassFail] = Field(None, description="""Pass or Fail result based on qualitative assessment of library yield and size.""") - quantity_fmol: Optional[float] = Field(None, description="""Amount of library generated in terms of femtomoles""") - quantity_ng: Optional[float] = Field(None, description="""Amount of library generated in terms of nanograms""") - r1_r2_index: Optional[LibraryR1R2Index] = Field(None, description="""Name of the pair of library indexes used for sequencing. Indexes allow libraries to be pooled together for sequencing. Sequencing output (fastq) are demultiplexed by using the indexes for each library. The name will be associated with the sequences of i7, i5, and i5as, which are needed by SeqCores for demultiplexing. The required direction of the sequence (sense or antisense) of the index can differ depending on sequencing instruments.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/Library","bican:Library"]] = Field(["bican:Library"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The input barcoded cell sample from ' + 'which amplified cDNA was derived ' + 'from.', + 'name': 'used', + 'range': 'BarcodedCellSample'}}}) + + used: Optional[str] = Field(None, description="""The input barcoded cell sample from which amplified cDNA was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + amplified_cDNA_PCR_cycles: Optional[int] = Field(None, description="""Number of PCR cycles used during cDNA amplification for this cDNA.""", json_schema_extra = { "linkml_meta": {'alias': 'amplified cDNA PCR cycles', + 'domain_of': ['CdnaAmplification'], + 'exact_mappings': ['NIMP:PD-OKOKQD38'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_pcr_cycles'}}, + 'slot_uri': 'bican:3827634c-3f8f-4760-b358-86ce4b030238'} }) + cDNA_amplification_process_date: Optional[date] = Field(None, description="""Date of cDNA amplification.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification process date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-BYBYBY24'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'amplified_cdna_preparation_date'}}, + 'slot_uri': 'bican:6cc333e7-9b98-497f-b7b1-eae904db2400'} }) + cDNA_amplification_set: Optional[str] = Field(None, description="""cDNA amplification set, containing multiple amplified_cDNA_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'cDNA amplification set', + 'domain_of': ['CdnaAmplification', 'LibraryConstruction'], + 'exact_mappings': ['NIMP:PD-SCSCTM41'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'cdna_amplification_set'}}, + 'slot_uri': 'bican:42e98a88-50b3-4ea2-871b-2142f6a0dfdd'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/CdnaAmplification","bican:CdnaAmplification"]] = Field(["bican:CdnaAmplification"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2156,31 +13343,399 @@ def pattern_category(cls, v): return v -class LibraryAliquot(ProvEntity, MaterialSample): +class LibraryConstruction(ProvActivity, Procedure): """ - One library in the library pool. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library aliquot name. A given library may produce multiple library aliquots, which is done in the case of resequencing. Each library aliquot will produce a set of fastq files. + The process of constructing a library from input material (such as amplified cDNA or barcoded cell sample) derived from one or more cell samples. cDNA is fragmented into smaller pieces appropriate for sequencing and at the same time a library index barcode is incorporated to enable identification of library origin, allowing libraries to be pooled together for sequencing. """ - was_derived_from: Optional[str] = Field(None, description="""The input library from which the library aliquot was derived from.""") - name: Optional[str] = Field(None, description="""One library in the library pool. Each Library_aliquot_name in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. The resulting demultiplexed fastq files will include the library_aliquot_name.""") - was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryAliquot","bican:LibraryAliquot"]] = Field(["bican:LibraryAliquot"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'any_of': [{'range': 'BarcodedCellSample'}, + {'range': 'AmplifiedCdna'}], + 'description': 'The input barcoded cell sample or ' + 'amplified cDNA from which the library ' + 'was derived from.', + 'name': 'used'}}}) + + used: Optional[str] = Field(None, description="""The input barcoded cell sample or amplified cDNA from which the library was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'any_of': [{'range': 'BarcodedCellSample'}, {'range': 'AmplifiedCdna'}], + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + library_method: Optional[LibraryTechnique] = Field(None, description="""Standardized nomenclature to describe the specific library method used. This specifies the alignment method required for the library. For example, 10xV3.1 (for RNASeq single assay), 10xMult-GEX (for RNASeq multiome assay), and 10xMult-ATAC (for ATACSeq multiome assay).""", json_schema_extra = { "linkml_meta": {'alias': 'library method', + 'domain_of': ['CellBarcoding', 'LibraryConstruction'], + 'exact_mappings': ['NIMP:PD-AJAJCN35'], + 'in_subset': ['analysis', 'tracking', 'alignment'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_technique'}}, + 'slot_uri': 'bican:7b60d59e-fdd7-4b27-a2d4-cae9b69103a6'} }) + library_creation_date: Optional[date] = Field(None, description="""Date of library construction.""", json_schema_extra = { "linkml_meta": {'alias': 'library creation date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-JCJCNM35'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_preparation_date'}}, + 'slot_uri': 'bican:9c2f575d-1b64-451d-894f-656861afe07a'} }) + library_input_ng: Optional[float] = Field(None, description="""Amount of cDNA going into library construction in nanograms.""", json_schema_extra = { "linkml_meta": {'alias': 'library input ng', + 'domain_of': ['LibraryConstruction'], + 'exact_mappings': ['NIMP:PD-AFAFXP37'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_input_ng'}}, + 'slot_uri': 'bican:e4d31d97-722d-4771-a0e4-e6062190f2c1'} }) + library_prep_set: Optional[str] = Field(None, description="""Library set, containing multiple library_names that were processed at the same time.""", json_schema_extra = { "linkml_meta": {'alias': 'library prep set', + 'domain_of': ['CdnaAmplification', 'LibraryConstruction'], + 'exact_mappings': ['NIMP:PD-PCPCVR50'], + 'in_subset': ['analysis'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_prep_set'}}, + 'slot_uri': 'bican:b124ffa9-9134-4a61-a30d-bb191b2fc7fa'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryConstruction","bican:LibraryConstruction"]] = Field(["bican:LibraryConstruction"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2188,32 +13743,375 @@ def pattern_category(cls, v): return v -class LibraryPool(ProvEntity, MaterialSample): +class LibraryPooling(ProvActivity, Procedure): """ - A library pool is made up of library aliquots from multiple libraries. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. + The process of constructing of a libray pool by combining library aliquots from a set of input libraries. Each library aliquot in a library pool will have a unique R1/R2 index to allow for sequencing together then separating the sequencing output by originating library aliquot through the process of demultiplexing. """ - was_generated_by: Optional[str] = Field(None, description="""The pooling process from which the library pool was generated by.""") - was_derived_from: Optional[List[str]] = Field(default_factory=list, description="""The input aliquot(s) from which the library pool was derived from.""") - name: Optional[str] = Field(None, description="""Library lab's library pool name. For some labs this may be the same as \"Libray pool tube local name\". Other labs distinguish between the local tube label of the library pool and the library pool name provided to SeqCore for tracking. Local Pool Name is used to communicate sequencing status between SeqCore and Library Labs.""") - local_tube_id: Optional[str] = Field(None, description="""Library Pool Tube local name. Label of the tube containing the library pool, which is made up of multiple library_aliquots. This is a Library Lab local tube name, before the pool is aliquoted to the Seq Core provided tube 'Library Pool Tube Name'.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPool","bican:LibraryPool"]] = Field(["bican:LibraryPool"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") - provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""") - xref: Optional[List[str]] = Field(default_factory=list, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""") - full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""") - synonym: Optional[List[str]] = Field(default_factory=list, description="""Alternate human-readable names for a thing""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'library_generation'], + 'mixins': ['ProvActivity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'used': {'description': 'The input aliquot(s) from which the ' + 'library pool was derived from.', + 'multivalued': True, + 'name': 'used', + 'range': 'LibraryAliquot'}}}) + + used: Optional[List[str]] = Field(None, description="""The input aliquot(s) from which the library pool was derived from.""", json_schema_extra = { "linkml_meta": {'alias': 'used', + 'domain_of': ['ProvActivity', + 'DissectionRoiDelineation', + 'TissueDissection', + 'CellDissociation', + 'CellEnrichment', + 'EnrichedCellSampleSplitting', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'slot_uri': 'prov:used'} }) + process_date: Optional[str] = Field(None, description="""Date of library pooling process.""", json_schema_extra = { "linkml_meta": {'alias': 'process_date', + 'domain_of': ['CellDissociation', + 'CellEnrichment', + 'CellBarcoding', + 'CdnaAmplification', + 'LibraryConstruction', + 'LibraryPooling'], + 'exact_mappings': ['NIMP:PD-XUXUNM35'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'library_pool_preparation_date'}}} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/LibraryPooling","bican:LibraryPooling"]] = Field(["bican:LibraryPooling"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2225,24 +14123,716 @@ class DissectionRoiPolygon(ProvEntity, Entity): """ A polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning. """ - was_generated_by: Optional[str] = Field(None, description="""The delineation process from which the dissection ROI polygon was generated by.""") - name: Optional[str] = Field(None, description="""Name of a polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning.""") - annotates: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""") - was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""") - id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""") - iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""") - category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiPolygon","bican:DissectionRoiPolygon"]] = Field(["bican:DissectionRoiPolygon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""") - type: Optional[List[str]] = Field(default_factory=list) - description: Optional[str] = Field(None, description="""a human-readable description of an entity""") - has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""") - deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""") + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'exact_mappings': ['NIMP:Specimen%20Dissected%20ROI'], + 'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'in_subset': ['bican', 'tissue_specimen'], + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'name': {'description': 'Name of a polygon annotated on a ' + 'brain slab image delineating a region ' + 'of interest (ROI) for a tissue sample ' + 'dissectioning.', + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'local_name'}}, + 'name': 'name'}, + 'was_generated_by': {'description': 'The delineation process ' + 'from which the dissection ' + 'ROI polygon was generated ' + 'by.', + 'name': 'was_generated_by', + 'range': 'DissectionRoiDelineation'}}}) + + was_generated_by: Optional[str] = Field(None, description="""The delineation process from which the dissection ROI polygon was generated by.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + name: Optional[str] = Field(None, description="""Name of a polygon annotated on a brain slab image delineating a region of interest (ROI) for a tissue sample dissectioning.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'local_names': {'NIMP': {'local_name_source': 'NIMP', + 'local_name_value': 'local_name'}}, + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + annotates: Optional[str] = Field(None, description="""The brain slab that was annotated by the delineation process.""", json_schema_extra = { "linkml_meta": {'alias': 'annotates', + 'domain_of': ['DissectionRoiPolygon'], + 'exact_mappings': ['NIMP:has_parent']} }) + was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/DissectionRoiPolygon","bican:DissectionRoiPolygon"]] = Field(["bican:DissectionRoiPolygon"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + + @field_validator('category') + def pattern_category(cls, v): + pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") + if isinstance(v,list): + for element in v: + if isinstance(v, str) and not pattern.match(element): + raise ValueError(f"Invalid category format: {element}") + elif isinstance(v,str): + if not pattern.match(v): + raise ValueError(f"Invalid category format: {v}") + return v + + +class DigitalAsset(ProvEntity, Dataset): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'https://identifiers.org/brain-bican/library-generation-schema', + 'mixins': ['ProvEntity'], + 'slot_usage': {'category': {'name': 'category', + 'pattern': '^bican:[A-Z][A-Za-z]+$'}, + 'content_url': {'name': 'content_url'}, + 'digest': {'name': 'digest'}, + 'was_derived_from': {'name': 'was_derived_from', + 'range': 'LibraryPool'}}}) + + was_derived_from: Optional[str] = Field(None, description="""A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.""", json_schema_extra = { "linkml_meta": {'alias': 'was_derived_from', + 'domain_of': ['ProvEntity', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DigitalAsset'], + 'slot_uri': 'prov:wasDerivedFrom'} }) + digest: Optional[List[Union[Checksum, str]]] = Field(None, description="""Stores checksum information.""", json_schema_extra = { "linkml_meta": {'alias': 'digest', + 'any_of': [{'range': 'checksum'}, {'range': 'string'}], + 'domain_of': ['DigitalAsset']} }) + content_url: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'content_url', 'domain_of': ['DigitalAsset']} }) + data_type: Optional[str] = Field(None, description="""The type of data in the file""", json_schema_extra = { "linkml_meta": {'alias': 'data_type', 'domain_of': ['DigitalAsset']} }) + was_generated_by: Optional[str] = Field(None, description="""Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.""", json_schema_extra = { "linkml_meta": {'alias': 'was_generated_by', + 'domain_of': ['ProvEntity', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'slot_uri': 'prov:wasGeneratedBy'} }) + id: str = Field(..., description="""A unique identifier for an entity. Must be either a CURIE shorthand for a URI or a complete URI""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'definition_uri': 'https://w3id.org/biolink/vocab/id', + 'domain': 'entity', + 'domain_of': ['ontology class', + 'entity', + 'attribute', + 'named thing', + 'taxonomic rank', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['AGRKB:primaryId', 'gff3:ID', 'gpi:DB_Object_ID'], + 'in_subset': ['translator_minimal'], + 'slot_uri': 'biolink:id'} }) + iri: Optional[str] = Field(None, description="""An IRI for an entity. This is determined by the id using expansion rules.""", json_schema_extra = { "linkml_meta": {'alias': 'iri', + 'definition_uri': 'https://w3id.org/biolink/vocab/iri', + 'domain_of': ['attribute', + 'entity', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['WIKIDATA_PROPERTY:P854'], + 'in_subset': ['translator_minimal', 'samples'], + 'slot_uri': 'biolink:iri'} }) + category: List[Literal["https://identifiers.org/brain-bican/vocab/DigitalAsset","bican:DigitalAsset"]] = Field(["bican:DigitalAsset"], description="""Name of the high level ontology class in which this entity is categorized. Corresponds to the label for the biolink entity type class. In a neo4j database this MAY correspond to the neo4j label tag. In an RDF database it should be a biolink model class URI. This field is multi-valued. It should include values for ancestors of the biolink class; for example, a protein such as Shh would have category values `biolink:Protein`, `biolink:GeneProduct`, `biolink:MolecularEntity`. In an RDF database, nodes will typically have an rdf:type triples. This can be to the most specific biolink class, or potentially to a class more specific than something in biolink. For example, a sequence feature `f` may have a rdf:type assertion to a SO class such as TF_binding_site, which is more specific than anything in biolink. Here we would have categories {biolink:GenomicEntity, biolink:MolecularEntity, biolink:NamedThing}""", json_schema_extra = { "linkml_meta": {'alias': 'category', + 'definition_uri': 'https://w3id.org/biolink/vocab/category', + 'designates_type': True, + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'type', + 'is_class_field': True, + 'slot_uri': 'biolink:category'} }) + type: Optional[List[str]] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'type', + 'definition_uri': 'https://w3id.org/biolink/vocab/type', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['gff3:type', 'gpi:DB_Object_Type'], + 'mappings': ['rdf:type'], + 'slot_uri': 'rdf:type'} }) + name: Optional[str] = Field(None, description="""A human-readable name for an attribute or entity.""", json_schema_extra = { "linkml_meta": {'alias': 'name', + 'aliases': ['label', 'display name', 'title'], + 'definition_uri': 'https://w3id.org/biolink/vocab/name', + 'domain': 'entity', + 'domain_of': ['attribute', + 'entity', + 'macromolecular machine mixin', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene or gene product', + 'gene', + 'genome', + 'Donor', + 'BrainSlab', + 'TissueSample', + 'DissociatedCellSample', + 'EnrichedCellSample', + 'BarcodedCellSample', + 'AmplifiedCdna', + 'Library', + 'LibraryAliquot', + 'LibraryPool', + 'DissectionRoiPolygon'], + 'exact_mappings': ['gff3:Name', 'gpi:DB_Object_Name'], + 'in_subset': ['translator_minimal', 'samples'], + 'mappings': ['rdfs:label'], + 'narrow_mappings': ['dct:title', 'WIKIDATA_PROPERTY:P1476'], + 'slot_uri': 'rdfs:label'} }) + description: Optional[str] = Field(None, description="""a human-readable description of an entity""", json_schema_extra = { "linkml_meta": {'alias': 'description', + 'aliases': ['definition'], + 'definition_uri': 'https://w3id.org/biolink/vocab/description', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['IAO:0000115', 'skos:definitions'], + 'in_subset': ['translator_minimal'], + 'mappings': ['dct:description'], + 'narrow_mappings': ['gff3:Description'], + 'slot_uri': 'dct:description'} }) + has_attribute: Optional[List[str]] = Field(None, description="""connects any entity to an attribute""", json_schema_extra = { "linkml_meta": {'alias': 'has_attribute', + 'close_mappings': ['OBI:0001927'], + 'definition_uri': 'https://w3id.org/biolink/vocab/has_attribute', + 'domain': 'entity', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['SIO:000008'], + 'in_subset': ['samples'], + 'narrow_mappings': ['OBAN:association_has_subject_property', + 'OBAN:association_has_object_property', + 'CPT:has_possibly_included_panel_element', + 'DRUGBANK:category', + 'EFO:is_executed_in', + 'HANCESTRO:0301', + 'LOINC:has_action_guidance', + 'LOINC:has_adjustment', + 'LOINC:has_aggregation_view', + 'LOINC:has_approach_guidance', + 'LOINC:has_divisor', + 'LOINC:has_exam', + 'LOINC:has_method', + 'LOINC:has_modality_subtype', + 'LOINC:has_object_guidance', + 'LOINC:has_scale', + 'LOINC:has_suffix', + 'LOINC:has_time_aspect', + 'LOINC:has_time_modifier', + 'LOINC:has_timing_of', + 'NCIT:R88', + 'NCIT:eo_disease_has_property_or_attribute', + 'NCIT:has_data_element', + 'NCIT:has_pharmaceutical_administration_method', + 'NCIT:has_pharmaceutical_basic_dose_form', + 'NCIT:has_pharmaceutical_intended_site', + 'NCIT:has_pharmaceutical_release_characteristics', + 'NCIT:has_pharmaceutical_state_of_matter', + 'NCIT:has_pharmaceutical_transformation', + 'NCIT:is_qualified_by', + 'NCIT:qualifier_applies_to', + 'NCIT:role_has_domain', + 'NCIT:role_has_range', + 'INO:0000154', + 'HANCESTRO:0308', + 'OMIM:has_inheritance_type', + 'orphanet:C016', + 'orphanet:C017', + 'RO:0000053', + 'RO:0000086', + 'RO:0000087', + 'SNOMED:has_access', + 'SNOMED:has_clinical_course', + 'SNOMED:has_count_of_base_of_active_ingredient', + 'SNOMED:has_dose_form_administration_method', + 'SNOMED:has_dose_form_release_characteristic', + 'SNOMED:has_dose_form_transformation', + 'SNOMED:has_finding_context', + 'SNOMED:has_finding_informer', + 'SNOMED:has_inherent_attribute', + 'SNOMED:has_intent', + 'SNOMED:has_interpretation', + 'SNOMED:has_laterality', + 'SNOMED:has_measurement_method', + 'SNOMED:has_method', + 'SNOMED:has_priority', + 'SNOMED:has_procedure_context', + 'SNOMED:has_process_duration', + 'SNOMED:has_property', + 'SNOMED:has_revision_status', + 'SNOMED:has_scale_type', + 'SNOMED:has_severity', + 'SNOMED:has_specimen', + 'SNOMED:has_state_of_matter', + 'SNOMED:has_subject_relationship_context', + 'SNOMED:has_surgical_approach', + 'SNOMED:has_technique', + 'SNOMED:has_temporal_context', + 'SNOMED:has_time_aspect', + 'SNOMED:has_units', + 'UMLS:has_structural_class', + 'UMLS:has_supported_concept_property', + 'UMLS:has_supported_concept_relationship', + 'UMLS:may_be_qualified_by'], + 'slot_uri': 'biolink:has_attribute'} }) + deprecated: Optional[bool] = Field(None, description="""A boolean flag indicating that an entity is no longer considered current or valid.""", json_schema_extra = { "linkml_meta": {'alias': 'deprecated', + 'definition_uri': 'https://w3id.org/biolink/vocab/deprecated', + 'domain_of': ['entity', + 'attribute', + 'named thing', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'exact_mappings': ['oboInOwl:ObsoleteClass'], + 'slot_uri': 'biolink:deprecated'} }) + provided_by: Optional[List[str]] = Field(None, description="""The value in this node property represents the knowledge provider that created or assembled the node and all of its attributes. Used internally to represent how a particular node made its way into a knowledge provider or graph.""", json_schema_extra = { "linkml_meta": {'alias': 'provided_by', + 'definition_uri': 'https://w3id.org/biolink/vocab/provided_by', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:provided_by'} }) + xref: Optional[List[str]] = Field(None, description="""A database cross reference or alternative identifier for a NamedThing or edge between two NamedThings. This property should point to a database record or webpage that supports the existence of the edge, or gives more detail about the edge. This property can be used on a node or edge to provide multiple URIs or CURIE cross references.""", json_schema_extra = { "linkml_meta": {'alias': 'xref', + 'aliases': ['dbxref', 'Dbxref', 'DbXref', 'record_url', 'source_record_urls'], + 'definition_uri': 'https://w3id.org/biolink/vocab/xref', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'gene', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'genome'], + 'in_subset': ['translator_minimal'], + 'narrow_mappings': ['gff3:Dbxref', 'gpi:DB_Xrefs'], + 'slot_uri': 'biolink:xref'} }) + full_name: Optional[str] = Field(None, description="""a long-form human readable name for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'full_name', + 'definition_uri': 'https://w3id.org/biolink/vocab/full_name', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'is_a': 'node property', + 'slot_uri': 'biolink:full_name'} }) + synonym: Optional[List[str]] = Field(None, description="""Alternate human-readable names for a thing""", json_schema_extra = { "linkml_meta": {'alias': 'synonym', + 'aliases': ['alias'], + 'definition_uri': 'https://w3id.org/biolink/vocab/synonym', + 'domain': 'named thing', + 'domain_of': ['named thing', + 'attribute', + 'organism taxon', + 'information content entity', + 'dataset', + 'physical entity', + 'activity', + 'procedure', + 'material sample', + 'biological entity', + 'gene', + 'genome'], + 'in_subset': ['translator_minimal'], + 'is_a': 'node property', + 'narrow_mappings': ['skos:altLabel', + 'gff3:Alias', + 'AGRKB:synonyms', + 'gpi:DB_Object_Synonyms', + 'HANCESTRO:0330', + 'IAO:0000136', + 'RXNORM:has_tradename'], + 'slot_uri': 'biolink:synonym'} }) + license: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'license', + 'definition_uri': 'https://w3id.org/biolink/vocab/license', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:license'], + 'is_a': 'node property', + 'narrow_mappings': ['WIKIDATA_PROPERTY:P275'], + 'slot_uri': 'biolink:license'} }) + rights: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'rights', + 'definition_uri': 'https://w3id.org/biolink/vocab/rights', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:rights'], + 'is_a': 'node property', + 'slot_uri': 'biolink:rights'} }) + format: Optional[str] = Field(None, json_schema_extra = { "linkml_meta": {'alias': 'format', + 'definition_uri': 'https://w3id.org/biolink/vocab/format', + 'domain': 'information content entity', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:format', 'WIKIDATA_PROPERTY:P2701'], + 'is_a': 'node property', + 'slot_uri': 'biolink:format'} }) + creation_date: Optional[date] = Field(None, description="""date on which an entity was created. This can be applied to nodes or edges""", json_schema_extra = { "linkml_meta": {'alias': 'creation_date', + 'aliases': ['publication date'], + 'definition_uri': 'https://w3id.org/biolink/vocab/creation_date', + 'domain': 'named thing', + 'domain_of': ['information content entity', 'dataset'], + 'exact_mappings': ['dct:createdOn', 'WIKIDATA_PROPERTY:P577'], + 'is_a': 'node property', + 'slot_uri': 'biolink:creation_date'} }) @field_validator('category') def pattern_category(cls, v): pattern=re.compile(r"^bican:[A-Z][A-Za-z]+$") if isinstance(v,list): for element in v: - if not pattern.match(element): + if isinstance(v, str) and not pattern.match(element): raise ValueError(f"Invalid category format: {element}") elif isinstance(v,str): if not pattern.match(v): @@ -2280,16 +14870,8 @@ def pattern_category(cls, v): Gene.model_rebuild() Genome.model_rebuild() ProvActivity.model_rebuild() -DissectionRoiDelineation.model_rebuild() -TissueDissection.model_rebuild() -CellDissociation.model_rebuild() -CellEnrichment.model_rebuild() -EnrichedCellSampleSplitting.model_rebuild() -CellBarcoding.model_rebuild() -CdnaAmplification.model_rebuild() -LibraryConstruction.model_rebuild() -LibraryPooling.model_rebuild() ProvEntity.model_rebuild() +Checksum.model_rebuild() Donor.model_rebuild() BrainSlab.model_rebuild() TissueSample.model_rebuild() @@ -2300,5 +14882,15 @@ def pattern_category(cls, v): Library.model_rebuild() LibraryAliquot.model_rebuild() LibraryPool.model_rebuild() +DissectionRoiDelineation.model_rebuild() +TissueDissection.model_rebuild() +CellDissociation.model_rebuild() +CellEnrichment.model_rebuild() +EnrichedCellSampleSplitting.model_rebuild() +CellBarcoding.model_rebuild() +CdnaAmplification.model_rebuild() +LibraryConstruction.model_rebuild() +LibraryPooling.model_rebuild() DissectionRoiPolygon.model_rebuild() +DigitalAsset.model_rebuild()