From 37f593d2dd18c6d5c230d77a5bd2fd7857a0a498 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 13 Sep 2026 06:21:11 +0000 Subject: [PATCH] Regenerate derived files from schema changes --- docs/schema/valuesets.yaml | 9844 ++++++++++++++++- project/jsonschema/valuesets.schema.json | 1375 ++- src/valuesets/datamodel/valuesets.py | 2325 ++++ src/valuesets/datamodel/valuesets_pydantic.py | 2325 ++++ src/valuesets/enums/__init__.py | 83 +- src/valuesets/enums/bio/expression_units.py | 4 +- src/valuesets/enums/bioprocessing/scale_up.py | 20 + src/valuesets/enums/business/currencies.py | 121 + src/valuesets/enums/chemistry/identifiers.py | 47 + .../enums/clinical/gene2phenotype.py | 391 + .../enums/computing/systems_engineering.py | 55 + .../verification_validation_ieee_1012.py | 34 + src/valuesets/enums/medical/dicom.py | 390 + .../enums/medical/imaging_data_management.py | 182 + .../enums/medical/imaging_deidentification.py | 205 + .../enums/process_engineering/__init__.py | 1 + .../process_engineering/process_industries.py | 86 + .../process_engineering/process_modeling.py | 107 + .../process_engineering/process_streams.py | 129 + .../process_engineering/thermodynamics.py | 173 + .../process_engineering/unit_operations.py | 226 + .../enums/statistics/statistical_tests.py | 360 + src/valuesets/enums/units/measurements.py | 65 + 23 files changed, 18102 insertions(+), 446 deletions(-) create mode 100644 src/valuesets/enums/business/currencies.py create mode 100644 src/valuesets/enums/chemistry/identifiers.py create mode 100644 src/valuesets/enums/clinical/gene2phenotype.py create mode 100644 src/valuesets/enums/computing/systems_engineering.py create mode 100644 src/valuesets/enums/computing/verification_validation_ieee_1012.py create mode 100644 src/valuesets/enums/medical/dicom.py create mode 100644 src/valuesets/enums/medical/imaging_data_management.py create mode 100644 src/valuesets/enums/medical/imaging_deidentification.py create mode 100644 src/valuesets/enums/process_engineering/__init__.py create mode 100644 src/valuesets/enums/process_engineering/process_industries.py create mode 100644 src/valuesets/enums/process_engineering/process_modeling.py create mode 100644 src/valuesets/enums/process_engineering/process_streams.py create mode 100644 src/valuesets/enums/process_engineering/thermodynamics.py create mode 100644 src/valuesets/enums/process_engineering/unit_operations.py create mode 100644 src/valuesets/enums/statistics/statistical_tests.py diff --git a/docs/schema/valuesets.yaml b/docs/schema/valuesets.yaml index 0265c911..e84a8ccc 100644 --- a/docs/schema/valuesets.yaml +++ b/docs/schema/valuesets.yaml @@ -20,6 +20,7 @@ imports: - bio/genome_features - bio/bio_entities - bio/structural_biology +- bio/biological_imaging_methods - bio/protein_structure_features - bio/biosafety - bio/insdc_missing_values @@ -55,6 +56,7 @@ imports: - industry/construction - industry/manufacturing - statistics/prediction_outcomes +- statistics/statistical_tests - social/person_status - social/sdoh - bio/specimen_processing @@ -115,18 +117,31 @@ imports: - industry/safety_colors - medical/clinical - medical/neuroimaging +- medical/dicom +- medical/imaging_deidentification +- medical/imaging_data_management - medical/family_history - medical/pediatric_oncology/diagnosis_categories - medical/pediatric_oncology/iccc3 - medical/pediatric_oncology/staging/neuroblastoma - clinical/nih_demographics - clinical/phenopackets +- clinical/gene2phenotype - bioprocessing/scale_up - bioprocessing/biomanufacturing +- process_engineering/unit_operations +- process_engineering/process_streams +- process_engineering/process_industries +- process_engineering/thermodynamics +- process_engineering/process_modeling +- chemistry/identifiers +- business/currencies - units/measurements - units/quantity_kinds - computing/file_formats - computing/maturity_levels +- computing/systems_engineering +- computing/verification_validation_ieee_1012 - computing/ontologies - computing/croissant_ml - business/organizational_structures @@ -5025,6 +5040,277 @@ enums: description: Crosslinking modification meaning: MOD:00033 title: crosslinked residues + BiologicalImagingMethod: + name: BiologicalImagingMethod + definition_uri: https://w3id.org/valuesets/BiologicalImagingMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Any imaging method from FBbi, covering recorded images (macroscopy, + microscopy, radiography, tomography) and portrayed images (diagrams, graphic + illustrations, montages) + title: Biological Imaging Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000222 + relationship_types: + - rdfs:subClassOf + include_self: false + MicroscopyMethod: + name: MicroscopyMethod + definition_uri: https://w3id.org/valuesets/MicroscopyMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Any microscopy method from FBbi, including X-ray microscopy, microscopy + with lenses (light and electron microscopy) and scanning probe microscopy + title: Microscopy Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000241 + relationship_types: + - rdfs:subClassOf + include_self: false + LightMicroscopyMethod: + name: LightMicroscopyMethod + definition_uri: https://w3id.org/valuesets/LightMicroscopyMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Light microscopy methods from FBbi, including bright-field, phase + contrast, differential interference contrast, polarization, fluorescence and + optical coherence tomography + title: Light Microscopy Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000345 + relationship_types: + - rdfs:subClassOf + include_self: false + FluorescenceMicroscopyMethod: + name: FluorescenceMicroscopyMethod + definition_uri: https://w3id.org/valuesets/FluorescenceMicroscopyMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Fluorescence microscopy methods from FBbi, including wide-field, + confocal, multi-photon, light sheet and total internal reflection fluorescence + microscopy + title: Fluorescence Microscopy Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000246 + relationship_types: + - rdfs:subClassOf + include_self: false + ImagingSamplePreparationMethod: + name: ImagingSamplePreparationMethod + definition_uri: https://w3id.org/valuesets/ImagingSamplePreparationMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Sample preparation methods from FBbi, describing the state of the + specimen at imaging time such as embedded, sectioned, whole mounted or permeabilized + tissue, dispersed or adherent cells, and fixation methods + title: Imaging Sample Preparation Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000001 + relationship_types: + - rdfs:subClassOf + include_self: false + TissueFixationMethod: + name: TissueFixationMethod + definition_uri: https://w3id.org/valuesets/TissueFixationMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Fixation methods from FBbi, such as aldehyde, alcohol, freeze and + heat fixation + title: Tissue Fixation Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00001012 + relationship_types: + - rdfs:subClassOf + include_self: false + ImagingVisualizationMethod: + name: ImagingVisualizationMethod + definition_uri: https://w3id.org/valuesets/ImagingVisualizationMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Visualization methods from FBbi, the largest branch of the ontology, + covering visualization of labels conjugated to probes, of contiguous regions, + and by chemical attribute (histological stains, fluorescent dyes and fluorescent + proteins) + title: Imaging Visualization Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000031 + relationship_types: + - rdfs:subClassOf + include_self: false + ImagingIlluminationMethod: + name: ImagingIlluminationMethod + definition_uri: https://w3id.org/valuesets/ImagingIlluminationMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Illumination methods from FBbi, characterized by the probe (photons, + electrons, acoustic waves, neutrons, ions), field (widefield, narrowfield, nearfield, + farfield), coherence, timing and geometry + title: Imaging Illumination Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000268 + relationship_types: + - rdfs:subClassOf + include_self: false + ImagingDetectionMethod: + name: ImagingDetectionMethod + definition_uri: https://w3id.org/valuesets/ImagingDetectionMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Detection methods from FBbi, characterized by what is detected (photons, + electrons, acoustic waves, induced current), field of detection and detector + geometry (spot or area detector) + title: Imaging Detection Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000269 + relationship_types: + - rdfs:subClassOf + include_self: false + ImagedParameter: + name: ImagedParameter + definition_uri: https://w3id.org/valuesets/ImagedParameter + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Physical parameters of the specimen recorded by an image, from FBbi, + such as absorption, elastic and inelastic scattering, refractive index, retardance, + fluorescence emission, electron density and elevation + title: Imaged Parameter + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000270 + relationship_types: + - rdfs:subClassOf + include_self: false + ContrastEnhancingMethod: + name: ContrastEnhancingMethod + definition_uri: https://w3id.org/valuesets/ContrastEnhancingMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Optical and computational contrast-enhancing methods from FBbi, such + as phase contrast, DIC and deconvolution + title: Contrast Enhancing Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000271 + relationship_types: + - rdfs:subClassOf + include_self: false + ResolutionEnhancingMethod: + name: ResolutionEnhancingMethod + definition_uri: https://w3id.org/valuesets/ResolutionEnhancingMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Super-resolution methods from FBbi, such as structured illumination, + point-localization methods, STED and GSD + title: Resolution Enhancing Method + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000321 + relationship_types: + - rdfs:subClassOf + include_self: false + SourceOfImageContrast: + name: SourceOfImageContrast + definition_uri: https://w3id.org/valuesets/SourceOfImageContrast + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Physical bases of image contrast from FBbi, such as differences in + chemical composition, distribution of an epitope, protein or nucleic acid sequence, + stain binding, refractive index boundaries, fluorescence lifetime and optical + anisotropy + title: Source of Image Contrast + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + reachable_from: + source_ontology: obo:fbbi + source_nodes: + - FBbi:00000590 + relationship_types: + - rdfs:subClassOf + include_self: false SecondaryStructureType: name: SecondaryStructureType definition_uri: https://w3id.org/valuesets/SecondaryStructureType @@ -22289,6 +22575,976 @@ enums: text: FN description: False Negative title: False Negative + StatisticalTestEnum: + name: StatisticalTestEnum + definition_uri: https://w3id.org/valuesets/StatisticalTestEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: 'Statistical hypothesis tests, drawn primarily from the descendants + of ''statistical hypothesis test'' (OBI:0000673) in STATO. + + This enum deliberately mixes abstraction levels: alongside concrete tests it + retains STATO''s grouping classes (GOODNESS_OF_FIT_TEST, HOMOSKEDASTICITY_TEST, + SPHERICITY_TEST, POST_HOC_ANALYSIS, NON_PARAMETRIC_TEST and similar) so that + a source reporting only "a test of normality was applied" can still be annotated. + Prefer the most specific value that the source supports, and use a grouping + value only when the specific test is genuinely not stated. + + Several values are also repeated in the narrower enums below (TTestTypeEnum, + NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum), which exist to + constrain slot ranges. The duplicated meanings are intentional; from_meaning() + resolves per enum class.' + title: Statistical Test + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + see_also: + - http://purl.obolibrary.org/obo/OBI_0000673 + - https://obofoundry.org/ontology/stato.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + STUDENTS_T_TEST: + text: STUDENTS_T_TEST + description: Test in which the test statistic follows a Student's t distribution + under the null hypothesis; used when the population is assumed normal but + the sample is small + meaning: OBI:0000739 + title: Student's t-test + aliases: + - t-test + - t-Test + ONE_SAMPLE_T_TEST: + text: ONE_SAMPLE_T_TEST + description: Student's t-test comparing a sample mean against a specified + population mean + meaning: STATO:0000302 + title: one sample t-test + close_mappings: + - NCIT:C53240 + PAIRED_T_TEST: + text: PAIRED_T_TEST + description: Student's t-test for differences between paired observations, + as in a repeated measures design with two measurements per subject + meaning: STATO:0000095 + title: paired t-test + close_mappings: + - NCIT:C53232 + TWO_SAMPLE_T_TEST_EQUAL_VARIANCE: + text: TWO_SAMPLE_T_TEST_EQUAL_VARIANCE + description: Two-sample t-test comparing the means of two independent samples + assumed to have equal variances + meaning: STATO:0000303 + annotations: + note: + tag: note + value: 'The bare terms "unpaired t-test" and "independent samples t-test" + are ambiguous: they are attached here because this is the classical + equal-variance form, but common software defaults to the Welch variant + (R''s t.test, scipy.stats.ttest_ind with equal_var=False). Choose TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE + when the source did not assume equal variances.' + title: two sample t-test with equal variance + aliases: + - independent samples t-test + - unpaired t-test + TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE: + text: TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE + description: Two-sample t-test used when the variances of the two populations + are not assumed equal + meaning: STATO:0000304 + annotations: + note: + tag: note + value: This is the default two-sample t-test in R and SciPy, so an unqualified + "unpaired t-test" in a methods section often means this rather than + TWO_SAMPLE_T_TEST_EQUAL_VARIANCE. + title: two sample t-test with unequal variance + aliases: + - Welch's t-test + YUEN_T_TEST: + text: YUEN_T_TEST + description: Robust two-sample t-test computed on trimmed means and winsorized + variances + meaning: STATO:0000406 + title: Yuen t-Test with trimmed means + Z_TEST: + text: Z_TEST + description: Test evaluating the null hypothesis that the means of two populations + are equal using a normal reference distribution + meaning: STATO:0000052 + title: Z-test + ONE_SAMPLE_HOTELLING_T2_TEST: + text: ONE_SAMPLE_HOTELLING_T2_TEST + description: Multivariate extension of the one-sample t-test comparing a vector + of means against a reference vector + meaning: STATO:0000153 + title: one sample Hotelling T2 test + TWO_SAMPLE_HOTELLING_T2_TEST: + text: TWO_SAMPLE_HOTELLING_T2_TEST + description: Multivariate generalization of the two-sample t-test comparing + mean vectors of two populations + meaning: STATO:0000098 + title: two sample Hotelling T2 test + ANOVA: + text: ANOVA + description: Analysis of variance testing whether the means of several groups + are equal + meaning: OBI:0200201 + title: ANOVA + aliases: + - analysis of variance + ONE_WAY_ANOVA: + text: ONE_WAY_ANOVA + description: Analysis of variance in which the groups compared correspond + to the levels of a single independent variable + meaning: STATO:0000044 + title: one-way ANOVA + TWO_WAY_ANOVA: + text: TWO_WAY_ANOVA + description: Analysis of variance in which the groups compared correspond + to the levels of exactly two independent variables + meaning: STATO:0000045 + title: two-way ANOVA + MULTIWAY_ANOVA: + text: MULTIWAY_ANOVA + description: Analysis of variance in which the groups compared correspond + to the levels of more than two independent variables + meaning: STATO:0000048 + title: multiway ANOVA + REPEATED_MEASURES_ANOVA: + text: REPEATED_MEASURES_ANOVA + description: Analysis of variance developed for non-independent observations + arising from repeated measurements on the same experimental unit + meaning: STATO:0000260 + title: repeated measure ANOVA + MANOVA: + text: MANOVA + description: Procedure for comparing multivariate sample means when there + are two or more dependent variables + meaning: STATO:0000454 + title: multivariate analysis of variance + ANCOVA: + text: ANCOVA + description: Analysis of covariance evaluating whether population means of + a dependent variable are equal across levels of a categorical independent + variable while controlling for covariates + meaning: STATO:0000179 + title: ANCOVA + aliases: + - analysis of covariance + F_TEST: + text: F_TEST + description: Test in which the test statistic follows an F-distribution under + the null hypothesis + meaning: STATO:0000086 + title: F-test + MANN_WHITNEY_U_TEST: + text: MANN_WHITNEY_U_TEST + description: Non-parametric test comparing two independent groups without + assuming normally distributed values + meaning: STATO:0000076 + title: Mann-Whitney U-test + aliases: + - Wilcoxon rank sum test + - Mann-Whitney Test + close_mappings: + - NCIT:C53247 + WILCOXON_SIGNED_RANK_TEST: + text: WILCOXON_SIGNED_RANK_TEST + description: Non-parametric test of the null hypothesis that the median difference + between paired observations is zero + meaning: STATO:0000092 + title: Wilcoxon signed rank test + close_mappings: + - NCIT:C53246 + KRUSKAL_WALLIS_TEST: + text: KRUSKAL_WALLIS_TEST + description: Non-parametric test comparing two or more groups without assuming + normally distributed values + meaning: STATO:0000094 + title: Kruskal Wallis test + aliases: + - Kruskal-Wallis Test + close_mappings: + - NCIT:C53248 + FRIEDMAN_TEST: + text: FRIEDMAN_TEST + description: Non-parametric test for differences among multiple related groups; + extension of the Wilcoxon signed-rank test to more than two conditions + meaning: STATO:0000641 + title: Friedman test + SIGN_TEST: + text: SIGN_TEST + description: Non-parametric test assessing whether the median of a population + equals a specified value + meaning: STATO:0000644 + title: sign test + CHI_SQUARE_TEST: + text: CHI_SQUARE_TEST + description: Test in which the sampling distribution of the test statistic + is a chi-square distribution under the null hypothesis + meaning: OBI:0200200 + title: chi square test + close_mappings: + - NCIT:C53235 + PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE: + text: PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE + description: Chi-square test of the independence of two categorical variables + in a contingency table + meaning: STATO:0000081 + title: Pearson's Chi square test of independence between categorical variables + PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST: + text: PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST + description: Chi-square test evaluating the goodness of fit of observed counts + to an expected distribution + meaning: STATO:0000309 + title: Pearson's Chi square test of goodness of fit + YATES_CORRECTED_CHI_SQUARE_TEST: + text: YATES_CORRECTED_CHI_SQUARE_TEST + description: Chi-square test of association between two dichotomous variables + with a continuity correction + meaning: STATO:0000070 + title: Yate's corrected Chi-Squared test + aliases: + - Yates' chi-squared test + CHI_SQUARE_TEST_FOR_HOMOGENEITY: + text: CHI_SQUARE_TEST_FOR_HOMOGENEITY + description: Test comparing proportions observed across multiple groups using + contingency table frequencies + meaning: STATO:0000701 + title: Chi-square test for homogeneity + FISHERS_EXACT_TEST: + text: FISHERS_EXACT_TEST + description: Exact test for non-random association between two categorical + variables + meaning: STATO:0000073 + title: Fisher's exact test + close_mappings: + - NCIT:C45725 + BARNARDS_TEST: + text: BARNARDS_TEST + description: Exact unconditional test of association between two categorical + variables, often more powerful than Fisher's exact test + meaning: STATO:0000310 + title: Barnard's test + MCNEMAR_TEST: + text: MCNEMAR_TEST + description: Test applied to 2 x 2 contingency tables of paired nominal data + to compare marginal frequencies + meaning: STATO:0000433 + title: McNemar test + COCHRANS_Q_TEST: + text: COCHRANS_Q_TEST + description: Test for unreplicated randomized block designs with a binary + response and paired data + meaning: STATO:0000434 + title: Cochran's q test for heterogeneity + COCHRAN_ARMITAGE_TEST_FOR_TREND: + text: COCHRAN_ARMITAGE_TEST_FOR_TREND + description: Test for association between a dichotomous variable and an ordered + categorical variable + meaning: STATO:0000148 + title: Cochran-Armitage test for trend + COCHRAN_MANTEL_HAENSZEL_TEST: + text: COCHRAN_MANTEL_HAENSZEL_TEST + description: Test of independence between two categorical variables stratified + by a third variable + meaning: STATO:0000074 + title: Cochran-Mantel-Haenzel test for repeated tests of independence + aliases: + - Cochran-Mantel-Haenszel test + EXACT_BINOMIAL_TEST: + text: EXACT_BINOMIAL_TEST + description: Test of the statistical significance of deviations from a theoretically + expected distribution of observations into two categories + meaning: STATO:0000298 + title: exact binomial test + aliases: + - binomial test + HYPERGEOMETRIC_TEST: + text: HYPERGEOMETRIC_TEST + description: Test evaluating whether a random variable follows a hypergeometric + distribution; widely used for over-representation analysis + meaning: STATO:0000285 + title: hypergeometric test + aliases: + - over-representation test + TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES: + text: TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES + description: Test evaluating whether a discrete predictor variable is associated + with a discrete response variable + meaning: STATO:0000027 + title: test of association between categorical variables + GOODNESS_OF_FIT_TEST: + text: GOODNESS_OF_FIT_TEST + description: Test evaluating whether a sample distribution can be considered + equivalent to a theoretical distribution + meaning: STATO:0000191 + title: goodness of fit statistical test + SHAPIRO_WILK_TEST: + text: SHAPIRO_WILK_TEST + description: Goodness of fit test of the null hypothesis that a sample is + drawn from a normally distributed population + meaning: STATO:0000077 + title: Shapiro-Wilk test + KOLMOGOROV_SMIRNOV_TEST: + text: KOLMOGOROV_SMIRNOV_TEST + description: Goodness of fit test of the null hypothesis that a sample is + drawn from a specified continuous probability distribution + meaning: STATO:0000083 + title: Kolmogorov-Smirnov test + close_mappings: + - NCIT:C53250 + ANDERSON_DARLING_TEST: + text: ANDERSON_DARLING_TEST + description: Goodness of fit test of whether a sample is drawn from a given + probability distribution, weighting the tails more heavily + meaning: STATO:0000042 + title: Anderson-Darling test + HOSMER_LEMESHOW_TEST: + text: HOSMER_LEMESHOW_TEST + description: Goodness of fit test for logistic regression models comparing + predicted probabilities against observed outcomes + meaning: STATO:0000653 + title: Hosmer-Lemeshow goodness-of-fit test + LEVENES_TEST: + text: LEVENES_TEST + description: Test of the null hypothesis of equality of variance across several + populations + meaning: STATO:0000078 + title: Levene's test + BARTLETTS_TEST: + text: BARTLETTS_TEST + description: Test of whether k samples are drawn from populations with equal + variances; sensitive to departures from normality + meaning: STATO:0000079 + title: Barlett's test + aliases: + - Bartlett's test + BROWN_FORSYTHE_TEST: + text: BROWN_FORSYTHE_TEST + description: Test of equality of group variances based on deviations from + the group medians + meaning: STATO:0000080 + title: Brown Forsythe test + BREUSCH_PAGAN_TEST: + text: BREUSCH_PAGAN_TEST + description: Score test of the hypothesis of constant error variance against + the alternative that error variance depends on the fitted values + meaning: STATO:0000284 + title: Breusch-Pagan test + HOMOSKEDASTICITY_TEST: + text: HOMOSKEDASTICITY_TEST + description: Test evaluating whether variances from several random samples + are similar + meaning: STATO:0000137 + title: homoskedasticity test + aliases: + - homoscedasticity test + HOMOGENEITY_TEST: + text: HOMOGENEITY_TEST + description: Test evaluating whether a statistical measure computed from several + random samples is similar + meaning: STATO:0000697 + title: homogeneity test + SPHERICITY_TEST: + text: SPHERICITY_TEST + description: Test of the null hypothesis of equality of the variances of differences + between levels of a repeated measures factor + meaning: STATO:0000131 + title: sphericity test + MAUCHLYS_TEST: + text: MAUCHLYS_TEST + description: Test of sphericity in the context of repeated measures analysis + of variance + meaning: STATO:0000199 + title: Mauchly's test for sphericity + ODDS_RATIO_HOMOGENEITY_TEST: + text: ODDS_RATIO_HOMOGENEITY_TEST + description: Test of the null hypothesis that odds ratios are consistent across + strata of a population + meaning: STATO:0000247 + title: odds ratio homogeneity test + BRESLOW_DAY_TEST: + text: BRESLOW_DAY_TEST + description: Test of whether odds ratios are homogeneous across several 2x2 + contingency tables + meaning: STATO:0000130 + title: Breslow-Day test for homogeneity of odds ratio + TARONES_TEST: + text: TARONES_TEST + description: Test of the null hypothesis that odds ratios are homogeneous + across strata + meaning: STATO:0000136 + title: Tarone's test for homogeneity of odds ratio + WOOLFS_TEST: + text: WOOLFS_TEST + description: Test of the null hypothesis that odds ratios are the same across + all strata of the population under investigation + meaning: STATO:0000246 + title: Woolf's test + POST_HOC_ANALYSIS: + text: POST_HOC_ANALYSIS + description: Test carried out following an analysis of variance that rejected + the null hypothesis, to identify which groups differ + meaning: STATO:0000133 + title: post-hoc analysis + TUKEY_HSD_TEST: + text: TUKEY_HSD_TEST + description: Post-hoc test following a significant ANOVA that determines which + means differ, controlling the family-wise error rate + meaning: STATO:0000187 + title: Tukey HSD for Post-Hoc Analysis + aliases: + - Tukey honestly significant difference test + NEWMAN_KEULS_TEST: + text: NEWMAN_KEULS_TEST + description: Stepwise multiple comparison procedure identifying sample means + that differ significantly, based on the studentized range statistic + meaning: STATO:0000261 + title: Newman-Keuls test post-hoc analysis + aliases: + - Student-Newman-Keuls test + SCHEFFE_TEST: + text: SCHEFFE_TEST + description: Conservative post-hoc procedure evaluating all possible contrasts + while adjusting significance levels for multiple comparisons + meaning: STATO:0000156 + title: Scheffe test + aliases: + - "Scheff\xE9 test" + LEAST_SIGNIFICANT_DIFFERENCE_TEST: + text: LEAST_SIGNIFICANT_DIFFERENCE_TEST + description: Post-hoc test for multiple comparisons of treatments by means + of the least significant difference following an ANOVA + meaning: STATO:0000157 + title: Least significance different test + aliases: + - Fisher's LSD test + - Least significant difference test + DUNNS_TEST: + text: DUNNS_TEST + description: Non-parametric post-hoc test run after a Kruskal-Wallis test + to identify which groups differ + meaning: STATO:0000490 + title: "Dunn\u2019s multiple comparison test" + aliases: + - Dunn's multiple comparison test + CONOVER_IMAN_TEST: + text: CONOVER_IMAN_TEST + description: Post-hoc test for pairwise multiple comparisons using rank sums + following a Kruskal-Wallis test + meaning: STATO:0000491 + title: Conover-Iman test of multiple comparisons using rank sums + GRUBBS_TEST: + text: GRUBBS_TEST + description: Test detecting a single outlier in a univariate data set assumed + to come from a normally distributed population + meaning: STATO:0000441 + title: Grubbs' test + DIXON_Q_TEST: + text: DIXON_Q_TEST + description: Test detecting outliers in a univariate data set assumed to come + from a normally distributed population + meaning: STATO:0000440 + title: Dixon Q test + TIETJEN_MOORE_TEST: + text: TIETJEN_MOORE_TEST + description: Generalization of Grubbs' test allowing detection of more than + one outlier + meaning: STATO:0000442 + title: Tietjen-Moore test for outliers + GENERALIZED_ESD_TEST: + text: GENERALIZED_ESD_TEST + description: Outlier detection test with a built-in correction for multiple + testing + meaning: STATO:0000443 + title: generalized extreme studentized deviate test + aliases: + - generalized ESD test + LIKELIHOOD_RATIO_TEST: + text: LIKELIHOOD_RATIO_TEST + description: Test of whether there is evidence for moving from a simple model + to a more complex model in which the simple model is nested + meaning: OBI:0000861 + title: Likelihood-ratio test + WALD_TEST: + text: WALD_TEST + description: Test evaluating whether one or more model coefficients differ + from zero, given their variance-covariance matrix + meaning: STATO:0000559 + title: Wald test + aliases: + - Wald chi-squared test + LOG_RANK_TEST: + text: LOG_RANK_TEST + description: Test comparing the survival distributions of two or more groups + meaning: STATO:0000640 + title: log-rank test + aliases: + - logrank test + HARDY_WEINBERG_EQUILIBRIUM_TEST: + text: HARDY_WEINBERG_EQUILIBRIUM_TEST + description: Test of whether a population's allele proportions are in Hardy-Weinberg + equilibrium, often used as a genotyping quality control + meaning: STATO:0000181 + title: Hardy-Weinberg equilibrium testing + TRANSMISSION_DISEQUILIBRIUM_TEST: + text: TRANSMISSION_DISEQUILIBRIUM_TEST + description: Test for genetic linkage between a genetic marker and a trait + in families, robust to population structure + meaning: STATO:0000275 + title: transmission disequilibrium test + PEARSON_CORRELATION_TEST: + text: PEARSON_CORRELATION_TEST + description: Test of whether two continuous variables are linearly associated, + based on Pearson's correlation coefficient + meaning: NCIT:C53244 + title: Pearson Correlation Test + related_mappings: + - STATO:0000280 + SPEARMAN_CORRELATION_TEST: + text: SPEARMAN_CORRELATION_TEST + description: Non-parametric test of whether two variables are monotonically + associated, based on Spearman's rank correlation coefficient + meaning: NCIT:C53249 + title: Spearman Correlation Test + related_mappings: + - STATO:0000201 + AB_TEST: + text: AB_TEST + description: Statistical testing comparing two types of treatments or interventions + meaning: STATO:0000715 + title: A/B testing + BETWEEN_GROUP_COMPARISON_TEST: + text: BETWEEN_GROUP_COMPARISON_TEST + description: Test detecting differences between the means computed for each + study group population + meaning: STATO:0000279 + title: between group comparison statistical test + WITHIN_SUBJECT_COMPARISON_TEST: + text: WITHIN_SUBJECT_COMPARISON_TEST + description: Test evaluating whether a change occurs within one experimental + unit over time following a treatment or event + meaning: STATO:0000202 + title: within subject comparison statistical test + NON_PARAMETRIC_TEST: + text: NON_PARAMETRIC_TEST + description: Test making no assumption about the underlying data distribution + meaning: STATO:0000198 + title: non-parametric test + close_mappings: + - NCIT:C53229 + TTestTypeEnum: + name: TTestTypeEnum + definition_uri: https://w3id.org/valuesets/TTestTypeEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Variants of Student's t-test + title: T-Test Type + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + ONE_SAMPLE: + text: ONE_SAMPLE + description: Compares a sample mean against a specified population mean + meaning: STATO:0000302 + title: one sample t-test + PAIRED: + text: PAIRED + description: Compares paired observations from the same experimental units + meaning: STATO:0000095 + title: paired t-test + TWO_SAMPLE_EQUAL_VARIANCE: + text: TWO_SAMPLE_EQUAL_VARIANCE + description: Compares the means of two independent samples assumed to have + equal variances + meaning: STATO:0000303 + title: two sample t-test with equal variance + TWO_SAMPLE_UNEQUAL_VARIANCE: + text: TWO_SAMPLE_UNEQUAL_VARIANCE + description: Compares the means of two independent samples with unequal variances + (Welch's t-test) + meaning: STATO:0000304 + title: two sample t-test with unequal variance + TRIMMED_MEANS: + text: TRIMMED_MEANS + description: Robust t-test computed on trimmed means and winsorized variances + meaning: STATO:0000406 + title: Yuen t-Test with trimmed means + NormalityTestEnum: + name: NormalityTestEnum + definition_uri: https://w3id.org/valuesets/NormalityTestEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Goodness of fit tests commonly used to assess whether a sample is + drawn from a normally distributed population + title: Normality Test + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + SHAPIRO_WILK: + text: SHAPIRO_WILK + description: Tests the null hypothesis that a sample comes from a normal distribution + meaning: STATO:0000077 + title: Shapiro-Wilk test + KOLMOGOROV_SMIRNOV: + text: KOLMOGOROV_SMIRNOV + description: Tests whether a sample is drawn from a specified continuous probability + distribution + meaning: STATO:0000083 + title: Kolmogorov-Smirnov test + ANDERSON_DARLING: + text: ANDERSON_DARLING + description: Tests whether a sample is drawn from a given probability distribution, + with added sensitivity in the tails + meaning: STATO:0000042 + title: Anderson-Darling test + HomoscedasticityTestEnum: + name: HomoscedasticityTestEnum + definition_uri: https://w3id.org/valuesets/HomoscedasticityTestEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Tests evaluating equality of variances across groups or samples + title: Homoscedasticity Test + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + LEVENE: + text: LEVENE + description: Tests the null hypothesis of equality of variance in several + populations + meaning: STATO:0000078 + title: Levene's test + BARTLETT: + text: BARTLETT + description: Tests whether k samples come from populations with equal variances + meaning: STATO:0000079 + title: Barlett's test + aliases: + - Bartlett's test + BROWN_FORSYTHE: + text: BROWN_FORSYTHE + description: Tests equality of group variances using deviations from group + medians + meaning: STATO:0000080 + title: Brown Forsythe test + BREUSCH_PAGAN: + text: BREUSCH_PAGAN + description: Tests for heteroscedasticity of regression residuals + meaning: STATO:0000284 + title: Breusch-Pagan test + PostHocTestEnum: + name: PostHocTestEnum + definition_uri: https://w3id.org/valuesets/PostHocTestEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Multiple comparison procedures carried out after a significant omnibus + test such as an ANOVA or Kruskal-Wallis test + title: Post-Hoc Test + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + TUKEY_HSD: + text: TUKEY_HSD + description: Determines which means differ after a significant ANOVA while + controlling the family-wise error rate + meaning: STATO:0000187 + title: Tukey HSD for Post-Hoc Analysis + NEWMAN_KEULS: + text: NEWMAN_KEULS + description: Stepwise multiple comparison procedure based on the studentized + range + meaning: STATO:0000261 + title: Newman-Keuls test post-hoc analysis + SCHEFFE: + text: SCHEFFE + description: Conservative procedure evaluating all possible contrasts + meaning: STATO:0000156 + title: Scheffe test + aliases: + - "Scheff\xE9 test" + LEAST_SIGNIFICANT_DIFFERENCE: + text: LEAST_SIGNIFICANT_DIFFERENCE + description: Pairwise comparisons using the least significant difference following + an ANOVA + meaning: STATO:0000157 + title: Least significance different test + aliases: + - Fisher's LSD test + - Least significant difference test + DUNN: + text: DUNN + description: Non-parametric post-hoc test following a Kruskal-Wallis test + meaning: STATO:0000490 + title: "Dunn\u2019s multiple comparison test" + CONOVER_IMAN: + text: CONOVER_IMAN + description: Pairwise rank-sum comparisons following a Kruskal-Wallis test + meaning: STATO:0000491 + title: Conover-Iman test of multiple comparisons using rank sums + MultipleTestingCorrectionEnum: + name: MultipleTestingCorrectionEnum + definition_uri: https://w3id.org/valuesets/MultipleTestingCorrectionEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: 'Methods for adjusting p-values or significance thresholds when many + hypotheses are tested simultaneously. + + As with StatisticalTestEnum, concrete methods (BONFERRONI, HOLM_BONFERRONI, + BENJAMINI_HOCHBERG) sit alongside the error-rate classes they belong to (FAMILY_WISE_ERROR_RATE, + FALSE_DISCOVERY_RATE) and procedural classes (SIMULTANEOUS, SEQUENTIAL). The + classes are intended for sources that report only "FDR-corrected" without naming + a procedure.' + title: Multiple Testing Correction Method + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + see_also: + - http://purl.obolibrary.org/obo/OBI_0200089 + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + BONFERRONI: + text: BONFERRONI + description: Divides the desired family-wise significance level by the number + of comparisons made + meaning: NCIT:C61594 + title: Bonferroni Adjustment + aliases: + - Bonferroni correction + HOLM_BONFERRONI: + text: HOLM_BONFERRONI + description: Sequentially rejective closed-test procedure controlling the + family-wise error rate + meaning: OBI:0200066 + title: Holm-Bonferroni family-wise error rate correction method + aliases: + - Holm correction + BENJAMINI_HOCHBERG: + text: BENJAMINI_HOCHBERG + description: Sequential p-value procedure controlling the false discovery + rate under independence or positive dependence + meaning: OBI:0200036 + title: Benjamini and Hochberg false discovery rate correction method + aliases: + - BH + - BH-FDR + BENJAMINI_YEKUTIELI: + text: BENJAMINI_YEKUTIELI + description: False discovery rate procedure valid under arbitrary dependence + between tests + meaning: OBI:0200049 + title: Benjamini and Yekutieli false discovery rate correction method + aliases: + - BY + HOLM_FDR: + text: HOLM_FDR + description: Application of the Holm p-value procedure to correct false discovery + rate. Note that Holm's step-down procedure controls the family-wise error + rate, not the false discovery rate; the "false discovery rate" wording is + STATO's own label for this term. Prefer HOLM_BONFERRONI unless you specifically + need the STATO term. + meaning: STATO:0000551 + title: Holm false discovery rate correction + HOMMEL_FDR: + text: HOMMEL_FDR + description: Application of the Hommel p-value procedure to correct false + discovery rate + meaning: STATO:0000552 + title: Hommel false discovery rate correction + FAMILY_WISE_ERROR_RATE: + text: FAMILY_WISE_ERROR_RATE + description: Procedure controlling the probability of making at least one + false positive across a family of tests + meaning: OBI:0200073 + title: family wise error rate correction method + aliases: + - FWER correction + FALSE_DISCOVERY_RATE: + text: FALSE_DISCOVERY_RATE + description: Procedure controlling the expected proportion of false positives + among rejected hypotheses + meaning: OBI:0200163 + title: false discovery rate correction method + SIMULTANEOUS: + text: SIMULTANEOUS + description: Correction method applying a single adjustment across all tests + simultaneously + meaning: STATO:0000601 + title: simultaneous multiple testing correction + SEQUENTIAL: + text: SEQUENTIAL + description: Correction method applying adjustments in a stepwise, ordered + fashion + meaning: STATO:0000602 + title: sequential multiple testing correction method + ALPHA_SPENDING: + text: ALPHA_SPENDING + description: Sequential procedure allocating portions of the overall type + I error rate across interim analyses + meaning: STATO:0000605 + title: alpha spending procedure + ALPHA_INVESTING: + text: ALPHA_INVESTING + description: Sequential procedure that earns and spends alpha as hypotheses + are tested + meaning: STATO:0000604 + title: alpha investing procedure + NONE: + text: NONE + description: No adjustment made for multiple testing + annotations: + note: + tag: note + value: No appropriate ontology term found for absence of correction + title: No correction + CorrelationCoefficientEnum: + name: CorrelationCoefficientEnum + definition_uri: https://w3id.org/valuesets/CorrelationCoefficientEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Coefficients quantifying the strength of association between two + variables + title: Correlation Coefficient + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PEARSON: + text: PEARSON + description: Evaluates the strength of linear association between two continuous + variables + meaning: STATO:0000280 + title: Pearson's correlation coefficient + aliases: + - Pearson's r + SPEARMAN: + text: SPEARMAN + description: Non-parametric measure of statistical dependence between two + ranked variables + meaning: STATO:0000201 + title: Spearman's rank correlation coefficient + aliases: + - Spearman's rho + KENDALL: + text: KENDALL + description: Correlation coefficient between two ordinal or ranked variables + meaning: STATO:0000240 + title: Kendall's correlation coefficient + aliases: + - Kendall's tau + TestTailednessEnum: + name: TestTailednessEnum + definition_uri: https://w3id.org/valuesets/TestTailednessEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Whether a statistical test allocates the significance level to one + or both tails of the reference distribution + title: Test Tailedness + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + ONE_TAILED: + text: ONE_TAILED + description: Allocates all of the significance level to one tail, evaluating + a directional alternative hypothesis + meaning: STATO:0000286 + title: one tailed test + aliases: + - one-sided test + TWO_TAILED: + text: TWO_TAILED + description: Allocates half of the significance level to each tail, evaluating + a non-directional alternative hypothesis + meaning: STATO:0000287 + title: two tailed test + aliases: + - two-sided test + DistributionalAssumptionEnum: + name: DistributionalAssumptionEnum + definition_uri: https://w3id.org/valuesets/DistributionalAssumptionEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: 'Whether an inference procedure assumes a parametric form for the + underlying population distribution. + + Note the deliberate type approximation: the values denote a property of a procedure, + but the available ontology terms (NCIT:C53230, STATO:0000198) denote classes + of test. Neither PATO nor OBI currently has a quality or characteristic term + for "parametric", so the test classes are used as the closest available referent.' + title: Distributional Assumption + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PARAMETRIC: + text: PARAMETRIC + description: Procedure that incorporates assumptions about the population + probability distribution + meaning: NCIT:C53230 + title: Parametric Test + NON_PARAMETRIC: + text: NON_PARAMETRIC + description: Procedure that makes no assumption about the underlying data + distribution + meaning: STATO:0000198 + title: non-parametric test + aliases: + - Non-Parametric Test + close_mappings: + - NCIT:C53229 + ComparisonObjectiveEnum: + name: ComparisonObjectiveEnum + definition_uri: https://w3id.org/valuesets/ComparisonObjectiveEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The objective of a between-group comparison, particularly in the + design of controlled trials + title: Comparison Objective + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + SUPERIORITY: + text: SUPERIORITY + description: Comparison intended to show that the difference in effects exceeds + a prespecified threshold of meaningful benefit + meaning: STATO:0000718 + title: superiority testing + NON_INFERIORITY: + text: NON_INFERIORITY + description: Comparison intended to show that any difference in effects lies + below a prespecified threshold of meaningful harm + meaning: STATO:0000716 + title: non-inferiority testing + EQUIVALENCE: + text: EQUIVALENCE + description: Comparison intended to show that the absolute difference in effects + is smaller than a prespecified threshold + meaning: STATO:0000717 + title: equivalence testing PersonStatusEnum: name: PersonStatusEnum definition_uri: https://w3id.org/valuesets/PersonStatusEnum @@ -50120,314 +51376,3227 @@ enums: title: Naturalistic paradigm aliases: - Experimental design and studies - FamilyRelationship: - name: FamilyRelationship - definition_uri: https://w3id.org/valuesets/FamilyRelationship - instantiates: - - valuesets_meta:ValueSetEnumDefinitionWithSource - description: Family relationships used in pedigree and family history documentation - title: Family Relationship - from_schema: https://w3id.org/valuesets/medical/family_history - source: https://terminology.hl7.org/2.1.0/ValueSet-v3-FamilyMember.html + DICOMModalityEnum: + name: DICOMModalityEnum + definition_uri: https://w3id.org/valuesets/DICOMModalityEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Acquisition modality codes from DICOM PS3.16 Context ID 29 (Acquisition + Modality), the defined terms for the Modality (0008,0060) attribute. The permissible + value is the DICOM code itself; the title is the NCI Thesaurus label where a + mapping exists and the DICOM code meaning is carried as an alias when it differs. + Where an NCI Thesaurus term exists it is the meaning and the DCM code is an + exact mapping; otherwise the DCM code is the meaning, so every value carries + its DCM code in one of the two fields. Waveform modalities (ECG, EEG, etc.) + are defined in CID 34 and are not included here, nor are the non-acquisition + values that also appear in Modality (0008,0060) such as SR, PR, SEG, KO, DOC, + OT and the RT objects. + title: DICOM Acquisition Modality + from_schema: https://w3id.org/valuesets/medical/dicom + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_29.html contributors: - orcid:0000-0002-6601-2165 - https://github.com/anthropics/claude-code status: DRAFT permissible_values: - PARENT: - text: PARENT - description: The player of the role is one who begets, gives birth to, or - nurtures and raises the scoping entity (child) - meaning: HL7:v3-RoleCode#PRN - MOTHER: - text: MOTHER - description: The player of the role is a female who conceives, gives birth - to, or raises and nurtures the scoping entity (child) - meaning: HL7:v3-RoleCode#MTH - FATHER: - text: FATHER - description: The player of the role is a male who begets or raises or nurtures - the scoping entity (child) - meaning: HL7:v3-RoleCode#FTH - NATURAL_MOTHER: - text: NATURAL_MOTHER - description: The player of the role is a female who conceives or gives birth - to the scoping entity (child) - meaning: HL7:v3-RoleCode#NMTH - NATURAL_FATHER: - text: NATURAL_FATHER - description: The player of the role is a male who begets the scoping entity - (child) - meaning: HL7:v3-RoleCode#NFTH - ADOPTIVE_PARENT: - text: ADOPTIVE_PARENT - description: The player of the role (parent) has taken the scoper (child) - into their family through legal means and raises them as his or her own - child - meaning: HL7:v3-RoleCode#ADOPTP - ADOPTIVE_MOTHER: - text: ADOPTIVE_MOTHER - description: The player of the role (mother) is a female who has taken the - scoper (child) into their family through legal means and raises them as - her own child - meaning: HL7:v3-RoleCode#ADOPTM - ADOPTIVE_FATHER: - text: ADOPTIVE_FATHER - description: The player of the role (father) is a male who has taken the scoper - (child) into their family through legal means and raises them as his own - child - meaning: HL7:v3-RoleCode#ADOPTF - STEP_PARENT: - text: STEP_PARENT - description: The player of the role is the spouse of the scoping person's - parent and not the scoping person's natural parent - meaning: HL7:v3-RoleCode#STPPRN - STEP_MOTHER: - text: STEP_MOTHER - description: The player of the role is the female spouse of the scoping person's - parent and not the scoping person's natural mother - meaning: HL7:v3-RoleCode#STPMTH - STEP_FATHER: - text: STEP_FATHER - description: The player of the role is the male spouse of the scoping person's - parent and not the scoping person's natural father - meaning: HL7:v3-RoleCode#STPFTH - FOSTER_PARENT: - text: FOSTER_PARENT - description: The player of the role (parent) who is a state-certified caregiver - responsible for the scoper (child) - meaning: HL7:v3-RoleCode#PRNFOST - GESTATIONAL_MOTHER: - text: GESTATIONAL_MOTHER - description: The player is a female whose womb carries the fetus of the scoper - meaning: HL7:v3-RoleCode#GESTM - SIBLING: - text: SIBLING - description: The player of the role shares one or both parents in common with - the scoping entity - meaning: HL7:v3-RoleCode#SIB - BROTHER: - text: BROTHER - description: The player of the role is a male sharing one or both parents - with the scoping entity - meaning: HL7:v3-RoleCode#BRO - SISTER: - text: SISTER - description: The player of the role is a female sharing one or both parents - with the scoping entity - meaning: HL7:v3-RoleCode#SIS - NATURAL_BROTHER: - text: NATURAL_BROTHER - description: The player of the role is a male related to the scoping entity - by sharing only the same natural parents - meaning: HL7:v3-RoleCode#NBRO - NATURAL_SISTER: - text: NATURAL_SISTER - description: The player of the role is a female related to the scoping entity - by sharing only the same natural parents - meaning: HL7:v3-RoleCode#NSIS - HALF_BROTHER: - text: HALF_BROTHER - description: The player of the role is a male related to the scoping entity - by sharing only one biological parent - meaning: HL7:v3-RoleCode#HBRO - HALF_SISTER: - text: HALF_SISTER - description: The player of the role is a female related to the scoping entity - by sharing only one biological parent - meaning: HL7:v3-RoleCode#HSIS - STEP_BROTHER: - text: STEP_BROTHER - description: The player of the role is a male child of the scoping person's - stepparent - meaning: HL7:v3-RoleCode#STPBRO - STEP_SISTER: - text: STEP_SISTER - description: The player of the role is a female child of the scoping person's - stepparent - meaning: HL7:v3-RoleCode#STPSIS - TWIN: - text: TWIN - description: The scoper and player were carried in the same womb and delivered - in the same birth - meaning: HL7:v3-RoleCode#TWIN - TWIN_BROTHER: - text: TWIN_BROTHER - description: The player of the role is a male born from the same pregnancy - as the scoping entity - meaning: HL7:v3-RoleCode#TWINBRO - TWIN_SISTER: - text: TWIN_SISTER - description: The player of the role is a female born from the same pregnancy - as the scoping entity - meaning: HL7:v3-RoleCode#TWINSIS - FRATERNAL_TWIN: - text: FRATERNAL_TWIN - description: The player of the role is born from the same pregnancy as the - scoping entity but does not share the same genotype - meaning: HL7:v3-RoleCode#FTWIN - IDENTICAL_TWIN: - text: IDENTICAL_TWIN - description: The player of the role is born from the same pregnancy as the - scoping entity and shares the same genotype - meaning: HL7:v3-RoleCode#ITWIN - CHILD: - text: CHILD - description: The player of the role is a child of the scoping entity - meaning: HL7:v3-RoleCode#CHILD - SON: - text: SON - description: The player of the role is a male offspring of the scoping entity - (parent) - meaning: HL7:v3-RoleCode#SON - DAUGHTER: - text: DAUGHTER - description: The player of the role is a female offspring of the scoping entity - (parent) - meaning: HL7:v3-RoleCode#DAU - NATURAL_CHILD: - text: NATURAL_CHILD - description: The player of the role is an offspring of the scoping entity - as determined by birth - meaning: HL7:v3-RoleCode#NCHILD - ADOPTIVE_CHILD: - text: ADOPTIVE_CHILD - description: The player of the role is a child taken into a family through - legal means and raised by the scoping person (parent) as his or her own - child - meaning: HL7:v3-RoleCode#CHLDADOPT - FOSTER_CHILD: - text: FOSTER_CHILD - description: The player of the role is a child receiving parental care and - nurture from the scoping person (parent) but not related to him or her through - legal or blood relationship - meaning: HL7:v3-RoleCode#CHLDFOST - STEP_CHILD: - text: STEP_CHILD - description: The player of the role is a child of the scoping person's spouse - by a previous union - meaning: HL7:v3-RoleCode#STPCHLD - GRANDPARENT: - text: GRANDPARENT - description: The player of the role is a parent of the scoping person's mother - or father - meaning: HL7:v3-RoleCode#GRPRN - GRANDMOTHER: - text: GRANDMOTHER - description: The player of the role is the mother of the scoping person's - mother or father - meaning: HL7:v3-RoleCode#GRMTH - GRANDFATHER: - text: GRANDFATHER - description: The player of the role is the father of the scoping person's - mother or father - meaning: HL7:v3-RoleCode#GRFTH - MATERNAL_GRANDMOTHER: - text: MATERNAL_GRANDMOTHER - description: The player of the role is the mother of the scoping person's - mother - meaning: HL7:v3-RoleCode#MGRMTH - MATERNAL_GRANDFATHER: - text: MATERNAL_GRANDFATHER - description: The player of the role is the father of the scoping person's - mother - meaning: HL7:v3-RoleCode#MGRFTH - PATERNAL_GRANDMOTHER: - text: PATERNAL_GRANDMOTHER - description: The player of the role is the mother of the scoping person's - father - meaning: HL7:v3-RoleCode#PGRMTH - PATERNAL_GRANDFATHER: - text: PATERNAL_GRANDFATHER - description: The player of the role is the father of the scoping person's - father - meaning: HL7:v3-RoleCode#PGRFTH - GRANDCHILD: - text: GRANDCHILD - description: The player of the role is a child of the scoping person's son - or daughter - meaning: HL7:v3-RoleCode#GRNDCHILD - GRANDSON: - text: GRANDSON - description: The player of the role is a son of the scoping person's son or - daughter - meaning: HL7:v3-RoleCode#GRNDSN - GRANDDAUGHTER: - text: GRANDDAUGHTER - description: The player of the role is a daughter of the scoping person's - son or daughter - meaning: HL7:v3-RoleCode#GRNDDAU - AUNT: - text: AUNT - description: The player of the role is a sister of the scoping person's mother - or father - meaning: HL7:v3-RoleCode#AUNT - UNCLE: - text: UNCLE - description: The player of the role is a brother of the scoping person's mother - or father - meaning: HL7:v3-RoleCode#UNCLE - MATERNAL_AUNT: - text: MATERNAL_AUNT - description: The player of the role is a sister of the scoping person's mother - meaning: HL7:v3-RoleCode#MAUNT - MATERNAL_UNCLE: - text: MATERNAL_UNCLE - description: The player of the role is a brother of the scoping person's mother - meaning: HL7:v3-RoleCode#MUNCLE - PATERNAL_AUNT: - text: PATERNAL_AUNT - description: The player of the role is a sister of the scoping person's father - meaning: HL7:v3-RoleCode#PAUNT - PATERNAL_UNCLE: - text: PATERNAL_UNCLE - description: The player of the role is a brother of the scoping person's father - meaning: HL7:v3-RoleCode#PUNCLE - COUSIN: - text: COUSIN - description: The player of the role is a relative descended from a common - ancestor, such as a grandparent, by two or more steps in a diverging line - meaning: HL7:v3-RoleCode#COUSN - MATERNAL_COUSIN: - text: MATERNAL_COUSIN - description: The player of the role is a child of a maternal aunt or uncle - of the scoping person - meaning: HL7:v3-RoleCode#MCOUSN - PATERNAL_COUSIN: - text: PATERNAL_COUSIN - description: The player of the role is a child of a paternal aunt or uncle - of the scoping person - meaning: HL7:v3-RoleCode#PCOUSN - NIECE: - text: NIECE - description: The player of the role is a daughter of the scoping person's - brother or sister or of the brother or sister of the scoping person's spouse - meaning: HL7:v3-RoleCode#NIECE - NEPHEW: - text: NEPHEW - description: The player of the role is a son of the scoping person's brother - or sister or of the brother or sister of the scoping person's spouse - meaning: HL7:v3-RoleCode#NEPHEW - SPOUSE: - text: SPOUSE - description: The player of the role is a marriage partner of the scoping person - meaning: HL7:v3-RoleCode#SPS - HUSBAND: - text: HUSBAND - description: The player of the role is a man joined to a woman (scoping person) - in marriage - meaning: HL7:v3-RoleCode#HUSB - WIFE: - text: WIFE - description: The player of the role is a woman joined to a man (scoping person) - in marriage - meaning: HL7:v3-RoleCode#WIFE - DOMESTIC_PARTNER: - text: DOMESTIC_PARTNER - description: The player of the role cohabits with the scoping person but is - not the scoping person's spouse - meaning: HL7:v3-RoleCode#DOMPART - GREAT_GRANDPARENT: + AR: + text: AR + description: Automated measurement of refractive error of the eye + meaning: NCIT:C176330 + title: Autorefraction + exact_mappings: + - DCM:AR + BI: + text: BI + description: Imaging based on magnetic fields produced by the body, such as + magnetoencephalography + meaning: DCM:BI + title: Biomagnetic Imaging + BMD: + text: BMD + description: Measurement of bone mineral content and density, such as DXA + meaning: NCIT:C190514 + title: Bone Mineral Densitometry + exact_mappings: + - DCM:BMD + CR: + text: CR + description: X-ray imaging using a phosphor imaging plate read out to a digital + image + meaning: NCIT:C190521 + title: Computed Radiography + exact_mappings: + - DCM:CR + CT: + text: CT + description: Cross-sectional X-ray imaging reconstructed by computer + meaning: NCIT:C17204 + title: Computed Tomography + exact_mappings: + - DCM:CT + close_mappings: + - FBbi:00001002 + CFM: + text: CFM + description: Laser-scanning microscopy that rejects out-of-focus light + meaning: NCIT:C17753 + title: Confocal Microscopy + exact_mappings: + - DCM:CFM + - FBbi:00000251 + DMS: + text: DMS + description: Non-invasive microscopic examination of the skin surface + meaning: NCIT:C116478 + title: Dermoscopy + exact_mappings: + - DCM:DMS + DG: + text: DG + description: Transillumination imaging of tissue, historically used for the + breast + meaning: DCM:DG + title: Diaphanography + DX: + text: DX + description: Projection X-ray imaging acquired directly with a digital detector + meaning: NCIT:C18001 + title: Digital Radiography + exact_mappings: + - DCM:DX + ES: + text: ES + description: Imaging from an endoscope inserted into a body cavity or organ, + including laryngoscopy and video endoscopy + meaning: NCIT:C16546 + title: Endoscopic Procedure + aliases: + - Endoscopy + exact_mappings: + - DCM:ES + XC: + text: XC + description: Visible-light photography of the patient with an external camera + meaning: DCM:XC + title: External-camera Photography + GM: + text: GM + description: General microscopy not otherwise classified + meaning: NCIT:C16853 + title: Microscopy + aliases: + - General Microscopy + exact_mappings: + - DCM:GM + broad_mappings: + - FBbi:00000241 + IO: + text: IO + description: Dental X-ray imaging with the detector inside the mouth + meaning: NCIT:C190548 + title: Intraoral Radiography + aliases: + - Intra-oral Radiography + exact_mappings: + - DCM:IO + IVOCT: + text: IVOCT + description: Catheter-based optical coherence tomography of blood vessels + meaning: NCIT:C190550 + title: Intravascular Optical Coherence Tomography + exact_mappings: + - DCM:IVOCT + IVUS: + text: IVUS + description: Catheter-based ultrasound imaging of blood vessels + meaning: NCIT:C99535 + title: Intravascular Ultrasound + exact_mappings: + - DCM:IVUS + KER: + text: KER + description: Measurement of the curvature of the anterior corneal surface + meaning: NCIT:C190551 + title: Keratometry + exact_mappings: + - DCM:KER + LS: + text: LS + description: Surface geometry acquired with a laser scanner + meaning: DCM:LS + title: Laser surface scan + LEN: + text: LEN + description: Measurement of the optical properties of spectacle lenses + meaning: DCM:LEN + title: Lensometry + MR: + text: MR + description: Imaging using radiofrequency pulses in a strong magnetic field + meaning: NCIT:C16809 + title: Magnetic Resonance Imaging + aliases: + - Magnetic Resonance + exact_mappings: + - DCM:MR + MG: + text: MG + description: Low-dose X-ray imaging of the breast + meaning: NCIT:C16818 + title: Mammography + exact_mappings: + - DCM:MG + NM: + text: NM + description: Gamma camera imaging of an administered radiotracer, including + planar and SPECT + meaning: NCIT:C62667 + title: Radionuclide Imaging + aliases: + - Nuclear Medicine + exact_mappings: + - DCM:NM + OAM: + text: OAM + description: Measurement of axial dimensions of the eye, such as axial length + meaning: DCM:OAM + title: Ophthalmic Axial Measurements + OPM: + text: OPM + description: Topographic or thickness maps of ocular structures + meaning: DCM:OPM + title: Ophthalmic Mapping + OP: + text: OP + description: Photography of the eye, including fundus and slit lamp photography + meaning: NCIT:C190559 + title: Ophthalmic Photography + exact_mappings: + - DCM:OP + OPT: + text: OPT + description: Optical coherence tomography of the eye, including retinal OCT + B-scans + meaning: NCIT:C190561 + title: Ophthalmic Tomography + exact_mappings: + - DCM:OPT + OPTBSV: + text: OPTBSV + description: Volume analysis derived from ophthalmic OCT B-scans + meaning: DCM:OPTBSV + title: Ophthalmic Tomography B-scan Volume Analysis + OPTENF: + text: OPTENF + description: Transverse (en face) images derived from ophthalmic OCT volumes + meaning: NCIT:C190563 + title: En-face Optical Coherence Tomography + aliases: + - Ophthalmic Tomography En Face + exact_mappings: + - DCM:OPTENF + OPV: + text: OPV + description: Perimetry results describing the visual field + meaning: DCM:OPV + title: Ophthalmic Visual Field + OCT: + text: OCT + description: Interferometric imaging using near-infrared light, used outside + ophthalmology + meaning: NCIT:C20828 + title: Optical Coherence Tomography + exact_mappings: + - DCM:OCT + - FBbi:00000371 + OSS: + text: OSS + description: Surface geometry acquired with an optical (non-laser) scanner + meaning: DCM:OSS + title: Optical Surface Scanner + PX: + text: PX + description: Dental panoramic radiography of the jaws + meaning: DCM:PX + title: Panoramic X-Ray + PA: + text: PA + description: Imaging of ultrasonic waves generated by optical absorption of + pulsed light + meaning: NCIT:C116749 + title: Photoacoustic Imaging + aliases: + - Photoacoustic + exact_mappings: + - DCM:PA + PT: + text: PT + description: Tomographic imaging of a positron-emitting radiotracer + meaning: NCIT:C17007 + title: Positron Emission Tomography + exact_mappings: + - DCM:PT + RF: + text: RF + description: Real-time X-ray imaging, including radiofluoroscopy + meaning: NCIT:C16588 + title: Fluoroscopy + aliases: + - Radiofluoroscopy + exact_mappings: + - DCM:RF + RG: + text: RG + description: Conventional film or screen radiographic imaging + meaning: NCIT:C38101 + title: X-Ray Imaging + aliases: + - Radiographic imaging + exact_mappings: + - DCM:RG + close_mappings: + - FBbi:00001001 + RTIMAGE: + text: RTIMAGE + description: Radiotherapy portal or setup image + meaning: DCM:RTIMAGE + title: RT Image + SM: + text: SM + description: Whole slide imaging of microscope slides + meaning: DCM:SM + title: Slide Microscopy + SRF: + text: SRF + description: Refraction measured with patient feedback + meaning: DCM:SRF + title: Subjective Refraction + TG: + text: TG + description: Imaging of body surface temperature + meaning: NCIT:C17194 + title: Thermography + exact_mappings: + - DCM:TG + US: + text: US + description: Imaging using high-frequency sound waves, including static images + and cine loops + meaning: NCIT:C17230 + title: Ultrasound Imaging + aliases: + - Ultrasound + exact_mappings: + - DCM:US + BDUS: + text: BDUS + description: Quantitative ultrasound estimation of bone mineral density + meaning: NCIT:C190516 + title: Ultrasound Bone Densitometry + exact_mappings: + - DCM:BDUS + VA: + text: VA + description: Measurement of the sharpness of vision + meaning: NCIT:C87149 + title: Visual Acuity + exact_mappings: + - DCM:VA + XA: + text: XA + description: X-ray imaging of blood vessels with contrast, including digital + subtraction angiography + meaning: NCIT:C20080 + title: X-ray Angiography + exact_mappings: + - DCM:XA + DICOMValueRepresentationEnum: + name: DICOMValueRepresentationEnum + definition_uri: https://w3id.org/valuesets/DICOMValueRepresentationEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The Value Representations (VRs) defined in DICOM PS3.5 Section 6.2, + which specify the data type and format of the value of a data element. Tag validation + tools check that each attribute is encoded with the VR required by the data + dictionary. Permissible values are the two-letter DICOM VR codes. + title: DICOM Value Representation + from_schema: https://w3id.org/valuesets/medical/dicom + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + AE: + text: AE + description: A string identifying an Application Entity; 16 bytes maximum + annotations: + category: + tag: category + value: string + title: Application Entity + AS: + text: AS + description: Age in the format nnnD, nnnW, nnnM or nnnY (days, weeks, months, + years) + annotations: + category: + tag: category + value: string + title: Age String + AT: + text: AT + description: An ordered pair of 16-bit unsigned integers that is the value + of a data element tag + annotations: + category: + tag: category + value: binary + title: Attribute Tag + CS: + text: CS + description: A string identifying a controlled concept; uppercase letters, + digits, space and underscore, 16 bytes maximum + annotations: + category: + tag: category + value: string + title: Code String + DA: + text: DA + description: A date in the format YYYYMMDD + annotations: + category: + tag: category + value: date_time + title: Date + DS: + text: DS + description: A string representing a fixed point or floating point number + annotations: + category: + tag: category + value: string + title: Decimal String + DT: + text: DT + description: A concatenated date-time string of the form YYYYMMDDHHMMSS.FFFFFF&ZZXX + annotations: + category: + tag: category + value: date_time + title: Date Time + FL: + text: FL + description: Single precision IEEE 754 binary32 floating point value + annotations: + category: + tag: category + value: binary + title: Floating Point Single + FD: + text: FD + description: Double precision IEEE 754 binary64 floating point value + annotations: + category: + tag: category + value: binary + title: Floating Point Double + IS: + text: IS + description: A string representing a base-10 integer + annotations: + category: + tag: category + value: string + title: Integer String + LO: + text: LO + description: A character string of up to 64 characters + annotations: + category: + tag: category + value: string + title: Long String + LT: + text: LT + description: A character string that may contain one or more paragraphs, up + to 10240 characters + annotations: + category: + tag: category + value: text + title: Long Text + OB: + text: OB + description: An octet stream whose encoding is specified by the negotiated + transfer syntax + annotations: + category: + tag: category + value: binary + title: Other Byte + OD: + text: OD + description: A stream of IEEE 754 binary64 values + annotations: + category: + tag: category + value: binary + title: Other Double + OF: + text: OF + description: A stream of IEEE 754 binary32 values + annotations: + category: + tag: category + value: binary + title: Other Float + OL: + text: OL + description: A stream of 32-bit words + annotations: + category: + tag: category + value: binary + title: Other Long + OV: + text: OV + description: A stream of 64-bit words + annotations: + category: + tag: category + value: binary + title: Other 64-bit Very Long + OW: + text: OW + description: A stream of 16-bit words; commonly used for Pixel Data + annotations: + category: + tag: category + value: binary + title: Other Word + PN: + text: PN + description: A character string encoded using a five-component convention + (family, given, middle, prefix, suffix) + annotations: + category: + tag: category + value: string + title: Person Name + SH: + text: SH + description: A character string of up to 16 characters + annotations: + category: + tag: category + value: string + title: Short String + SL: + text: SL + description: Signed 32-bit two's complement integer + annotations: + category: + tag: category + value: binary + title: Signed Long + SQ: + text: SQ + description: A sequence of zero or more items, each of which is a nested data + set + annotations: + category: + tag: category + value: sequence + title: Sequence of Items + SS: + text: SS + description: Signed 16-bit two's complement integer + annotations: + category: + tag: category + value: binary + title: Signed Short + ST: + text: ST + description: A character string that may contain one or more paragraphs, up + to 1024 characters + annotations: + category: + tag: category + value: text + title: Short Text + SV: + text: SV + description: Signed 64-bit integer + annotations: + category: + tag: category + value: binary + title: Signed 64-bit Very Long + TM: + text: TM + description: A time in the format HHMMSS.FFFFFF + annotations: + category: + tag: category + value: date_time + title: Time + UC: + text: UC + description: A character string of unlimited length + annotations: + category: + tag: category + value: string + title: Unlimited Characters + UI: + text: UI + description: A string of numeric components separated by periods, up to 64 + characters, used for UIDs such as SOP Instance UIDs and transfer syntax + UIDs + annotations: + category: + tag: category + value: string + title: Unique Identifier (UID) + UL: + text: UL + description: Unsigned 32-bit integer + annotations: + category: + tag: category + value: binary + title: Unsigned Long + UN: + text: UN + description: An octet stream whose encoding of the contents is unknown + annotations: + category: + tag: category + value: binary + title: Unknown + UR: + text: UR + description: A string identifying a URI or URL as defined in RFC 3986 + annotations: + category: + tag: category + value: string + title: Universal Resource Identifier or Universal Resource Locator (URI/URL) + US: + text: US + description: Unsigned 16-bit integer + annotations: + category: + tag: category + value: binary + title: Unsigned Short + UT: + text: UT + description: A character string that may contain one or more paragraphs, of + unlimited length + annotations: + category: + tag: category + value: text + title: Unlimited Text + UV: + text: UV + description: Unsigned 64-bit integer + annotations: + category: + tag: category + value: binary + title: Unsigned 64-bit Very Long + DICOMAttributeTypeEnum: + name: DICOMAttributeTypeEnum + definition_uri: https://w3id.org/valuesets/DICOMAttributeTypeEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Attribute requirement types defined in DICOM PS3.5 Section 7.4, which + state whether an attribute must be present in a data set and whether it may + have a zero-length value. Conformance checkers report missing Type 1 and Type + 2 attributes as errors. These types also determine which de-identification action + (D, Z or X) may be applied to an attribute. + title: DICOM Attribute Type + from_schema: https://w3id.org/valuesets/medical/dicom + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_7.4.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + TYPE_1: + text: TYPE_1 + description: The attribute shall be present with a valid non-zero-length value + title: Type 1 (Required) + aliases: + - '1' + TYPE_1C: + text: TYPE_1C + description: The attribute shall be present with a valid value when a specified + condition is met, and shall not be present otherwise + title: Type 1C (Conditionally Required) + aliases: + - 1C + TYPE_2: + text: TYPE_2 + description: The attribute shall be present but may have a zero-length value + if the value is unknown + title: Type 2 (Required, Empty if Unknown) + aliases: + - '2' + TYPE_2C: + text: TYPE_2C + description: The attribute shall be present, possibly with zero length, when + a specified condition is met + title: Type 2C (Conditionally Required, Empty if Unknown) + aliases: + - 2C + TYPE_3: + text: TYPE_3 + description: The attribute is optional and may be absent or present with or + without a value + title: Type 3 (Optional) + aliases: + - '3' + DICOMTransferSyntaxEnum: + name: DICOMTransferSyntaxEnum + definition_uri: https://w3id.org/valuesets/DICOMTransferSyntaxEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Transfer syntaxes registered in DICOM PS3.6 Annex A that define the + byte ordering, VR encoding and pixel data compression of a DICOM data set. Pixel + data validation includes confirming that decompression from a lossy or lossless + transfer syntax yields the expected bit depth and that no unintended data loss + occurred. Video transfer syntaxes (MPEG-2, H.264, HEVC) are used for endoscopy + and ultrasound cine acquisitions. Fragmentable variants of the MPEG transfer + syntaxes and retired JPEG processes are omitted; the full registry is at the + see_also link. + title: DICOM Transfer Syntax + from_schema: https://w3id.org/valuesets/medical/dicom + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part06/chapter_A.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + IMPLICIT_VR_LITTLE_ENDIAN: + text: IMPLICIT_VR_LITTLE_ENDIAN + description: Default transfer syntax for DICOM; VRs are looked up from the + data dictionary rather than encoded + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2 + compression: + tag: compression + value: none + title: Implicit VR Little Endian + EXPLICIT_VR_LITTLE_ENDIAN: + text: EXPLICIT_VR_LITTLE_ENDIAN + description: Uncompressed encoding with VRs explicitly encoded in each data + element + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.1 + compression: + tag: compression + value: none + title: Explicit VR Little Endian + ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN: + text: ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN + description: Uncompressed pixel data encapsulated in fragments, one per frame + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.1.98 + compression: + tag: compression + value: none + title: Encapsulated Uncompressed Explicit VR Little Endian + DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN: + text: DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN + description: Explicit VR Little Endian data set compressed as a whole with + the deflate algorithm + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.1.99 + compression: + tag: compression + value: lossless + title: Deflated Explicit VR Little Endian + EXPLICIT_VR_BIG_ENDIAN: + text: EXPLICIT_VR_BIG_ENDIAN + description: Big endian byte ordering with explicit VRs; retired but still + encountered in legacy archives + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.2 + compression: + tag: compression + value: none + retired: + tag: retired + value: 'true' + title: Explicit VR Big Endian (Retired) + JPEG_BASELINE_PROCESS_1: + text: JPEG_BASELINE_PROCESS_1 + description: Default transfer syntax for lossy JPEG 8-bit image compression + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.50 + compression: + tag: compression + value: lossy + title: JPEG Baseline (Process 1) + JPEG_EXTENDED_PROCESS_2_4: + text: JPEG_EXTENDED_PROCESS_2_4 + description: Default transfer syntax for lossy JPEG 12-bit image compression + (Process 4 only) + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.51 + compression: + tag: compression + value: lossy + title: JPEG Extended (Process 2 & 4) + JPEG_LOSSLESS_PROCESS_14: + text: JPEG_LOSSLESS_PROCESS_14 + description: Lossless JPEG compression using any predictor + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.57 + compression: + tag: compression + value: lossless + title: JPEG Lossless, Non-Hierarchical (Process 14) + JPEG_LOSSLESS_PROCESS_14_SV1: + text: JPEG_LOSSLESS_PROCESS_14_SV1 + description: Default transfer syntax for lossless JPEG image compression + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.70 + compression: + tag: compression + value: lossless + title: JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 + [Selection Value 1]) + JPEG_LS_LOSSLESS: + text: JPEG_LS_LOSSLESS + description: Lossless compression using the JPEG-LS (ISO 14495) algorithm + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.80 + compression: + tag: compression + value: lossless + title: JPEG-LS Lossless Image Compression + JPEG_LS_NEAR_LOSSLESS: + text: JPEG_LS_NEAR_LOSSLESS + description: Near-lossless JPEG-LS compression with a bounded per-pixel error + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.81 + compression: + tag: compression + value: lossy + title: JPEG-LS Lossy (Near-Lossless) Image Compression + JPEG_2000_LOSSLESS_ONLY: + text: JPEG_2000_LOSSLESS_ONLY + description: JPEG 2000 wavelet compression restricted to reversible (lossless) + mode + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.90 + compression: + tag: compression + value: lossless + title: JPEG 2000 Image Compression (Lossless Only) + JPEG_2000: + text: JPEG_2000 + description: JPEG 2000 wavelet compression, lossy or lossless + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.91 + compression: + tag: compression + value: lossy or lossless + title: JPEG 2000 Image Compression + JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY: + text: JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY + description: JPEG 2000 Part 2 multi-component transform, reversible mode only + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.92 + compression: + tag: compression + value: lossless + title: JPEG 2000 Part 2 Multi-component Image Compression (Lossless Only) + JPEG_2000_MULTICOMPONENT: + text: JPEG_2000_MULTICOMPONENT + description: JPEG 2000 Part 2 multi-component transform, lossy or lossless + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.93 + compression: + tag: compression + value: lossy or lossless + title: JPEG 2000 Part 2 Multi-component Image Compression + JPIP_REFERENCED: + text: JPIP_REFERENCED + description: Pixel data referenced via a JPEG 2000 Interactive Protocol URL + rather than encoded in the data set + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.94 + compression: + tag: compression + value: referenced + title: JPIP Referenced + JPIP_REFERENCED_DEFLATE: + text: JPIP_REFERENCED_DEFLATE + description: JPIP referenced pixel data with the remaining data set deflated + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.95 + compression: + tag: compression + value: referenced + title: JPIP Referenced Deflate + MPEG2_MAIN_PROFILE_MAIN_LEVEL: + text: MPEG2_MAIN_PROFILE_MAIN_LEVEL + description: MPEG-2 video compression for standard definition video + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.100 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG2 Main Profile / Main Level + MPEG2_MAIN_PROFILE_HIGH_LEVEL: + text: MPEG2_MAIN_PROFILE_HIGH_LEVEL + description: MPEG-2 video compression for high definition video + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.101 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG2 Main Profile / High Level + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1: + text: MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1 + description: H.264 video compression for high definition video + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.102 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG-4 AVC/H.264 High Profile / Level 4.1 + MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1: + text: MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1 + description: H.264 video compression constrained for Blu-ray Disc compatibility + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.103 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1 + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D: + text: MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D + description: H.264 video compression for 2D video at higher frame rates and + resolutions + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.104 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D: + text: MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D + description: H.264 video compression for 3D (stereoscopic) video + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.105 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video + MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2: + text: MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2 + description: H.264 stereo high profile for stereoscopic video + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.106 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2 + HEVC_H265_MAIN_PROFILE_LEVEL_5_1: + text: HEVC_H265_MAIN_PROFILE_LEVEL_5_1 + description: HEVC video compression with 8-bit samples + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.107 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: HEVC/H.265 Main Profile / Level 5.1 + HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1: + text: HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1 + description: HEVC video compression with 10-bit samples + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.108 + compression: + tag: compression + value: lossy + media: + tag: media + value: video + title: HEVC/H.265 Main 10 Profile / Level 5.1 + JPEG_XL_LOSSLESS: + text: JPEG_XL_LOSSLESS + description: JPEG XL compression restricted to lossless mode + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.110 + compression: + tag: compression + value: lossless + title: JPEG XL Lossless + JPEG_XL_JPEG_RECOMPRESSION: + text: JPEG_XL_JPEG_RECOMPRESSION + description: Lossless recompression of existing JPEG codestreams using JPEG + XL + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.111 + compression: + tag: compression + value: lossless + title: JPEG XL JPEG Recompression + JPEG_XL: + text: JPEG_XL + description: JPEG XL compression, lossy or lossless + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.112 + compression: + tag: compression + value: lossy or lossless + title: JPEG XL + HTJ2K_LOSSLESS_ONLY: + text: HTJ2K_LOSSLESS_ONLY + description: High-throughput JPEG 2000 (Part 15) restricted to lossless mode + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.201 + compression: + tag: compression + value: lossless + title: High-Throughput JPEG 2000 Image Compression (Lossless Only) + HTJ2K_RPCL_LOSSLESS_ONLY: + text: HTJ2K_RPCL_LOSSLESS_ONLY + description: Lossless high-throughput JPEG 2000 with resolution-position-component-layer + progression for progressive decoding + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.202 + compression: + tag: compression + value: lossless + title: High-Throughput JPEG 2000 with RPCL Options Image Compression (Lossless + Only) + HTJ2K: + text: HTJ2K + description: High-throughput JPEG 2000, lossy or lossless + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.4.203 + compression: + tag: compression + value: lossy or lossless + title: High-Throughput JPEG 2000 Image Compression + RLE_LOSSLESS: + text: RLE_LOSSLESS + description: Run-length encoded lossless compression, widely used for ultrasound + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.5 + compression: + tag: compression + value: lossless + title: RLE Lossless + SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO: + text: SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO + description: Uncompressed progressive video streamed per SMPTE ST 2110-20, + used in real-time video communication + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.7.1 + compression: + tag: compression + value: none + media: + tag: media + value: video + title: SMPTE ST 2110-20 Uncompressed Progressive Active Video + SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO: + text: SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO + description: Uncompressed interlaced video streamed per SMPTE ST 2110-20 + annotations: + uid: + tag: uid + value: 1.2.840.10008.1.2.7.2 + compression: + tag: compression + value: none + media: + tag: media + value: video + title: SMPTE ST 2110-20 Uncompressed Interlaced Active Video + DICOMNetworkServiceEnum: + name: DICOMNetworkServiceEnum + definition_uri: https://w3id.org/valuesets/DICOMNetworkServiceEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Network services used to query, retrieve and store DICOM instances + between imaging systems such as PACS, modalities and research archives. Includes + the classic DIMSE (DICOM Message Service Element) services of PS3.7 and the + RESTful DICOMweb services of PS3.18. Cataloguing which services a source repository + supports is part of the data landscape assessment that precedes extraction. + title: DICOM Network Service + from_schema: https://w3id.org/valuesets/medical/dicom + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part07/chapter_7.html + - https://dicom.nema.org/medical/dicom/current/output/chtml/part18/PS3.18.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + C_ECHO: + text: C_ECHO + description: DIMSE verification service used to test connectivity between + two application entities + annotations: + protocol: + tag: protocol + value: DIMSE + title: C-ECHO + C_STORE: + text: C_STORE + description: DIMSE storage service that pushes a composite instance to a peer + annotations: + protocol: + tag: protocol + value: DIMSE + title: C-STORE + C_FIND: + text: C_FIND + description: DIMSE query service that matches attributes against a peer's + database at patient, study, series or instance level + annotations: + protocol: + tag: protocol + value: DIMSE + title: C-FIND + C_MOVE: + text: C_MOVE + description: DIMSE retrieve service that instructs a peer to send matching + instances to a named destination via C-STORE + annotations: + protocol: + tag: protocol + value: DIMSE + title: C-MOVE + C_GET: + text: C_GET + description: DIMSE retrieve service that returns matching instances on the + same association + annotations: + protocol: + tag: protocol + value: DIMSE + title: C-GET + N_EVENT_REPORT: + text: N_EVENT_REPORT + description: DIMSE-N notification service used to report events on a normalized + SOP instance + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-EVENT-REPORT + N_GET: + text: N_GET + description: DIMSE-N service that retrieves attribute values of a normalized + SOP instance + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-GET + N_SET: + text: N_SET + description: DIMSE-N service that modifies attribute values of a normalized + SOP instance + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-SET + N_ACTION: + text: N_ACTION + description: DIMSE-N service that requests an action on a normalized SOP instance, + such as storage commitment + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-ACTION + N_CREATE: + text: N_CREATE + description: DIMSE-N service that creates a normalized SOP instance + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-CREATE + N_DELETE: + text: N_DELETE + description: DIMSE-N service that deletes a normalized SOP instance + annotations: + protocol: + tag: protocol + value: DIMSE + title: N-DELETE + QIDO_RS: + text: QIDO_RS + description: DICOMweb RESTful query service (Query based on ID for DICOM Objects) + for searching studies, series and instances + annotations: + protocol: + tag: protocol + value: DICOMweb + title: QIDO-RS + WADO_RS: + text: WADO_RS + description: DICOMweb RESTful retrieve service (Web Access to DICOM Objects) + for retrieving studies, series, instances, frames, metadata and rendered + images + annotations: + protocol: + tag: protocol + value: DICOMweb + title: WADO-RS + STOW_RS: + text: STOW_RS + description: DICOMweb RESTful store service (Store Over the Web) for uploading + instances + annotations: + protocol: + tag: protocol + value: DICOMweb + title: STOW-RS + WADO_URI: + text: WADO_URI + description: Legacy DICOMweb URI-based retrieve service for single instances + annotations: + protocol: + tag: protocol + value: DICOMweb + title: WADO-URI + UPS_RS: + text: UPS_RS + description: DICOMweb RESTful worklist service for Unified Procedure Step + management + annotations: + protocol: + tag: protocol + value: DICOMweb + title: UPS-RS + CUSTOM_API: + text: CUSTOM_API + description: A vendor- or institution-specific interface that is not a standard + DICOM network service + title: Custom API + DICOMSoftwareToolEnum: + name: DICOMSoftwareToolEnum + definition_uri: https://w3id.org/valuesets/DICOMSoftwareToolEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Software toolkits, libraries, validators, servers and platforms commonly + used to read, write, validate, anonymize and serve DICOM data in research data + management pipelines. The category annotation distinguishes general-purpose + toolkits from conformance validators, archive servers and metadata anonymizers. + title: DICOM Software Tool + from_schema: https://w3id.org/valuesets/medical/dicom + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + DCMTK: + text: DCMTK + description: OFFIS DICOM Toolkit; C/C++ libraries and command-line utilities + implementing DICOM network services and file handling + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: C++ + license: + tag: license + value: BSD + url: + tag: url + value: https://dicom.offis.de/en/dcmtk/ + title: DCMTK + PYDICOM: + text: PYDICOM + description: Pure Python library for reading, modifying and writing DICOM + files, including pixel data access + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: Python + license: + tag: license + value: MIT + url: + tag: url + value: https://github.com/pydicom/pydicom + title: pydicom + GDCM: + text: GDCM + description: Grassroots DICOM; C++ library with Python and other bindings + for DICOM file and image codec handling + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: C++ + license: + tag: license + value: BSD + url: + tag: url + value: https://sourceforge.net/projects/gdcm/ + title: GDCM + DCM4CHE: + text: DCM4CHE + description: Java DICOM toolkit and the basis of the dcm4chee archive + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: Java + license: + tag: license + value: MPL/GPL/LGPL + url: + tag: url + value: https://www.dcm4che.org/ + title: dcm4che + ITK: + text: ITK + description: Insight Toolkit; C++ image processing library with DICOM readers + built on GDCM + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: C++ + license: + tag: license + value: Apache-2.0 + url: + tag: url + value: https://itk.org/ + title: ITK + DVTK: + text: DVTK + description: DICOM Validation Toolkit; validates object conformance and network + behaviour against the standard + annotations: + category: + tag: category + value: validator + language: + tag: language + value: C# + license: + tag: license + value: LGPL + url: + tag: url + value: https://www.dvtk.org/ + title: DVTk + DICOM3TOOLS: + text: DICOM3TOOLS + description: David Clunie's command-line utilities for creating, modifying, + dumping and validating DICOM files + annotations: + category: + tag: category + value: validator + language: + tag: language + value: C++ + license: + tag: license + value: BSD + url: + tag: url + value: http://www.dclunie.com/dicom3tools.html + title: dicom3tools + DCIODVFY: + text: DCIODVFY + description: dicom3tools utility that verifies a file against the Information + Object Definition for its modality, reporting missing required attributes, + incorrect VRs and values outside allowed ranges + annotations: + category: + tag: category + value: validator + part_of: + tag: part_of + value: dicom3tools + title: dciodvfy + DCENTVFY: + text: DCENTVFY + description: dicom3tools utility that checks consistency of entity-level attributes + across multiple files, such as all instances in a series sharing the same + Series Instance UID + annotations: + category: + tag: category + value: validator + part_of: + tag: part_of + value: dicom3tools + title: dcentvfy + PIXELMED: + text: PIXELMED + description: PixelMed Java DICOM toolkit, including the DicomCleaner metadata + anonymizer + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: Java + license: + tag: license + value: BSD + url: + tag: url + value: https://www.pixelmed.com/ + title: PixelMed + RSNA_CTP: + text: RSNA_CTP + description: RSNA Clinical Trial Processor; pipeline application with a configurable + DICOM anonymizer + annotations: + category: + tag: category + value: anonymizer + language: + tag: language + value: Java + url: + tag: url + value: https://mircwiki.rsna.org/index.php?title=CTP-The_RSNA_Clinical_Trial_Processor + title: RSNA CTP + ORTHANC: + text: ORTHANC + description: Lightweight open-source DICOM server with a REST API and DICOMweb + plugin + annotations: + category: + tag: category + value: server + language: + tag: language + value: C++ + license: + tag: license + value: GPL-3.0 + url: + tag: url + value: https://www.orthanc-server.com/ + title: Orthanc + DCM4CHEE: + text: DCM4CHEE + description: Open-source DICOM archive and image manager built on dcm4che + annotations: + category: + tag: category + value: server + language: + tag: language + value: Java + url: + tag: url + value: https://www.dcm4che.org/ + title: dcm4chee + XNAT: + text: XNAT + description: Extensible Neuroimaging Archive Toolkit; open-source imaging + informatics platform for managing, storing and sharing imaging data + annotations: + category: + tag: category + value: platform + language: + tag: language + value: Java + license: + tag: license + value: BSD + url: + tag: url + value: https://www.xnat.org/ + title: XNAT + TCIA_UTILS: + text: TCIA_UTILS + description: Python utilities from The Cancer Imaging Archive for querying, + downloading and inventorying DICOM metadata + annotations: + category: + tag: category + value: toolkit + language: + tag: language + value: Python + url: + tag: url + value: https://github.com/kirbyju/tcia_utils + title: tcia_utils + DICOM_CLEANER: + text: DICOM_CLEANER + description: PixelMed graphical tool for metadata de-identification and blackout + of burned-in text + annotations: + category: + tag: category + value: anonymizer + language: + tag: language + value: Java + part_of: + tag: part_of + value: PixelMed + title: DicomCleaner + HOROS: + text: HOROS + description: Open-source macOS DICOM viewer forked from OsiriX with built-in + anonymization + annotations: + category: + tag: category + value: viewer + license: + tag: license + value: LGPL-3.0 + url: + tag: url + value: https://horosproject.org/ + title: Horos + OSIRIX: + text: OSIRIX + description: Commercial macOS DICOM viewer and workstation + annotations: + category: + tag: category + value: viewer + license: + tag: license + value: commercial + url: + tag: url + value: https://www.osirix-viewer.com/ + title: OsiriX + SLICER_3D: + text: SLICER_3D + description: Open-source platform for medical image visualization, segmentation + and analysis with DICOM import + annotations: + category: + tag: category + value: viewer + license: + tag: license + value: BSD-style + url: + tag: url + value: https://www.slicer.org/ + title: 3D Slicer + ITK_SNAP: + text: ITK_SNAP + description: Open-source tool for manual and semi-automatic segmentation of + 3D medical images + annotations: + category: + tag: category + value: viewer + license: + tag: license + value: GPL + url: + tag: url + value: http://www.itksnap.org/ + title: ITK-SNAP + DICOMDeidentificationMethodEnum: + name: DICOMDeidentificationMethodEnum + definition_uri: https://w3id.org/valuesets/DICOMDeidentificationMethodEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The Basic Application Level Confidentiality Profile and its options + defined in DICOM PS3.15 Annex E, as coded in PS3.16 Context ID 7050 (De-identification + Method). These codes are recorded in the De-identification Method Code Sequence + (0012,0064) to document what was done to an instance. The "Clean" options remove + additional identifying content; the "Retain" options preserve information that + the basic profile would otherwise remove. + title: DICOM De-identification Method + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part16/sect_CID_7050.html + - https://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + BASIC_APPLICATION_CONFIDENTIALITY_PROFILE: + text: BASIC_APPLICATION_CONFIDENTIALITY_PROFILE + description: The baseline profile that removes or replaces all attributes + known to carry identifying information, including UIDs, dates and descriptive + text + meaning: DCM:113100 + annotations: + kind: + tag: kind + value: profile + title: Basic Application Confidentiality Profile + CLEAN_PIXEL_DATA_OPTION: + text: CLEAN_PIXEL_DATA_OPTION + description: Burned-in identifying text and annotations in the pixel data + are removed + meaning: DCM:113101 + annotations: + kind: + tag: kind + value: clean option + title: Clean Pixel Data Option + CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION: + text: CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION + description: Recognizable visual features such as the face are removed from + pixel data; this is the option under which de-facing is recorded + meaning: DCM:113102 + annotations: + kind: + tag: kind + value: clean option + title: Clean Recognizable Visual Features Option + CLEAN_GRAPHICS_OPTION: + text: CLEAN_GRAPHICS_OPTION + description: Identifying information in graphic annotations, overlays and + presentation states is removed + meaning: DCM:113103 + annotations: + kind: + tag: kind + value: clean option + title: Clean Graphics Option + CLEAN_STRUCTURED_CONTENT_OPTION: + text: CLEAN_STRUCTURED_CONTENT_OPTION + description: Identifying information in structured report content items is + removed + meaning: DCM:113104 + annotations: + kind: + tag: kind + value: clean option + title: Clean Structured Content Option + CLEAN_DESCRIPTORS_OPTION: + text: CLEAN_DESCRIPTORS_OPTION + description: Free-text descriptors such as Study Description are cleaned of + identifying content rather than removed + meaning: DCM:113105 + annotations: + kind: + tag: kind + value: clean option + title: Clean Descriptors Option + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION: + text: RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION + description: Dates and times are retained unmodified to preserve the temporal + relationship between studies + meaning: DCM:113106 + annotations: + kind: + tag: kind + value: retain option + title: Retain Longitudinal Temporal Information Full Dates Option + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION: + text: RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION + description: Dates and times are shifted consistently so that intervals between + studies are preserved + meaning: DCM:113107 + annotations: + kind: + tag: kind + value: retain option + title: Retain Longitudinal Temporal Information Modified Dates Option + RETAIN_PATIENT_CHARACTERISTICS_OPTION: + text: RETAIN_PATIENT_CHARACTERISTICS_OPTION + description: Physical characteristics such as age, sex, height and weight + are retained + meaning: DCM:113108 + annotations: + kind: + tag: kind + value: retain option + title: Retain Patient Characteristics Option + RETAIN_DEVICE_IDENTITY_OPTION: + text: RETAIN_DEVICE_IDENTITY_OPTION + description: Device identifying attributes such as manufacturer, model and + serial number are retained + meaning: DCM:113109 + annotations: + kind: + tag: kind + value: retain option + title: Retain Device Identity Option + RETAIN_UIDS_OPTION: + text: RETAIN_UIDS_OPTION + description: Original UIDs are retained rather than replaced + meaning: DCM:113110 + annotations: + kind: + tag: kind + value: retain option + title: Retain UIDs Option + RETAIN_SAFE_PRIVATE_OPTION: + text: RETAIN_SAFE_PRIVATE_OPTION + description: Private attributes known not to contain identifying information + are retained + meaning: DCM:113111 + annotations: + kind: + tag: kind + value: retain option + title: Retain Safe Private Option + RETAIN_INSTITUTION_IDENTITY_OPTION: + text: RETAIN_INSTITUTION_IDENTITY_OPTION + description: Institution identifying attributes such as institution name and + address are retained + meaning: DCM:113112 + annotations: + kind: + tag: kind + value: retain option + title: Retain Institution Identity Option + DICOMDeidentificationActionEnum: + name: DICOMDeidentificationActionEnum + definition_uri: https://w3id.org/valuesets/DICOMDeidentificationActionEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Action codes from DICOM PS3.15 Table E.1-1a that specify how a de-identifier + treats each attribute under the Basic Application Level Confidentiality Profile. + Compound codes (for example Z/D) indicate that the first action applies unless + the attribute's type requires the second to maintain IOD conformance. Permissible + values use the DICOM code letters, with slashes replaced by underscores in compound + codes. + title: DICOM De-identification Action Code + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + see_also: + - https://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + D: + text: D + description: Replace with a non-zero length value that may be a dummy value + and consistent with the VR + title: Replace with dummy value + Z: + text: Z + description: Replace with a zero length value, or a non-zero length value + that may be a dummy value and consistent with the VR + title: Replace with zero-length or dummy value + X: + text: X + description: Remove the attribute, and if the attribute is a sequence, remove + all sequence items and their contained attributes + title: Remove + K: + text: K + description: Keep unchanged for non-sequence attributes; cleaned for sequences + title: Keep + C: + text: C + description: Replace with values of similar meaning known not to contain identifying + information and consistent with the VR + title: Clean + U: + text: U + description: Replace with a non-zero length UID that is internally consistent + within a set of instances + title: Replace UID + Z_D: + text: Z_D + description: Z unless D is required to maintain IOD conformance (Type 2 versus + Type 1) + title: Z unless D required + aliases: + - Z/D + X_Z: + text: X_Z + description: X unless Z is required to maintain IOD conformance (Type 3 versus + Type 2) + title: X unless Z required + aliases: + - X/Z + X_D: + text: X_D + description: X unless D is required to maintain IOD conformance (Type 3 versus + Type 1) + title: X unless D required + aliases: + - X/D + X_Z_D: + text: X_Z_D + description: X unless Z or D is required to maintain IOD conformance (Type + 3 versus Type 2 versus Type 1) + title: X unless Z or D required + aliases: + - X/Z/D + X_Z_U: + text: X_Z_U + description: X unless Z or replacement of contained instance UIDs (U) is required + to maintain IOD conformance (Type 3 versus Type 2 versus Type 1 sequences + containing UID references) + title: X unless Z or U required + aliases: + - X/Z/U* + ImageDeidentificationTargetEnum: + name: ImageDeidentificationTargetEnum + definition_uri: https://w3id.org/valuesets/ImageDeidentificationTargetEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The components of a medical imaging object that can carry identifying + information and therefore need to be addressed by a de-identification workflow. + A workflow first assesses whether an image requires pixel-level (face or head) + de-identification or only metadata de-identification. + title: Image De-identification Target + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + HEADER_METADATA: + text: HEADER_METADATA + description: Standard DICOM attributes such as patient name, identifiers, + birth date and study dates + title: Header metadata + PRIVATE_ATTRIBUTES: + text: PRIVATE_ATTRIBUTES + description: Vendor-specific private tags that may contain identifying information + and are not covered by the standard attribute list + title: Private attributes + BURNED_IN_ANNOTATION: + text: BURNED_IN_ANNOTATION + description: Text or graphics rendered into the pixel data, common in ultrasound, + secondary capture and screenshots + title: Burned-in annotation + FACIAL_FEATURES: + text: FACIAL_FEATURES + description: Facial surface anatomy reconstructable from volumetric head CT + or MRI pixel data, or visible in photographs and video + title: Facial features + UNIQUE_IDENTIFIERS: + text: UNIQUE_IDENTIFIERS + description: Study, series and instance UIDs and accession numbers that can + link an instance back to the source system + title: Unique identifiers + STRUCTURED_CONTENT: + text: STRUCTURED_CONTENT + description: Identifying content in structured reports, overlays, presentation + states and embedded documents + title: Structured content + DeidentificationRegulatoryFrameworkEnum: + name: DeidentificationRegulatoryFrameworkEnum + definition_uri: https://w3id.org/valuesets/DeidentificationRegulatoryFrameworkEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Regulations and standards that define when medical imaging data is + considered de-identified. Under HIPAA, full-face photographs and comparable + images are direct identifiers; under the GDPR, facial images are biometric personal + data requiring special handling. + title: De-identification Regulatory Framework + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + HIPAA_SAFE_HARBOR: + text: HIPAA_SAFE_HARBOR + description: US HIPAA Privacy Rule method requiring removal of 18 specified + identifier types, including full-face photographs and comparable images + annotations: + jurisdiction: + tag: jurisdiction + value: United States + citation: + tag: citation + value: 45 CFR 164.514(b)(2) + title: HIPAA Safe Harbor + HIPAA_EXPERT_DETERMINATION: + text: HIPAA_EXPERT_DETERMINATION + description: US HIPAA Privacy Rule method in which a qualified expert determines + that the risk of re-identification is very small + annotations: + jurisdiction: + tag: jurisdiction + value: United States + citation: + tag: citation + value: 45 CFR 164.514(b)(1) + title: HIPAA Expert Determination + GDPR_ANONYMISATION: + text: GDPR_ANONYMISATION + description: Irreversible processing such that the data subject is no longer + identifiable, taking the data outside the scope of the EU General Data Protection + Regulation + meaning: NCIT:C142392 + annotations: + jurisdiction: + tag: jurisdiction + value: European Union + title: Anonymization + aliases: + - GDPR anonymisation + GDPR_PSEUDONYMISATION: + text: GDPR_PSEUDONYMISATION + description: Processing so that data can no longer be attributed to a subject + without additional information kept separately, as defined in GDPR Article + 4(5) + meaning: NCIT:C142654 + annotations: + jurisdiction: + tag: jurisdiction + value: European Union + title: Pseudonymization + aliases: + - GDPR pseudonymisation + DICOM_PS3_15_CONFIDENTIALITY_PROFILE: + text: DICOM_PS3_15_CONFIDENTIALITY_PROFILE + description: The DICOM standard's own de-identification profile and options, + designed to satisfy known regulations + annotations: + jurisdiction: + tag: jurisdiction + value: international + title: DICOM PS3.15 Attribute Confidentiality Profile + MIDI_TASK_GROUP_RECOMMENDATIONS: + text: MIDI_TASK_GROUP_RECOMMENDATIONS + description: Best practices and recommendations of the Medical Image De-Identification + (MIDI) Task Group (Clunie et al.) + annotations: + jurisdiction: + tag: jurisdiction + value: international + title: MIDI Task Group best practices + DefacingMethodEnum: + name: DefacingMethodEnum + definition_uri: https://w3id.org/valuesets/DefacingMethodEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Approaches to pixel-level de-identification that remove or obscure + facial features in head imaging. Skull-stripping removes all non-brain tissue + and may discard useful anatomy; face-specific methods aim to remove only facial + features while preserving as much of the head volume as possible. + title: Defacing Method + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + SKULL_STRIPPING: + text: SKULL_STRIPPING + description: Removal of all non-brain tissue including scalp, skull and face, + for example with FSL BET or AFNI 3dSkullStrip + annotations: + preserves_skull: + tag: preserves_skull + value: 'false' + title: Skull stripping + aliases: + - brain extraction + TEMPLATE_BASED_MASKING: + text: TEMPLATE_BASED_MASKING + description: Registration of the image to a standard brain template such as + MNI152 followed by application of a predefined binary face mask that zeros + out facial voxels + annotations: + preserves_skull: + tag: preserves_skull + value: 'true' + example_tools: + tag: example_tools + value: PyDeface, FreeSurfer mri_deface, mydeface + title: Template-based masking + SURFACE_BLURRING: + text: SURFACE_BLURRING + description: Diffusion or blurring of face surface voxels to obscure identity + while preserving head shape, as in Milchenko and Marcus (2013) + annotations: + preserves_skull: + tag: preserves_skull + value: 'true' + title: Surface blurring + SHEARING_PLANE: + text: SHEARING_PLANE + description: Removal of the front of the head by computing a plane through + the head and discarding voxels in front of it, as in QuickShear + annotations: + preserves_skull: + tag: preserves_skull + value: partial + title: Shearing plane + aliases: + - cropping plane + DEEP_LEARNING_SEGMENTATION: + text: DEEP_LEARNING_SEGMENTATION + description: Use of a trained neural network such as a 3D U-Net to segment + facial features (eyes, ears, nose) and mask or blur them + annotations: + preserves_skull: + tag: preserves_skull + value: 'true' + example_tools: + tag: example_tools + value: DeepDefacer, Asan Defacer + title: Deep learning segmentation + REFACING: + text: REFACING + description: Replacement of the subject's face with an average or synthetic + face so that images retain a realistic head surface + annotations: + preserves_skull: + tag: preserves_skull + value: 'true' + example_tools: + tag: example_tools + value: AFNI refacer + title: Refacing + MANUAL_MASKING: + text: MANUAL_MASKING + description: Interactive painting or erosion of a face mask in an image editor + such as 3D Slicer or ITK-SNAP, followed by zeroing or blurring of masked + voxels + annotations: + preserves_skull: + tag: preserves_skull + value: 'true' + title: Manual masking + FACE_DETECTION_AND_BLURRING: + text: FACE_DETECTION_AND_BLURRING + description: Frame-by-frame detection of faces in 2D images or video followed + by blurring, pixelation or masking, for example with OpenCV Haar cascades + annotations: + applicable_to: + tag: applicable_to + value: photographs, video + title: Face detection and blurring + MANUAL_CROP_OR_BLUR: + text: MANUAL_CROP_OR_BLUR + description: Manual cropping or blurring of the face region in photographs + or video with an image or video editor + annotations: + applicable_to: + tag: applicable_to + value: photographs, video + title: Manual crop or blur + DefacingToolEnum: + name: DefacingToolEnum + definition_uri: https://w3id.org/valuesets/DefacingToolEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Software tools and pipelines used for pixel-level de-identification + of head imaging and photographs, with their supported modalities, method and + licensing. Metadata-only anonymizers are included for completeness because they + are commonly paired with defacing tools, but they do not remove facial features. + title: Defacing Tool + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PYDEFACE: + text: PYDEFACE + description: Aligns a T1-weighted MRI to a template with FSL FLIRT and zeros + out voxels in a predefined facial mask + annotations: + modality: + tag: modality + value: MRI (T1w) + method: + tag: method + value: template-based masking + license: + tag: license + value: BSD + url: + tag: url + value: https://github.com/poldracklab/pydeface + title: PyDeface + FREESURFER_MRI_DEFACE: + text: FREESURFER_MRI_DEFACE + description: Template mask defacing using affine registration to fit a generic + face mask, distributed with FreeSurfer + annotations: + modality: + tag: modality + value: MRI (T1w) + method: + tag: method + value: template-based masking + license: + tag: license + value: FreeSurfer + title: FreeSurfer mri_deface + AFNI_REFACER: + text: AFNI_REFACER + description: AFNI template-based defacing and refacing tool, often combined + with skull stripping + annotations: + modality: + tag: modality + value: MRI (T1w) + method: + tag: method + value: refacing + license: + tag: license + value: AFNI (open source) + title: AFNI @afni_refacer_run + QUICKSHEAR: + text: QUICKSHEAR + description: Computes a shearing plane through the head and removes the front + of the head + annotations: + modality: + tag: modality + value: MRI (T1w) + method: + tag: method + value: shearing plane + license: + tag: license + value: open source + title: QuickShear + DEEPDEFACER: + text: DEEPDEFACER + description: 3D U-Net trained to generate a facial mask from T1 MRI scans + annotations: + modality: + tag: modality + value: MRI (T1w, T2w) + method: + tag: method + value: deep learning segmentation + license: + tag: license + value: open source + title: DeepDefacer + ASAN_DEFACER: + text: ASAN_DEFACER + description: 3D U-Net that segments eyes, ears and nose and masks them, applicable + to MRI and CT + annotations: + modality: + tag: modality + value: MRI, CT + method: + tag: method + value: deep learning segmentation + license: + tag: license + value: open source + title: Asan Defacer + MYDEFACE: + text: MYDEFACE + description: Defacing utility similar to PyDeface using an FSL FLIRT-registered + mask + annotations: + modality: + tag: modality + value: MRI (T1w, FLAIR) + method: + tag: method + value: template-based masking + license: + tag: license + value: BSD + url: + tag: url + value: https://github.com/neurolabusc/mydeface + title: mydeface + MASK_FACE: + text: MASK_FACE + description: Surface blurring tool from Milchenko and Marcus that obscures + surface anatomy in volumetric data + annotations: + modality: + tag: modality + value: MRI, CT + method: + tag: method + value: surface blurring + license: + tag: license + value: open source + title: mask_face + FSL_BET: + text: FSL_BET + description: FMRIB Software Library Brain Extraction Tool; removes all non-brain + tissue + annotations: + modality: + tag: modality + value: MRI, CT, PET + method: + tag: method + value: skull stripping + license: + tag: license + value: FSL (open source) + title: FSL BET + AFNI_3DSKULLSTRIP: + text: AFNI_3DSKULLSTRIP + description: AFNI brain extraction program; removes all non-brain tissue + annotations: + modality: + tag: modality + value: MRI, CT, PET + method: + tag: method + value: skull stripping + license: + tag: license + value: AFNI (open source) + title: AFNI 3dSkullStrip + ITK_SNAP: + text: ITK_SNAP + description: Interactive segmentation tool used to manually paint or erode + a face mask in any 3D volume + annotations: + modality: + tag: modality + value: any 3D volume + method: + tag: method + value: manual masking + license: + tag: license + value: GPL + title: ITK-SNAP + SLICER_3D: + text: SLICER_3D + description: Image computing platform used to manually paint a face mask over + a region of interest + annotations: + modality: + tag: modality + value: any 3D volume + method: + tag: method + value: manual masking + license: + tag: license + value: BSD-style + title: 3D Slicer + IMAGEJ_FIJI: + text: IMAGEJ_FIJI + description: General image analysis tools used to manually blur or crop the + face region in 2D or 3D images + annotations: + modality: + tag: modality + value: 2D and 3D images + method: + tag: method + value: manual crop or blur + license: + tag: license + value: open source + title: ImageJ / Fiji + OPENCV: + text: OPENCV + description: Computer vision library used for face detection (for example + Haar cascades) followed by blurring or pixelation in video and 2D images + annotations: + modality: + tag: modality + value: video, 2D images + method: + tag: method + value: face detection and blurring + license: + tag: license + value: Apache-2.0 + title: OpenCV + OSIRIX_HOROS_PLUGIN: + text: OSIRIX_HOROS_PLUGIN + description: Viewer plugins offering built-in anonymization with face removal + options for multi-modality DICOM + annotations: + modality: + tag: modality + value: DICOM (multi-modality) + method: + tag: method + value: template-based masking + license: + tag: license + value: commercial / free + title: OsiriX / Horos plugin + PIXELMED_DICOM_ANONYMIZER: + text: PIXELMED_DICOM_ANONYMIZER + description: Metadata anonymization only; does not mask faces + annotations: + modality: + tag: modality + value: DICOM files + method: + tag: method + value: metadata anonymization + license: + tag: license + value: BSD + title: PixelMed DICOM Anonymizer + MANUAL_PHOTO_VIDEO_EDITING: + text: MANUAL_PHOTO_VIDEO_EDITING + description: Cropping or blurring faces in photographs and videos with general-purpose + editors + annotations: + modality: + tag: modality + value: photographs, video + method: + tag: method + value: manual crop or blur + title: Manual photo or video editing + ImagingDataLifecycleStageEnum: + name: ImagingDataLifecycleStageEnum + definition_uri: https://w3id.org/valuesets/ImagingDataLifecycleStageEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Sequential stages of DICOM data management for preparing FAIR, AI-ready + medical imaging datasets. Stages after extraction form the data reliability + workflow that checks that imaging data is complete, standardized and biologically + plausible before sharing. + title: Imaging Data Lifecycle Stage + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION: + text: DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION + description: Extraction of imaging data from clinical repositories such as + PACS, preceded by a landscape assessment of source locations, database systems, + modalities and acquisition devices + annotations: + stage_number: + tag: stage_number + value: 1 + title: Data extraction and metadata characterization + broad_mappings: + - NCIT:C44285 + FILE_INTEGRITY_VERIFICATION: + text: FILE_INTEGRITY_VERIFICATION + description: Computation and periodic re-verification of cryptographic checksums + such as SHA-256 to detect silent corruption from network errors, media decay + or system failure + annotations: + stage_number: + tag: stage_number + value: 2 + title: File integrity verification + broad_mappings: + - NCIT:C142477 + DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS: + text: DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS + description: Detection of structurally invalid DICOM files (truncated, wrong + VR encoding, missing required tags) and checks of internal coherence such + as identifier uniqueness and demographic consistency across sites + annotations: + stage_number: + tag: stage_number + value: 3 + title: Data completeness and conformance checks + METADATA_TAG_VALIDATION: + text: METADATA_TAG_VALIDATION + description: Validation of DICOM attributes against the standard's VR, VM + and type rules and against biological plausibility, and inventory of private + tags + annotations: + stage_number: + tag: stage_number + value: 4 + title: Metadata tag validation + broad_mappings: + - NCIT:C142500 + IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION: + text: IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION + description: Verification that pixel data is readable and plausible, that + decompression preserves bit depth, and computation of image quality metrics + annotations: + stage_number: + tag: stage_number + value: 5 + title: Image quality and pixel data validation + DEIDENTIFICATION: + text: DEIDENTIFICATION + description: Removal of protected health information from headers and of facial + features from pixel data before sharing and reuse + meaning: NCIT:C45970 + annotations: + stage_number: + tag: stage_number + value: 6 + title: Pixel-level and metadata de-identification + ImagingDataSourceTypeEnum: + name: ImagingDataSourceTypeEnum + definition_uri: https://w3id.org/valuesets/ImagingDataSourceTypeEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Types of systems in a hospital or research network that hold medical + imaging data and from which it may be extracted. A landscape assessment records, + for each source, the platform vendor, software version, supported query mechanisms, + patient identifier handling, retention policy and anonymization capabilities. + title: Imaging Data Source Type + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PACS: + text: PACS + description: Clinical system for storing, retrieving and distributing medical + images, typically the central radiology archive + meaning: NCIT:C17624 + title: Picture Archiving and Communication System + VENDOR_NEUTRAL_ARCHIVE: + text: VENDOR_NEUTRAL_ARCHIVE + description: Enterprise archive that stores images from multiple departments + and PACS vendors in a standard format + title: Vendor neutral archive + aliases: + - VNA + DEPARTMENTAL_IMAGING_ARCHIVE: + text: DEPARTMENTAL_IMAGING_ARCHIVE + description: Local archive maintained by a clinical department such as cardiology, + ophthalmology or endoscopy outside the central PACS + title: Departmental imaging archive + RESEARCH_IMAGING_PLATFORM: + text: RESEARCH_IMAGING_PLATFORM + description: Research-specific imaging informatics database such as XNAT used + to manage, store and share imaging data + title: Research imaging platform + MODALITY_WORKSTATION: + text: MODALITY_WORKSTATION + description: Acquisition device or attached workstation that exports images + through vendor-specific software + title: Modality workstation + ELECTRONIC_HEALTH_RECORD: + text: ELECTRONIC_HEALTH_RECORD + description: Clinical record system that references or embeds imaging studies + and provides encounter linkage + meaning: NCIT:C142529 + title: Electronic Health Record + PUBLIC_IMAGING_REPOSITORY: + text: PUBLIC_IMAGING_REPOSITORY + description: Openly accessible imaging data resource such as The Cancer Imaging + Archive or OpenNeuro + title: Public imaging repository + CLOUD_IMAGING_ARCHIVE: + text: CLOUD_IMAGING_ARCHIVE + description: Cloud-hosted object storage or managed imaging service holding + DICOM data + title: Cloud imaging archive + DICOMValidationIssueTypeEnum: + name: DICOMValidationIssueTypeEnum + definition_uri: https://w3id.org/valuesets/DICOMValidationIssueTypeEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Categories of problems detected when validating DICOM files and collections + for completeness, conformance, metadata consistency, pixel data integrity and + plausibility. Used to classify findings from tools such as dciodvfy, dcentvfy, + DVTk and pydicom during data reliability workflows. + title: DICOM Validation Issue Type + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + TRUNCATED_FILE: + text: TRUNCATED_FILE + description: The file is incomplete, for example a truncated transfer syntax + or missing pixel data at the end of the file + annotations: + category: + tag: category + value: structural + title: Truncated file + INVALID_VR_ENCODING: + text: INVALID_VR_ENCODING + description: An attribute is encoded with a Value Representation that does + not match the data dictionary or the transfer syntax + annotations: + category: + tag: category + value: structural + title: Invalid VR encoding + MISSING_REQUIRED_ATTRIBUTE: + text: MISSING_REQUIRED_ATTRIBUTE + description: A Type 1 or Type 2 attribute required by the IOD, such as StudyInstanceUID + or PixelData, is absent + annotations: + category: + tag: category + value: conformance + title: Missing required attribute + VALUE_MULTIPLICITY_VIOLATION: + text: VALUE_MULTIPLICITY_VIOLATION + description: An attribute has more or fewer values than permitted by its Value + Multiplicity + annotations: + category: + tag: category + value: conformance + title: Value multiplicity violation + VALUE_OUT_OF_RANGE: + text: VALUE_OUT_OF_RANGE + description: An attribute value is outside the enumerated or defined range + allowed by the standard + annotations: + category: + tag: category + value: conformance + title: Value out of range + INVALID_UID_SYNTAX: + text: INVALID_UID_SYNTAX + description: A UID does not conform to DICOM UID syntax, for example non-numeric + components or excess length + annotations: + category: + tag: category + value: conformance + title: Invalid UID syntax + DUPLICATE_UID: + text: DUPLICATE_UID + description: The same SOP Instance UID or other UID is reused across instances + that should be distinct + annotations: + category: + tag: category + value: consistency + title: Duplicate UID + INCONSISTENT_ENTITY_ATTRIBUTES: + text: INCONSISTENT_ENTITY_ATTRIBUTES + description: Attributes that should be identical across instances of the same + entity differ, such as instances in one series carrying different Series + Instance UIDs + annotations: + category: + tag: category + value: consistency + title: Inconsistent entity attributes + DATE_INCONSISTENCY: + text: DATE_INCONSISTENCY + description: Dates are mutually inconsistent, such as a study date after the + patient's death date or a series date before the study date + annotations: + category: + tag: category + value: plausibility + title: Date inconsistency + IMPLAUSIBLE_VALUE: + text: IMPLAUSIBLE_VALUE + description: A syntactically valid value that is biologically implausible, + such as a patient age of 150 years + annotations: + category: + tag: category + value: plausibility + title: Implausible value + NONSTANDARD_PRIVATE_ATTRIBUTE: + text: NONSTANDARD_PRIVATE_ATTRIBUTE + description: A private tag is present that is not documented in the site's + private tag dictionary + annotations: + category: + tag: category + value: documentation + title: Nonstandard private attribute + IDENTIFIER_LINKAGE_ERROR: + text: IDENTIFIER_LINKAGE_ERROR + description: Patient or study identifiers do not link correctly to clinical + records, or demographics disagree across linked records + annotations: + category: + tag: category + value: consistency + title: Identifier linkage error + UNREADABLE_PIXEL_DATA: + text: UNREADABLE_PIXEL_DATA + description: The pixel data cannot be decoded, typically due to acquisition + or packaging problems + annotations: + category: + tag: category + value: pixel data + title: Unreadable pixel data + DECOMPRESSION_MISMATCH: + text: DECOMPRESSION_MISMATCH + description: Decompressed pixel data has an unexpected bit depth or differs + from the uncompressed original beyond the expected loss + annotations: + category: + tag: category + value: pixel data + title: Decompression mismatch + CHECKSUM_MISMATCH: + text: CHECKSUM_MISMATCH + description: The file's cryptographic hash no longer matches the value recorded + at ingest, indicating corruption or alteration + annotations: + category: + tag: category + value: integrity + title: Checksum mismatch + PROTECTED_HEALTH_INFORMATION_PRESENT: + text: PROTECTED_HEALTH_INFORMATION_PRESENT + description: Identifying information remains in the header, private tags or + pixel data after de-identification + annotations: + category: + tag: category + value: privacy + title: Protected health information present + ImageQualityMetricEnum: + name: ImageQualityMetricEnum + definition_uri: https://w3id.org/valuesets/ImageQualityMetricEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Metrics computed during image quality and pixel data validation to + document that images are readable and of adequate fidelity for AI applications. + Simple metrics can be extended to check conformance with FDA technical performance + guidance for quantitative imaging devices where applicable. + title: Image Quality Metric + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PIXEL_READABILITY: + text: PIXEL_READABILITY + description: Whether the pixel array can be decoded without error + title: Pixel readability + INTENSITY_HISTOGRAM: + text: INTENSITY_HISTOGRAM + description: Distribution of pixel intensities, checked for extreme outliers, + clipping or empty images + title: Intensity histogram + SIGNAL_TO_NOISE_RATIO: + text: SIGNAL_TO_NOISE_RATIO + description: Ratio of signal in a region of interest to the standard deviation + of background noise + meaning: NCIT:C94983 + title: Signal to Noise Ratio + aliases: + - SNR + CONTRAST_TO_NOISE_RATIO: + text: CONTRAST_TO_NOISE_RATIO + description: Difference in signal between two regions relative to background + noise + title: Contrast to noise ratio + aliases: + - CNR + SHARPNESS: + text: SHARPNESS + description: Measure of edge definition or high-frequency content, such as + Laplacian variance + title: Sharpness + BIT_DEPTH: + text: BIT_DEPTH + description: Number of bits per pixel stored and allocated, checked for consistency + after decompression + title: Bit depth + PIXEL_SPACING: + text: PIXEL_SPACING + description: Physical distance between pixel centres, checked for presence + and plausibility + title: Pixel spacing + SLICE_THICKNESS: + text: SLICE_THICKNESS + description: Nominal thickness of each slice in a volumetric acquisition, + checked for presence and plausibility + title: Slice thickness + COMPRESSION_FIDELITY: + text: COMPRESSION_FIDELITY + description: Agreement between compressed and original pixel data, for example + comparing a JPEG-compressed instance with its uncompressed source + title: Compression fidelity + ARTIFACT_PRESENCE: + text: ARTIFACT_PRESENCE + description: Detection of motion, metal, aliasing or other acquisition artifacts + title: Artifact presence + ImagingInteroperabilityStandardEnum: + name: ImagingInteroperabilityStandardEnum + definition_uri: https://w3id.org/valuesets/ImagingInteroperabilityStandardEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Standards and data models used to represent medical imaging metadata + and to link images with clinical records, electronic health records and multimodal + research datasets. + title: Imaging Interoperability Standard + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + DICOM: + text: DICOM + description: Digital Imaging and Communications in Medicine (ISO 12052), the + standard for storing, transmitting and managing medical imaging data + annotations: + url: + tag: url + value: https://www.dicomstandard.org/ + title: DICOM + DICOMWEB: + text: DICOMWEB + description: RESTful web services for DICOM (QIDO-RS, WADO-RS, STOW-RS) defined + in DICOM PS3.18 + annotations: + url: + tag: url + value: https://www.dicomstandard.org/using/dicomweb + title: DICOMweb + HL7_FHIR_IMAGINGSTUDY: + text: HL7_FHIR_IMAGINGSTUDY + description: FHIR resource representing a DICOM study and its series and instances, + used to integrate imaging metadata into FHIR-based systems + annotations: + url: + tag: url + value: https://www.hl7.org/fhir/imagingstudy.html + title: HL7 FHIR ImagingStudy + OMOP_CDM_IMAGING_EXTENSION: + text: OMOP_CDM_IMAGING_EXTENSION + description: OHDSI Observational Medical Outcomes Partnership Common Data + Model extension for imaging-based observational research, used to link DICOM + studies to clinical encounters + annotations: + url: + tag: url + value: https://github.com/OHDSI/OmopImaging + title: OMOP CDM Imaging Extension + IHE_PROFILES: + text: IHE_PROFILES + description: Integrating the Healthcare Enterprise profiles for image sharing + and identifier management, such as XDS-I and PIX + annotations: + url: + tag: url + value: https://www.ihe.net/ + title: IHE integration profiles + BIDS: + text: BIDS + description: Community standard for organizing and describing neuroimaging + datasets, commonly used after conversion from DICOM + annotations: + url: + tag: url + value: https://bids.neuroimaging.io/ + title: Brain Imaging Data Structure + NIFTI: + text: NIFTI + description: Neuroimaging Informatics Technology Initiative file format for + volumetric images, the usual target of DICOM conversion in neuroimaging + pipelines + annotations: + url: + tag: url + value: https://nifti.nimh.nih.gov/ + title: NIfTI + Bridge2AIDataGenerationProjectEnum: + name: Bridge2AIDataGenerationProjectEnum + definition_uri: https://w3id.org/valuesets/Bridge2AIDataGenerationProjectEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Data generation projects (Grand Challenges) of the NIH Bridge to + Artificial Intelligence (Bridge2AI) program, which creates standardized, annotated, + ethically sourced AI-ready datasets across a diverse set of modalities. + title: Bridge2AI Data Generation Project + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + see_also: + - https://bridge2ai.org/ + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + CHORUS: + text: CHORUS + description: Collaborative Hospital Repository Uniting Standards; the AI/ML + for Clinical Care Grand Challenge, linking ICU imaging (MRI, CT, ultrasound, + X-ray) with physiologic and clinical data + annotations: + url: + tag: url + value: https://bridge2ai.org/data-chorus/ + title: CHoRUS + aliases: + - Clinical Care + AI_READI: + text: AI_READI + description: Artificial Intelligence Ready and Equitable Atlas for Diabetes + Insights; the Salutogenesis Grand Challenge, including ophthalmology retinal + imaging + annotations: + url: + tag: url + value: https://bridge2ai.org/people-ai-readi/ + title: AI-READI + aliases: + - Salutogenesis + VOICE: + text: VOICE + description: The Precision Public Health Grand Challenge, connecting voice + recordings with laryngoscopy video, brain MRI and CT, and omics data + annotations: + url: + tag: url + value: https://bridge2ai.org/people-voice/ + title: Voice as a Biomarker of Health + aliases: + - Precision Public Health + CM4AI: + text: CM4AI + description: Cell Maps for Artificial Intelligence; the Functional Genomics + Grand Challenge, mapping cellular architecture with imaging and proteomics + annotations: + url: + tag: url + value: https://cm4ai.org/ + title: CM4AI + aliases: + - Functional Genomics + FamilyRelationship: + name: FamilyRelationship + definition_uri: https://w3id.org/valuesets/FamilyRelationship + instantiates: + - valuesets_meta:ValueSetEnumDefinitionWithSource + description: Family relationships used in pedigree and family history documentation + title: Family Relationship + from_schema: https://w3id.org/valuesets/medical/family_history + source: https://terminology.hl7.org/2.1.0/ValueSet-v3-FamilyMember.html + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PARENT: + text: PARENT + description: The player of the role is one who begets, gives birth to, or + nurtures and raises the scoping entity (child) + meaning: HL7:v3-RoleCode#PRN + MOTHER: + text: MOTHER + description: The player of the role is a female who conceives, gives birth + to, or raises and nurtures the scoping entity (child) + meaning: HL7:v3-RoleCode#MTH + FATHER: + text: FATHER + description: The player of the role is a male who begets or raises or nurtures + the scoping entity (child) + meaning: HL7:v3-RoleCode#FTH + NATURAL_MOTHER: + text: NATURAL_MOTHER + description: The player of the role is a female who conceives or gives birth + to the scoping entity (child) + meaning: HL7:v3-RoleCode#NMTH + NATURAL_FATHER: + text: NATURAL_FATHER + description: The player of the role is a male who begets the scoping entity + (child) + meaning: HL7:v3-RoleCode#NFTH + ADOPTIVE_PARENT: + text: ADOPTIVE_PARENT + description: The player of the role (parent) has taken the scoper (child) + into their family through legal means and raises them as his or her own + child + meaning: HL7:v3-RoleCode#ADOPTP + ADOPTIVE_MOTHER: + text: ADOPTIVE_MOTHER + description: The player of the role (mother) is a female who has taken the + scoper (child) into their family through legal means and raises them as + her own child + meaning: HL7:v3-RoleCode#ADOPTM + ADOPTIVE_FATHER: + text: ADOPTIVE_FATHER + description: The player of the role (father) is a male who has taken the scoper + (child) into their family through legal means and raises them as his own + child + meaning: HL7:v3-RoleCode#ADOPTF + STEP_PARENT: + text: STEP_PARENT + description: The player of the role is the spouse of the scoping person's + parent and not the scoping person's natural parent + meaning: HL7:v3-RoleCode#STPPRN + STEP_MOTHER: + text: STEP_MOTHER + description: The player of the role is the female spouse of the scoping person's + parent and not the scoping person's natural mother + meaning: HL7:v3-RoleCode#STPMTH + STEP_FATHER: + text: STEP_FATHER + description: The player of the role is the male spouse of the scoping person's + parent and not the scoping person's natural father + meaning: HL7:v3-RoleCode#STPFTH + FOSTER_PARENT: + text: FOSTER_PARENT + description: The player of the role (parent) who is a state-certified caregiver + responsible for the scoper (child) + meaning: HL7:v3-RoleCode#PRNFOST + GESTATIONAL_MOTHER: + text: GESTATIONAL_MOTHER + description: The player is a female whose womb carries the fetus of the scoper + meaning: HL7:v3-RoleCode#GESTM + SIBLING: + text: SIBLING + description: The player of the role shares one or both parents in common with + the scoping entity + meaning: HL7:v3-RoleCode#SIB + BROTHER: + text: BROTHER + description: The player of the role is a male sharing one or both parents + with the scoping entity + meaning: HL7:v3-RoleCode#BRO + SISTER: + text: SISTER + description: The player of the role is a female sharing one or both parents + with the scoping entity + meaning: HL7:v3-RoleCode#SIS + NATURAL_BROTHER: + text: NATURAL_BROTHER + description: The player of the role is a male related to the scoping entity + by sharing only the same natural parents + meaning: HL7:v3-RoleCode#NBRO + NATURAL_SISTER: + text: NATURAL_SISTER + description: The player of the role is a female related to the scoping entity + by sharing only the same natural parents + meaning: HL7:v3-RoleCode#NSIS + HALF_BROTHER: + text: HALF_BROTHER + description: The player of the role is a male related to the scoping entity + by sharing only one biological parent + meaning: HL7:v3-RoleCode#HBRO + HALF_SISTER: + text: HALF_SISTER + description: The player of the role is a female related to the scoping entity + by sharing only one biological parent + meaning: HL7:v3-RoleCode#HSIS + STEP_BROTHER: + text: STEP_BROTHER + description: The player of the role is a male child of the scoping person's + stepparent + meaning: HL7:v3-RoleCode#STPBRO + STEP_SISTER: + text: STEP_SISTER + description: The player of the role is a female child of the scoping person's + stepparent + meaning: HL7:v3-RoleCode#STPSIS + TWIN: + text: TWIN + description: The scoper and player were carried in the same womb and delivered + in the same birth + meaning: HL7:v3-RoleCode#TWIN + TWIN_BROTHER: + text: TWIN_BROTHER + description: The player of the role is a male born from the same pregnancy + as the scoping entity + meaning: HL7:v3-RoleCode#TWINBRO + TWIN_SISTER: + text: TWIN_SISTER + description: The player of the role is a female born from the same pregnancy + as the scoping entity + meaning: HL7:v3-RoleCode#TWINSIS + FRATERNAL_TWIN: + text: FRATERNAL_TWIN + description: The player of the role is born from the same pregnancy as the + scoping entity but does not share the same genotype + meaning: HL7:v3-RoleCode#FTWIN + IDENTICAL_TWIN: + text: IDENTICAL_TWIN + description: The player of the role is born from the same pregnancy as the + scoping entity and shares the same genotype + meaning: HL7:v3-RoleCode#ITWIN + CHILD: + text: CHILD + description: The player of the role is a child of the scoping entity + meaning: HL7:v3-RoleCode#CHILD + SON: + text: SON + description: The player of the role is a male offspring of the scoping entity + (parent) + meaning: HL7:v3-RoleCode#SON + DAUGHTER: + text: DAUGHTER + description: The player of the role is a female offspring of the scoping entity + (parent) + meaning: HL7:v3-RoleCode#DAU + NATURAL_CHILD: + text: NATURAL_CHILD + description: The player of the role is an offspring of the scoping entity + as determined by birth + meaning: HL7:v3-RoleCode#NCHILD + ADOPTIVE_CHILD: + text: ADOPTIVE_CHILD + description: The player of the role is a child taken into a family through + legal means and raised by the scoping person (parent) as his or her own + child + meaning: HL7:v3-RoleCode#CHLDADOPT + FOSTER_CHILD: + text: FOSTER_CHILD + description: The player of the role is a child receiving parental care and + nurture from the scoping person (parent) but not related to him or her through + legal or blood relationship + meaning: HL7:v3-RoleCode#CHLDFOST + STEP_CHILD: + text: STEP_CHILD + description: The player of the role is a child of the scoping person's spouse + by a previous union + meaning: HL7:v3-RoleCode#STPCHLD + GRANDPARENT: + text: GRANDPARENT + description: The player of the role is a parent of the scoping person's mother + or father + meaning: HL7:v3-RoleCode#GRPRN + GRANDMOTHER: + text: GRANDMOTHER + description: The player of the role is the mother of the scoping person's + mother or father + meaning: HL7:v3-RoleCode#GRMTH + GRANDFATHER: + text: GRANDFATHER + description: The player of the role is the father of the scoping person's + mother or father + meaning: HL7:v3-RoleCode#GRFTH + MATERNAL_GRANDMOTHER: + text: MATERNAL_GRANDMOTHER + description: The player of the role is the mother of the scoping person's + mother + meaning: HL7:v3-RoleCode#MGRMTH + MATERNAL_GRANDFATHER: + text: MATERNAL_GRANDFATHER + description: The player of the role is the father of the scoping person's + mother + meaning: HL7:v3-RoleCode#MGRFTH + PATERNAL_GRANDMOTHER: + text: PATERNAL_GRANDMOTHER + description: The player of the role is the mother of the scoping person's + father + meaning: HL7:v3-RoleCode#PGRMTH + PATERNAL_GRANDFATHER: + text: PATERNAL_GRANDFATHER + description: The player of the role is the father of the scoping person's + father + meaning: HL7:v3-RoleCode#PGRFTH + GRANDCHILD: + text: GRANDCHILD + description: The player of the role is a child of the scoping person's son + or daughter + meaning: HL7:v3-RoleCode#GRNDCHILD + GRANDSON: + text: GRANDSON + description: The player of the role is a son of the scoping person's son or + daughter + meaning: HL7:v3-RoleCode#GRNDSN + GRANDDAUGHTER: + text: GRANDDAUGHTER + description: The player of the role is a daughter of the scoping person's + son or daughter + meaning: HL7:v3-RoleCode#GRNDDAU + AUNT: + text: AUNT + description: The player of the role is a sister of the scoping person's mother + or father + meaning: HL7:v3-RoleCode#AUNT + UNCLE: + text: UNCLE + description: The player of the role is a brother of the scoping person's mother + or father + meaning: HL7:v3-RoleCode#UNCLE + MATERNAL_AUNT: + text: MATERNAL_AUNT + description: The player of the role is a sister of the scoping person's mother + meaning: HL7:v3-RoleCode#MAUNT + MATERNAL_UNCLE: + text: MATERNAL_UNCLE + description: The player of the role is a brother of the scoping person's mother + meaning: HL7:v3-RoleCode#MUNCLE + PATERNAL_AUNT: + text: PATERNAL_AUNT + description: The player of the role is a sister of the scoping person's father + meaning: HL7:v3-RoleCode#PAUNT + PATERNAL_UNCLE: + text: PATERNAL_UNCLE + description: The player of the role is a brother of the scoping person's father + meaning: HL7:v3-RoleCode#PUNCLE + COUSIN: + text: COUSIN + description: The player of the role is a relative descended from a common + ancestor, such as a grandparent, by two or more steps in a diverging line + meaning: HL7:v3-RoleCode#COUSN + MATERNAL_COUSIN: + text: MATERNAL_COUSIN + description: The player of the role is a child of a maternal aunt or uncle + of the scoping person + meaning: HL7:v3-RoleCode#MCOUSN + PATERNAL_COUSIN: + text: PATERNAL_COUSIN + description: The player of the role is a child of a paternal aunt or uncle + of the scoping person + meaning: HL7:v3-RoleCode#PCOUSN + NIECE: + text: NIECE + description: The player of the role is a daughter of the scoping person's + brother or sister or of the brother or sister of the scoping person's spouse + meaning: HL7:v3-RoleCode#NIECE + NEPHEW: + text: NEPHEW + description: The player of the role is a son of the scoping person's brother + or sister or of the brother or sister of the scoping person's spouse + meaning: HL7:v3-RoleCode#NEPHEW + SPOUSE: + text: SPOUSE + description: The player of the role is a marriage partner of the scoping person + meaning: HL7:v3-RoleCode#SPS + HUSBAND: + text: HUSBAND + description: The player of the role is a man joined to a woman (scoping person) + in marriage + meaning: HL7:v3-RoleCode#HUSB + WIFE: + text: WIFE + description: The player of the role is a woman joined to a man (scoping person) + in marriage + meaning: HL7:v3-RoleCode#WIFE + DOMESTIC_PARTNER: + text: DOMESTIC_PARTNER + description: The player of the role cohabits with the scoping person but is + not the scoping person's spouse + meaning: HL7:v3-RoleCode#DOMPART + GREAT_GRANDPARENT: text: GREAT_GRANDPARENT description: The player of the role is a grandparent of the scoping person's mother or father @@ -53326,6 +57495,1397 @@ enums: description: Treatment response unknown meaning: NCIT:C17998 title: Unknown + G2PConfidenceCategory: + name: G2PConfidenceCategory + definition_uri: https://w3id.org/valuesets/G2PConfidenceCategory + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#g2p-confidence-section + standard: + tag: standard + value: GenCC gene-disease validity classification + description: The level of confidence that a gene-disease association is real, + as asserted by G2P curators. G2P uses the GenCC gene-disease validity classification + terms. Operationally several groups use definitive, strong and moderate for + clinical reporting; limited, disputed and refuted are not used for clinical + reporting. GenCC classification identifiers are recorded in the gencc_classification_id + annotation rather than as meaning:, because the GENCC prefix is not registered + in bioregistry, OLS or the OBO PURL system and so cannot be resolved; the identifiers + were taken from GenCC's own submissions export. + title: G2P Confidence Category + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + DEFINITIVE: + text: DEFINITIVE + description: The role of this gene in this particular disease has been repeatedly + demonstrated in both the research and clinical diagnostic settings, and + has been upheld over time (at least 2 independent publication over 3 years' + time). No convincing evidence has emerged that contradicts the role of the + gene in the specified disease. (previously labelled as confirmed) The strength + of evidence within publications as well as their number and publication + dates is taken into account. In practice, this usually means at least 4 + publications over 5 years. Typically this will also include convincing bioinformatic + or functional evidence of causation, making it very unlikely that this gene-disease + association would ever be refuted. + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100001 + clinical_reporting: + tag: clinical_reporting + value: 'true' + title: definitive + aliases: + - confirmed + STRONG: + text: STRONG + description: The role of this gene as a monogenic cause of disease has been + repeatedly and independently demonstrated providing very strong convincing + evidence in humans and no conflicting evidence for this gene's role in this + disease. (previously labelled as probable). + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100002 + clinical_reporting: + tag: clinical_reporting + value: 'true' + title: strong + aliases: + - probable + MODERATE: + text: MODERATE + description: There is moderate evidence in humans to support a casual role + for this gene in this disease with no contradictory evidence. The body of + evidence is not large (e.g possibly only one key paper) but appears convincing + enough that the gene-disease pair is likely to be validated with additional + evidence in the near future. + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100003 + clinical_reporting: + tag: clinical_reporting + value: 'true' + title: moderate + LIMITED: + text: LIMITED + description: Little human evidence exists to support a casual role for this + gene in this disease, but not all evidence has been refuted. For example, + there may be a collection of rare missense variants in humans but without + convincing functional impact, segregration data that could either arise + by chance (e.g across one or two meioses) or does not implicate a single + gene, or functional data without direct recapitulation of the phenotype. + Overall, the body of evidence does not meet contemporary criteria for claiming + a valid association with disease. The majority are probably false associations. + (previously labelled as possible). + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100004 + clinical_reporting: + tag: clinical_reporting + value: 'false' + title: limited + aliases: + - possible + DISPUTED: + text: DISPUTED + description: Although evidence has been reported, other evidence of equal + weight disputes the claim. + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100005 + clinical_reporting: + tag: clinical_reporting + value: 'false' + title: disputed + REFUTED: + text: REFUTED + description: There has been an assertion of a gene-disease association in + the literature, but new valid evidence has arisen that refutes the entire + original body of evidence. + annotations: + gencc_classification_id: + tag: gencc_classification_id + value: GENCC:100006 + clinical_reporting: + tag: clinical_reporting + value: 'false' + title: refuted + G2PAllelicRequirement: + name: G2PAllelicRequirement + definition_uri: https://w3id.org/valuesets/G2PAllelicRequirement + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#allelic-requirement-section + standard: + tag: standard + value: HPO mode of inheritance + description: 'The genotype required at the locus for the disease to manifest, + also referred to in G2P as the genotype. HPO mode of inheritance (MOI) terminology + is used; G2P uses synonyms of the MOI terms as many of the disorders described + are de novo. + + The nine values are G2P''s published genotype list, taken verbatim from the + API the terminology page itself calls (GET /gene2phenotype/api/attribs/, key + "genotype"), which includes the bare monoallelic_X alongside monoallelic_X_hemizygous + and monoallelic_X_heterozygous. + + All nine G2P genotype strings are recorded by HPO as oio:hasExactSynonym of + the term mapped below (verified against the HPO release directly; note that + the OLS obo_synonym field under-reports these, listing only synonyms that carry + an xref). That exact-synonym correspondence is what makes these mappings unambiguous. + + By convention in this enum, title is the HPO term label and the G2P string is + carried as an alias, matching the pv-mapping guidance and clinical/genetics.yaml; + consumers wanting G2P''s own display string should read aliases.' + title: G2P Allelic Requirement + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + MONOALLELIC_AUTOSOMAL: + text: MONOALLELIC_AUTOSOMAL + description: Plausible disease-causing mutations on an autosomal chromosome + identified on one allele in all or the vast majority of with specific disorder. + meaning: HP:0000006 + title: Autosomal dominant inheritance + aliases: + - monoallelic_autosomal + BIALLELIC_AUTOSOMAL: + text: BIALLELIC_AUTOSOMAL + description: Plausible disease-causing homozygous or compound heterozygous + mutations identified on both alleles in the autosomal chromosome. + meaning: HP:0000007 + title: Autosomal recessive inheritance + aliases: + - biallelic_autosomal + MONOALLELIC_X: + text: MONOALLELIC_X + description: Plausible disease-causing mutations identified on the X chromosome. + meaning: HP:0001417 + title: X-linked inheritance + aliases: + - monoallelic_X + MONOALLELIC_X_HEMIZYGOUS: + text: MONOALLELIC_X_HEMIZYGOUS + description: Plausible disease-causing mutations identified on the X chromosome + in a male as a cause of a specific disease, the disorder being predominantly + recessive in female carriers. + meaning: HP:0001419 + title: X-linked recessive inheritance + aliases: + - monoallelic_X_hemizygous + MONOALLELIC_X_HETEROZYGOUS: + text: MONOALLELIC_X_HETEROZYGOUS + description: Plausible disease-causing mutations identified in one copy of + the X chromosome in females as a cause of a specific disease, include disorders + where heterozygous females and hemizygous males are similarly affected e.g + SMC1A mutations. + meaning: HP:0001423 + title: X-linked dominant inheritance + aliases: + - monoallelic_X_heterozygous + MONOALLELIC_Y_HEMIZYGOUS: + text: MONOALLELIC_Y_HEMIZYGOUS + description: Plausible disease-causing mutations identified in an allele found + in the Y chromosome. The Y chromosome is passed from father to son as this + mutation may affect only males. + meaning: HP:0001450 + title: Y-linked inheritance + aliases: + - monoallelic_Y_hemizygous + MONOALLELIC_PAR: + text: MONOALLELIC_PAR + description: Plausible disease-causing mutations identified in an allele found + in the pseudoautosomal regions. Inheritance is not strictly sex-linked. + meaning: HP:0034340 + title: Pseudoautosomal dominant inheritance + aliases: + - monoallelic_PAR + BIALLELIC_PAR: + text: BIALLELIC_PAR + description: Plausible disease-causing homozygous or compound heterozygous + mutations identified on both alleles found in the pseudoautosomal regions. + Inheritance is not strictly sex-linked. + meaning: HP:0034341 + title: Pseudoautosomal recessive inheritance + aliases: + - biallelic_PAR + MITOCHONDRIAL: + text: MITOCHONDRIAL + description: Plausible disease-causing mutations identified on mitochondrial + DNA where homoplasmy or heteroplasmy are associated with a specific disorder. + meaning: HP:0001427 + title: Mitochondrial inheritance + aliases: + - mitochondrial + G2PCrossCuttingModifier: + name: G2PCrossCuttingModifier + definition_uri: https://w3id.org/valuesets/G2PCrossCuttingModifier + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#cross-cutting-modifier-section + standard: + tag: standard + value: HPO inheritance qualifier + description: Additional qualifiers applied to the allelic requirement of a G2P + gene-disease association. HPO inheritance qualifier terms (HP:0034335) are used + where available. Potential secondary finding and restricted mutation set are + G2P-specific and have no HPO equivalent. + title: G2P Cross Cutting Modifier + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + DISPLAYS_ANTICIPATION: + text: DISPLAYS_ANTICIPATION + description: A phenomenon in which the severity of a disorder increases, or + the age of onset decreases, as the disorder is passed from one generation + to the next, typically due to expansion of a repeat sequence. For example, + Myotonic Dystrophy is caused by triplet repeat expansion in the DMPK gene. + meaning: HP:0003743 + title: Genetic anticipation + aliases: + - displays anticipation + IMPRINTED_REGION: + text: IMPRINTED_REGION + description: Requires that the abnormal allele be paternal or maternal in + origin, depending on the disease-gene relationship. Imprinting refers to + a normal developmental process in which either the paternal or maternal + allele is inactivated, depending on the specific locus, thus leading to + expression from only one copy of the gene. Disease typically manifests when + a deleterious variant is inherited from a parent whose copy of the gene + would normally be expressed, but not when a deleterious variant is inherited + from a parent whose copy of the gene would normally be inactivated. + meaning: HP:0034338 + title: Imprinted + aliases: + - imprinted region + TYPICALLY_DE_NOVO: + text: TYPICALLY_DE_NOVO + description: 'Plausible disease causing mutations that occur post zygotically + (formation of gametes). Note that this G2P wording is internally inconsistent: + post-zygotic events are somatic, which is what TYPICALLY_MOSAIC describes, + whereas gametogenesis is pre-zygotic. The mapped HPO term HP:0025352 carries + the intended sense, defining conditions that are exclusively or predominantly + observed to display de novo variants.' + meaning: HP:0025352 + title: Typically de novo + aliases: + - typically de novo + TYPICALLY_MOSAIC: + text: TYPICALLY_MOSAIC + description: Plausible disease causing mutations identified on one allele + in a proportion of cells with the others being wild-type. + meaning: HP:0001442 + title: Typified by somatic mosaicism + aliases: + - typically mosaic + TYPIFIED_BY_INCOMPLETE_PENETRANCE: + text: TYPIFIED_BY_INCOMPLETE_PENETRANCE + description: A condition in which not all individuals carrying the disease-causing + genotype manifest the associated phenotype. + meaning: HP:0003829 + title: Typified by incomplete penetrance + aliases: + - typified by incomplete penetrance + POTENTIAL_SECONDARY_FINDING: + text: POTENTIAL_SECONDARY_FINDING + description: This includes ACMG Secondary Findings and/or late onset conditions. + title: potential secondary finding + RESTRICTED_MUTATION_SET: + text: RESTRICTED_MUTATION_SET + description: This is used when a disease is associated with a single recurrent + variant or a set of variants only found in a particular protein domain. + title: restricted mutation set + G2PMolecularMechanism: + name: G2PMolecularMechanism + definition_uri: https://w3id.org/valuesets/G2PMolecularMechanism + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#molecular-mechanism-section + reference: + tag: reference + value: PMID:35395171 + description: The mechanism of disease derived from the available evidence, following + the definitions of Backwell and Marsh (PMID:35395171). These mechanisms describe + a gene-disease association rather than an individual variant, so the Sequence + Ontology variant terms are recorded as close mappings rather than exact meanings. + title: G2P Molecular Mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + LOSS_OF_FUNCTION: + text: LOSS_OF_FUNCTION + description: Loss-of-function variants involve a loss of the normal biological + function of a protein. Often these are nonsense or frameshift mutations + that introduce premature stop codons. Due to nonsense-mediated decay of + the resulting mRNAs, most premature stop codons will result in no protein + being produced, rather than a truncated protein. However, there are also + many examples of loss-of-function variants that change the amino acid sequence + and result in non-functional protein products. These mutations can cause + a complete loss of function (amorphic), analogous to a protein null mutation, + or only a partial loss of function (hypomorphic). May also include variants + in regulatory regions. + title: loss of function + aliases: + - loss_of_function_variant + close_mappings: + - SO:0002054 + GAIN_OF_FUNCTION: + text: GAIN_OF_FUNCTION + description: Gain-of-function variants have their phenotypic effect because + the mutant protein does something different than the wild-type protein. + Often, these variants cause disease by increasing protein activity (hypermorphic) + or introducing a completely new function (neomorphic), but the specific + molecular mechanisms underlying gain-of-function mutations can be complex. + May also include variants in regulatory regions. + title: gain of function + aliases: + - gain_of_function_variant + close_mappings: + - SO:0002053 + DOMINANT_NEGATIVE: + text: DOMINANT_NEGATIVE + description: Dominant-negative variants involve the mutant protein directly + or indirectly blocking the normal biological function of the wild-type protein + (antimorphic). They can thus cause a disproportionate (>50%) loss of function, + even though only half of the protein is mutated eg. heterozygous variants + in COL1A1 that disrupt the triple collagen helix. + title: dominant negative + aliases: + - antimorphic + - dominant_negative_variant + close_mappings: + - SO:0002052 + UNDETERMINED_NON_LOSS_OF_FUNCTION: + text: UNDETERMINED_NON_LOSS_OF_FUNCTION + description: Very often it is difficult to distinguish between dominant negative + and gain of function, but it is clearly a non-loss-of-function mechanism + (e.g. from co-expression experiments showing a damaging effect from the + mutant allele). + title: undetermined non-loss-of-function + aliases: + - undetermined non-loss-of-function + UNDETERMINED: + text: UNDETERMINED + description: Not known. + title: undetermined + G2PMolecularMechanismSynopsis: + name: G2PMolecularMechanismSynopsis + definition_uri: https://w3id.org/valuesets/G2PMolecularMechanismSynopsis + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-synopsis-section + reference: + tag: reference + value: PMID:35395171 + description: A more detailed description of the molecular mechanism of a G2P gene-disease + association, following the definitions of Backwell and Marsh (PMID:35395171). + A synopsis refines the higher-level molecular mechanism; more than one synopsis + may apply to a single gene-disease association. + title: G2P Molecular Mechanism Synopsis + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + DESTABILISING_LOF: + text: DESTABILISING_LOF + description: A process whereby a missense change destabilises the protein + structure resulting in loss of function. + annotations: + parent_mechanism: + tag: parent_mechanism + value: LOSS_OF_FUNCTION + title: destabilising LOF + INTERACTION_DISRUPTING_LOF: + text: INTERACTION_DISRUPTING_LOF + description: A process whereby a variant allele disrupts interaction resulting + in loss of function, for example a change in an interaction site. + annotations: + parent_mechanism: + tag: parent_mechanism + value: LOSS_OF_FUNCTION + title: interaction-disrupting LOF + LOSS_OF_ACTIVITY_LOF: + text: LOSS_OF_ACTIVITY_LOF + description: A process whereby a variant allele disrupts activity resulting + in loss of function, for example a change in an active site. + annotations: + parent_mechanism: + tag: parent_mechanism + value: LOSS_OF_FUNCTION + title: loss of activity LOF + LOF_DUE_TO_PROTEIN_MISLOCALISATION: + text: LOF_DUE_TO_PROTEIN_MISLOCALISATION + description: A loss of function caused by mislocalisation of a protein, rather + than direct disruption of its structure or function. + annotations: + parent_mechanism: + tag: parent_mechanism + value: LOSS_OF_FUNCTION + title: LOF due to protein mislocalisation + ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE: + text: ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE + description: A protein change which does not prevent coassembly into a complex + with wild-type subunits but results in poisoning the activity of the hybrid + complex, causing a disproportionate loss of function. + annotations: + parent_mechanism: + tag: parent_mechanism + value: DOMINANT_NEGATIVE + title: assembly-mediated dominant negative + COMPETITIVE_DOMINANT_NEGATIVE: + text: COMPETITIVE_DOMINANT_NEGATIVE + description: A process whereby the novel protein disrupts specific interactions + by competing with wild-type protein, thus having a dominant-negative effect. + annotations: + parent_mechanism: + tag: parent_mechanism + value: DOMINANT_NEGATIVE + title: competitive dominant-negative + ASSEMBLY_MEDIATED_GOF: + text: ASSEMBLY_MEDIATED_GOF + description: A process whereby incorporation of a mutant subunit into a protein + complex leads to a gain of function, for example through constitutive activation + of a channel. + annotations: + parent_mechanism: + tag: parent_mechanism + value: GAIN_OF_FUNCTION + title: assembly-mediated GOF + LOCAL_LOF_LEADING_TO_OVERALL_GOF: + text: LOCAL_LOF_LEADING_TO_OVERALL_GOF + description: A gain of function caused by the localised loss of a specific + function within a protein, for example binding of a regulatory domain is + disrupted but enzymatic activity is retained. + annotations: + parent_mechanism: + tag: parent_mechanism + value: GAIN_OF_FUNCTION + title: local LOF leading to overall GOF + AGGREGATION: + text: AGGREGATION + description: A process by which the variant allele causes aggregation usually + causing toxic gain of function, for example misfolded proteins self-assembling + into large aggregates or RNA binding protein gelation. + annotations: + parent_mechanism: + tag: parent_mechanism + value: GAIN_OF_FUNCTION + title: aggregation + OTHER_GOF: + text: OTHER_GOF + description: A gain of function process other than local loss of function + or assembly mediated, for example a mutation in an active site which changes + histone binding causing a novel function. + annotations: + parent_mechanism: + tag: parent_mechanism + value: GAIN_OF_FUNCTION + title: other GOF + G2PMolecularMechanismSupport: + name: G2PMolecularMechanismSupport + definition_uri: https://w3id.org/valuesets/G2PMolecularMechanismSupport + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#molecular-mechanism-section + description: Whether the molecular mechanism recorded for a G2P gene-disease association + is directly supported by reported evidence, or inferred by the curator. + title: G2P Molecular Mechanism Support + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + EVIDENCE: + text: EVIDENCE + description: The molecular mechanism is directly supported by experimental + evidence reported in a publication attached to the record. + title: evidence + INFERRED: + text: INFERRED + description: The molecular mechanism is inferred by the curator rather than + directly evidenced in the attached publications. + title: inferred + G2PMechanismEvidenceCategory: + name: G2PMechanismEvidenceCategory + definition_uri: https://w3id.org/valuesets/G2PMechanismEvidenceCategory + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-evidence-section + standard: + tag: standard + value: ClinGen gene-disease validity SOP Experimental Evidence Summary Matrix + description: The broad category of experimental evidence supporting a molecular + mechanism in G2P. G2P evidence classifications reuse terms from the ClinGen + gene-disease validity SOP Experimental Evidence Summary Matrix. + title: G2P Mechanism Evidence Category + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + FUNCTION: + text: FUNCTION + description: Evidence about the biochemical function, expression or interactions + of the gene product. + title: function + FUNCTIONAL_ALTERATION: + text: FUNCTIONAL_ALTERATION + description: Evidence from cells in which the function of the gene has been + disrupted, showing a phenotype consistent with the human disease process. + title: functional alteration + MODELS: + text: MODELS + description: Evidence from a cell culture model or non-human model organism + with a disrupted copy of the gene. + title: models + RESCUE: + text: RESCUE + description: Evidence that the phenotype can be rescued by restoring the wild-type + gene or gene product. + title: rescue + G2PFunctionEvidence: + name: G2PFunctionEvidence + definition_uri: https://w3id.org/valuesets/G2PFunctionEvidence + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-evidence-section + description: Types of evidence in the function category of the G2P molecular mechanism + evidence classification. + title: G2P Function Evidence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + BIOCHEMICAL: + text: BIOCHEMICAL + description: 'Evidence showing the gene product performs a biochemical function: + (A) shared with other known genes in the disease of interest, or (B) consistent + with the phenotype.' + title: biochemical + PROTEIN_INTERACTION: + text: PROTEIN_INTERACTION + description: Evidence showing the gene product interacts with proteins previously + implicated in the disease of interest. + title: protein interaction + PROTEIN_EXPRESSION: + text: PROTEIN_EXPRESSION + description: Evidence showing the gene is expressed in tissues relevant to + the disease of interest and/or is altered in expression in patients who + have the disease. + title: protein expression + IN_SILICO_MODELLING: + text: IN_SILICO_MODELLING + description: Evidence generated using computer simulations and models predicting + the functional impact of relevant gene-specific variants. These models can + predict protein structure changes, disruption of protein interactions, or + changes in gene and/or protein expression. + title: in silico modelling + G2PFunctionalAlterationEvidence: + name: G2PFunctionalAlterationEvidence + definition_uri: https://w3id.org/valuesets/G2PFunctionalAlterationEvidence + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-evidence-section + description: Types of evidence in the functional alteration category of the G2P + molecular mechanism evidence classification, distinguished by whether the cells + came from an affected individual. + title: G2P Functional Alteration Evidence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + PATIENT_CELLS: + text: PATIENT_CELLS + description: Evidence showing that cultured patient cells, in which the function + of the gene has been disrupted, have a phenotype that is consistent with + the human disease process. + title: patient cells + NON_PATIENT_CELLS: + text: NON_PATIENT_CELLS + description: Evidence showing that cultured non-patient cells, in which the + function of the gene has been disrupted, have a phenotype that is consistent + with the human disease process. + title: non patient cells + G2PModelsEvidence: + name: G2PModelsEvidence + definition_uri: https://w3id.org/valuesets/G2PModelsEvidence + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-evidence-section + description: Types of evidence in the models category of the G2P molecular mechanism + evidence classification. + title: G2P Models Evidence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + CELL_CULTURE_MODEL: + text: CELL_CULTURE_MODEL + description: A cell culture model with a disrupted copy of the gene shows + a phenotype consistent with the human disease state. + title: cell culture model + NON_HUMAN_MODEL_ORGANISM: + text: NON_HUMAN_MODEL_ORGANISM + description: A non-human model organism with a disrupted copy of the gene + shows a phenotype consistent with the human disease state. + title: non-human model organism + G2PRescueEvidence: + name: G2PRescueEvidence + definition_uri: https://w3id.org/valuesets/G2PRescueEvidence + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#mechanism-evidence-section + description: Types of evidence in the rescue category of the G2P molecular mechanism + evidence classification, distinguished by the system in which rescue was demonstrated. + title: G2P Rescue Evidence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + PATIENT_CELLS: + text: PATIENT_CELLS + description: Evidence showing that the phenotype can be rescued in patient + cells. + title: patient cells + CELL_CULTURE_MODEL: + text: CELL_CULTURE_MODEL + description: Evidence showing that the phenotype can be rescued in cell culture + models. + title: cell culture model + NON_HUMAN_MODEL_ORGANISM: + text: NON_HUMAN_MODEL_ORGANISM + description: Evidence showing that the phenotype can be rescued in non-human + model organisms. + title: non-human model organism + G2PVariantConsequence: + name: G2PVariantConsequence + definition_uri: https://w3id.org/valuesets/G2PVariantConsequence + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#variant-consequence-section + reference: + tag: reference + value: PMID:37982373 + description: The consequence of the reported variants at the protein (for protein-coding + genes) or the RNA (for non-protein coding genes), per allele. These are Sequence + Ontology terms developed for G2P and described in PMID:37982373; the descriptions + below are the G2P-authored usage notes rather than the SO text definitions. + As in the other SO-backed enums here, title is uniformly the SO term label and + any differing G2P label is carried as an alias; for four of the six values the + SO and G2P labels coincide, which is why only altered_gene_product_sequence + and function_uncertain_variant carry an alias. + title: G2P Variant Consequence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + ALTERED_GENE_PRODUCT_LEVEL: + text: ALTERED_GENE_PRODUCT_LEVEL + description: A sequence variant that alters the level or amount of gene product + produced. This high-level term can be applied where the direction of level + change (increased vs decreased gene product level) is unknown or not confirmed, + e.g., promoter or enhancer variants, some splice variants. + meaning: SO:0002314 + title: altered_gene_product_level + DECREASED_GENE_PRODUCT_LEVEL: + text: DECREASED_GENE_PRODUCT_LEVEL + description: A sequence variant that decreases the level or amount of gene + product produced, e.g., a 5' UTR variant that reduced protein levels by + disrupting translation, a 3' UTR variant that affects RNA stability, splice + variants that decrease but do not stop expression, variants leading to nonsense-mediated-decay + (NMD)-competent premature termination codon (PTCs), or gene-disrupting structural + variants. + meaning: SO:0002316 + is_a: ALTERED_GENE_PRODUCT_LEVEL + title: decreased_gene_product_level + ABSENT_GENE_PRODUCT: + text: ABSENT_GENE_PRODUCT + description: A sequence variant that results in no gene product. e.g., whole + gene or other large scale disruptive structural variant, variants producing + NMD-competent PTCs. + meaning: SO:0002317 + is_a: DECREASED_GENE_PRODUCT_LEVEL + title: absent_gene_product + INCREASED_GENE_PRODUCT_LEVEL: + text: INCREASED_GENE_PRODUCT_LEVEL + description: A variant that increases the level or amount of gene product + produced, e.g., non-disruptive gene duplications, some promoter or enhancer + variants. + meaning: SO:0002315 + is_a: ALTERED_GENE_PRODUCT_LEVEL + title: increased_gene_product_level + ALTERED_GENE_PRODUCT_STRUCTURE: + text: ALTERED_GENE_PRODUCT_STRUCTURE + description: A sequence variant that alters the sequence of a gene product. + e.g., missense variants, NMD-incompetent PTCs, and other length-changing + variants (in-frame indels, stop loss). + meaning: SO:0002318 + title: altered_gene_product_sequence + aliases: + - altered gene product structure + UNCERTAIN: + text: UNCERTAIN + description: A sequence variant in which the function of a gene product is + unknown with respect to a reference. Used by G2P where the consequence of + the reported variants could not be determined. + meaning: SO:0002220 + title: function_uncertain_variant + aliases: + - uncertain + G2PVariantTypeGroup: + name: G2PVariantTypeGroup + definition_uri: https://w3id.org/valuesets/G2PVariantTypeGroup + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#variant-types-section + description: The primary type grouping under which G2P organises the variant types + associated with a curated gene-disease pair. + title: G2P Variant Type Group + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + NMD_VARIANTS: + text: NMD_VARIANTS + description: Variant types qualified by whether the resulting transcript is + predicted to trigger or escape nonsense-mediated decay. + title: NMD_variants + SPLICE_VARIANTS: + text: SPLICE_VARIANTS + description: Variant types affecting splice sites or splice regions. + title: splice_variants + REGULATORY_VARIANTS: + text: REGULATORY_VARIANTS + description: Variant types in untranslated or regulatory regions. + title: regulatory_variants + PROTEIN_CHANGING_VARIANTS: + text: PROTEIN_CHANGING_VARIANTS + description: Variant types that change the coding sequence of the gene product. + title: protein_changing_variants + OTHER_VARIANTS: + text: OTHER_VARIANTS + description: Variant types not covered by the NMD, splice, regulatory or protein + changing groups, including structural and repeat changes. + title: other_variants + G2PVariantType: + name: G2PVariantType + definition_uri: https://w3id.org/valuesets/G2PVariantType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/about/terminology#variant-types-section + standard: + tag: standard + value: Sequence Ontology + description: 'The types of variants associated with the curated gene-disease pair + reported in the publication. All terms are Sequence Ontology terms. Where G2P + uses a label that differs from the current SO label, the G2P label is recorded + as an alias. Descriptions are the SO text definitions where SO provides one. + + The NMD-qualified types have two parents in SO, so they are modelled with the + base variant as is_a and the NMD qualifier as a mixin. LinkML preserves both, + but as of linkml 1.9.5 the OWL generator emits only the is_a parent as rdfs:subClassOf + and drops the mixin, so the NMD axis is additionally recorded in the nmd_status + annotation to keep it available in every generated artifact. If a later linkml + emits permissible-value mixins, that annotation is redundant and can go.' + title: G2P Variant Type + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + NMD_TRIGGERING: + text: NMD_TRIGGERING + description: A sequence variant that leads to a change in the location of + a termination codon in a transcript that leads to nonsense-mediated decay + (NMD). The change in location of a termination codon can be caused by several + different types of sequence variants, including stop_gained (SO:0001587), + frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and + splice_acceptor_variant (SO:0001574) types of variants. + meaning: SO:0002319 + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + title: NMD_triggering_variant + aliases: + - NMD_triggering + NMD_ESCAPING: + text: NMD_ESCAPING + description: A sequence variant that leads to a change in the location of + a termination codon in a transcript but allows the transcript to escape + nonsense-mediated decay (NMD). The change in location of a termination codon + can be caused by several different types of sequence variants, including + stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant + (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants. + meaning: SO:0002320 + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + title: NMD_escaping_variant + aliases: + - NMD_escaping + STOP_GAINED_NMD_TRIGGERING: + text: STOP_GAINED_NMD_TRIGGERING + description: A stop_gained (SO:0001587) variant that is degraded by nonsense-mediated + decay (NMD). + meaning: SO:0002321 + is_a: STOP_GAINED + mixins: + - NMD_TRIGGERING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_TRIGGERING + title: stop_gained_NMD_triggering + STOP_GAINED_NMD_ESCAPING: + text: STOP_GAINED_NMD_ESCAPING + description: A stop_gained (SO:0001587) variant that allows the transcript + to escape nonsense-mediated decay (NMD). + meaning: SO:0002322 + is_a: STOP_GAINED + mixins: + - NMD_ESCAPING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_ESCAPING + title: stop_gained_NMD_escaping + FRAMESHIFT_VARIANT_NMD_TRIGGERING: + text: FRAMESHIFT_VARIANT_NMD_TRIGGERING + description: A frameshift_variant (SO:0001589) that is degraded by nonsense-mediated + decay (NMD). + meaning: SO:0002323 + is_a: FRAMESHIFT_VARIANT + mixins: + - NMD_TRIGGERING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_TRIGGERING + title: frameshift_variant_NMD_triggering + FRAMESHIFT_VARIANT_NMD_ESCAPING: + text: FRAMESHIFT_VARIANT_NMD_ESCAPING + description: A frameshift_variant (SO:0001589) that allows the transcript + to escape nonsense-mediated decay (NMD). + meaning: SO:0002324 + is_a: FRAMESHIFT_VARIANT + mixins: + - NMD_ESCAPING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_ESCAPING + title: frameshift_variant_NMD_escaping + SPLICE_DONOR_VARIANT_NMD_TRIGGERING: + text: SPLICE_DONOR_VARIANT_NMD_TRIGGERING + description: A splice_donor_variant (SO:0001575) that is degraded by nonsense-mediated + decay (NMD). + meaning: SO:0002325 + is_a: SPLICE_DONOR_VARIANT + mixins: + - NMD_TRIGGERING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_TRIGGERING + title: splice_donor_variant_NMD_triggering + SPLICE_DONOR_VARIANT_NMD_ESCAPING: + text: SPLICE_DONOR_VARIANT_NMD_ESCAPING + description: A splice_donor_variant (SO:0001575) that allows the transcript + to escape nonsense-mediated decay (NMD). + meaning: SO:0002326 + is_a: SPLICE_DONOR_VARIANT + mixins: + - NMD_ESCAPING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_ESCAPING + title: splice_donor_variant_NMD_escaping + SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING: + text: SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING + description: A splice_acceptor_variant (SO:0001574) that is degraded by nonsense-mediated + decay (NMD). + meaning: SO:0002327 + is_a: SPLICE_ACCEPTOR_VARIANT + mixins: + - NMD_TRIGGERING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_TRIGGERING + title: splice_acceptor_variant_NMD_triggering + SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING: + text: SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING + description: A splice_acceptor_variant (SO:0001574) that allows the transcript + to escape nonsense-mediated decay (NMD). + meaning: SO:0002328 + is_a: SPLICE_ACCEPTOR_VARIANT + mixins: + - NMD_ESCAPING + annotations: + variant_type_group: + tag: variant_type_group + value: NMD_VARIANTS + nmd_status: + tag: nmd_status + value: NMD_ESCAPING + title: splice_acceptor_variant_NMD_escaping + SPLICE_REGION_VARIANT: + text: SPLICE_REGION_VARIANT + description: A sequence variant in which a change has occurred within the + region of the splice site, either within 1-3 bases of the exon or 3-8 bases + of the intron. + meaning: SO:0001630 + annotations: + variant_type_group: + tag: variant_type_group + value: SPLICE_VARIANTS + title: splice_region_variant + SPLICE_ACCEPTOR_VARIANT: + text: SPLICE_ACCEPTOR_VARIANT + description: A splice variant that changes the 2 base region at the 3' end + of an intron. + meaning: SO:0001574 + annotations: + variant_type_group: + tag: variant_type_group + value: SPLICE_VARIANTS + title: splice_acceptor_variant + SPLICE_DONOR_VARIANT: + text: SPLICE_DONOR_VARIANT + description: A splice variant that changes the 2 base pair region at the 5' + end of an intron. + meaning: SO:0001575 + annotations: + variant_type_group: + tag: variant_type_group + value: SPLICE_VARIANTS + title: splice_donor_variant + FIVE_PRIME_UTR_VARIANT: + text: FIVE_PRIME_UTR_VARIANT + description: A UTR variant of the 5' UTR. + meaning: SO:0001623 + annotations: + variant_type_group: + tag: variant_type_group + value: REGULATORY_VARIANTS + title: 5_prime_UTR_variant + THREE_PRIME_UTR_VARIANT: + text: THREE_PRIME_UTR_VARIANT + description: A UTR variant of the 3' UTR. + meaning: SO:0001624 + annotations: + variant_type_group: + tag: variant_type_group + value: REGULATORY_VARIANTS + title: 3_prime_UTR_variant + REGULATORY_REGION_VARIANT: + text: REGULATORY_REGION_VARIANT + description: A sequence variant located within a regulatory region. + meaning: SO:0001566 + annotations: + variant_type_group: + tag: variant_type_group + value: REGULATORY_VARIANTS + title: regulatory_region_variant + START_LOST: + text: START_LOST + description: A codon variant that changes at least one base of the canonical + start codon. + meaning: SO:0002012 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: start_lost + STOP_GAINED: + text: STOP_GAINED + description: A sequence variant whereby at least one base of a codon is changed, + resulting in a premature stop codon, leading to a shortened polypeptide. + meaning: SO:0001587 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: stop_gained + STOP_LOST: + text: STOP_LOST + description: A sequence variant where at least one base of the terminator + codon (stop) is changed, resulting in an elongated transcript. + meaning: SO:0001578 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: stop_lost + FRAMESHIFT_VARIANT: + text: FRAMESHIFT_VARIANT + description: A sequence variant which causes a disruption of the translational + reading frame, because the number of nucleotides inserted or deleted is + not a multiple of three. + meaning: SO:0001589 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: frameshift_variant + MISSENSE_VARIANT: + text: MISSENSE_VARIANT + description: A sequence variant, that changes one or more bases, resulting + in a different amino acid sequence but where the length is preserved. + meaning: SO:0001583 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: missense_variant + INFRAME_INSERTION: + text: INFRAME_INSERTION + description: An inframe non synonymous variant that inserts bases into in + the coding sequence. + meaning: SO:0001821 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: inframe_insertion + INFRAME_DELETION: + text: INFRAME_DELETION + description: An inframe non synonymous variant that deletes bases from the + coding sequence. + meaning: SO:0001822 + annotations: + variant_type_group: + tag: variant_type_group + value: PROTEIN_CHANGING_VARIANTS + title: inframe_deletion + SYNONYMOUS_VARIANT: + text: SYNONYMOUS_VARIANT + description: A sequence variant where there is no resulting change to the + encoded amino acid. + meaning: SO:0001819 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: synonymous_variant + INTRON_VARIANT: + text: INTRON_VARIANT + description: A transcript variant occurring within an intron. + meaning: SO:0001627 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: intron_variant + INTERGENIC_VARIANT: + text: INTERGENIC_VARIANT + description: A sequence variant located in the intergenic region, between + genes. + meaning: SO:0001628 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: intergenic_variant + NON_CODING_TRANSCRIPT_VARIANT: + text: NON_CODING_TRANSCRIPT_VARIANT + description: A transcript variant of a non coding RNA gene. + meaning: SO:0001619 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: non_coding_transcript_variant + SHORT_TANDEM_REPEAT_CHANGE: + text: SHORT_TANDEM_REPEAT_CHANGE + description: A sequence variant where the copies of a short tandem repeat + (STR) feature are either contracted or expanded. SO:0002161 carries no text + definition; this description is taken from the SO term comment. + meaning: SO:0002161 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: short_tandem_repeat_change + COPY_NUMBER_VARIATION: + text: COPY_NUMBER_VARIATION + description: A variation that increases or decreases the copy number of a + given region. + meaning: SO:0001019 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: copy_number_variation + WHOLE_PARTIAL_GENE_DELETION: + text: WHOLE_PARTIAL_GENE_DELETION + description: A feature ablation whereby the deleted region includes a transcript + feature. Used by G2P to record whole or partial gene deletions. + meaning: SO:0001893 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: transcript_ablation + aliases: + - whole_partial_gene_deletion + WHOLE_PARTIAL_GENE_DUPLICATION: + text: WHOLE_PARTIAL_GENE_DUPLICATION + description: A feature amplification of a region containing a transcript. + Used by G2P to record whole or partial gene duplications. + meaning: SO:0001889 + annotations: + variant_type_group: + tag: variant_type_group + value: OTHER_VARIANTS + title: transcript_amplification + aliases: + - whole_partial_gene_duplication + G2PPanel: + name: G2PPanel + definition_uri: https://w3id.org/valuesets/G2PPanel + instantiates: + - valuesets_meta:ValueSetEnumDefinition + annotations: + stewards: + tag: stewards + value: https://www.ebi.ac.uk/gene2phenotype + publishers: + tag: publishers + value: https://www.ebi.ac.uk/gene2phenotype + source: + tag: source + value: https://www.ebi.ac.uk/gene2phenotype/panels + retrieved: + tag: retrieved + value: '2026-08-18' + note: + tag: note + value: G2P adds panels over time; this list is a snapshot as of the retrieved + date. + description: The disease-area panels into which G2P organises its curated gene-disease + associations. A gene-disease association may appear on more than one panel. + title: G2P Panel + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: STANDARD + permissible_values: + CANCER: + text: CANCER + description: Cancer disorders. + title: Cancer + CARDIAC: + text: CARDIAC + description: Cardiac disorders. + title: Cardiac + DD: + text: DD + description: Developmental disorders. + title: DD + aliases: + - Developmental disorders + EAR: + text: EAR + description: Ear disorders. + title: Ear + EYE: + text: EYE + description: Eye disorders. + title: Eye + SKELETAL: + text: SKELETAL + description: Skeletal disorders. + title: Skeletal + SKIN: + text: SKIN + description: Skin disorders. + title: Skin ProcessScaleEnum: name: ProcessScaleEnum definition_uri: https://w3id.org/valuesets/ProcessScaleEnum @@ -53837,6 +59397,61 @@ enums: methods: tag: methods value: High pressure, bead mill + CLARIFICATION: + text: CLARIFICATION + description: Removal of cells and debris to produce a clarified harvest + annotations: + methods: + tag: methods + value: Centrifugation, depth filtration + FLOCCULATION: + text: FLOCCULATION + description: Aggregation of cells and debris into flocs to aid clarification + ULTRAFILTRATION: + text: ULTRAFILTRATION + description: Membrane concentration retaining macromolecules such as proteins + meaning: CHMO:0001645 + annotations: + mwco: + tag: mwco + value: Typically 1-1000 kDa + title: ultra-filtration + DIAFILTRATION: + text: DIAFILTRATION + description: Buffer exchange and desalting by ultrafiltration with continuous + makeup + TANGENTIAL_FLOW_FILTRATION: + text: TANGENTIAL_FLOW_FILTRATION + description: Crossflow membrane filtration used for concentration and diafiltration + annotations: + aliases: + tag: aliases + value: TFF, crossflow filtration + BUFFER_EXCHANGE: + text: BUFFER_EXCHANGE + description: Replacement of the buffer matrix of a product stream + ADSORPTION: + text: ADSORPTION + description: Capture of product or impurities onto a solid sorbent + VIRAL_INACTIVATION: + text: VIRAL_INACTIVATION + description: Treatment step that inactivates potential viral contaminants + annotations: + methods: + tag: methods + value: Low pH, solvent/detergent, heat + POLISHING: + text: POLISHING + description: Final chromatographic or filtration steps to remove trace impurities + LYOPHILIZATION: + text: LYOPHILIZATION + description: Freeze-drying to produce a stable solid product + meaning: CHMO:0001553 + annotations: + aliases: + tag: aliases + value: freeze drying + title: freeze drying FeedstockTypeEnum: name: FeedstockTypeEnum definition_uri: https://w3id.org/valuesets/FeedstockTypeEnum @@ -54192,166 +59807,2615 @@ enums: description: Micro-scale operations using microfluidic or microtiter plate formats, typically less than 1 mL annotations: - volume_range: - tag: volume_range - value: <1 mL - purpose: - tag: purpose - value: High-throughput screening and optimization - BioproductCategoryType: - name: BioproductCategoryType - definition_uri: https://w3id.org/valuesets/BioproductCategoryType + volume_range: + tag: volume_range + value: <1 mL + purpose: + tag: purpose + value: High-throughput screening and optimization + BioproductCategoryType: + name: BioproductCategoryType + definition_uri: https://w3id.org/valuesets/BioproductCategoryType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Categories of products derived from biological manufacturing processes + title: Bioproduct Category Type + from_schema: https://w3id.org/valuesets/bioprocessing/biomanufacturing + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + BIOFUEL: + text: BIOFUEL + description: Biologically derived fuel including ethanol, biodiesel, and biogas + meaning: CHEBI:33292 + title: fuel + BIOCHEMICAL: + text: BIOCHEMICAL + description: Chemical compounds produced through biological processes + annotations: + examples: + tag: examples + value: organic acids, amino acids, platform chemicals + related_mappings: + - CHEBI:52206 + BIOPLASTIC: + text: BIOPLASTIC + description: Biodegradable or bio-based plastic materials such as PHA, PLA, + and PBS + annotations: + examples: + tag: examples + value: polyhydroxyalkanoates, polylactic acid + BIOSURFACTANT: + text: BIOSURFACTANT + description: Surface-active compounds produced by microorganisms + annotations: + examples: + tag: examples + value: rhamnolipids, sophorolipids, surfactin + related_mappings: + - CHEBI:35195 + BIOACTIVE_COMPOUND: + text: BIOACTIVE_COMPOUND + description: Biologically active compounds with therapeutic or functional + properties + annotations: + examples: + tag: examples + value: alkaloids, terpenoids, flavonoids + INDUSTRIAL_ENZYME: + text: INDUSTRIAL_ENZYME + description: Enzymes produced for industrial applications such as detergents, + textiles, and food processing + meaning: NCIT:C16554 + title: Enzyme + BIOFERTILIZER: + text: BIOFERTILIZER + description: Biological preparations containing living microorganisms that + enhance plant nutrient availability + meaning: AGRO:00020001 + title: biofertilizer + BIOPESTICIDE: + text: BIOPESTICIDE + description: Biological agents used for pest control in agriculture + annotations: + examples: + tag: examples + value: Bacillus thuringiensis, entomopathogenic fungi + broad_mappings: + - CHEBI:25944 + BIOPHARMACEUTICAL: + text: BIOPHARMACEUTICAL + description: Pharmaceutical products derived from biological sources or manufactured + using biotechnology + meaning: NCIT:C307 + annotations: + examples: + tag: examples + value: recombinant proteins, monoclonal antibodies, vaccines + title: Biological Agent + FOOD_INGREDIENT: + text: FOOD_INGREDIENT + description: Biologically produced ingredients for food and beverage applications + meaning: FOODON:00004274 + title: food ingredient + BioprocessOptimizationType: + name: BioprocessOptimizationType + definition_uri: https://w3id.org/valuesets/BioprocessOptimizationType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Strategies and approaches for optimizing biomanufacturing processes + to improve yield, productivity, and product quality + title: Bioprocess Optimization Type + from_schema: https://w3id.org/valuesets/bioprocessing/biomanufacturing + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + MEDIA_OPTIMIZATION: + text: MEDIA_OPTIMIZATION + description: Optimization of growth media composition including carbon sources, + nitrogen sources, and micronutrients + STRAIN_ENGINEERING: + text: STRAIN_ENGINEERING + description: Genetic modification and selection of production strains for + improved performance + annotations: + approaches: + tag: approaches + value: metabolic engineering, directed evolution, adaptive laboratory + evolution + PROCESS_INTENSIFICATION: + text: PROCESS_INTENSIFICATION + description: Engineering approaches to increase volumetric productivity and + reduce process footprint + CONTINUOUS_PROCESSING: + text: CONTINUOUS_PROCESSING + description: Conversion from batch to continuous operation for improved efficiency + and consistency + FED_BATCH_OPTIMIZATION: + text: FED_BATCH_OPTIMIZATION + description: Optimization of feeding strategies in fed-batch processes to + maximize product yield + DOWNSTREAM_PURIFICATION: + text: DOWNSTREAM_PURIFICATION + description: Optimization of product recovery and purification processes + annotations: + approaches: + tag: approaches + value: chromatography, membrane separation, extraction + broad_mappings: + - OBI:0001505 + IN_LINE_ANALYTICS: + text: IN_LINE_ANALYTICS + description: Implementation of real-time process analytical technology (PAT) + for process monitoring and control + annotations: + technologies: + tag: technologies + value: Raman spectroscopy, NIR, online HPLC + close_mappings: + - PROCO:0000227 + DIGITAL_TWIN_MODELING: + text: DIGITAL_TWIN_MODELING + description: Use of computational process models for simulation, prediction, + and optimization + annotations: + approaches: + tag: approaches + value: mechanistic models, hybrid models, machine learning + UnitOperationType: + name: UnitOperationType + definition_uri: https://w3id.org/valuesets/UnitOperationType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Fundamental chemical and process engineering unit operations - the + discrete processing steps that transform, separate, combine, or move process + material. Grouped (via the unit_operation_class annotation) into momentum transfer, + heat transfer, mass-transfer separations, mechanical separations, solids processing, + reaction, and storage. + title: Unit Operation Type + from_schema: https://w3id.org/valuesets/process_engineering/unit_operations + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PUMPING: + text: PUMPING + description: Raising the pressure or moving of a liquid stream using a pump + annotations: + unit_operation_class: + tag: unit_operation_class + value: MOMENTUM_TRANSFER + COMPRESSION: + text: COMPRESSION + description: Raising the pressure of a gas or vapor stream using a compressor + annotations: + unit_operation_class: + tag: unit_operation_class + value: MOMENTUM_TRANSFER + GAS_MOVING: + text: GAS_MOVING + description: Moving a gas stream at low pressure rise using a fan or blower + annotations: + unit_operation_class: + tag: unit_operation_class + value: MOMENTUM_TRANSFER + FLOW_SPLITTING: + text: FLOW_SPLITTING + description: Dividing a single stream into two or more streams of identical + composition + annotations: + unit_operation_class: + tag: unit_operation_class + value: MOMENTUM_TRANSFER + STREAM_MIXING: + text: STREAM_MIXING + description: Combining two or more streams into a single stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: MOMENTUM_TRANSFER + HEAT_EXCHANGE: + text: HEAT_EXCHANGE + description: Transfer of thermal energy between two streams without phase-change + intent + annotations: + unit_operation_class: + tag: unit_operation_class + value: HEAT_TRANSFER + HEATING: + text: HEATING + description: Raising the temperature of a process stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: HEAT_TRANSFER + COOLING: + text: COOLING + description: Lowering the temperature of a process stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: HEAT_TRANSFER + CONDENSATION: + text: CONDENSATION + description: Converting a vapor to a liquid by removing heat + annotations: + unit_operation_class: + tag: unit_operation_class + value: HEAT_TRANSFER + EVAPORATION: + text: EVAPORATION + description: Concentrating a solution by vaporizing solvent, typically water + meaning: CHMO:0001574 + annotations: + unit_operation_class: + tag: unit_operation_class + value: HEAT_TRANSFER + title: evaporation + DISTILLATION: + text: DISTILLATION + description: Separation of components by differences in volatility (boiling + point) + meaning: CHMO:0001532 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: distillation + ABSORPTION: + text: ABSORPTION + description: Selective transfer of one or more gas-phase components into a + liquid solvent + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + STRIPPING: + text: STRIPPING + description: Selective transfer of dissolved components from a liquid into + a gas stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + LIQUID_LIQUID_EXTRACTION: + text: LIQUID_LIQUID_EXTRACTION + description: Separation by partitioning of solutes between two immiscible + liquid phases + meaning: CHMO:0001577 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: extraction + LEACHING: + text: LEACHING + description: Solid-liquid extraction of soluble components from a solid using + a solvent + meaning: CHMO:0001681 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: leaching + ADSORPTION: + text: ADSORPTION + description: Selective uptake of components onto the surface of a solid sorbent + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + ION_EXCHANGE: + text: ION_EXCHANGE + description: Reversible exchange of ions between a solution and a solid ion-exchange + resin + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + CHROMATOGRAPHY: + text: CHROMATOGRAPHY + description: Separation by differential partitioning of solutes between a + mobile and stationary phase + meaning: CHMO:0001000 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: chromatography + CRYSTALLIZATION: + text: CRYSTALLIZATION + description: Formation of a solid crystalline phase from a solution or melt + meaning: PROCO:0000052 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: crystallization + PRECIPITATION: + text: PRECIPITATION + description: Formation of an insoluble solid from solution by chemical or + physical means + meaning: CHMO:0001688 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + title: precipitation + DRYING: + text: DRYING + description: Removal of a liquid (usually water) from a solid or surface by + vaporization + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + FREEZE_DRYING: + text: FREEZE_DRYING + description: Removal of solvent by sublimation from the frozen state (lyophilization) + meaning: CHMO:0001553 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + aliases: + tag: aliases + value: lyophilization + title: freeze drying + HUMIDIFICATION: + text: HUMIDIFICATION + description: Addition of water vapor to a gas stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: MASS_TRANSFER_SEPARATION + MEMBRANE_SEPARATION: + text: MEMBRANE_SEPARATION + description: Separation of stream components using a semipermeable membrane + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + MICROFILTRATION: + text: MICROFILTRATION + description: Membrane separation retaining particles roughly 0.1-10 micrometers + meaning: CHMO:0001641 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + title: micro-filtration + ULTRAFILTRATION: + text: ULTRAFILTRATION + description: Membrane separation retaining macromolecules and colloids + meaning: CHMO:0001645 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + title: ultra-filtration + NANOFILTRATION: + text: NANOFILTRATION + description: Membrane separation retaining small molecules and multivalent + ions + meaning: CHMO:0001642 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + title: nano-filtration + REVERSE_OSMOSIS: + text: REVERSE_OSMOSIS + description: Pressure-driven membrane separation rejecting dissolved salts + and small solutes + meaning: CHMO:0001643 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + title: reverse osmosis + DIALYSIS: + text: DIALYSIS + description: Diffusive membrane separation of solutes across a concentration + gradient + meaning: CHMO:0001522 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + title: dialysis + ELECTRODIALYSIS: + text: ELECTRODIALYSIS + description: Membrane separation of ions driven by an applied electric field + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + PERVAPORATION: + text: PERVAPORATION + description: Membrane separation combining permeation and partial vaporization + of the permeate + annotations: + unit_operation_class: + tag: unit_operation_class + value: MEMBRANE_SEPARATION + FILTRATION: + text: FILTRATION + description: Separation of solids from a fluid by passage through a porous + medium + meaning: CHMO:0001640 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + title: filtration + CENTRIFUGATION: + text: CENTRIFUGATION + description: Separation of phases by density difference under centrifugal + force + meaning: OBI:0302886 + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + title: centrifugation + SEDIMENTATION: + text: SEDIMENTATION + description: Gravity separation of suspended solids or immiscible liquids + by settling + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + CLARIFICATION: + text: CLARIFICATION + description: Removal of suspended solids from a liquid to produce a clarified + stream + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + FLOTATION: + text: FLOTATION + description: Separation of solids or droplets by attachment to rising gas + bubbles + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + FLOCCULATION: + text: FLOCCULATION + description: Aggregation of fine suspended particles into larger flocs to + aid separation + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + CYCLONE_SEPARATION: + text: CYCLONE_SEPARATION + description: Separation of particles from a fluid using centrifugal force + in a cyclone + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + SCREENING: + text: SCREENING + description: Separation of particulate solids by size using a screen or sieve + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + GAS_LIQUID_SEPARATION: + text: GAS_LIQUID_SEPARATION + description: Disengagement of vapor and liquid phases, e.g. in a flash or + knockout drum + annotations: + unit_operation_class: + tag: unit_operation_class + value: MECHANICAL_SEPARATION + SIZE_REDUCTION: + text: SIZE_REDUCTION + description: Reduction of particle size by crushing, grinding, or milling + (comminution) + annotations: + unit_operation_class: + tag: unit_operation_class + value: SOLIDS_PROCESSING + SIZE_ENLARGEMENT: + text: SIZE_ENLARGEMENT + description: Increase of particle size by granulation, agglomeration, or pelletizing + annotations: + unit_operation_class: + tag: unit_operation_class + value: SOLIDS_PROCESSING + MIXING: + text: MIXING + description: Blending of materials to achieve compositional or thermal uniformity + meaning: CHMO:0001685 + annotations: + unit_operation_class: + tag: unit_operation_class + value: SOLIDS_PROCESSING + title: mixing + SOLIDS_CONVEYING: + text: SOLIDS_CONVEYING + description: Transport of bulk particulate solids between process steps + annotations: + unit_operation_class: + tag: unit_operation_class + value: SOLIDS_PROCESSING + CHEMICAL_REACTION: + text: CHEMICAL_REACTION + description: Chemical conversion of reactants to products in a reactor + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + FERMENTATION: + text: FERMENTATION + description: Microbial or enzymatic conversion of substrate to product in + a bioreactor + meaning: CHMO:0001624 + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + title: fermentation + COMBUSTION: + text: COMBUSTION + description: Exothermic oxidation of a fuel, typically to generate heat or + power + meaning: CHMO:0001473 + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + title: combustion + GASIFICATION: + text: GASIFICATION + description: Conversion of carbonaceous feedstock to synthesis gas under limited + oxygen + meaning: CHMO:0001501 + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + title: gasification + PYROLYSIS: + text: PYROLYSIS + description: Thermal decomposition of material in the absence of oxygen + meaning: CHMO:0001502 + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + title: pyrolysis + ELECTROLYSIS: + text: ELECTROLYSIS + description: Driving a non-spontaneous chemical reaction using electrical + energy + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + NEUTRALIZATION: + text: NEUTRALIZATION + description: Adjustment of pH by reaction of acid and base + annotations: + unit_operation_class: + tag: unit_operation_class + value: REACTION + PURIFICATION: + text: PURIFICATION + description: Removal of impurities to increase the purity of a product stream + meaning: CHMO:0002231 + annotations: + unit_operation_class: + tag: unit_operation_class + value: SEPARATION + title: purification + STORAGE: + text: STORAGE + description: Holding of material in a vessel or tank between process steps + annotations: + unit_operation_class: + tag: unit_operation_class + value: STORAGE + ProcessEquipmentType: + name: ProcessEquipmentType + definition_uri: https://w3id.org/valuesets/ProcessEquipmentType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Physical equipment / asset types used in process plants. These correspond + to the nodes of a process flowsheet and complement UnitOperationType (which + describes the function performed). Grouped via the equipment_class annotation. + title: Process Equipment Type + from_schema: https://w3id.org/valuesets/process_engineering/unit_operations + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + STORAGE_TANK: + text: STORAGE_TANK + description: Atmospheric or low-pressure vessel for holding liquids or solids + annotations: + equipment_class: + tag: equipment_class + value: VESSEL + PRESSURE_VESSEL: + text: PRESSURE_VESSEL + description: Vessel designed to hold contents at elevated pressure + annotations: + equipment_class: + tag: equipment_class + value: VESSEL + HOPPER: + text: HOPPER + description: Funnel-shaped vessel for storing and discharging bulk solids + annotations: + equipment_class: + tag: equipment_class + value: VESSEL + FLASH_DRUM: + text: FLASH_DRUM + description: Vessel for separating vapor and liquid produced by a pressure + let-down + annotations: + equipment_class: + tag: equipment_class + value: VESSEL + KNOCKOUT_DRUM: + text: KNOCKOUT_DRUM + description: Vessel that removes entrained liquid from a gas stream + annotations: + equipment_class: + tag: equipment_class + value: VESSEL + REACTOR: + text: REACTOR + description: Vessel in which chemical reactions are carried out + annotations: + equipment_class: + tag: equipment_class + value: REACTOR + subtypes: + tag: subtypes + value: CSTR, plug-flow, batch, fixed-bed, fluidized-bed + BIOREACTOR: + text: BIOREACTOR + description: Vessel for culturing cells or carrying out enzymatic reactions + meaning: OBI:0001046 + annotations: + equipment_class: + tag: equipment_class + value: REACTOR + title: bioreactor + FERMENTER: + text: FERMENTER + description: Bioreactor configured for microbial fermentation + annotations: + equipment_class: + tag: equipment_class + value: REACTOR + DISTILLATION_COLUMN: + text: DISTILLATION_COLUMN + description: Column with trays or packing for vapor-liquid separation by distillation + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + ABSORPTION_COLUMN: + text: ABSORPTION_COLUMN + description: Column for gas absorption into a liquid solvent + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + STRIPPING_COLUMN: + text: STRIPPING_COLUMN + description: Column for stripping volatile components from a liquid + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + EXTRACTION_COLUMN: + text: EXTRACTION_COLUMN + description: Column for liquid-liquid extraction + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + CHROMATOGRAPHY_COLUMN: + text: CHROMATOGRAPHY_COLUMN + description: Column packed with a stationary phase for chromatographic separation + meaning: OBI:0000038 + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + title: chromatography column + SCRUBBER: + text: SCRUBBER + description: Contactor for removing pollutants or particulates from a gas + using a liquid + annotations: + equipment_class: + tag: equipment_class + value: COLUMN + HEAT_EXCHANGER: + text: HEAT_EXCHANGER + description: Equipment that transfers heat between two fluid streams + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + subtypes: + tag: subtypes + value: shell-and-tube, plate, air-cooled + CONDENSER: + text: CONDENSER + description: Heat exchanger that condenses a vapor to liquid + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + REBOILER: + text: REBOILER + description: Heat exchanger that supplies boilup at the base of a distillation + column + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + EVAPORATOR: + text: EVAPORATOR + description: Equipment that concentrates a solution by vaporizing solvent + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + FURNACE: + text: FURNACE + description: Fired heater that raises stream temperature by combustion + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + BOILER: + text: BOILER + description: Equipment that generates steam by transferring combustion heat + to water + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + COOLING_TOWER: + text: COOLING_TOWER + description: Equipment that rejects process heat to the atmosphere by evaporative + cooling + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + DRYER: + text: DRYER + description: Equipment for removing liquid from solids by vaporization + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + CRYSTALLIZER: + text: CRYSTALLIZER + description: Equipment for producing crystalline solids from solution or melt + annotations: + equipment_class: + tag: equipment_class + value: HEAT_TRANSFER + PUMP: + text: PUMP + description: Machine that moves or pressurizes a liquid + annotations: + equipment_class: + tag: equipment_class + value: FLUID_MOVER + COMPRESSOR: + text: COMPRESSOR + description: Machine that raises the pressure of a gas + annotations: + equipment_class: + tag: equipment_class + value: FLUID_MOVER + BLOWER: + text: BLOWER + description: Machine that moves gas at a low pressure rise + annotations: + equipment_class: + tag: equipment_class + value: FLUID_MOVER + FAN: + text: FAN + description: Machine that moves large gas volumes at very low pressure rise + annotations: + equipment_class: + tag: equipment_class + value: FLUID_MOVER + VALVE: + text: VALVE + description: Device that regulates, directs, or controls stream flow + annotations: + equipment_class: + tag: equipment_class + value: FLUID_MOVER + CENTRIFUGE: + text: CENTRIFUGE + description: Equipment that separates phases by density under centrifugal + force + meaning: OBI:0400106 + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + title: centrifuge + FILTER: + text: FILTER + description: Equipment that separates solids from a fluid using a porous medium + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + DECANTER: + text: DECANTER + description: Equipment that separates immiscible liquids or settled solids + by gravity + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + CLARIFIER: + text: CLARIFIER + description: Settling tank that removes suspended solids from a liquid + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + CYCLONE: + text: CYCLONE + description: Device that separates particles from a fluid by centrifugal action + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + HYDROCYCLONE: + text: HYDROCYCLONE + description: Cyclone that separates solids or immiscible liquids from a liquid + stream + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + MEMBRANE_MODULE: + text: MEMBRANE_MODULE + description: Housing containing membrane elements for a membrane separation + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + SETTLER: + text: SETTLER + description: Vessel allowing phases to separate by gravity settling + annotations: + equipment_class: + tag: equipment_class + value: SEPARATION + MIXER: + text: MIXER + description: Equipment for blending streams or materials + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + AGITATOR: + text: AGITATOR + description: Impeller-driven device that mixes vessel contents + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + MILL: + text: MILL + description: Equipment that reduces particle size by grinding or crushing + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + CRUSHER: + text: CRUSHER + description: Equipment that reduces large solids by mechanical force + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + SCREEN: + text: SCREEN + description: Equipment that classifies particulate solids by size + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + CONVEYOR: + text: CONVEYOR + description: Equipment that transports bulk solids between locations + annotations: + equipment_class: + tag: equipment_class + value: SOLIDS_HANDLING + ProcessStreamRole: + name: ProcessStreamRole + definition_uri: https://w3id.org/valuesets/ProcessStreamRole + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The functional role of a stream within a process flowsheet, independent + of its chemical composition. + title: Process Stream Role + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + FEED: + text: FEED + description: A stream entering the process or a unit operation as input + RAW_MATERIAL: + text: RAW_MATERIAL + description: A fresh raw material or reactant stream entering the process + battery limits + PRODUCT: + text: PRODUCT + description: A primary product stream of commercial value leaving the process + BYPRODUCT: + text: BYPRODUCT + description: A secondary saleable or usable product produced alongside the + main product + INTERMEDIATE: + text: INTERMEDIATE + description: A stream flowing between unit operations within the process + RECYCLE: + text: RECYCLE + description: A stream returned to an upstream point for reprocessing + PURGE: + text: PURGE + description: A stream withdrawn from a recycle loop to prevent accumulation + of inerts or impurities + BLEED: + text: BLEED + description: A small continuous stream withdrawn to control composition or + level + MAKEUP: + text: MAKEUP + description: A stream added to replenish material lost from a circulating + loop + WASTE: + text: WASTE + description: A stream with no further use that must be treated or disposed + of + EFFLUENT: + text: EFFLUENT + description: A liquid waste stream discharged from the process + EMISSION: + text: EMISSION + description: A gaseous stream released to the atmosphere + UTILITY: + text: UTILITY + description: A service stream (e.g. steam, cooling water) supplied to a unit + operation + ProcessStreamPhase: + name: ProcessStreamPhase + definition_uri: https://w3id.org/valuesets/ProcessStreamPhase + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The physical phase or phase combination of a process stream. For + single-phase fundamental states see also StateOfMatterEnum in the physics module; + this enum adds the multiphase combinations common in process engineering. + title: Process Stream Phase + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + see_also: + - https://w3id.org/valuesets/physics/states_of_matter + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + GAS: + text: GAS + description: A single gas or vapor phase + annotations: + sff_phase_code: + tag: sff_phase_code + value: g + LIQUID: + text: LIQUID + description: A single liquid phase + annotations: + sff_phase_code: + tag: sff_phase_code + value: l + SOLID: + text: SOLID + description: A single solid phase + annotations: + sff_phase_code: + tag: sff_phase_code + value: s + SUPERCRITICAL: + text: SUPERCRITICAL + description: A supercritical fluid above its critical temperature and pressure + VAPOR_LIQUID: + text: VAPOR_LIQUID + description: A two-phase mixture of vapor and liquid + LIQUID_LIQUID: + text: LIQUID_LIQUID + description: A two-phase mixture of two immiscible liquids + VAPOR_LIQUID_LIQUID: + text: VAPOR_LIQUID_LIQUID + description: A three-phase mixture of a vapor and two immiscible liquids + SLURRY: + text: SLURRY + description: A suspension of solids in a liquid + GAS_SOLID: + text: GAS_SOLID + description: A two-phase mixture of gas and entrained or fluidized solids + MULTIPHASE: + text: MULTIPHASE + description: A stream containing more than one phase, of mixed or unspecified + composition + UtilityType: + name: UtilityType + definition_uri: https://w3id.org/valuesets/UtilityType + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Common plant utilities consumed or produced by process unit operations, + used for energy and mass balance accounting on a flowsheet. + title: Utility Type + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + STEAM: + text: STEAM + description: Process steam used for heating or stripping + annotations: + utility_category: + tag: utility_category + value: HEAT + LOW_PRESSURE_STEAM: + text: LOW_PRESSURE_STEAM + description: Low-pressure steam utility + annotations: + utility_category: + tag: utility_category + value: HEAT + typical_range: + tag: typical_range + value: <3 barg + MEDIUM_PRESSURE_STEAM: + text: MEDIUM_PRESSURE_STEAM + description: Medium-pressure steam utility + annotations: + utility_category: + tag: utility_category + value: HEAT + typical_range: + tag: typical_range + value: 3-20 barg + HIGH_PRESSURE_STEAM: + text: HIGH_PRESSURE_STEAM + description: High-pressure steam utility + annotations: + utility_category: + tag: utility_category + value: HEAT + typical_range: + tag: typical_range + value: '>20 barg' + COOLING_WATER: + text: COOLING_WATER + description: Recirculated cooling water for heat rejection + annotations: + utility_category: + tag: utility_category + value: HEAT + CHILLED_WATER: + text: CHILLED_WATER + description: Refrigerated water for below-ambient cooling + annotations: + utility_category: + tag: utility_category + value: HEAT + REFRIGERANT: + text: REFRIGERANT + description: Refrigerant fluid for low-temperature cooling duty + annotations: + utility_category: + tag: utility_category + value: HEAT + HOT_OIL: + text: HOT_OIL + description: Thermal oil heat-transfer fluid for high-temperature heating + annotations: + utility_category: + tag: utility_category + value: HEAT + BRINE: + text: BRINE + description: Chilled brine used as a low-temperature coolant + annotations: + utility_category: + tag: utility_category + value: HEAT + ELECTRICITY: + text: ELECTRICITY + description: Electrical power supplied to drivers and equipment + annotations: + utility_category: + tag: utility_category + value: POWER + PROCESS_WATER: + text: PROCESS_WATER + description: Treated water used as a process input + annotations: + utility_category: + tag: utility_category + value: OTHER + DEMINERALIZED_WATER: + text: DEMINERALIZED_WATER + description: High-purity demineralized water utility + annotations: + utility_category: + tag: utility_category + value: OTHER + NATURAL_GAS: + text: NATURAL_GAS + description: Natural gas supplied as fuel or feedstock + annotations: + utility_category: + tag: utility_category + value: OTHER + FUEL_GAS: + text: FUEL_GAS + description: Fuel gas burned in fired heaters and boilers + annotations: + utility_category: + tag: utility_category + value: OTHER + COMPRESSED_AIR: + text: COMPRESSED_AIR + description: Compressed air utility for process or actuation use + annotations: + utility_category: + tag: utility_category + value: OTHER + INSTRUMENT_AIR: + text: INSTRUMENT_AIR + description: Clean dry compressed air for instrumentation + annotations: + utility_category: + tag: utility_category + value: OTHER + NITROGEN: + text: NITROGEN + description: Nitrogen used for inerting, blanketing, or purging + annotations: + utility_category: + tag: utility_category + value: OTHER + FLARE: + text: FLARE + description: Flare system for safe combustion of relieved gases + annotations: + utility_category: + tag: utility_category + value: OTHER + ProcessIndustryCategory: + name: ProcessIndustryCategory + definition_uri: https://w3id.org/valuesets/ProcessIndustryCategory + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Sectors of the process (continuous and batch) manufacturing industries. + The pisces_category annotation records the corresponding top-level category + in the PISCES Standard Flowsheet Format where one exists. + title: Process Industry Category + from_schema: https://w3id.org/valuesets/process_engineering/process_industries + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + PETROLEUM_REFINING: + text: PETROLEUM_REFINING + description: Refining of crude oil into fuels and feedstocks + annotations: + pisces_category: + tag: pisces_category + value: Energy + PETROCHEMICAL: + text: PETROCHEMICAL + description: Production of chemicals derived from petroleum and natural gas + annotations: + pisces_category: + tag: pisces_category + value: Chemical + BULK_CHEMICAL: + text: BULK_CHEMICAL + description: Large-volume production of commodity chemicals + annotations: + pisces_category: + tag: pisces_category + value: Chemical + SPECIALTY_CHEMICAL: + text: SPECIALTY_CHEMICAL + description: Production of lower-volume, high-value performance chemicals + annotations: + pisces_category: + tag: pisces_category + value: Chemical + AGROCHEMICAL: + text: AGROCHEMICAL + description: Production of fertilizers, pesticides, and other agricultural + chemicals + annotations: + pisces_category: + tag: pisces_category + value: Chemical + POLYMER_AND_PLASTICS: + text: POLYMER_AND_PLASTICS + description: Production of polymers, resins, and plastic materials + annotations: + pisces_category: + tag: pisces_category + value: Chemical + PHARMACEUTICAL: + text: PHARMACEUTICAL + description: Manufacture of active pharmaceutical ingredients and drug products + annotations: + pisces_category: + tag: pisces_category + value: Pharmaceutical + BIOTECHNOLOGY: + text: BIOTECHNOLOGY + description: Manufacture of products using biological systems and fermentation + annotations: + pisces_category: + tag: pisces_category + value: Pharmaceutical + BIOFUEL: + text: BIOFUEL + description: Production of biologically derived fuels such as ethanol and + biodiesel + annotations: + pisces_category: + tag: pisces_category + value: Biofuel + FOOD_AND_BEVERAGE: + text: FOOD_AND_BEVERAGE + description: Processing and manufacture of food and beverage products + annotations: + pisces_category: + tag: pisces_category + value: Food Product + PULP_AND_PAPER: + text: PULP_AND_PAPER + description: Production of pulp, paper, and board from fiber + METALS_AND_MINING: + text: METALS_AND_MINING + description: Extraction and processing of metals and minerals + WATER_AND_WASTEWATER_TREATMENT: + text: WATER_AND_WASTEWATER_TREATMENT + description: Treatment of water and wastewater streams + POWER_GENERATION: + text: POWER_GENERATION + description: Generation of electrical power and process heat + annotations: + pisces_category: + tag: pisces_category + value: Energy + GAS_PROCESSING: + text: GAS_PROCESSING + description: Processing and separation of natural gas and industrial gases + annotations: + pisces_category: + tag: pisces_category + value: Energy + CEMENT_AND_CONSTRUCTION_MATERIALS: + text: CEMENT_AND_CONSTRUCTION_MATERIALS + description: Production of cement, lime, and construction materials + GLASS_AND_CERAMICS: + text: GLASS_AND_CERAMICS + description: Manufacture of glass and ceramic products + TEXTILE: + text: TEXTILE + description: Production and finishing of textile fibers and fabrics + COSMETICS_AND_PERSONAL_CARE: + text: COSMETICS_AND_PERSONAL_CARE + description: Manufacture of cosmetics and personal care products + NUCLEAR_FUEL: + text: NUCLEAR_FUEL + description: Processing of nuclear fuel materials + annotations: + pisces_category: + tag: pisces_category + value: Energy + SEMICONDUCTOR: + text: SEMICONDUCTOR + description: Fabrication of semiconductor and microelectronic materials + ProcessOperationMode: + name: ProcessOperationMode + definition_uri: https://w3id.org/valuesets/ProcessOperationMode + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The temporal mode in which a process or unit operation is run. + title: Process Operation Mode + from_schema: https://w3id.org/valuesets/process_engineering/process_industries + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + BATCH: + text: BATCH + description: Material is charged, processed, and discharged in discrete batches + CONTINUOUS: + text: CONTINUOUS + description: Material flows through the process steadily without interruption + SEMI_BATCH: + text: SEMI_BATCH + description: A hybrid mode where some streams are continuous while others + are batch-wise + SEMI_CONTINUOUS: + text: SEMI_CONTINUOUS + description: Process alternates between continuous operation and periodic + interruptions + EquationOfStateModel: + name: EquationOfStateModel + definition_uri: https://w3id.org/valuesets/EquationOfStateModel + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Equations of state used to compute fugacity coefficients and PVT + behavior of fluids in process simulation (the SFF phi method). + title: Equation of State Model + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + IDEAL_GAS: + text: IDEAL_GAS + description: Ideal gas law, assuming no intermolecular interactions + VIRIAL: + text: VIRIAL + description: Virial equation of state expressed as a power series in density + or pressure + REDLICH_KWONG: + text: REDLICH_KWONG + description: Redlich-Kwong cubic equation of state + annotations: + abbreviation: + tag: abbreviation + value: RK + SOAVE_REDLICH_KWONG: + text: SOAVE_REDLICH_KWONG + description: Soave modification of the Redlich-Kwong cubic equation of state + annotations: + abbreviation: + tag: abbreviation + value: SRK + PENG_ROBINSON: + text: PENG_ROBINSON + description: Peng-Robinson cubic equation of state + annotations: + abbreviation: + tag: abbreviation + value: PR + PENG_ROBINSON_BOSTON_MATHIAS: + text: PENG_ROBINSON_BOSTON_MATHIAS + description: Peng-Robinson with Boston-Mathias alpha function for supercritical + extrapolation + annotations: + abbreviation: + tag: abbreviation + value: PR-BM + SRK_BOSTON_MATHIAS: + text: SRK_BOSTON_MATHIAS + description: Soave-Redlich-Kwong with Boston-Mathias alpha function + annotations: + abbreviation: + tag: abbreviation + value: SRK-BM + LEE_KESLER_PLOCKER: + text: LEE_KESLER_PLOCKER + description: Lee-Kesler-Plocker corresponding-states equation of state + annotations: + abbreviation: + tag: abbreviation + value: LKP + BENEDICT_WEBB_RUBIN_STARLING: + text: BENEDICT_WEBB_RUBIN_STARLING + description: Benedict-Webb-Rubin-Starling equation of state for light hydrocarbons + annotations: + abbreviation: + tag: abbreviation + value: BWRS + PREDICTIVE_SRK: + text: PREDICTIVE_SRK + description: Predictive SRK combining SRK with a UNIFAC-based mixing rule + annotations: + abbreviation: + tag: abbreviation + value: PSRK + PC_SAFT: + text: PC_SAFT + description: Perturbed-chain statistical associating fluid theory equation + of state + annotations: + abbreviation: + tag: abbreviation + value: PC-SAFT + CUBIC_PLUS_ASSOCIATION: + text: CUBIC_PLUS_ASSOCIATION + description: Cubic-plus-association equation of state for associating fluids + annotations: + abbreviation: + tag: abbreviation + value: CPA + GERG_2008: + text: GERG_2008 + description: GERG-2008 reference equation of state for natural gas mixtures + IAPWS_95: + text: IAPWS_95 + description: IAPWS-95 reference formulation for the thermodynamic properties + of water + annotations: + aliases: + tag: aliases + value: steam tables + ActivityCoefficientModel: + name: ActivityCoefficientModel + definition_uri: https://w3id.org/valuesets/ActivityCoefficientModel + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Excess Gibbs energy / activity-coefficient models for non-ideal liquid + phases (the SFF gamma method). + title: Activity Coefficient Model + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + IDEAL: + text: IDEAL + description: Ideal solution, all activity coefficients equal to one (Raoult's + law) + MARGULES: + text: MARGULES + description: Margules two-parameter activity-coefficient model + VAN_LAAR: + text: VAN_LAAR + description: Van Laar activity-coefficient model + REGULAR_SOLUTION: + text: REGULAR_SOLUTION + description: Scatchard-Hildebrand regular solution model based on solubility + parameters + WILSON: + text: WILSON + description: Wilson local-composition activity-coefficient model + NRTL: + text: NRTL + description: Non-random two-liquid local-composition activity-coefficient + model + ELECTROLYTE_NRTL: + text: ELECTROLYTE_NRTL + description: Electrolyte NRTL model for systems containing ions + annotations: + abbreviation: + tag: abbreviation + value: eNRTL + UNIQUAC: + text: UNIQUAC + description: Universal quasi-chemical activity-coefficient model + UNIFAC: + text: UNIFAC + description: UNIQUAC functional-group activity-coefficient (group-contribution) + model + UNIFAC_DORTMUND: + text: UNIFAC_DORTMUND + description: Modified UNIFAC (Dortmund) group-contribution model + FLORY_HUGGINS: + text: FLORY_HUGGINS + description: Flory-Huggins model for polymer solutions + PITZER: + text: PITZER + description: Pitzer model for aqueous electrolyte activity coefficients + COSMO_SAC: + text: COSMO_SAC + description: COSMO-based segment activity-coefficient model from quantum chemistry + annotations: + aliases: + tag: aliases + value: COSMO-RS, COSMO-SAC + ThermodynamicPropertyPackage: + name: ThermodynamicPropertyPackage + definition_uri: https://w3id.org/valuesets/ThermodynamicPropertyPackage + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Named property methods/packages offered by process simulators, typically + combining an equation of state and/or an activity-coefficient model. Used where + a single package label rather than separate gamma/phi methods is recorded. + title: Thermodynamic Property Package + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + IDEAL: + text: IDEAL + description: Ideal (Raoult's law) property package + NRTL: + text: NRTL + description: NRTL activity model with ideal or RK vapor phase + NRTL_RK: + text: NRTL_RK + description: NRTL activity model with Redlich-Kwong vapor phase + UNIQUAC: + text: UNIQUAC + description: UNIQUAC activity model property package + UNIFAC: + text: UNIFAC + description: UNIFAC group-contribution property package + WILSON: + text: WILSON + description: Wilson activity model property package + VAN_LAAR: + text: VAN_LAAR + description: Van Laar activity model property package + PENG_ROBINSON: + text: PENG_ROBINSON + description: Peng-Robinson equation-of-state property package + SOAVE_REDLICH_KWONG: + text: SOAVE_REDLICH_KWONG + description: Soave-Redlich-Kwong equation-of-state property package + ELECTROLYTE_NRTL: + text: ELECTROLYTE_NRTL + description: Electrolyte NRTL property package for ionic systems + PITZER: + text: PITZER + description: Pitzer property package for aqueous electrolytes + CHAO_SEADER: + text: CHAO_SEADER + description: Chao-Seader semi-empirical package for hydrocarbon systems + GRAYSON_STREED: + text: GRAYSON_STREED + description: Grayson-Streed package for hydrogen-rich hydrocarbon systems + BRAUN_K10: + text: BRAUN_K10 + description: Braun K10 package for low-pressure heavy hydrocarbon systems + annotations: + abbreviation: + tag: abbreviation + value: BK10 + PC_SAFT: + text: PC_SAFT + description: PC-SAFT equation-of-state property package + STEAM_TABLES: + text: STEAM_TABLES + description: Steam-table (IAPWS / ASME) property package for water and steam + API_SOUR: + text: API_SOUR + description: API sour-water package for systems with acid gases and ammonia + MixingRuleModel: + name: MixingRuleModel + definition_uri: https://w3id.org/valuesets/MixingRuleModel + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Mixing rules applied to equation-of-state parameters for mixtures + (the SFF mixture method). + title: Mixing Rule Model + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + IDEAL: + text: IDEAL + description: Ideal mixing, no excess properties + VAN_DER_WAALS: + text: VAN_DER_WAALS + description: Classical van der Waals one-fluid mixing rule with binary interaction + parameters + annotations: + aliases: + tag: aliases + value: classical, quadratic mixing rule + HURON_VIDAL: + text: HURON_VIDAL + description: Huron-Vidal mixing rule coupling an equation of state to an excess + Gibbs energy model + MODIFIED_HURON_VIDAL: + text: MODIFIED_HURON_VIDAL + description: Modified Huron-Vidal first/second order mixing rules + annotations: + aliases: + tag: aliases + value: MHV1, MHV2 + WONG_SANDLER: + text: WONG_SANDLER + description: Wong-Sandler mixing rule with correct low- and high-density limits + PSRK_MIXING: + text: PSRK_MIXING + description: Predictive SRK (PSRK) mixing rule based on UNIFAC + PoyntingCorrectionMethod: + name: PoyntingCorrectionMethod + definition_uri: https://w3id.org/valuesets/PoyntingCorrectionMethod instantiates: - valuesets_meta:ValueSetEnumDefinition - description: Categories of products derived from biological manufacturing processes - title: Bioproduct Category Type - from_schema: https://w3id.org/valuesets/bioprocessing/biomanufacturing + description: Treatment of the Poynting correction factor accounting for the effect + of pressure on liquid fugacity (the SFF PCF method). + title: Poynting Correction Method + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics contributors: - orcid:0000-0002-6601-2165 - https://github.com/anthropics/claude-code status: DRAFT permissible_values: - BIOFUEL: - text: BIOFUEL - description: Biologically derived fuel including ethanol, biodiesel, and biogas - meaning: CHEBI:33292 - title: fuel - BIOCHEMICAL: - text: BIOCHEMICAL - description: Chemical compounds produced through biological processes + NONE: + text: NONE + description: No Poynting correction applied + POYNTING: + text: POYNTING + description: Poynting correction factor applied to the liquid fugacity + DesignSimulationMethod: + name: DesignSimulationMethod + definition_uri: https://w3id.org/valuesets/DesignSimulationMethod + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Methods used to design or simulate unit operations, particularly + separation columns - ranging from graphical and shortcut methods to rigorous + stage-by-stage and rate-based models. + title: Design and Simulation Method + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + MCCABE_THIELE: + text: MCCABE_THIELE + description: McCabe-Thiele graphical method for binary distillation annotations: - examples: - tag: examples - value: organic acids, amino acids, platform chemicals - related_mappings: - - CHEBI:52206 - BIOPLASTIC: - text: BIOPLASTIC - description: Biodegradable or bio-based plastic materials such as PHA, PLA, - and PBS + method_class: + tag: method_class + value: GRAPHICAL + PONCHON_SAVARIT: + text: PONCHON_SAVARIT + description: Ponchon-Savarit enthalpy-composition graphical method for binary + distillation annotations: - examples: - tag: examples - value: polyhydroxyalkanoates, polylactic acid - BIOSURFACTANT: - text: BIOSURFACTANT - description: Surface-active compounds produced by microorganisms + method_class: + tag: method_class + value: GRAPHICAL + FENSKE_UNDERWOOD_GILLILAND: + text: FENSKE_UNDERWOOD_GILLILAND + description: Fenske-Underwood-Gilliland shortcut method for multicomponent + distillation annotations: - examples: - tag: examples - value: rhamnolipids, sophorolipids, surfactin - related_mappings: - - CHEBI:35195 - BIOACTIVE_COMPOUND: - text: BIOACTIVE_COMPOUND - description: Biologically active compounds with therapeutic or functional - properties + method_class: + tag: method_class + value: SHORTCUT + abbreviation: + tag: abbreviation + value: FUG + KREMSER: + text: KREMSER + description: Kremser shortcut method for absorber and stripper design + annotations: + method_class: + tag: method_class + value: SHORTCUT + MESH: + text: MESH + description: Rigorous equilibrium-stage solution of the Material, Equilibrium, + Summation and Heat (enthalpy) equations + annotations: + method_class: + tag: method_class + value: RIGOROUS_EQUILIBRIUM + INSIDE_OUT: + text: INSIDE_OUT + description: Inside-out algorithm for rigorous equilibrium-stage column convergence + annotations: + method_class: + tag: method_class + value: RIGOROUS_EQUILIBRIUM + RATE_BASED: + text: RATE_BASED + description: Rate-based (nonequilibrium) model accounting for mass and heat + transfer rates + annotations: + method_class: + tag: method_class + value: RATE_BASED + EQUILIBRIUM_STAGE: + text: EQUILIBRIUM_STAGE + description: Generic equilibrium-stage model assuming each stage reaches phase + equilibrium + annotations: + method_class: + tag: method_class + value: RIGOROUS_EQUILIBRIUM + SHORTCUT: + text: SHORTCUT + description: Generic shortcut / approximate design method + annotations: + method_class: + tag: method_class + value: SHORTCUT + RIGOROUS: + text: RIGOROUS + description: Generic rigorous design method + annotations: + method_class: + tag: method_class + value: RIGOROUS_EQUILIBRIUM + PINCH_ANALYSIS: + text: PINCH_ANALYSIS + description: Pinch analysis for heat-exchanger network and energy integration + annotations: + method_class: + tag: method_class + value: ENERGY_INTEGRATION + FlowsheetSolutionApproach: + name: FlowsheetSolutionApproach + definition_uri: https://w3id.org/valuesets/FlowsheetSolutionApproach + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: The overall computational strategy used to converge a process flowsheet. + title: Flowsheet Solution Approach + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + SEQUENTIAL_MODULAR: + text: SEQUENTIAL_MODULAR + description: Units solved one at a time in sequence, iterating on recycle + tear streams + EQUATION_ORIENTED: + text: EQUATION_ORIENTED + description: All model equations assembled and solved simultaneously + SIMULTANEOUS_MODULAR: + text: SIMULTANEOUS_MODULAR + description: Hybrid approach combining modular unit models with a simultaneous + convergence layer + ProcessSimulator: + name: ProcessSimulator + definition_uri: https://w3id.org/valuesets/ProcessSimulator + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Process simulation software packages used to model chemical and biochemical + process flowsheets. + title: Process Simulator + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + ASPEN_PLUS: + text: ASPEN_PLUS + description: Aspen Plus steady-state process simulator (AspenTech) + ASPEN_HYSYS: + text: ASPEN_HYSYS + description: Aspen HYSYS process simulator (AspenTech) + ASPEN_CUSTOM_MODELER: + text: ASPEN_CUSTOM_MODELER + description: Aspen Custom Modeler for user-defined unit operation models (AspenTech) + UNISIM_DESIGN: + text: UNISIM_DESIGN + description: Honeywell UniSim Design process simulator + PRO_II: + text: PRO_II + description: AVEVA Pro/II (formerly SimSci Pro/II) process simulator + AVEVA_PROCESS_SIMULATION: + text: AVEVA_PROCESS_SIMULATION + description: AVEVA Process Simulation (formerly SimCentral) + CHEMCAD: + text: CHEMCAD + description: ChemCAD process simulator (Chemstations) + DWSIM: + text: DWSIM + description: DWSIM open-source CAPE-OPEN process simulator + COCO_SIMULATOR: + text: COCO_SIMULATOR + description: COCO/COFE free CAPE-OPEN flowsheeting environment + GPROMS: + text: GPROMS + description: gPROMS equation-oriented process modeling environment (Siemens + / PSE) + PROSIMPLUS: + text: PROSIMPLUS + description: ProSimPlus steady-state process simulator (ProSim) + PETRO_SIM: + text: PETRO_SIM + description: KBC Petro-SIM process simulator + BIOSTEAM: + text: BIOSTEAM + description: BioSTEAM open-source biorefinery simulation and techno-economic + analysis package + SUPERPRO_DESIGNER: + text: SUPERPRO_DESIGNER + description: SuperPro Designer batch and bioprocess simulator (Intelligen) + IDAES: + text: IDAES + description: IDAES open-source equation-oriented process systems engineering + platform (US DOE) + CAPE_OPEN: + text: CAPE_OPEN + description: A CAPE-OPEN compliant simulator or unit (interoperability standard, + simulator unspecified) + ChemicalIdentifierScheme: + name: ChemicalIdentifierScheme + definition_uri: https://w3id.org/valuesets/ChemicalIdentifierScheme + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Schemes used to identify chemical substances, including registry + numbers, line notations, structure-derived keys, and database accessions. + title: Chemical Identifier Scheme + from_schema: https://w3id.org/valuesets/chemistry/identifiers + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + CAS_RN: + text: CAS_RN + description: CAS Registry Number assigned by the Chemical Abstracts Service annotations: - examples: - tag: examples - value: alkaloids, terpenoids, flavonoids - INDUSTRIAL_ENZYME: - text: INDUSTRIAL_ENZYME - description: Enzymes produced for industrial applications such as detergents, - textiles, and food processing - meaning: NCIT:C16554 - title: Enzyme - BIOFERTILIZER: - text: BIOFERTILIZER - description: Biological preparations containing living microorganisms that - enhance plant nutrient availability - meaning: AGRO:00020001 - title: biofertilizer - BIOPESTICIDE: - text: BIOPESTICIDE - description: Biological agents used for pest control in agriculture + example: + tag: example + value: 64-17-5 + SMILES: + text: SMILES + description: Simplified Molecular-Input Line-Entry System structure notation annotations: - examples: - tag: examples - value: Bacillus thuringiensis, entomopathogenic fungi - broad_mappings: - - CHEBI:25944 - BIOPHARMACEUTICAL: - text: BIOPHARMACEUTICAL - description: Pharmaceutical products derived from biological sources or manufactured - using biotechnology - meaning: NCIT:C307 + example: + tag: example + value: CCO + INCHI: + text: INCHI + description: IUPAC International Chemical Identifier structure string annotations: - examples: - tag: examples - value: recombinant proteins, monoclonal antibodies, vaccines - title: Biological Agent - FOOD_INGREDIENT: - text: FOOD_INGREDIENT - description: Biologically produced ingredients for food and beverage applications - meaning: FOODON:00004274 - title: food ingredient - BioprocessOptimizationType: - name: BioprocessOptimizationType - definition_uri: https://w3id.org/valuesets/BioprocessOptimizationType + example: + tag: example + value: InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3 + INCHIKEY: + text: INCHIKEY + description: Hashed fixed-length form of an InChI + annotations: + example: + tag: example + value: LFQSCWFLJHTTHZ-UHFFFAOYSA-N + IUPAC_NAME: + text: IUPAC_NAME + description: Systematic IUPAC chemical name + MOLECULAR_FORMULA: + text: MOLECULAR_FORMULA + description: Molecular or empirical chemical formula + annotations: + example: + tag: example + value: C2H6O + PUBCHEM_CID: + text: PUBCHEM_CID + description: PubChem Compound Identifier + CHEBI_ID: + text: CHEBI_ID + description: ChEBI ontology identifier + KEGG_COMPOUND: + text: KEGG_COMPOUND + description: KEGG COMPOUND database accession + DRUGBANK_ID: + text: DRUGBANK_ID + description: DrugBank accession + EC_NUMBER: + text: EC_NUMBER + description: European Community (EINECS/EC) substance number + CurrencyCode: + name: CurrencyCode + definition_uri: https://w3id.org/valuesets/CurrencyCode instantiates: - valuesets_meta:ValueSetEnumDefinition - description: Strategies and approaches for optimizing biomanufacturing processes - to improve yield, productivity, and product quality - title: Bioprocess Optimization Type - from_schema: https://w3id.org/valuesets/bioprocessing/biomanufacturing + annotations: + standard: + tag: standard + value: ISO 4217 + description: World currencies by ISO 4217 alpha-3 code. The numeric_code, symbol, + and minor_unit (number of decimal places) annotations record the corresponding + ISO 4217 attributes. + title: Currency Code + from_schema: https://w3id.org/valuesets/business/currencies contributors: - orcid:0000-0002-6601-2165 - https://github.com/anthropics/claude-code status: DRAFT permissible_values: - MEDIA_OPTIMIZATION: - text: MEDIA_OPTIMIZATION - description: Optimization of growth media composition including carbon sources, - nitrogen sources, and micronutrients - STRAIN_ENGINEERING: - text: STRAIN_ENGINEERING - description: Genetic modification and selection of production strains for - improved performance + USD: + text: USD + description: United States dollar annotations: - approaches: - tag: approaches - value: metabolic engineering, directed evolution, adaptive laboratory - evolution - PROCESS_INTENSIFICATION: - text: PROCESS_INTENSIFICATION - description: Engineering approaches to increase volumetric productivity and - reduce process footprint - CONTINUOUS_PROCESSING: - text: CONTINUOUS_PROCESSING - description: Conversion from batch to continuous operation for improved efficiency - and consistency - FED_BATCH_OPTIMIZATION: - text: FED_BATCH_OPTIMIZATION - description: Optimization of feeding strategies in fed-batch processes to - maximize product yield - DOWNSTREAM_PURIFICATION: - text: DOWNSTREAM_PURIFICATION - description: Optimization of product recovery and purification processes + numeric_code: + tag: numeric_code + value: '840' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: United States dollar + EUR: + text: EUR + description: Euro annotations: - approaches: - tag: approaches - value: chromatography, membrane separation, extraction - broad_mappings: - - OBI:0001505 - IN_LINE_ANALYTICS: - text: IN_LINE_ANALYTICS - description: Implementation of real-time process analytical technology (PAT) - for process monitoring and control + numeric_code: + tag: numeric_code + value: '978' + symbol: + tag: symbol + value: "\u20AC" + minor_unit: + tag: minor_unit + value: 2 + title: Euro + JPY: + text: JPY + description: Japanese yen annotations: - technologies: - tag: technologies - value: Raman spectroscopy, NIR, online HPLC - close_mappings: - - PROCO:0000227 - DIGITAL_TWIN_MODELING: - text: DIGITAL_TWIN_MODELING - description: Use of computational process models for simulation, prediction, - and optimization + numeric_code: + tag: numeric_code + value: '392' + symbol: + tag: symbol + value: "\xA5" + minor_unit: + tag: minor_unit + value: 0 + title: Japanese yen + GBP: + text: GBP + description: British pound sterling annotations: - approaches: - tag: approaches - value: mechanistic models, hybrid models, machine learning + numeric_code: + tag: numeric_code + value: '826' + symbol: + tag: symbol + value: "\xA3" + minor_unit: + tag: minor_unit + value: 2 + title: Pound sterling + CNY: + text: CNY + description: Chinese yuan renminbi + annotations: + numeric_code: + tag: numeric_code + value: '156' + symbol: + tag: symbol + value: "\xA5" + minor_unit: + tag: minor_unit + value: 2 + title: Renminbi + AUD: + text: AUD + description: Australian dollar + annotations: + numeric_code: + tag: numeric_code + value: '036' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Australian dollar + CAD: + text: CAD + description: Canadian dollar + annotations: + numeric_code: + tag: numeric_code + value: '124' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Canadian dollar + CHF: + text: CHF + description: Swiss franc + annotations: + numeric_code: + tag: numeric_code + value: '756' + symbol: + tag: symbol + value: Fr + minor_unit: + tag: minor_unit + value: 2 + title: Swiss franc + HKD: + text: HKD + description: Hong Kong dollar + annotations: + numeric_code: + tag: numeric_code + value: '344' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Hong Kong dollar + SGD: + text: SGD + description: Singapore dollar + annotations: + numeric_code: + tag: numeric_code + value: '702' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Singapore dollar + SEK: + text: SEK + description: Swedish krona + annotations: + numeric_code: + tag: numeric_code + value: '752' + symbol: + tag: symbol + value: kr + minor_unit: + tag: minor_unit + value: 2 + title: Swedish krona + NOK: + text: NOK + description: Norwegian krone + annotations: + numeric_code: + tag: numeric_code + value: '578' + symbol: + tag: symbol + value: kr + minor_unit: + tag: minor_unit + value: 2 + title: Norwegian krone + DKK: + text: DKK + description: Danish krone + annotations: + numeric_code: + tag: numeric_code + value: '208' + symbol: + tag: symbol + value: kr + minor_unit: + tag: minor_unit + value: 2 + title: Danish krone + NZD: + text: NZD + description: New Zealand dollar + annotations: + numeric_code: + tag: numeric_code + value: '554' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: New Zealand dollar + KRW: + text: KRW + description: South Korean won + annotations: + numeric_code: + tag: numeric_code + value: '410' + symbol: + tag: symbol + value: "\u20A9" + minor_unit: + tag: minor_unit + value: 0 + title: South Korean won + INR: + text: INR + description: Indian rupee + annotations: + numeric_code: + tag: numeric_code + value: '356' + symbol: + tag: symbol + value: "\u20B9" + minor_unit: + tag: minor_unit + value: 2 + title: Indian rupee + BRL: + text: BRL + description: Brazilian real + annotations: + numeric_code: + tag: numeric_code + value: '986' + symbol: + tag: symbol + value: R$ + minor_unit: + tag: minor_unit + value: 2 + title: Brazilian real + ZAR: + text: ZAR + description: South African rand + annotations: + numeric_code: + tag: numeric_code + value: '710' + symbol: + tag: symbol + value: R + minor_unit: + tag: minor_unit + value: 2 + title: South African rand + RUB: + text: RUB + description: Russian ruble + annotations: + numeric_code: + tag: numeric_code + value: '643' + symbol: + tag: symbol + value: "\u20BD" + minor_unit: + tag: minor_unit + value: 2 + title: Russian ruble + MXN: + text: MXN + description: Mexican peso + annotations: + numeric_code: + tag: numeric_code + value: '484' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Mexican peso + TRY: + text: TRY + description: Turkish lira + annotations: + numeric_code: + tag: numeric_code + value: '949' + symbol: + tag: symbol + value: "\u20BA" + minor_unit: + tag: minor_unit + value: 2 + title: Turkish lira + PLN: + text: PLN + description: Polish zloty + annotations: + numeric_code: + tag: numeric_code + value: '985' + symbol: + tag: symbol + value: "z\u0142" + minor_unit: + tag: minor_unit + value: 2 + title: Polish zloty + THB: + text: THB + description: Thai baht + annotations: + numeric_code: + tag: numeric_code + value: '764' + symbol: + tag: symbol + value: "\u0E3F" + minor_unit: + tag: minor_unit + value: 2 + title: Thai baht + IDR: + text: IDR + description: Indonesian rupiah + annotations: + numeric_code: + tag: numeric_code + value: '360' + symbol: + tag: symbol + value: Rp + minor_unit: + tag: minor_unit + value: 2 + title: Indonesian rupiah + MYR: + text: MYR + description: Malaysian ringgit + annotations: + numeric_code: + tag: numeric_code + value: '458' + symbol: + tag: symbol + value: RM + minor_unit: + tag: minor_unit + value: 2 + title: Malaysian ringgit + PHP: + text: PHP + description: Philippine peso + annotations: + numeric_code: + tag: numeric_code + value: '608' + symbol: + tag: symbol + value: "\u20B1" + minor_unit: + tag: minor_unit + value: 2 + title: Philippine peso + AED: + text: AED + description: United Arab Emirates dirham + annotations: + numeric_code: + tag: numeric_code + value: '784' + minor_unit: + tag: minor_unit + value: 2 + title: UAE dirham + SAR: + text: SAR + description: Saudi riyal + annotations: + numeric_code: + tag: numeric_code + value: '682' + minor_unit: + tag: minor_unit + value: 2 + title: Saudi riyal + ILS: + text: ILS + description: Israeli new shekel + annotations: + numeric_code: + tag: numeric_code + value: '376' + symbol: + tag: symbol + value: "\u20AA" + minor_unit: + tag: minor_unit + value: 2 + title: Israeli new shekel + CZK: + text: CZK + description: Czech koruna + annotations: + numeric_code: + tag: numeric_code + value: '203' + symbol: + tag: symbol + value: "K\u010D" + minor_unit: + tag: minor_unit + value: 2 + title: Czech koruna + HUF: + text: HUF + description: Hungarian forint + annotations: + numeric_code: + tag: numeric_code + value: '348' + symbol: + tag: symbol + value: Ft + minor_unit: + tag: minor_unit + value: 2 + title: Hungarian forint + RON: + text: RON + description: Romanian leu + annotations: + numeric_code: + tag: numeric_code + value: '946' + symbol: + tag: symbol + value: lei + minor_unit: + tag: minor_unit + value: 2 + title: Romanian leu + UAH: + text: UAH + description: Ukrainian hryvnia + annotations: + numeric_code: + tag: numeric_code + value: '980' + symbol: + tag: symbol + value: "\u20B4" + minor_unit: + tag: minor_unit + value: 2 + title: Ukrainian hryvnia + CLP: + text: CLP + description: Chilean peso + annotations: + numeric_code: + tag: numeric_code + value: '152' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 0 + title: Chilean peso + COP: + text: COP + description: Colombian peso + annotations: + numeric_code: + tag: numeric_code + value: '170' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Colombian peso + ARS: + text: ARS + description: Argentine peso + annotations: + numeric_code: + tag: numeric_code + value: '032' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: Argentine peso + EGP: + text: EGP + description: Egyptian pound + annotations: + numeric_code: + tag: numeric_code + value: '818' + symbol: + tag: symbol + value: "\xA3" + minor_unit: + tag: minor_unit + value: 2 + title: Egyptian pound + NGN: + text: NGN + description: Nigerian naira + annotations: + numeric_code: + tag: numeric_code + value: '566' + symbol: + tag: symbol + value: "\u20A6" + minor_unit: + tag: minor_unit + value: 2 + title: Nigerian naira + KES: + text: KES + description: Kenyan shilling + annotations: + numeric_code: + tag: numeric_code + value: '404' + symbol: + tag: symbol + value: Sh + minor_unit: + tag: minor_unit + value: 2 + title: Kenyan shilling + PKR: + text: PKR + description: Pakistani rupee + annotations: + numeric_code: + tag: numeric_code + value: '586' + symbol: + tag: symbol + value: "\u20A8" + minor_unit: + tag: minor_unit + value: 2 + title: Pakistani rupee + BDT: + text: BDT + description: Bangladeshi taka + annotations: + numeric_code: + tag: numeric_code + value: '050' + symbol: + tag: symbol + value: "\u09F3" + minor_unit: + tag: minor_unit + value: 2 + title: Bangladeshi taka + VND: + text: VND + description: Vietnamese dong + annotations: + numeric_code: + tag: numeric_code + value: '704' + symbol: + tag: symbol + value: "\u20AB" + minor_unit: + tag: minor_unit + value: 0 + title: Vietnamese dong + TWD: + text: TWD + description: New Taiwan dollar + annotations: + numeric_code: + tag: numeric_code + value: '901' + symbol: + tag: symbol + value: $ + minor_unit: + tag: minor_unit + value: 2 + title: New Taiwan dollar + KWD: + text: KWD + description: Kuwaiti dinar + annotations: + numeric_code: + tag: numeric_code + value: '414' + minor_unit: + tag: minor_unit + value: 3 + title: Kuwaiti dinar + BHD: + text: BHD + description: Bahraini dinar + annotations: + numeric_code: + tag: numeric_code + value: 048 + minor_unit: + tag: minor_unit + value: 3 + title: Bahraini dinar + OMR: + text: OMR + description: Omani rial + annotations: + numeric_code: + tag: numeric_code + value: '512' + minor_unit: + tag: minor_unit + value: 3 + title: Omani rial + QAR: + text: QAR + description: Qatari riyal + annotations: + numeric_code: + tag: numeric_code + value: '634' + minor_unit: + tag: minor_unit + value: 2 + title: Qatari riyal + ISK: + text: ISK + description: Icelandic krona + annotations: + numeric_code: + tag: numeric_code + value: '352' + symbol: + tag: symbol + value: kr + minor_unit: + tag: minor_unit + value: 0 + title: Icelandic krona LengthUnitEnum: name: LengthUnitEnum definition_uri: https://w3id.org/valuesets/LengthUnitEnum @@ -55597,6 +63661,214 @@ enums: standard: tag: standard value: binary + MassFlowRateUnitEnum: + name: MassFlowRateUnitEnum + definition_uri: https://w3id.org/valuesets/MassFlowRateUnitEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Units of mass flow rate (mass per unit time) + title: Mass Flow Rate Unit + from_schema: https://w3id.org/valuesets/units/measurements + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + KILOGRAM_PER_SECOND: + text: KILOGRAM_PER_SECOND + description: Kilograms per second (SI) + annotations: + symbol: + tag: symbol + value: kg/s + system: + tag: system + value: SI + KILOGRAM_PER_HOUR: + text: KILOGRAM_PER_HOUR + description: Kilograms per hour + annotations: + symbol: + tag: symbol + value: kg/h + conversion_to_kg_per_s: + tag: conversion_to_kg_per_s + value: '0.000277778' + GRAM_PER_SECOND: + text: GRAM_PER_SECOND + description: Grams per second + annotations: + symbol: + tag: symbol + value: g/s + conversion_to_kg_per_s: + tag: conversion_to_kg_per_s + value: '0.001' + TONNE_PER_HOUR: + text: TONNE_PER_HOUR + description: Metric tonnes per hour + annotations: + symbol: + tag: symbol + value: t/h + conversion_to_kg_per_s: + tag: conversion_to_kg_per_s + value: '0.277778' + TONNE_PER_DAY: + text: TONNE_PER_DAY + description: Metric tonnes per day + annotations: + symbol: + tag: symbol + value: t/d + conversion_to_kg_per_s: + tag: conversion_to_kg_per_s + value: '0.0115741' + POUND_PER_HOUR: + text: POUND_PER_HOUR + description: Pounds (mass) per hour + annotations: + symbol: + tag: symbol + value: lb/h + conversion_to_kg_per_s: + tag: conversion_to_kg_per_s + value: '0.000125998' + system: + tag: system + value: imperial + MolarFlowRateUnitEnum: + name: MolarFlowRateUnitEnum + definition_uri: https://w3id.org/valuesets/MolarFlowRateUnitEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Units of molar flow rate (amount of substance per unit time) + title: Molar Flow Rate Unit + from_schema: https://w3id.org/valuesets/units/measurements + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + MOLE_PER_SECOND: + text: MOLE_PER_SECOND + description: Moles per second (SI) + annotations: + symbol: + tag: symbol + value: mol/s + system: + tag: system + value: SI + MOLE_PER_HOUR: + text: MOLE_PER_HOUR + description: Moles per hour + annotations: + symbol: + tag: symbol + value: mol/h + conversion_to_mol_per_s: + tag: conversion_to_mol_per_s + value: '0.000277778' + KILOMOLE_PER_HOUR: + text: KILOMOLE_PER_HOUR + description: Kilomoles per hour + annotations: + symbol: + tag: symbol + value: kmol/h + conversion_to_mol_per_s: + tag: conversion_to_mol_per_s + value: '0.277778' + KILOMOLE_PER_SECOND: + text: KILOMOLE_PER_SECOND + description: Kilomoles per second + annotations: + symbol: + tag: symbol + value: kmol/s + conversion_to_mol_per_s: + tag: conversion_to_mol_per_s + value: '1000' + VolumetricFlowRateUnitEnum: + name: VolumetricFlowRateUnitEnum + definition_uri: https://w3id.org/valuesets/VolumetricFlowRateUnitEnum + instantiates: + - valuesets_meta:ValueSetEnumDefinition + description: Units of volumetric flow rate (volume per unit time) + title: Volumetric Flow Rate Unit + from_schema: https://w3id.org/valuesets/units/measurements + contributors: + - orcid:0000-0002-6601-2165 + - https://github.com/anthropics/claude-code + status: DRAFT + permissible_values: + CUBIC_METER_PER_SECOND: + text: CUBIC_METER_PER_SECOND + description: Cubic meters per second (SI) + annotations: + symbol: + tag: symbol + value: m3/s + system: + tag: system + value: SI + CUBIC_METER_PER_HOUR: + text: CUBIC_METER_PER_HOUR + description: Cubic meters per hour + annotations: + symbol: + tag: symbol + value: m3/h + conversion_to_m3_per_s: + tag: conversion_to_m3_per_s + value: '0.000277778' + LITER_PER_SECOND: + text: LITER_PER_SECOND + description: Liters per second + annotations: + symbol: + tag: symbol + value: L/s + conversion_to_m3_per_s: + tag: conversion_to_m3_per_s + value: '0.001' + LITER_PER_MINUTE: + text: LITER_PER_MINUTE + description: Liters per minute + annotations: + symbol: + tag: symbol + value: L/min + conversion_to_m3_per_s: + tag: conversion_to_m3_per_s + value: '1.66667e-5' + GALLON_PER_MINUTE: + text: GALLON_PER_MINUTE + description: US gallons per minute + annotations: + symbol: + tag: symbol + value: gpm + conversion_to_m3_per_s: + tag: conversion_to_m3_per_s + value: '6.30902e-5' + system: + tag: system + value: US + CUBIC_FOOT_PER_MINUTE: + text: CUBIC_FOOT_PER_MINUTE + description: Cubic feet per minute + annotations: + symbol: + tag: symbol + value: cfm + conversion_to_m3_per_s: + tag: conversion_to_m3_per_s + value: '0.000471947' + system: + tag: system + value: imperial QuantityKindEnum: name: QuantityKindEnum definition_uri: https://w3id.org/valuesets/QuantityKindEnum @@ -57728,6 +66000,148 @@ enums: text: ARCHIVED description: No longer actively maintained title: Archived + SystemLifeCycleProcess15288: + name: SystemLifeCycleProcess15288 + definition_uri: https://w3id.org/valuesets/SystemLifeCycleProcess15288 + conforms_to: ISO/IEC/IEEE 15288:2015 + instantiates: + - valuesets_meta:ReferenceEnumDefinition + description: The 30 system life cycle processes grouped by ISO/IEC/IEEE 15288:2015. + title: ISO/IEC/IEEE 15288 System Life Cycle Process + from_schema: https://w3id.org/valuesets/computing/systems_engineering + source: https://www.iso.org/standard/63711.html + status: STANDARD + permissible_values: + ACQUISITION: + text: ACQUISITION + title: Acquisition Process + SUPPLY: + text: SUPPLY + title: Supply Process + LIFE_CYCLE_MODEL_MANAGEMENT: + text: LIFE_CYCLE_MODEL_MANAGEMENT + title: Life Cycle Model Management Process + INFRASTRUCTURE_MANAGEMENT: + text: INFRASTRUCTURE_MANAGEMENT + title: Infrastructure Management Process + PORTFOLIO_MANAGEMENT: + text: PORTFOLIO_MANAGEMENT + title: Portfolio Management Process + HUMAN_RESOURCE_MANAGEMENT: + text: HUMAN_RESOURCE_MANAGEMENT + title: Human Resource Management Process + QUALITY_MANAGEMENT: + text: QUALITY_MANAGEMENT + title: Quality Management Process + PROJECT_PLANNING: + text: PROJECT_PLANNING + title: Project Planning Process + PROJECT_ASSESSMENT_AND_CONTROL: + text: PROJECT_ASSESSMENT_AND_CONTROL + title: Project Assessment and Control Process + DECISION_MANAGEMENT: + text: DECISION_MANAGEMENT + title: Decision Management Process + RISK_MANAGEMENT: + text: RISK_MANAGEMENT + title: Risk Management Process + CONFIGURATION_MANAGEMENT: + text: CONFIGURATION_MANAGEMENT + title: Configuration Management Process + INFORMATION_MANAGEMENT: + text: INFORMATION_MANAGEMENT + title: Information Management Process + MEASUREMENT: + text: MEASUREMENT + title: Measurement Process + QUALITY_ASSURANCE: + text: QUALITY_ASSURANCE + title: Quality Assurance Process + KNOWLEDGE_MANAGEMENT: + text: KNOWLEDGE_MANAGEMENT + title: Knowledge Management Process + BUSINESS_OR_MISSION_ANALYSIS: + text: BUSINESS_OR_MISSION_ANALYSIS + title: Business or Mission Analysis Process + STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION: + text: STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION + title: Stakeholder Needs and Requirements Definition Process + SYSTEM_REQUIREMENTS_DEFINITION: + text: SYSTEM_REQUIREMENTS_DEFINITION + title: System Requirements Definition Process + ARCHITECTURE_DEFINITION: + text: ARCHITECTURE_DEFINITION + title: Architecture Definition Process + DESIGN_DEFINITION: + text: DESIGN_DEFINITION + title: Design Definition Process + SYSTEM_ANALYSIS: + text: SYSTEM_ANALYSIS + title: System Analysis Process + IMPLEMENTATION: + text: IMPLEMENTATION + title: Implementation Process + INTEGRATION: + text: INTEGRATION + title: Integration Process + VERIFICATION: + text: VERIFICATION + title: Verification Process + TRANSITION: + text: TRANSITION + title: Transition Process + VALIDATION: + text: VALIDATION + title: Validation Process + OPERATION: + text: OPERATION + title: Operation Process + MAINTENANCE: + text: MAINTENANCE + title: Maintenance Process + DISPOSAL: + text: DISPOSAL + title: Disposal Process + VerificationValidationProcessIEEE1012: + name: VerificationValidationProcessIEEE1012 + definition_uri: https://w3id.org/valuesets/VerificationValidationProcessIEEE1012 + conforms_to: IEEE 1012-2016 + instantiates: + - valuesets_meta:ReferenceEnumDefinition + description: Verification and validation processes applied across the system, + software, and hardware life cycle. + title: IEEE 1012 Verification and Validation Process + from_schema: https://w3id.org/valuesets/computing/verification_validation_ieee_1012 + source: https://standards.ieee.org/standard/1012-2016.html + status: STANDARD + permissible_values: + CONCEPT_AND_REQUIREMENTS_V_AND_V: + text: CONCEPT_AND_REQUIREMENTS_V_AND_V + title: Concept and Requirements Verification and Validation + ARCHITECTURE_AND_DESIGN_V_AND_V: + text: ARCHITECTURE_AND_DESIGN_V_AND_V + title: Architecture and Design Verification and Validation + IMPLEMENTATION_V_AND_V: + text: IMPLEMENTATION_V_AND_V + title: Implementation Verification and Validation + INTEGRATION_V_AND_V: + text: INTEGRATION_V_AND_V + title: Integration Verification and Validation + QUALIFICATION_TESTING: + text: QUALIFICATION_TESTING + title: Qualification Testing + INSTALLATION_AND_CHECKOUT: + text: INSTALLATION_AND_CHECKOUT + title: Installation and Checkout Verification and Validation + OPERATION_V_AND_V: + text: OPERATION_V_AND_V + title: Operation Verification and Validation + MAINTENANCE_V_AND_V: + text: MAINTENANCE_V_AND_V + title: Maintenance Verification and Validation + DISPOSAL_V_AND_V: + text: DISPOSAL_V_AND_V + title: Disposal Verification and Validation OWLProfileEnum: name: OWLProfileEnum definition_uri: https://w3id.org/valuesets/OWLProfileEnum @@ -73341,6 +81755,98 @@ slots: from_schema: https://w3id.org/valuesets/bio/structural_biology slot_uri: valuesets:protein_modification range: ProteinModificationType + biological_imaging_method: + name: biological_imaging_method + definition_uri: https://w3id.org/valuesets/biological_imaging_method + description: The method used to record or portray a biological image + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:biological_imaging_method + range: BiologicalImagingMethod + biological_microscopy_method: + name: biological_microscopy_method + definition_uri: https://w3id.org/valuesets/biological_microscopy_method + description: The microscopy method used to acquire an image + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:biological_microscopy_method + range: MicroscopyMethod + light_microscopy_method: + name: light_microscopy_method + definition_uri: https://w3id.org/valuesets/light_microscopy_method + description: The light microscopy method used to acquire an image + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:light_microscopy_method + range: LightMicroscopyMethod + fluorescence_microscopy_method: + name: fluorescence_microscopy_method + definition_uri: https://w3id.org/valuesets/fluorescence_microscopy_method + description: The fluorescence microscopy method used to acquire an image + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:fluorescence_microscopy_method + range: FluorescenceMicroscopyMethod + imaging_sample_preparation_method: + name: imaging_sample_preparation_method + definition_uri: https://w3id.org/valuesets/imaging_sample_preparation_method + description: How the specimen was prepared before imaging + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:imaging_sample_preparation_method + range: ImagingSamplePreparationMethod + tissue_fixation_method: + name: tissue_fixation_method + definition_uri: https://w3id.org/valuesets/tissue_fixation_method + description: The fixation method applied to the specimen before imaging + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:tissue_fixation_method + range: TissueFixationMethod + imaging_visualization_method: + name: imaging_visualization_method + definition_uri: https://w3id.org/valuesets/imaging_visualization_method + description: The stain, probe or label-based method used to visualize structures + in the specimen + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:imaging_visualization_method + range: ImagingVisualizationMethod + imaging_illumination_method: + name: imaging_illumination_method + definition_uri: https://w3id.org/valuesets/imaging_illumination_method + description: How the specimen was illuminated during image acquisition + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:imaging_illumination_method + range: ImagingIlluminationMethod + imaging_detection_method: + name: imaging_detection_method + definition_uri: https://w3id.org/valuesets/imaging_detection_method + description: How the signal from the specimen was detected during image acquisition + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:imaging_detection_method + range: ImagingDetectionMethod + imaged_parameter: + name: imaged_parameter + definition_uri: https://w3id.org/valuesets/imaged_parameter + description: The physical parameter of the specimen that the image records + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:imaged_parameter + range: ImagedParameter + contrast_enhancing_method: + name: contrast_enhancing_method + definition_uri: https://w3id.org/valuesets/contrast_enhancing_method + description: The optical or computational method used to enhance image contrast + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:contrast_enhancing_method + range: ContrastEnhancingMethod + resolution_enhancing_method: + name: resolution_enhancing_method + definition_uri: https://w3id.org/valuesets/resolution_enhancing_method + description: The super-resolution method used to exceed the diffraction limit + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:resolution_enhancing_method + range: ResolutionEnhancingMethod + source_of_image_contrast: + name: source_of_image_contrast + definition_uri: https://w3id.org/valuesets/source_of_image_contrast + description: The physical basis of contrast in the image + from_schema: https://w3id.org/valuesets/bio/biological_imaging_methods + slot_uri: valuesets:source_of_image_contrast + range: SourceOfImageContrast secondary_structure: name: secondary_structure definition_uri: https://w3id.org/valuesets/secondary_structure @@ -74339,6 +82845,79 @@ slots: from_schema: https://w3id.org/valuesets/statistics/prediction_outcomes slot_uri: valuesets:outcome_type range: OutcomeTypeEnum + statistical_test: + name: statistical_test + definition_uri: https://w3id.org/valuesets/statistical_test + description: The statistical hypothesis test applied + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:statistical_test + range: StatisticalTestEnum + t_test_type: + name: t_test_type + definition_uri: https://w3id.org/valuesets/t_test_type + description: The variant of Student's t-test applied + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:t_test_type + range: TTestTypeEnum + normality_test: + name: normality_test + definition_uri: https://w3id.org/valuesets/normality_test + description: The test used to assess whether data follow a normal distribution + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:normality_test + range: NormalityTestEnum + homoscedasticity_test: + name: homoscedasticity_test + definition_uri: https://w3id.org/valuesets/homoscedasticity_test + description: The test used to assess equality of variances across groups + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:homoscedasticity_test + range: HomoscedasticityTestEnum + post_hoc_test: + name: post_hoc_test + definition_uri: https://w3id.org/valuesets/post_hoc_test + description: The post-hoc multiple comparison procedure applied after an omnibus + test + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:post_hoc_test + range: PostHocTestEnum + multiple_testing_correction: + name: multiple_testing_correction + definition_uri: https://w3id.org/valuesets/multiple_testing_correction + description: The method used to correct p-values for multiple testing + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:multiple_testing_correction + range: MultipleTestingCorrectionEnum + correlation_coefficient: + name: correlation_coefficient + definition_uri: https://w3id.org/valuesets/correlation_coefficient + description: The correlation coefficient used to quantify association between + two variables + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:correlation_coefficient + range: CorrelationCoefficientEnum + test_tailedness: + name: test_tailedness + definition_uri: https://w3id.org/valuesets/test_tailedness + description: Whether the test allocates the significance level to one or both + tails + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:test_tailedness + range: TestTailednessEnum + distributional_assumption: + name: distributional_assumption + definition_uri: https://w3id.org/valuesets/distributional_assumption + description: Whether the test assumes a parametric form for the underlying distribution + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:distributional_assumption + range: DistributionalAssumptionEnum + comparison_objective: + name: comparison_objective + definition_uri: https://w3id.org/valuesets/comparison_objective + description: The objective of a between-group comparison in a controlled trial + from_schema: https://w3id.org/valuesets/statistics/statistical_tests + slot_uri: valuesets:comparison_objective + range: ComparisonObjectiveEnum person_status: name: person_status definition_uri: https://w3id.org/valuesets/person_status @@ -76055,6 +84634,137 @@ slots: from_schema: https://w3id.org/valuesets/medical/neuroimaging slot_uri: valuesets:fmri_paradigm_type range: FMRIParadigmTypeEnum + dicom_modality: + name: dicom_modality + definition_uri: https://w3id.org/valuesets/dicom_modality + description: The DICOM acquisition modality code of an imaging instance or series + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_modality + range: DICOMModalityEnum + dicom_value_representation: + name: dicom_value_representation + definition_uri: https://w3id.org/valuesets/dicom_value_representation + description: The DICOM Value Representation (VR) of an attribute + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_value_representation + range: DICOMValueRepresentationEnum + dicom_attribute_type: + name: dicom_attribute_type + definition_uri: https://w3id.org/valuesets/dicom_attribute_type + description: The DICOM attribute requirement type of an attribute within an IOD + module + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_attribute_type + range: DICOMAttributeTypeEnum + dicom_transfer_syntax: + name: dicom_transfer_syntax + definition_uri: https://w3id.org/valuesets/dicom_transfer_syntax + description: The DICOM transfer syntax used to encode a data set or its pixel + data + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_transfer_syntax + range: DICOMTransferSyntaxEnum + dicom_network_service: + name: dicom_network_service + definition_uri: https://w3id.org/valuesets/dicom_network_service + description: The DICOM network service used to query, retrieve or store instances + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_network_service + range: DICOMNetworkServiceEnum + dicom_software_tool: + name: dicom_software_tool + definition_uri: https://w3id.org/valuesets/dicom_software_tool + description: A software toolkit, validator, server or library used to process + DICOM data + from_schema: https://w3id.org/valuesets/medical/dicom + slot_uri: valuesets:dicom_software_tool + range: DICOMSoftwareToolEnum + dicom_deidentification_method: + name: dicom_deidentification_method + definition_uri: https://w3id.org/valuesets/dicom_deidentification_method + description: A DICOM de-identification profile or option applied to an image object + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:dicom_deidentification_method + range: DICOMDeidentificationMethodEnum + dicom_deidentification_action: + name: dicom_deidentification_action + definition_uri: https://w3id.org/valuesets/dicom_deidentification_action + description: The de-identification action applied to a DICOM attribute + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:dicom_deidentification_action + range: DICOMDeidentificationActionEnum + image_deidentification_target: + name: image_deidentification_target + definition_uri: https://w3id.org/valuesets/image_deidentification_target + description: The part of an imaging object from which identifying information + is removed + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:image_deidentification_target + range: ImageDeidentificationTargetEnum + deidentification_regulatory_framework: + name: deidentification_regulatory_framework + definition_uri: https://w3id.org/valuesets/deidentification_regulatory_framework + description: The regulation or standard under which data is de-identified + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:deidentification_regulatory_framework + range: DeidentificationRegulatoryFrameworkEnum + defacing_method: + name: defacing_method + definition_uri: https://w3id.org/valuesets/defacing_method + description: The method used to remove facial features from image pixel data + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:defacing_method + range: DefacingMethodEnum + defacing_tool: + name: defacing_tool + definition_uri: https://w3id.org/valuesets/defacing_tool + description: The software tool used to remove facial features from image pixel + data + from_schema: https://w3id.org/valuesets/medical/imaging_deidentification + slot_uri: valuesets:defacing_tool + range: DefacingToolEnum + imaging_data_lifecycle_stage: + name: imaging_data_lifecycle_stage + definition_uri: https://w3id.org/valuesets/imaging_data_lifecycle_stage + description: The stage of the medical imaging data management lifecycle + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:imaging_data_lifecycle_stage + range: ImagingDataLifecycleStageEnum + imaging_data_source_type: + name: imaging_data_source_type + definition_uri: https://w3id.org/valuesets/imaging_data_source_type + description: The type of system from which imaging data is extracted + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:imaging_data_source_type + range: ImagingDataSourceTypeEnum + dicom_validation_issue_type: + name: dicom_validation_issue_type + definition_uri: https://w3id.org/valuesets/dicom_validation_issue_type + description: The category of problem found when validating a DICOM file or collection + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:dicom_validation_issue_type + range: DICOMValidationIssueTypeEnum + image_quality_metric: + name: image_quality_metric + definition_uri: https://w3id.org/valuesets/image_quality_metric + description: A metric computed to assess image pixel data quality + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:image_quality_metric + range: ImageQualityMetricEnum + imaging_interoperability_standard: + name: imaging_interoperability_standard + definition_uri: https://w3id.org/valuesets/imaging_interoperability_standard + description: A standard used to represent or link imaging data with clinical data + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:imaging_interoperability_standard + range: ImagingInteroperabilityStandardEnum + bridge2ai_data_generation_project: + name: bridge2ai_data_generation_project + definition_uri: https://w3id.org/valuesets/bridge2ai_data_generation_project + description: The Bridge2AI data generation project that produced a dataset + from_schema: https://w3id.org/valuesets/medical/imaging_data_management + slot_uri: valuesets:bridge2ai_data_generation_project + range: Bridge2AIDataGenerationProjectEnum family_relationship: name: family_relationship definition_uri: https://w3id.org/valuesets/family_relationship @@ -76199,6 +84909,115 @@ slots: from_schema: https://w3id.org/valuesets/clinical/phenopackets slot_uri: valuesets:drug_response range: DrugResponseEnum + g2p_confidence: + name: g2p_confidence + definition_uri: https://w3id.org/valuesets/g2p_confidence + description: The G2P confidence category assigned to a gene-disease association + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_confidence + range: G2PConfidenceCategory + g2p_allelic_requirement: + name: g2p_allelic_requirement + definition_uri: https://w3id.org/valuesets/g2p_allelic_requirement + description: The genotype required at the locus for the disease to manifest + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_allelic_requirement + range: G2PAllelicRequirement + g2p_cross_cutting_modifier: + name: g2p_cross_cutting_modifier + definition_uri: https://w3id.org/valuesets/g2p_cross_cutting_modifier + description: An additional qualifier on the allelic requirement of a gene-disease + association + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_cross_cutting_modifier + range: G2PCrossCuttingModifier + g2p_molecular_mechanism: + name: g2p_molecular_mechanism + definition_uri: https://w3id.org/valuesets/g2p_molecular_mechanism + description: The mechanism of disease derived from the available evidence + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_molecular_mechanism + range: G2PMolecularMechanism + g2p_molecular_mechanism_synopsis: + name: g2p_molecular_mechanism_synopsis + definition_uri: https://w3id.org/valuesets/g2p_molecular_mechanism_synopsis + description: A more detailed description of the molecular mechanism of disease + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_molecular_mechanism_synopsis + range: G2PMolecularMechanismSynopsis + g2p_molecular_mechanism_support: + name: g2p_molecular_mechanism_support + definition_uri: https://w3id.org/valuesets/g2p_molecular_mechanism_support + description: Whether the molecular mechanism is directly evidenced or inferred + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_molecular_mechanism_support + range: G2PMolecularMechanismSupport + g2p_variant_consequence: + name: g2p_variant_consequence + definition_uri: https://w3id.org/valuesets/g2p_variant_consequence + description: The consequence of a reported variant at the protein or RNA level, + per allele + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_variant_consequence + range: G2PVariantConsequence + g2p_variant_type: + name: g2p_variant_type + definition_uri: https://w3id.org/valuesets/g2p_variant_type + description: The type of variant associated with a curated gene-disease pair + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_variant_type + range: G2PVariantType + g2p_variant_type_group: + name: g2p_variant_type_group + definition_uri: https://w3id.org/valuesets/g2p_variant_type_group + description: The primary type grouping a variant type belongs to + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_variant_type_group + range: G2PVariantTypeGroup + g2p_mechanism_evidence_category: + name: g2p_mechanism_evidence_category + definition_uri: https://w3id.org/valuesets/g2p_mechanism_evidence_category + description: The broad category of experimental evidence supporting a molecular + mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_mechanism_evidence_category + range: G2PMechanismEvidenceCategory + g2p_function_evidence: + name: g2p_function_evidence + definition_uri: https://w3id.org/valuesets/g2p_function_evidence + description: Evidence in the function category supporting a molecular mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_function_evidence + range: G2PFunctionEvidence + g2p_functional_alteration_evidence: + name: g2p_functional_alteration_evidence + definition_uri: https://w3id.org/valuesets/g2p_functional_alteration_evidence + description: Evidence in the functional alteration category supporting a molecular + mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_functional_alteration_evidence + range: G2PFunctionalAlterationEvidence + g2p_models_evidence: + name: g2p_models_evidence + definition_uri: https://w3id.org/valuesets/g2p_models_evidence + description: Evidence in the models category supporting a molecular mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_models_evidence + range: G2PModelsEvidence + g2p_rescue_evidence: + name: g2p_rescue_evidence + definition_uri: https://w3id.org/valuesets/g2p_rescue_evidence + description: Evidence in the rescue category supporting a molecular mechanism + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_rescue_evidence + range: G2PRescueEvidence + g2p_panel: + name: g2p_panel + definition_uri: https://w3id.org/valuesets/g2p_panel + description: The G2P disease-area panel a gene-disease association appears on + from_schema: https://w3id.org/valuesets/clinical/gene2phenotype + slot_uri: valuesets:g2p_panel + range: G2PPanel process_scale: name: process_scale definition_uri: https://w3id.org/valuesets/process_scale @@ -76283,6 +85102,126 @@ slots: from_schema: https://w3id.org/valuesets/bioprocessing/biomanufacturing slot_uri: valuesets:bioprocess_optimization range: BioprocessOptimizationType + unit_operation_type: + name: unit_operation_type + definition_uri: https://w3id.org/valuesets/unit_operation_type + description: The type of unit operation performed at a process step + from_schema: https://w3id.org/valuesets/process_engineering/unit_operations + slot_uri: valuesets:unit_operation_type + range: UnitOperationType + process_equipment_type: + name: process_equipment_type + definition_uri: https://w3id.org/valuesets/process_equipment_type + description: The type of physical equipment implementing a process step + from_schema: https://w3id.org/valuesets/process_engineering/unit_operations + slot_uri: valuesets:process_equipment_type + range: ProcessEquipmentType + process_stream_role: + name: process_stream_role + definition_uri: https://w3id.org/valuesets/process_stream_role + description: The role a process stream plays in a flowsheet + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + slot_uri: valuesets:process_stream_role + range: ProcessStreamRole + process_stream_phase: + name: process_stream_phase + definition_uri: https://w3id.org/valuesets/process_stream_phase + description: The physical phase state of a process stream + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + slot_uri: valuesets:process_stream_phase + range: ProcessStreamPhase + utility_type: + name: utility_type + definition_uri: https://w3id.org/valuesets/utility_type + description: The type of plant utility supplied to or produced by a process + from_schema: https://w3id.org/valuesets/process_engineering/process_streams + slot_uri: valuesets:utility_type + range: UtilityType + process_industry_category: + name: process_industry_category + definition_uri: https://w3id.org/valuesets/process_industry_category + description: The process manufacturing sector a process belongs to + from_schema: https://w3id.org/valuesets/process_engineering/process_industries + slot_uri: valuesets:process_industry_category + range: ProcessIndustryCategory + process_operation_mode: + name: process_operation_mode + definition_uri: https://w3id.org/valuesets/process_operation_mode + description: The temporal operating mode of a process + from_schema: https://w3id.org/valuesets/process_engineering/process_industries + slot_uri: valuesets:process_operation_mode + range: ProcessOperationMode + equation_of_state_model: + name: equation_of_state_model + definition_uri: https://w3id.org/valuesets/equation_of_state_model + description: The equation of state used for fugacity / PVT property estimation + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + slot_uri: valuesets:equation_of_state_model + range: EquationOfStateModel + activity_coefficient_model: + name: activity_coefficient_model + definition_uri: https://w3id.org/valuesets/activity_coefficient_model + description: The activity-coefficient (excess Gibbs energy) model used for the + liquid phase + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + slot_uri: valuesets:activity_coefficient_model + range: ActivityCoefficientModel + thermodynamic_property_package: + name: thermodynamic_property_package + definition_uri: https://w3id.org/valuesets/thermodynamic_property_package + description: The named thermodynamic property package used for a simulation + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + slot_uri: valuesets:thermodynamic_property_package + range: ThermodynamicPropertyPackage + mixing_rule_model: + name: mixing_rule_model + definition_uri: https://w3id.org/valuesets/mixing_rule_model + description: The mixing rule applied to an equation of state + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + slot_uri: valuesets:mixing_rule_model + range: MixingRuleModel + poynting_correction_method: + name: poynting_correction_method + definition_uri: https://w3id.org/valuesets/poynting_correction_method + description: The method used for the Poynting correction factor + from_schema: https://w3id.org/valuesets/process_engineering/thermodynamics + slot_uri: valuesets:poynting_correction_method + range: PoyntingCorrectionMethod + design_simulation_method: + name: design_simulation_method + definition_uri: https://w3id.org/valuesets/design_simulation_method + description: The method used to design or simulate a unit operation + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + slot_uri: valuesets:design_simulation_method + range: DesignSimulationMethod + flowsheet_solution_approach: + name: flowsheet_solution_approach + definition_uri: https://w3id.org/valuesets/flowsheet_solution_approach + description: The overall approach used to converge a flowsheet + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + slot_uri: valuesets:flowsheet_solution_approach + range: FlowsheetSolutionApproach + process_simulator: + name: process_simulator + definition_uri: https://w3id.org/valuesets/process_simulator + description: The process simulation software used to model a flowsheet + from_schema: https://w3id.org/valuesets/process_engineering/process_modeling + slot_uri: valuesets:process_simulator + range: ProcessSimulator + chemical_identifier_scheme: + name: chemical_identifier_scheme + definition_uri: https://w3id.org/valuesets/chemical_identifier_scheme + description: The scheme/namespace of a chemical identifier + from_schema: https://w3id.org/valuesets/chemistry/identifiers + slot_uri: valuesets:chemical_identifier_scheme + range: ChemicalIdentifierScheme + currency_code: + name: currency_code + definition_uri: https://w3id.org/valuesets/currency_code + description: The ISO 4217 currency of a monetary amount + from_schema: https://w3id.org/valuesets/business/currencies + slot_uri: valuesets:currency_code + range: CurrencyCode length_unit: name: length_unit definition_uri: https://w3id.org/valuesets/length_unit @@ -76353,6 +85292,27 @@ slots: from_schema: https://w3id.org/valuesets/units/measurements slot_uri: valuesets:data_size_unit range: DataSizeUnitEnum + mass_flow_rate_unit: + name: mass_flow_rate_unit + definition_uri: https://w3id.org/valuesets/mass_flow_rate_unit + description: Units of mass flow rate + from_schema: https://w3id.org/valuesets/units/measurements + slot_uri: valuesets:mass_flow_rate_unit + range: MassFlowRateUnitEnum + molar_flow_rate_unit: + name: molar_flow_rate_unit + definition_uri: https://w3id.org/valuesets/molar_flow_rate_unit + description: Units of molar flow rate + from_schema: https://w3id.org/valuesets/units/measurements + slot_uri: valuesets:molar_flow_rate_unit + range: MolarFlowRateUnitEnum + volumetric_flow_rate_unit: + name: volumetric_flow_rate_unit + definition_uri: https://w3id.org/valuesets/volumetric_flow_rate_unit + description: Units of volumetric flow rate + from_schema: https://w3id.org/valuesets/units/measurements + slot_uri: valuesets:volumetric_flow_rate_unit + range: VolumetricFlowRateUnitEnum quantity_kind: name: quantity_kind definition_uri: https://w3id.org/valuesets/quantity_kind @@ -77155,7 +86115,7 @@ classes: class_uri: valuesets:Fake metamodel_version: 1.7.0 source_file: valuesets.yaml -source_file_date: '2026-06-23T14:42:19' -source_file_size: 4304 -generation_date: '2026-06-23T14:43:49' +source_file_date: '2026-09-13T06:18:55' +source_file_size: 4796 +generation_date: '2026-09-13T06:19:56' diff --git a/project/jsonschema/valuesets.schema.json b/project/jsonschema/valuesets.schema.json index 08ddb4d6..62eaacaf 100644 --- a/project/jsonschema/valuesets.schema.json +++ b/project/jsonschema/valuesets.schema.json @@ -57,6 +57,26 @@ "title": "AccessRights", "type": "string" }, + "ActivityCoefficientModel": { + "description": "Excess Gibbs energy / activity-coefficient models for non-ideal liquid phases (the SFF gamma method).", + "enum": [ + "IDEAL", + "MARGULES", + "VAN_LAAR", + "REGULAR_SOLUTION", + "WILSON", + "NRTL", + "ELECTROLYTE_NRTL", + "UNIQUAC", + "UNIFAC", + "UNIFAC_DORTMUND", + "FLORY_HUGGINS", + "PITZER", + "COSMO_SAC" + ], + "title": "ActivityCoefficientModel", + "type": "string" + }, "AdditiveManufacturingEnum": { "description": "3D printing and additive manufacturing methods", "enum": [ @@ -897,6 +917,11 @@ "title": "BioleachOrganism", "type": "string" }, + "BiologicalImagingMethod": { + "description": "Any imaging method from FBbi, covering recorded images (macroscopy, microscopy, radiography, tomography) and portrayed images (diagrams, graphic illustrations, montages)", + "title": "BiologicalImagingMethod", + "type": "string" + }, "BiologicalKingdom": { "description": "Major kingdoms/domains of life", "enum": [ @@ -1153,6 +1178,17 @@ "title": "BravaisLatticeEnum", "type": "string" }, + "Bridge2AIDataGenerationProjectEnum": { + "description": "Data generation projects (Grand Challenges) of the NIH Bridge to Artificial Intelligence (Bridge2AI) program, which creates standardized, annotated, ethically sourced AI-ready datasets across a diverse set of modalities.", + "enum": [ + "CHORUS", + "AI_READI", + "VOICE", + "CM4AI" + ], + "title": "Bridge2AIDataGenerationProjectEnum", + "type": "string" + }, "BronstedAcidBaseRoleEnum": { "description": "Br\u00f8nsted-Lowry acid-base roles", "enum": [ @@ -1606,6 +1642,24 @@ "title": "ChemicalEntity", "type": "string" }, + "ChemicalIdentifierScheme": { + "description": "Schemes used to identify chemical substances, including registry numbers, line notations, structure-derived keys, and database accessions.", + "enum": [ + "CAS_RN", + "SMILES", + "INCHI", + "INCHIKEY", + "IUPAC_NAME", + "MOLECULAR_FORMULA", + "PUBCHEM_CID", + "CHEBI_ID", + "KEGG_COMPOUND", + "DRUGBANK_ID", + "EC_NUMBER" + ], + "title": "ChemicalIdentifierScheme", + "type": "string" + }, "ChipFabricationNodeType": { "description": "Semiconductor fabrication process node sizes defining transistor feature dimensions", "enum": [ @@ -2057,6 +2111,16 @@ "title": "CommunicationProtocolEnum", "type": "string" }, + "ComparisonObjectiveEnum": { + "description": "The objective of a between-group comparison, particularly in the design of controlled trials", + "enum": [ + "SUPERIORITY", + "NON_INFERIORITY", + "EQUIVALENCE" + ], + "title": "ComparisonObjectiveEnum", + "type": "string" + }, "CompassDirection": { "description": "Cardinal and intercardinal compass directions", "enum": [ @@ -2241,6 +2305,11 @@ "title": "ContinentEnum", "type": "string" }, + "ContrastEnhancingMethod": { + "description": "Optical and computational contrast-enhancing methods from FBbi, such as phase contrast, DIC and deconvolution", + "title": "ContrastEnhancingMethod", + "type": "string" + }, "ContributorType": { "description": "The type of contributor being represented.", "enum": [ @@ -2303,6 +2372,16 @@ "title": "CorporateGovernanceRoleEnum", "type": "string" }, + "CorrelationCoefficientEnum": { + "description": "Coefficients quantifying the strength of association between two variables", + "enum": [ + "PEARSON", + "SPEARMAN", + "KENDALL" + ], + "title": "CorrelationCoefficientEnum", + "type": "string" + }, "CountryCodeISO2Enum": { "description": "ISO 3166-1 alpha-2 country codes (2-letter codes)", "enum": [ @@ -2565,6 +2644,61 @@ "title": "CurrencyChemical", "type": "string" }, + "CurrencyCode": { + "description": "World currencies by ISO 4217 alpha-3 code. The numeric_code, symbol, and minor_unit (number of decimal places) annotations record the corresponding ISO 4217 attributes.", + "enum": [ + "USD", + "EUR", + "JPY", + "GBP", + "CNY", + "AUD", + "CAD", + "CHF", + "HKD", + "SGD", + "SEK", + "NOK", + "DKK", + "NZD", + "KRW", + "INR", + "BRL", + "ZAR", + "RUB", + "MXN", + "TRY", + "PLN", + "THB", + "IDR", + "MYR", + "PHP", + "AED", + "SAR", + "ILS", + "CZK", + "HUF", + "RON", + "UAH", + "CLP", + "COP", + "ARS", + "EGP", + "NGN", + "KES", + "PKR", + "BDT", + "VND", + "TWD", + "KWD", + "BHD", + "OMR", + "QAR", + "ISK" + ], + "title": "CurrencyCode", + "type": "string" + }, "CurrencyCodeISO4217Enum": { "description": "ISO 4217 currency codes", "enum": [ @@ -2604,6 +2738,263 @@ "title": "CurrencyCodeISO4217Enum", "type": "string" }, + "DICOMAttributeTypeEnum": { + "description": "Attribute requirement types defined in DICOM PS3.5 Section 7.4, which state whether an attribute must be present in a data set and whether it may have a zero-length value. Conformance checkers report missing Type 1 and Type 2 attributes as errors. These types also determine which de-identification action (D, Z or X) may be applied to an attribute.", + "enum": [ + "TYPE_1", + "TYPE_1C", + "TYPE_2", + "TYPE_2C", + "TYPE_3" + ], + "title": "DICOMAttributeTypeEnum", + "type": "string" + }, + "DICOMDeidentificationActionEnum": { + "description": "Action codes from DICOM PS3.15 Table E.1-1a that specify how a de-identifier treats each attribute under the Basic Application Level Confidentiality Profile. Compound codes (for example Z/D) indicate that the first action applies unless the attribute's type requires the second to maintain IOD conformance. Permissible values use the DICOM code letters, with slashes replaced by underscores in compound codes.", + "enum": [ + "D", + "Z", + "X", + "K", + "C", + "U", + "Z_D", + "X_Z", + "X_D", + "X_Z_D", + "X_Z_U" + ], + "title": "DICOMDeidentificationActionEnum", + "type": "string" + }, + "DICOMDeidentificationMethodEnum": { + "description": "The Basic Application Level Confidentiality Profile and its options defined in DICOM PS3.15 Annex E, as coded in PS3.16 Context ID 7050 (De-identification Method). These codes are recorded in the De-identification Method Code Sequence (0012,0064) to document what was done to an instance. The \"Clean\" options remove additional identifying content; the \"Retain\" options preserve information that the basic profile would otherwise remove.", + "enum": [ + "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE", + "CLEAN_PIXEL_DATA_OPTION", + "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION", + "CLEAN_GRAPHICS_OPTION", + "CLEAN_STRUCTURED_CONTENT_OPTION", + "CLEAN_DESCRIPTORS_OPTION", + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION", + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION", + "RETAIN_PATIENT_CHARACTERISTICS_OPTION", + "RETAIN_DEVICE_IDENTITY_OPTION", + "RETAIN_UIDS_OPTION", + "RETAIN_SAFE_PRIVATE_OPTION", + "RETAIN_INSTITUTION_IDENTITY_OPTION" + ], + "title": "DICOMDeidentificationMethodEnum", + "type": "string" + }, + "DICOMModalityEnum": { + "description": "Acquisition modality codes from DICOM PS3.16 Context ID 29 (Acquisition Modality), the defined terms for the Modality (0008,0060) attribute. The permissible value is the DICOM code itself; the title is the NCI Thesaurus label where a mapping exists and the DICOM code meaning is carried as an alias when it differs. Where an NCI Thesaurus term exists it is the meaning and the DCM code is an exact mapping; otherwise the DCM code is the meaning, so every value carries its DCM code in one of the two fields. Waveform modalities (ECG, EEG, etc.) are defined in CID 34 and are not included here, nor are the non-acquisition values that also appear in Modality (0008,0060) such as SR, PR, SEG, KO, DOC, OT and the RT objects.", + "enum": [ + "AR", + "BI", + "BMD", + "CR", + "CT", + "CFM", + "DMS", + "DG", + "DX", + "ES", + "XC", + "GM", + "IO", + "IVOCT", + "IVUS", + "KER", + "LS", + "LEN", + "MR", + "MG", + "NM", + "OAM", + "OPM", + "OP", + "OPT", + "OPTBSV", + "OPTENF", + "OPV", + "OCT", + "OSS", + "PX", + "PA", + "PT", + "RF", + "RG", + "RTIMAGE", + "SM", + "SRF", + "TG", + "US", + "BDUS", + "VA", + "XA" + ], + "title": "DICOMModalityEnum", + "type": "string" + }, + "DICOMNetworkServiceEnum": { + "description": "Network services used to query, retrieve and store DICOM instances between imaging systems such as PACS, modalities and research archives. Includes the classic DIMSE (DICOM Message Service Element) services of PS3.7 and the RESTful DICOMweb services of PS3.18. Cataloguing which services a source repository supports is part of the data landscape assessment that precedes extraction.", + "enum": [ + "C_ECHO", + "C_STORE", + "C_FIND", + "C_MOVE", + "C_GET", + "N_EVENT_REPORT", + "N_GET", + "N_SET", + "N_ACTION", + "N_CREATE", + "N_DELETE", + "QIDO_RS", + "WADO_RS", + "STOW_RS", + "WADO_URI", + "UPS_RS", + "CUSTOM_API" + ], + "title": "DICOMNetworkServiceEnum", + "type": "string" + }, + "DICOMSoftwareToolEnum": { + "description": "Software toolkits, libraries, validators, servers and platforms commonly used to read, write, validate, anonymize and serve DICOM data in research data management pipelines. The category annotation distinguishes general-purpose toolkits from conformance validators, archive servers and metadata anonymizers.", + "enum": [ + "DCMTK", + "PYDICOM", + "GDCM", + "DCM4CHE", + "ITK", + "DVTK", + "DICOM3TOOLS", + "DCIODVFY", + "DCENTVFY", + "PIXELMED", + "RSNA_CTP", + "ORTHANC", + "DCM4CHEE", + "XNAT", + "TCIA_UTILS", + "DICOM_CLEANER", + "HOROS", + "OSIRIX", + "SLICER_3D", + "ITK_SNAP" + ], + "title": "DICOMSoftwareToolEnum", + "type": "string" + }, + "DICOMTransferSyntaxEnum": { + "description": "Transfer syntaxes registered in DICOM PS3.6 Annex A that define the byte ordering, VR encoding and pixel data compression of a DICOM data set. Pixel data validation includes confirming that decompression from a lossy or lossless transfer syntax yields the expected bit depth and that no unintended data loss occurred. Video transfer syntaxes (MPEG-2, H.264, HEVC) are used for endoscopy and ultrasound cine acquisitions. Fragmentable variants of the MPEG transfer syntaxes and retired JPEG processes are omitted; the full registry is at the see_also link.", + "enum": [ + "IMPLICIT_VR_LITTLE_ENDIAN", + "EXPLICIT_VR_LITTLE_ENDIAN", + "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN", + "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN", + "EXPLICIT_VR_BIG_ENDIAN", + "JPEG_BASELINE_PROCESS_1", + "JPEG_EXTENDED_PROCESS_2_4", + "JPEG_LOSSLESS_PROCESS_14", + "JPEG_LOSSLESS_PROCESS_14_SV1", + "JPEG_LS_LOSSLESS", + "JPEG_LS_NEAR_LOSSLESS", + "JPEG_2000_LOSSLESS_ONLY", + "JPEG_2000", + "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY", + "JPEG_2000_MULTICOMPONENT", + "JPIP_REFERENCED", + "JPIP_REFERENCED_DEFLATE", + "MPEG2_MAIN_PROFILE_MAIN_LEVEL", + "MPEG2_MAIN_PROFILE_HIGH_LEVEL", + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1", + "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1", + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D", + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D", + "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2", + "HEVC_H265_MAIN_PROFILE_LEVEL_5_1", + "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1", + "JPEG_XL_LOSSLESS", + "JPEG_XL_JPEG_RECOMPRESSION", + "JPEG_XL", + "HTJ2K_LOSSLESS_ONLY", + "HTJ2K_RPCL_LOSSLESS_ONLY", + "HTJ2K", + "RLE_LOSSLESS", + "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO", + "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO" + ], + "title": "DICOMTransferSyntaxEnum", + "type": "string" + }, + "DICOMValidationIssueTypeEnum": { + "description": "Categories of problems detected when validating DICOM files and collections for completeness, conformance, metadata consistency, pixel data integrity and plausibility. Used to classify findings from tools such as dciodvfy, dcentvfy, DVTk and pydicom during data reliability workflows.", + "enum": [ + "TRUNCATED_FILE", + "INVALID_VR_ENCODING", + "MISSING_REQUIRED_ATTRIBUTE", + "VALUE_MULTIPLICITY_VIOLATION", + "VALUE_OUT_OF_RANGE", + "INVALID_UID_SYNTAX", + "DUPLICATE_UID", + "INCONSISTENT_ENTITY_ATTRIBUTES", + "DATE_INCONSISTENCY", + "IMPLAUSIBLE_VALUE", + "NONSTANDARD_PRIVATE_ATTRIBUTE", + "IDENTIFIER_LINKAGE_ERROR", + "UNREADABLE_PIXEL_DATA", + "DECOMPRESSION_MISMATCH", + "CHECKSUM_MISMATCH", + "PROTECTED_HEALTH_INFORMATION_PRESENT" + ], + "title": "DICOMValidationIssueTypeEnum", + "type": "string" + }, + "DICOMValueRepresentationEnum": { + "description": "The Value Representations (VRs) defined in DICOM PS3.5 Section 6.2, which specify the data type and format of the value of a data element. Tag validation tools check that each attribute is encoded with the VR required by the data dictionary. Permissible values are the two-letter DICOM VR codes.", + "enum": [ + "AE", + "AS", + "AT", + "CS", + "DA", + "DS", + "DT", + "FL", + "FD", + "IS", + "LO", + "LT", + "OB", + "OD", + "OF", + "OL", + "OV", + "OW", + "PN", + "SH", + "SL", + "SQ", + "SS", + "ST", + "SV", + "TM", + "UC", + "UI", + "UL", + "UN", + "UR", + "US", + "UT", + "UV" + ], + "title": "DICOMValueRepresentationEnum", + "type": "string" + }, "DNABaseEnum": { "description": "Standard DNA nucleotide bases (canonical)", "enum": [ @@ -3020,6 +3411,46 @@ "title": "DecommissioningPhaseType", "type": "string" }, + "DefacingMethodEnum": { + "description": "Approaches to pixel-level de-identification that remove or obscure facial features in head imaging. Skull-stripping removes all non-brain tissue and may discard useful anatomy; face-specific methods aim to remove only facial features while preserving as much of the head volume as possible.", + "enum": [ + "SKULL_STRIPPING", + "TEMPLATE_BASED_MASKING", + "SURFACE_BLURRING", + "SHEARING_PLANE", + "DEEP_LEARNING_SEGMENTATION", + "REFACING", + "MANUAL_MASKING", + "FACE_DETECTION_AND_BLURRING", + "MANUAL_CROP_OR_BLUR" + ], + "title": "DefacingMethodEnum", + "type": "string" + }, + "DefacingToolEnum": { + "description": "Software tools and pipelines used for pixel-level de-identification of head imaging and photographs, with their supported modalities, method and licensing. Metadata-only anonymizers are included for completeness because they are commonly paired with defacing tools, but they do not remove facial features.", + "enum": [ + "PYDEFACE", + "FREESURFER_MRI_DEFACE", + "AFNI_REFACER", + "QUICKSHEAR", + "DEEPDEFACER", + "ASAN_DEFACER", + "MYDEFACE", + "MASK_FACE", + "FSL_BET", + "AFNI_3DSKULLSTRIP", + "ITK_SNAP", + "SLICER_3D", + "IMAGEJ_FIJI", + "OPENCV", + "OSIRIX_HOROS_PLUGIN", + "PIXELMED_DICOM_ANONYMIZER", + "MANUAL_PHOTO_VIDEO_EDITING" + ], + "title": "DefacingToolEnum", + "type": "string" + }, "DefectClassificationEnum": { "description": "Manufacturing defect classification", "enum": [ @@ -3043,6 +3474,19 @@ "title": "DefenseInDepthLevelEnum", "type": "string" }, + "DeidentificationRegulatoryFrameworkEnum": { + "description": "Regulations and standards that define when medical imaging data is considered de-identified. Under HIPAA, full-face photographs and comparable images are direct identifiers; under the GDPR, facial images are biometric personal data requiring special handling.", + "enum": [ + "HIPAA_SAFE_HARBOR", + "HIPAA_EXPERT_DETERMINATION", + "GDPR_ANONYMISATION", + "GDPR_PSEUDONYMISATION", + "DICOM_PS3_15_CONFIDENTIALITY_PROFILE", + "MIDI_TASK_GROUP_RECOMMENDATIONS" + ], + "title": "DeidentificationRegulatoryFrameworkEnum", + "type": "string" + }, "DerivatizationMethod": { "description": "Chemical derivatization methods for sample preparation", "enum": [ @@ -3056,6 +3500,24 @@ "title": "DerivatizationMethod", "type": "string" }, + "DesignSimulationMethod": { + "description": "Methods used to design or simulate unit operations, particularly separation columns - ranging from graphical and shortcut methods to rigorous stage-by-stage and rate-based models.", + "enum": [ + "MCCABE_THIELE", + "PONCHON_SAVARIT", + "FENSKE_UNDERWOOD_GILLILAND", + "KREMSER", + "MESH", + "INSIDE_OUT", + "RATE_BASED", + "EQUILIBRIUM_STAGE", + "SHORTCUT", + "RIGOROUS", + "PINCH_ANALYSIS" + ], + "title": "DesignSimulationMethod", + "type": "string" + }, "DetectionModeEnum": { "description": "Detection modes for real-time PCR instruments", "enum": [ @@ -3132,6 +3594,15 @@ "title": "Disease", "type": "string" }, + "DistributionalAssumptionEnum": { + "description": "Whether an inference procedure assumes a parametric form for the underlying population distribution.\nNote the deliberate type approximation: the values denote a property of a procedure, but the available ontology terms (NCIT:C53230, STATO:0000198) denote classes of test. Neither PATO nor OBI currently has a quality or characteristic term for \"parametric\", so the test classes are used as the closest available referent.", + "enum": [ + "PARAMETRIC", + "NON_PARAMETRIC" + ], + "title": "DistributionalAssumptionEnum", + "type": "string" + }, "DocumentFormatEnum": { "description": "Document and text file formats", "enum": [ @@ -3161,7 +3632,17 @@ "EVAPORATION", "DISTILLATION", "DRYING", - "HOMOGENIZATION" + "HOMOGENIZATION", + "CLARIFICATION", + "FLOCCULATION", + "ULTRAFILTRATION", + "DIAFILTRATION", + "TANGENTIAL_FLOW_FILTRATION", + "BUFFER_EXCHANGE", + "ADSORPTION", + "VIRAL_INACTIVATION", + "POLISHING", + "LYOPHILIZATION" ], "title": "DownstreamProcessEnum", "type": "string" @@ -3584,6 +4065,27 @@ "title": "EnzymologyAssayEnum", "type": "string" }, + "EquationOfStateModel": { + "description": "Equations of state used to compute fugacity coefficients and PVT behavior of fluids in process simulation (the SFF phi method).", + "enum": [ + "IDEAL_GAS", + "VIRIAL", + "REDLICH_KWONG", + "SOAVE_REDLICH_KWONG", + "PENG_ROBINSON", + "PENG_ROBINSON_BOSTON_MATHIAS", + "SRK_BOSTON_MATHIAS", + "LEE_KESLER_PLOCKER", + "BENEDICT_WEBB_RUBIN_STARLING", + "PREDICTIVE_SRK", + "PC_SAFT", + "CUBIC_PLUS_ASSOCIATION", + "GERG_2008", + "IAPWS_95" + ], + "title": "EquationOfStateModel", + "type": "string" + }, "EthnicityOMB1997Enum": { "description": "Ethnicity categories following OMB 1997 standards used by NIH and federal agencies", "enum": [ @@ -4064,6 +4566,21 @@ "title": "FlowerColorEnum", "type": "string" }, + "FlowsheetSolutionApproach": { + "description": "The overall computational strategy used to converge a process flowsheet.", + "enum": [ + "SEQUENTIAL_MODULAR", + "EQUATION_ORIENTED", + "SIMULTANEOUS_MODULAR" + ], + "title": "FlowsheetSolutionApproach", + "type": "string" + }, + "FluorescenceMicroscopyMethod": { + "description": "Fluorescence microscopy methods from FBbi, including wide-field, confocal, multi-photon, light sheet and total internal reflection fluorescence microscopy", + "title": "FluorescenceMicroscopyMethod", + "type": "string" + }, "FoodColoringEnum": { "description": "Food coloring and natural food dyes", "enum": [ @@ -4339,6 +4856,214 @@ "title": "FusionPlasmaParameterType", "type": "string" }, + "G2PAllelicRequirement": { + "description": "The genotype required at the locus for the disease to manifest, also referred to in G2P as the genotype. HPO mode of inheritance (MOI) terminology is used; G2P uses synonyms of the MOI terms as many of the disorders described are de novo.\nThe nine values are G2P's published genotype list, taken verbatim from the API the terminology page itself calls (GET /gene2phenotype/api/attribs/, key \"genotype\"), which includes the bare monoallelic_X alongside monoallelic_X_hemizygous and monoallelic_X_heterozygous.\nAll nine G2P genotype strings are recorded by HPO as oio:hasExactSynonym of the term mapped below (verified against the HPO release directly; note that the OLS obo_synonym field under-reports these, listing only synonyms that carry an xref). That exact-synonym correspondence is what makes these mappings unambiguous.\nBy convention in this enum, title is the HPO term label and the G2P string is carried as an alias, matching the pv-mapping guidance and clinical/genetics.yaml; consumers wanting G2P's own display string should read aliases.", + "enum": [ + "MONOALLELIC_AUTOSOMAL", + "BIALLELIC_AUTOSOMAL", + "MONOALLELIC_X", + "MONOALLELIC_X_HEMIZYGOUS", + "MONOALLELIC_X_HETEROZYGOUS", + "MONOALLELIC_Y_HEMIZYGOUS", + "MONOALLELIC_PAR", + "BIALLELIC_PAR", + "MITOCHONDRIAL" + ], + "title": "G2PAllelicRequirement", + "type": "string" + }, + "G2PConfidenceCategory": { + "description": "The level of confidence that a gene-disease association is real, as asserted by G2P curators. G2P uses the GenCC gene-disease validity classification terms. Operationally several groups use definitive, strong and moderate for clinical reporting; limited, disputed and refuted are not used for clinical reporting. GenCC classification identifiers are recorded in the gencc_classification_id annotation rather than as meaning:, because the GENCC prefix is not registered in bioregistry, OLS or the OBO PURL system and so cannot be resolved; the identifiers were taken from GenCC's own submissions export.", + "enum": [ + "DEFINITIVE", + "STRONG", + "MODERATE", + "LIMITED", + "DISPUTED", + "REFUTED" + ], + "title": "G2PConfidenceCategory", + "type": "string" + }, + "G2PCrossCuttingModifier": { + "description": "Additional qualifiers applied to the allelic requirement of a G2P gene-disease association. HPO inheritance qualifier terms (HP:0034335) are used where available. Potential secondary finding and restricted mutation set are G2P-specific and have no HPO equivalent.", + "enum": [ + "DISPLAYS_ANTICIPATION", + "IMPRINTED_REGION", + "TYPICALLY_DE_NOVO", + "TYPICALLY_MOSAIC", + "TYPIFIED_BY_INCOMPLETE_PENETRANCE", + "POTENTIAL_SECONDARY_FINDING", + "RESTRICTED_MUTATION_SET" + ], + "title": "G2PCrossCuttingModifier", + "type": "string" + }, + "G2PFunctionEvidence": { + "description": "Types of evidence in the function category of the G2P molecular mechanism evidence classification.", + "enum": [ + "BIOCHEMICAL", + "PROTEIN_INTERACTION", + "PROTEIN_EXPRESSION", + "IN_SILICO_MODELLING" + ], + "title": "G2PFunctionEvidence", + "type": "string" + }, + "G2PFunctionalAlterationEvidence": { + "description": "Types of evidence in the functional alteration category of the G2P molecular mechanism evidence classification, distinguished by whether the cells came from an affected individual.", + "enum": [ + "PATIENT_CELLS", + "NON_PATIENT_CELLS" + ], + "title": "G2PFunctionalAlterationEvidence", + "type": "string" + }, + "G2PMechanismEvidenceCategory": { + "description": "The broad category of experimental evidence supporting a molecular mechanism in G2P. G2P evidence classifications reuse terms from the ClinGen gene-disease validity SOP Experimental Evidence Summary Matrix.", + "enum": [ + "FUNCTION", + "FUNCTIONAL_ALTERATION", + "MODELS", + "RESCUE" + ], + "title": "G2PMechanismEvidenceCategory", + "type": "string" + }, + "G2PModelsEvidence": { + "description": "Types of evidence in the models category of the G2P molecular mechanism evidence classification.", + "enum": [ + "CELL_CULTURE_MODEL", + "NON_HUMAN_MODEL_ORGANISM" + ], + "title": "G2PModelsEvidence", + "type": "string" + }, + "G2PMolecularMechanism": { + "description": "The mechanism of disease derived from the available evidence, following the definitions of Backwell and Marsh (PMID:35395171). These mechanisms describe a gene-disease association rather than an individual variant, so the Sequence Ontology variant terms are recorded as close mappings rather than exact meanings.", + "enum": [ + "LOSS_OF_FUNCTION", + "GAIN_OF_FUNCTION", + "DOMINANT_NEGATIVE", + "UNDETERMINED_NON_LOSS_OF_FUNCTION", + "UNDETERMINED" + ], + "title": "G2PMolecularMechanism", + "type": "string" + }, + "G2PMolecularMechanismSupport": { + "description": "Whether the molecular mechanism recorded for a G2P gene-disease association is directly supported by reported evidence, or inferred by the curator.", + "enum": [ + "EVIDENCE", + "INFERRED" + ], + "title": "G2PMolecularMechanismSupport", + "type": "string" + }, + "G2PMolecularMechanismSynopsis": { + "description": "A more detailed description of the molecular mechanism of a G2P gene-disease association, following the definitions of Backwell and Marsh (PMID:35395171). A synopsis refines the higher-level molecular mechanism; more than one synopsis may apply to a single gene-disease association.", + "enum": [ + "DESTABILISING_LOF", + "INTERACTION_DISRUPTING_LOF", + "LOSS_OF_ACTIVITY_LOF", + "LOF_DUE_TO_PROTEIN_MISLOCALISATION", + "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE", + "COMPETITIVE_DOMINANT_NEGATIVE", + "ASSEMBLY_MEDIATED_GOF", + "LOCAL_LOF_LEADING_TO_OVERALL_GOF", + "AGGREGATION", + "OTHER_GOF" + ], + "title": "G2PMolecularMechanismSynopsis", + "type": "string" + }, + "G2PPanel": { + "description": "The disease-area panels into which G2P organises its curated gene-disease associations. A gene-disease association may appear on more than one panel.", + "enum": [ + "CANCER", + "CARDIAC", + "DD", + "EAR", + "EYE", + "SKELETAL", + "SKIN" + ], + "title": "G2PPanel", + "type": "string" + }, + "G2PRescueEvidence": { + "description": "Types of evidence in the rescue category of the G2P molecular mechanism evidence classification, distinguished by the system in which rescue was demonstrated.", + "enum": [ + "PATIENT_CELLS", + "CELL_CULTURE_MODEL", + "NON_HUMAN_MODEL_ORGANISM" + ], + "title": "G2PRescueEvidence", + "type": "string" + }, + "G2PVariantConsequence": { + "description": "The consequence of the reported variants at the protein (for protein-coding genes) or the RNA (for non-protein coding genes), per allele. These are Sequence Ontology terms developed for G2P and described in PMID:37982373; the descriptions below are the G2P-authored usage notes rather than the SO text definitions. As in the other SO-backed enums here, title is uniformly the SO term label and any differing G2P label is carried as an alias; for four of the six values the SO and G2P labels coincide, which is why only altered_gene_product_sequence and function_uncertain_variant carry an alias.", + "enum": [ + "ALTERED_GENE_PRODUCT_LEVEL", + "DECREASED_GENE_PRODUCT_LEVEL", + "ABSENT_GENE_PRODUCT", + "INCREASED_GENE_PRODUCT_LEVEL", + "ALTERED_GENE_PRODUCT_STRUCTURE", + "UNCERTAIN" + ], + "title": "G2PVariantConsequence", + "type": "string" + }, + "G2PVariantType": { + "description": "The types of variants associated with the curated gene-disease pair reported in the publication. All terms are Sequence Ontology terms. Where G2P uses a label that differs from the current SO label, the G2P label is recorded as an alias. Descriptions are the SO text definitions where SO provides one.\nThe NMD-qualified types have two parents in SO, so they are modelled with the base variant as is_a and the NMD qualifier as a mixin. LinkML preserves both, but as of linkml 1.9.5 the OWL generator emits only the is_a parent as rdfs:subClassOf and drops the mixin, so the NMD axis is additionally recorded in the nmd_status annotation to keep it available in every generated artifact. If a later linkml emits permissible-value mixins, that annotation is redundant and can go.", + "enum": [ + "NMD_TRIGGERING", + "NMD_ESCAPING", + "STOP_GAINED_NMD_TRIGGERING", + "STOP_GAINED_NMD_ESCAPING", + "FRAMESHIFT_VARIANT_NMD_TRIGGERING", + "FRAMESHIFT_VARIANT_NMD_ESCAPING", + "SPLICE_DONOR_VARIANT_NMD_TRIGGERING", + "SPLICE_DONOR_VARIANT_NMD_ESCAPING", + "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING", + "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING", + "SPLICE_REGION_VARIANT", + "SPLICE_ACCEPTOR_VARIANT", + "SPLICE_DONOR_VARIANT", + "FIVE_PRIME_UTR_VARIANT", + "THREE_PRIME_UTR_VARIANT", + "REGULATORY_REGION_VARIANT", + "START_LOST", + "STOP_GAINED", + "STOP_LOST", + "FRAMESHIFT_VARIANT", + "MISSENSE_VARIANT", + "INFRAME_INSERTION", + "INFRAME_DELETION", + "SYNONYMOUS_VARIANT", + "INTRON_VARIANT", + "INTERGENIC_VARIANT", + "NON_CODING_TRANSCRIPT_VARIANT", + "SHORT_TANDEM_REPEAT_CHANGE", + "COPY_NUMBER_VARIATION", + "WHOLE_PARTIAL_GENE_DELETION", + "WHOLE_PARTIAL_GENE_DUPLICATION" + ], + "title": "G2PVariantType", + "type": "string" + }, + "G2PVariantTypeGroup": { + "description": "The primary type grouping under which G2P organises the variant types associated with a curated gene-disease pair.", + "enum": [ + "NMD_VARIANTS", + "SPLICE_VARIANTS", + "REGULATORY_VARIANTS", + "PROTEIN_CHANGING_VARIANTS", + "OTHER_VARIANTS" + ], + "title": "G2PVariantTypeGroup", + "type": "string" + }, "GOElectronicMethods": { "description": "Electronic annotation methods used in Gene Ontology, identified by GO_REF codes", "enum": [ @@ -4904,6 +5629,17 @@ "title": "HistoricalStatusEnum", "type": "string" }, + "HomoscedasticityTestEnum": { + "description": "Tests evaluating equality of variances across groups or samples", + "enum": [ + "LEVENE", + "BARTLETT", + "BROWN_FORSYTHE", + "BREUSCH_PAGAN" + ], + "title": "HomoscedasticityTestEnum", + "type": "string" + }, "HousingStatus": { "description": "Housing status of patients per UDS Plus HRSA standards", "enum": [ @@ -5250,6 +5986,19 @@ "title": "ImageDefinedRiskFactor", "type": "string" }, + "ImageDeidentificationTargetEnum": { + "description": "The components of a medical imaging object that can carry identifying information and therefore need to be addressed by a de-identification workflow. A workflow first assesses whether an image requires pixel-level (face or head) de-identification or only metadata de-identification.", + "enum": [ + "HEADER_METADATA", + "PRIVATE_ATTRIBUTES", + "BURNED_IN_ANNOTATION", + "FACIAL_FEATURES", + "UNIQUE_IDENTIFIERS", + "STRUCTURED_CONTENT" + ], + "title": "ImageDeidentificationTargetEnum", + "type": "string" + }, "ImageFileFormatEnum": { "description": "Common image file formats", "enum": [ @@ -5267,6 +6016,28 @@ "title": "ImageFileFormatEnum", "type": "string" }, + "ImageQualityMetricEnum": { + "description": "Metrics computed during image quality and pixel data validation to document that images are readable and of adequate fidelity for AI applications. Simple metrics can be extended to check conformance with FDA technical performance guidance for quantitative imaging devices where applicable.", + "enum": [ + "PIXEL_READABILITY", + "INTENSITY_HISTOGRAM", + "SIGNAL_TO_NOISE_RATIO", + "CONTRAST_TO_NOISE_RATIO", + "SHARPNESS", + "BIT_DEPTH", + "PIXEL_SPACING", + "SLICE_THICKNESS", + "COMPRESSION_FIDELITY", + "ARTIFACT_PRESENCE" + ], + "title": "ImageQualityMetricEnum", + "type": "string" + }, + "ImagedParameter": { + "description": "Physical parameters of the specimen recorded by an image, from FBbi, such as absorption, elastic and inelastic scattering, refractive index, retardance, fluorescence emission, electron density and elevation", + "title": "ImagedParameter", + "type": "string" + }, "ImagingAssayEnum": { "description": "Imaging-based assays including microscopy, MRI, and related methods", "enum": [ @@ -5305,6 +6076,68 @@ "title": "ImagingAssayEnum", "type": "string" }, + "ImagingDataLifecycleStageEnum": { + "description": "Sequential stages of DICOM data management for preparing FAIR, AI-ready medical imaging datasets. Stages after extraction form the data reliability workflow that checks that imaging data is complete, standardized and biologically plausible before sharing.", + "enum": [ + "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION", + "FILE_INTEGRITY_VERIFICATION", + "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS", + "METADATA_TAG_VALIDATION", + "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION", + "DEIDENTIFICATION" + ], + "title": "ImagingDataLifecycleStageEnum", + "type": "string" + }, + "ImagingDataSourceTypeEnum": { + "description": "Types of systems in a hospital or research network that hold medical imaging data and from which it may be extracted. A landscape assessment records, for each source, the platform vendor, software version, supported query mechanisms, patient identifier handling, retention policy and anonymization capabilities.", + "enum": [ + "PACS", + "VENDOR_NEUTRAL_ARCHIVE", + "DEPARTMENTAL_IMAGING_ARCHIVE", + "RESEARCH_IMAGING_PLATFORM", + "MODALITY_WORKSTATION", + "ELECTRONIC_HEALTH_RECORD", + "PUBLIC_IMAGING_REPOSITORY", + "CLOUD_IMAGING_ARCHIVE" + ], + "title": "ImagingDataSourceTypeEnum", + "type": "string" + }, + "ImagingDetectionMethod": { + "description": "Detection methods from FBbi, characterized by what is detected (photons, electrons, acoustic waves, induced current), field of detection and detector geometry (spot or area detector)", + "title": "ImagingDetectionMethod", + "type": "string" + }, + "ImagingIlluminationMethod": { + "description": "Illumination methods from FBbi, characterized by the probe (photons, electrons, acoustic waves, neutrons, ions), field (widefield, narrowfield, nearfield, farfield), coherence, timing and geometry", + "title": "ImagingIlluminationMethod", + "type": "string" + }, + "ImagingInteroperabilityStandardEnum": { + "description": "Standards and data models used to represent medical imaging metadata and to link images with clinical records, electronic health records and multimodal research datasets.", + "enum": [ + "DICOM", + "DICOMWEB", + "HL7_FHIR_IMAGINGSTUDY", + "OMOP_CDM_IMAGING_EXTENSION", + "IHE_PROFILES", + "BIDS", + "NIFTI" + ], + "title": "ImagingInteroperabilityStandardEnum", + "type": "string" + }, + "ImagingSamplePreparationMethod": { + "description": "Sample preparation methods from FBbi, describing the state of the specimen at imaging time such as embedded, sectioned, whole mounted or permeabilized tissue, dispersed or adherent cells, and fixation methods", + "title": "ImagingSamplePreparationMethod", + "type": "string" + }, + "ImagingVisualizationMethod": { + "description": "Visualization methods from FBbi, the largest branch of the ontology, covering visualization of labels conjugated to probes, of contiguous regions, and by chemical attribute (histological stains, fluorescent dyes and fluorescent proteins)", + "title": "ImagingVisualizationMethod", + "type": "string" + }, "ImmuneCell": { "description": "Immune system cell types (leukocytes and their subtypes)", "title": "ImmuneCell", @@ -6161,6 +6994,11 @@ "title": "LicensingStageEnum", "type": "string" }, + "LightMicroscopyMethod": { + "description": "Light microscopy methods from FBbi, including bright-field, phase contrast, differential interference contrast, polarization, fluorescence and optical coherence tomography", + "title": "LightMicroscopyMethod", + "type": "string" + }, "LipidCategory": { "description": "Major categories of lipids based on SwissLipids classification", "enum": [ @@ -6537,6 +7375,19 @@ "title": "MassErrorUnit", "type": "string" }, + "MassFlowRateUnitEnum": { + "description": "Units of mass flow rate (mass per unit time)", + "enum": [ + "KILOGRAM_PER_SECOND", + "KILOGRAM_PER_HOUR", + "GRAM_PER_SECOND", + "TONNE_PER_HOUR", + "TONNE_PER_DAY", + "POUND_PER_HOUR" + ], + "title": "MassFlowRateUnitEnum", + "type": "string" + }, "MassSpectrometerFileFormat": { "description": "Standard file formats used in mass spectrometry", "enum": [ @@ -6816,6 +7667,11 @@ "title": "MicroplateFormatEnum", "type": "string" }, + "MicroscopyMethod": { + "description": "Any microscopy method from FBbi, including X-ray microscopy, microscopy with lenses (light and electron microscopy) and scanning probe microscopy", + "title": "MicroscopyMethod", + "type": "string" + }, "MicroscopyMethodEnum": { "description": "Microscopy techniques for material characterization", "enum": [ @@ -7047,6 +7903,30 @@ "title": "MitoticPhase", "type": "string" }, + "MixingRuleModel": { + "description": "Mixing rules applied to equation-of-state parameters for mixtures (the SFF mixture method).", + "enum": [ + "IDEAL", + "VAN_DER_WAALS", + "HURON_VIDAL", + "MODIFIED_HURON_VIDAL", + "WONG_SANDLER", + "PSRK_MIXING" + ], + "title": "MixingRuleModel", + "type": "string" + }, + "MolarFlowRateUnitEnum": { + "description": "Units of molar flow rate (amount of substance per unit time)", + "enum": [ + "MOLE_PER_SECOND", + "MOLE_PER_HOUR", + "KILOMOLE_PER_HOUR", + "KILOMOLE_PER_SECOND" + ], + "title": "MolarFlowRateUnitEnum", + "type": "string" + }, "MolecularFunction": { "description": "Molecular functions from Gene Ontology", "title": "MolecularFunction", @@ -7109,6 +7989,26 @@ "title": "MousePostnatalAgeGroupEnum", "type": "string" }, + "MultipleTestingCorrectionEnum": { + "description": "Methods for adjusting p-values or significance thresholds when many hypotheses are tested simultaneously.\nAs with StatisticalTestEnum, concrete methods (BONFERRONI, HOLM_BONFERRONI, BENJAMINI_HOCHBERG) sit alongside the error-rate classes they belong to (FAMILY_WISE_ERROR_RATE, FALSE_DISCOVERY_RATE) and procedural classes (SIMULTANEOUS, SEQUENTIAL). The classes are intended for sources that report only \"FDR-corrected\" without naming a procedure.", + "enum": [ + "BONFERRONI", + "HOLM_BONFERRONI", + "BENJAMINI_HOCHBERG", + "BENJAMINI_YEKUTIELI", + "HOLM_FDR", + "HOMMEL_FDR", + "FAMILY_WISE_ERROR_RATE", + "FALSE_DISCOVERY_RATE", + "SIMULTANEOUS", + "SEQUENTIAL", + "ALPHA_SPENDING", + "ALPHA_INVESTING", + "NONE" + ], + "title": "MultipleTestingCorrectionEnum", + "type": "string" + }, "NAICSSectorEnum": { "description": "NAICS two-digit sector codes (North American Industry Classification System)", "enum": [ @@ -7236,6 +8136,16 @@ "title": "NewsTopicCategoryEnum", "type": "string" }, + "NormalityTestEnum": { + "description": "Goodness of fit tests commonly used to assess whether a sample is drawn from a normally distributed population", + "enum": [ + "SHAPIRO_WILK", + "KOLMOGOROV_SMIRNOV", + "ANDERSON_DARLING" + ], + "title": "NormalityTestEnum", + "type": "string" + }, "NuclearFacilityTypeEnum": { "description": "Types of nuclear facilities and infrastructure", "enum": [ @@ -8288,6 +9198,19 @@ "title": "PolymerTypeEnum", "type": "string" }, + "PostHocTestEnum": { + "description": "Multiple comparison procedures carried out after a significant omnibus test such as an ANOVA or Kruskal-Wallis test", + "enum": [ + "TUKEY_HSD", + "NEWMAN_KEULS", + "SCHEFFE", + "LEAST_SIGNIFICANT_DIFFERENCE", + "DUNN", + "CONOVER_IMAN" + ], + "title": "PostHocTestEnum", + "type": "string" + }, "PowerPlantStatusEnum": { "description": "Operational status of nuclear power plants", "enum": [ @@ -8317,6 +9240,15 @@ "title": "PowerUnit", "type": "string" }, + "PoyntingCorrectionMethod": { + "description": "Treatment of the Poynting correction factor accounting for the effect of pressure on liquid fugacity (the SFF PCF method).", + "enum": [ + "NONE", + "POYNTING" + ], + "title": "PoyntingCorrectionMethod", + "type": "string" + }, "PredictionOutcomeType": { "description": "", "enum": [ @@ -8455,6 +9387,55 @@ "title": "PriorityLevelEnum", "type": "string" }, + "ProcessEquipmentType": { + "description": "Physical equipment / asset types used in process plants. These correspond to the nodes of a process flowsheet and complement UnitOperationType (which describes the function performed). Grouped via the equipment_class annotation.", + "enum": [ + "STORAGE_TANK", + "PRESSURE_VESSEL", + "HOPPER", + "FLASH_DRUM", + "KNOCKOUT_DRUM", + "REACTOR", + "BIOREACTOR", + "FERMENTER", + "DISTILLATION_COLUMN", + "ABSORPTION_COLUMN", + "STRIPPING_COLUMN", + "EXTRACTION_COLUMN", + "CHROMATOGRAPHY_COLUMN", + "SCRUBBER", + "HEAT_EXCHANGER", + "CONDENSER", + "REBOILER", + "EVAPORATOR", + "FURNACE", + "BOILER", + "COOLING_TOWER", + "DRYER", + "CRYSTALLIZER", + "PUMP", + "COMPRESSOR", + "BLOWER", + "FAN", + "VALVE", + "CENTRIFUGE", + "FILTER", + "DECANTER", + "CLARIFIER", + "CYCLONE", + "HYDROCYCLONE", + "MEMBRANE_MODULE", + "SETTLER", + "MIXER", + "AGITATOR", + "MILL", + "CRUSHER", + "SCREEN", + "CONVEYOR" + ], + "title": "ProcessEquipmentType", + "type": "string" + }, "ProcessImprovementApproachEnum": { "description": "Process improvement methodologies and approaches", "enum": [ @@ -8470,6 +9451,45 @@ "title": "ProcessImprovementApproachEnum", "type": "string" }, + "ProcessIndustryCategory": { + "description": "Sectors of the process (continuous and batch) manufacturing industries. The pisces_category annotation records the corresponding top-level category in the PISCES Standard Flowsheet Format where one exists.", + "enum": [ + "PETROLEUM_REFINING", + "PETROCHEMICAL", + "BULK_CHEMICAL", + "SPECIALTY_CHEMICAL", + "AGROCHEMICAL", + "POLYMER_AND_PLASTICS", + "PHARMACEUTICAL", + "BIOTECHNOLOGY", + "BIOFUEL", + "FOOD_AND_BEVERAGE", + "PULP_AND_PAPER", + "METALS_AND_MINING", + "WATER_AND_WASTEWATER_TREATMENT", + "POWER_GENERATION", + "GAS_PROCESSING", + "CEMENT_AND_CONSTRUCTION_MATERIALS", + "GLASS_AND_CERAMICS", + "TEXTILE", + "COSMETICS_AND_PERSONAL_CARE", + "NUCLEAR_FUEL", + "SEMICONDUCTOR" + ], + "title": "ProcessIndustryCategory", + "type": "string" + }, + "ProcessOperationMode": { + "description": "The temporal mode in which a process or unit operation is run.", + "enum": [ + "BATCH", + "CONTINUOUS", + "SEMI_BATCH", + "SEMI_CONTINUOUS" + ], + "title": "ProcessOperationMode", + "type": "string" + }, "ProcessPerformanceMetric": { "description": "Key performance indicators for mining and processing operations tied to SMART milestones and sustainability goals.", "enum": [ @@ -8496,6 +9516,66 @@ "title": "ProcessScaleEnum", "type": "string" }, + "ProcessSimulator": { + "description": "Process simulation software packages used to model chemical and biochemical process flowsheets.", + "enum": [ + "ASPEN_PLUS", + "ASPEN_HYSYS", + "ASPEN_CUSTOM_MODELER", + "UNISIM_DESIGN", + "PRO_II", + "AVEVA_PROCESS_SIMULATION", + "CHEMCAD", + "DWSIM", + "COCO_SIMULATOR", + "GPROMS", + "PROSIMPLUS", + "PETRO_SIM", + "BIOSTEAM", + "SUPERPRO_DESIGNER", + "IDAES", + "CAPE_OPEN" + ], + "title": "ProcessSimulator", + "type": "string" + }, + "ProcessStreamPhase": { + "description": "The physical phase or phase combination of a process stream. For single-phase fundamental states see also StateOfMatterEnum in the physics module; this enum adds the multiphase combinations common in process engineering.", + "enum": [ + "GAS", + "LIQUID", + "SOLID", + "SUPERCRITICAL", + "VAPOR_LIQUID", + "LIQUID_LIQUID", + "VAPOR_LIQUID_LIQUID", + "SLURRY", + "GAS_SOLID", + "MULTIPHASE" + ], + "title": "ProcessStreamPhase", + "type": "string" + }, + "ProcessStreamRole": { + "description": "The functional role of a stream within a process flowsheet, independent of its chemical composition.", + "enum": [ + "FEED", + "RAW_MATERIAL", + "PRODUCT", + "BYPRODUCT", + "INTERMEDIATE", + "RECYCLE", + "PURGE", + "BLEED", + "MAKEUP", + "WASTE", + "EFFLUENT", + "EMISSION", + "UTILITY" + ], + "title": "ProcessStreamRole", + "type": "string" + }, "ProcessingStatus": { "description": "Status of data processing workflows", "enum": [ @@ -9446,6 +10526,11 @@ "title": "ReservoirCharacterizationMethodType", "type": "string" }, + "ResolutionEnhancingMethod": { + "description": "Super-resolution methods from FBbi, such as structured illumination, point-localization methods, STED and GSD", + "title": "ResolutionEnhancingMethod", + "type": "string" + }, "RightsBasis": { "description": "The basis for the right or permission granted for an object.\nBased on PREMIS rights basis vocabulary.", "enum": [ @@ -10015,6 +11100,11 @@ "title": "SourceMaterialTypeEnum", "type": "string" }, + "SourceOfImageContrast": { + "description": "Physical bases of image contrast from FBbi, such as differences in chemical composition, distribution of an epitope, protein or nucleic acid sequence, stain binding, refractive index boundaries, fluorescence lifetime and optical anisotropy", + "title": "SourceOfImageContrast", + "type": "string" + }, "SourcingStrategyEnum": { "description": "Sourcing strategy approaches", "enum": [ @@ -10282,6 +11372,88 @@ "title": "StateOfMatterEnum", "type": "string" }, + "StatisticalTestEnum": { + "description": "Statistical hypothesis tests, drawn primarily from the descendants of 'statistical hypothesis test' (OBI:0000673) in STATO.\nThis enum deliberately mixes abstraction levels: alongside concrete tests it retains STATO's grouping classes (GOODNESS_OF_FIT_TEST, HOMOSKEDASTICITY_TEST, SPHERICITY_TEST, POST_HOC_ANALYSIS, NON_PARAMETRIC_TEST and similar) so that a source reporting only \"a test of normality was applied\" can still be annotated. Prefer the most specific value that the source supports, and use a grouping value only when the specific test is genuinely not stated.\nSeveral values are also repeated in the narrower enums below (TTestTypeEnum, NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum), which exist to constrain slot ranges. The duplicated meanings are intentional; from_meaning() resolves per enum class.", + "enum": [ + "STUDENTS_T_TEST", + "ONE_SAMPLE_T_TEST", + "PAIRED_T_TEST", + "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE", + "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE", + "YUEN_T_TEST", + "Z_TEST", + "ONE_SAMPLE_HOTELLING_T2_TEST", + "TWO_SAMPLE_HOTELLING_T2_TEST", + "ANOVA", + "ONE_WAY_ANOVA", + "TWO_WAY_ANOVA", + "MULTIWAY_ANOVA", + "REPEATED_MEASURES_ANOVA", + "MANOVA", + "ANCOVA", + "F_TEST", + "MANN_WHITNEY_U_TEST", + "WILCOXON_SIGNED_RANK_TEST", + "KRUSKAL_WALLIS_TEST", + "FRIEDMAN_TEST", + "SIGN_TEST", + "CHI_SQUARE_TEST", + "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE", + "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST", + "YATES_CORRECTED_CHI_SQUARE_TEST", + "CHI_SQUARE_TEST_FOR_HOMOGENEITY", + "FISHERS_EXACT_TEST", + "BARNARDS_TEST", + "MCNEMAR_TEST", + "COCHRANS_Q_TEST", + "COCHRAN_ARMITAGE_TEST_FOR_TREND", + "COCHRAN_MANTEL_HAENSZEL_TEST", + "EXACT_BINOMIAL_TEST", + "HYPERGEOMETRIC_TEST", + "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES", + "GOODNESS_OF_FIT_TEST", + "SHAPIRO_WILK_TEST", + "KOLMOGOROV_SMIRNOV_TEST", + "ANDERSON_DARLING_TEST", + "HOSMER_LEMESHOW_TEST", + "LEVENES_TEST", + "BARTLETTS_TEST", + "BROWN_FORSYTHE_TEST", + "BREUSCH_PAGAN_TEST", + "HOMOSKEDASTICITY_TEST", + "HOMOGENEITY_TEST", + "SPHERICITY_TEST", + "MAUCHLYS_TEST", + "ODDS_RATIO_HOMOGENEITY_TEST", + "BRESLOW_DAY_TEST", + "TARONES_TEST", + "WOOLFS_TEST", + "POST_HOC_ANALYSIS", + "TUKEY_HSD_TEST", + "NEWMAN_KEULS_TEST", + "SCHEFFE_TEST", + "LEAST_SIGNIFICANT_DIFFERENCE_TEST", + "DUNNS_TEST", + "CONOVER_IMAN_TEST", + "GRUBBS_TEST", + "DIXON_Q_TEST", + "TIETJEN_MOORE_TEST", + "GENERALIZED_ESD_TEST", + "LIKELIHOOD_RATIO_TEST", + "WALD_TEST", + "LOG_RANK_TEST", + "HARDY_WEINBERG_EQUILIBRIUM_TEST", + "TRANSMISSION_DISEQUILIBRIUM_TEST", + "PEARSON_CORRELATION_TEST", + "SPEARMAN_CORRELATION_TEST", + "AB_TEST", + "BETWEEN_GROUP_COMPARISON_TEST", + "WITHIN_SUBJECT_COMPARISON_TEST", + "NON_PARAMETRIC_TEST" + ], + "title": "StatisticalTestEnum", + "type": "string" + }, "StatusEnum": { "description": "Values indicating whether a condition or observation is present, absent, or of unknown status.", "enum": [ @@ -10561,6 +11733,55 @@ "title": "SynthesisMethodEnum", "type": "string" }, + "SystemLifeCycleProcess15288": { + "description": "The 30 system life cycle processes grouped by ISO/IEC/IEEE 15288:2015.", + "enum": [ + "ACQUISITION", + "SUPPLY", + "LIFE_CYCLE_MODEL_MANAGEMENT", + "INFRASTRUCTURE_MANAGEMENT", + "PORTFOLIO_MANAGEMENT", + "HUMAN_RESOURCE_MANAGEMENT", + "QUALITY_MANAGEMENT", + "PROJECT_PLANNING", + "PROJECT_ASSESSMENT_AND_CONTROL", + "DECISION_MANAGEMENT", + "RISK_MANAGEMENT", + "CONFIGURATION_MANAGEMENT", + "INFORMATION_MANAGEMENT", + "MEASUREMENT", + "QUALITY_ASSURANCE", + "KNOWLEDGE_MANAGEMENT", + "BUSINESS_OR_MISSION_ANALYSIS", + "STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION", + "SYSTEM_REQUIREMENTS_DEFINITION", + "ARCHITECTURE_DEFINITION", + "DESIGN_DEFINITION", + "SYSTEM_ANALYSIS", + "IMPLEMENTATION", + "INTEGRATION", + "VERIFICATION", + "TRANSITION", + "VALIDATION", + "OPERATION", + "MAINTENANCE", + "DISPOSAL" + ], + "title": "SystemLifeCycleProcess15288", + "type": "string" + }, + "TTestTypeEnum": { + "description": "Variants of Student's t-test", + "enum": [ + "ONE_SAMPLE", + "PAIRED", + "TWO_SAMPLE_EQUAL_VARIANCE", + "TWO_SAMPLE_UNEQUAL_VARIANCE", + "TRIMMED_MEANS" + ], + "title": "TTestTypeEnum", + "type": "string" + }, "TailingCharacterizationType": { "description": "Types of measurements and analyses used to characterize mine tailings and other mineral processing residues for resource recovery potential", "enum": [ @@ -10622,6 +11843,15 @@ "title": "TemperatureUnitEnum", "type": "string" }, + "TestTailednessEnum": { + "description": "Whether a statistical test allocates the significance level to one or both tails of the reference distribution", + "enum": [ + "ONE_TAILED", + "TWO_TAILED" + ], + "title": "TestTailednessEnum", + "type": "string" + }, "TextCharset": { "description": "Character encodings for text content", "enum": [ @@ -10731,6 +11961,30 @@ "title": "ThermodynamicParameterEnum", "type": "string" }, + "ThermodynamicPropertyPackage": { + "description": "Named property methods/packages offered by process simulators, typically combining an equation of state and/or an activity-coefficient model. Used where a single package label rather than separate gamma/phi methods is recorded.", + "enum": [ + "IDEAL", + "NRTL", + "NRTL_RK", + "UNIQUAC", + "UNIFAC", + "WILSON", + "VAN_LAAR", + "PENG_ROBINSON", + "SOAVE_REDLICH_KWONG", + "ELECTROLYTE_NRTL", + "PITZER", + "CHAO_SEADER", + "GRAYSON_STREED", + "BRAUN_K10", + "PC_SAFT", + "STEAM_TABLES", + "API_SOUR" + ], + "title": "ThermodynamicPropertyPackage", + "type": "string" + }, "TimeOfDay": { "description": "Common times of day", "enum": [ @@ -10807,6 +12061,11 @@ "title": "TimeZoneEnum", "type": "string" }, + "TissueFixationMethod": { + "description": "Fixation methods from FBbi, such as aldehyde, alcohol, freeze and heat fixation", + "title": "TissueFixationMethod", + "type": "string" + }, "TissuePreservationEnum": { "description": "Broader categorization of tissue preservation approaches", "enum": [ @@ -11426,6 +12685,66 @@ "title": "UniProtSpeciesCode", "type": "string" }, + "UnitOperationType": { + "description": "Fundamental chemical and process engineering unit operations - the discrete processing steps that transform, separate, combine, or move process material. Grouped (via the unit_operation_class annotation) into momentum transfer, heat transfer, mass-transfer separations, mechanical separations, solids processing, reaction, and storage.", + "enum": [ + "PUMPING", + "COMPRESSION", + "GAS_MOVING", + "FLOW_SPLITTING", + "STREAM_MIXING", + "HEAT_EXCHANGE", + "HEATING", + "COOLING", + "CONDENSATION", + "EVAPORATION", + "DISTILLATION", + "ABSORPTION", + "STRIPPING", + "LIQUID_LIQUID_EXTRACTION", + "LEACHING", + "ADSORPTION", + "ION_EXCHANGE", + "CHROMATOGRAPHY", + "CRYSTALLIZATION", + "PRECIPITATION", + "DRYING", + "FREEZE_DRYING", + "HUMIDIFICATION", + "MEMBRANE_SEPARATION", + "MICROFILTRATION", + "ULTRAFILTRATION", + "NANOFILTRATION", + "REVERSE_OSMOSIS", + "DIALYSIS", + "ELECTRODIALYSIS", + "PERVAPORATION", + "FILTRATION", + "CENTRIFUGATION", + "SEDIMENTATION", + "CLARIFICATION", + "FLOTATION", + "FLOCCULATION", + "CYCLONE_SEPARATION", + "SCREENING", + "GAS_LIQUID_SEPARATION", + "SIZE_REDUCTION", + "SIZE_ENLARGEMENT", + "MIXING", + "SOLIDS_CONVEYING", + "CHEMICAL_REACTION", + "FERMENTATION", + "COMBUSTION", + "GASIFICATION", + "PYROLYSIS", + "ELECTROLYSIS", + "NEUTRALIZATION", + "PURIFICATION", + "STORAGE" + ], + "title": "UnitOperationType", + "type": "string" + }, "UpdateFrequency": { "description": "The frequency at which a dataset is updated with new data.\nBased on Dublin Core Collection Description Frequency Vocabulary.", "enum": [ @@ -11461,6 +12780,31 @@ "title": "UraniumEnrichmentLevelEnum", "type": "string" }, + "UtilityType": { + "description": "Common plant utilities consumed or produced by process unit operations, used for energy and mass balance accounting on a flowsheet.", + "enum": [ + "STEAM", + "LOW_PRESSURE_STEAM", + "MEDIUM_PRESSURE_STEAM", + "HIGH_PRESSURE_STEAM", + "COOLING_WATER", + "CHILLED_WATER", + "REFRIGERANT", + "HOT_OIL", + "BRINE", + "ELECTRICITY", + "PROCESS_WATER", + "DEMINERALIZED_WATER", + "NATURAL_GAS", + "FUEL_GAS", + "COMPRESSED_AIR", + "INSTRUMENT_AIR", + "NITROGEN", + "FLARE" + ], + "title": "UtilityType", + "type": "string" + }, "VaccinationPeriodicityEnum": { "description": "The periodicity or frequency of vaccination", "enum": [ @@ -11537,6 +12881,22 @@ "title": "VendorCategoryEnum", "type": "string" }, + "VerificationValidationProcessIEEE1012": { + "description": "Verification and validation processes applied across the system, software, and hardware life cycle.", + "enum": [ + "CONCEPT_AND_REQUIREMENTS_V_AND_V", + "ARCHITECTURE_AND_DESIGN_V_AND_V", + "IMPLEMENTATION_V_AND_V", + "INTEGRATION_V_AND_V", + "QUALIFICATION_TESTING", + "INSTALLATION_AND_CHECKOUT", + "OPERATION_V_AND_V", + "MAINTENANCE_V_AND_V", + "DISPOSAL_V_AND_V" + ], + "title": "VerificationValidationProcessIEEE1012", + "type": "string" + }, "ViabilityEnum": { "description": "An organismal quality inhering in a bearer by virtue of the bearer's disposition to survive and develop normally. Derived from PATO viability (PATO:0000169) child values.", "enum": [ @@ -11670,6 +13030,19 @@ "title": "VolumeUnitEnum", "type": "string" }, + "VolumetricFlowRateUnitEnum": { + "description": "Units of volumetric flow rate (volume per unit time)", + "enum": [ + "CUBIC_METER_PER_SECOND", + "CUBIC_METER_PER_HOUR", + "LITER_PER_SECOND", + "LITER_PER_MINUTE", + "GALLON_PER_MINUTE", + "CUBIC_FOOT_PER_MINUTE" + ], + "title": "VolumetricFlowRateUnitEnum", + "type": "string" + }, "WasteDisposalMethodEnum": { "description": "Methods for radioactive waste disposal", "enum": [ diff --git a/src/valuesets/datamodel/valuesets.py b/src/valuesets/datamodel/valuesets.py index 0a5f640a..6669b252 100644 --- a/src/valuesets/datamodel/valuesets.py +++ b/src/valuesets/datamodel/valuesets.py @@ -6360,6 +6360,342 @@ class OutcomeTypeEnum(RichEnum): "FN": {'description': 'False Negative'}, } +class StatisticalTestEnum(RichEnum): + """ + Statistical hypothesis tests, drawn primarily from the descendants of 'statistical hypothesis test' (OBI:0000673) in STATO. +This enum deliberately mixes abstraction levels: alongside concrete tests it retains STATO's grouping classes (GOODNESS_OF_FIT_TEST, HOMOSKEDASTICITY_TEST, SPHERICITY_TEST, POST_HOC_ANALYSIS, NON_PARAMETRIC_TEST and similar) so that a source reporting only "a test of normality was applied" can still be annotated. Prefer the most specific value that the source supports, and use a grouping value only when the specific test is genuinely not stated. +Several values are also repeated in the narrower enums below (TTestTypeEnum, NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum), which exist to constrain slot ranges. The duplicated meanings are intentional; from_meaning() resolves per enum class. + """ + # Enum members + STUDENTS_T_TEST = "STUDENTS_T_TEST" + ONE_SAMPLE_T_TEST = "ONE_SAMPLE_T_TEST" + PAIRED_T_TEST = "PAIRED_T_TEST" + TWO_SAMPLE_T_TEST_EQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE" + TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE" + YUEN_T_TEST = "YUEN_T_TEST" + Z_TEST = "Z_TEST" + ONE_SAMPLE_HOTELLING_T2_TEST = "ONE_SAMPLE_HOTELLING_T2_TEST" + TWO_SAMPLE_HOTELLING_T2_TEST = "TWO_SAMPLE_HOTELLING_T2_TEST" + ANOVA = "ANOVA" + ONE_WAY_ANOVA = "ONE_WAY_ANOVA" + TWO_WAY_ANOVA = "TWO_WAY_ANOVA" + MULTIWAY_ANOVA = "MULTIWAY_ANOVA" + REPEATED_MEASURES_ANOVA = "REPEATED_MEASURES_ANOVA" + MANOVA = "MANOVA" + ANCOVA = "ANCOVA" + F_TEST = "F_TEST" + MANN_WHITNEY_U_TEST = "MANN_WHITNEY_U_TEST" + WILCOXON_SIGNED_RANK_TEST = "WILCOXON_SIGNED_RANK_TEST" + KRUSKAL_WALLIS_TEST = "KRUSKAL_WALLIS_TEST" + FRIEDMAN_TEST = "FRIEDMAN_TEST" + SIGN_TEST = "SIGN_TEST" + CHI_SQUARE_TEST = "CHI_SQUARE_TEST" + PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE = "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE" + PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST = "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST" + YATES_CORRECTED_CHI_SQUARE_TEST = "YATES_CORRECTED_CHI_SQUARE_TEST" + CHI_SQUARE_TEST_FOR_HOMOGENEITY = "CHI_SQUARE_TEST_FOR_HOMOGENEITY" + FISHERS_EXACT_TEST = "FISHERS_EXACT_TEST" + BARNARDS_TEST = "BARNARDS_TEST" + MCNEMAR_TEST = "MCNEMAR_TEST" + COCHRANS_Q_TEST = "COCHRANS_Q_TEST" + COCHRAN_ARMITAGE_TEST_FOR_TREND = "COCHRAN_ARMITAGE_TEST_FOR_TREND" + COCHRAN_MANTEL_HAENSZEL_TEST = "COCHRAN_MANTEL_HAENSZEL_TEST" + EXACT_BINOMIAL_TEST = "EXACT_BINOMIAL_TEST" + HYPERGEOMETRIC_TEST = "HYPERGEOMETRIC_TEST" + TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES = "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES" + GOODNESS_OF_FIT_TEST = "GOODNESS_OF_FIT_TEST" + SHAPIRO_WILK_TEST = "SHAPIRO_WILK_TEST" + KOLMOGOROV_SMIRNOV_TEST = "KOLMOGOROV_SMIRNOV_TEST" + ANDERSON_DARLING_TEST = "ANDERSON_DARLING_TEST" + HOSMER_LEMESHOW_TEST = "HOSMER_LEMESHOW_TEST" + LEVENES_TEST = "LEVENES_TEST" + BARTLETTS_TEST = "BARTLETTS_TEST" + BROWN_FORSYTHE_TEST = "BROWN_FORSYTHE_TEST" + BREUSCH_PAGAN_TEST = "BREUSCH_PAGAN_TEST" + HOMOSKEDASTICITY_TEST = "HOMOSKEDASTICITY_TEST" + HOMOGENEITY_TEST = "HOMOGENEITY_TEST" + SPHERICITY_TEST = "SPHERICITY_TEST" + MAUCHLYS_TEST = "MAUCHLYS_TEST" + ODDS_RATIO_HOMOGENEITY_TEST = "ODDS_RATIO_HOMOGENEITY_TEST" + BRESLOW_DAY_TEST = "BRESLOW_DAY_TEST" + TARONES_TEST = "TARONES_TEST" + WOOLFS_TEST = "WOOLFS_TEST" + POST_HOC_ANALYSIS = "POST_HOC_ANALYSIS" + TUKEY_HSD_TEST = "TUKEY_HSD_TEST" + NEWMAN_KEULS_TEST = "NEWMAN_KEULS_TEST" + SCHEFFE_TEST = "SCHEFFE_TEST" + LEAST_SIGNIFICANT_DIFFERENCE_TEST = "LEAST_SIGNIFICANT_DIFFERENCE_TEST" + DUNNS_TEST = "DUNNS_TEST" + CONOVER_IMAN_TEST = "CONOVER_IMAN_TEST" + GRUBBS_TEST = "GRUBBS_TEST" + DIXON_Q_TEST = "DIXON_Q_TEST" + TIETJEN_MOORE_TEST = "TIETJEN_MOORE_TEST" + GENERALIZED_ESD_TEST = "GENERALIZED_ESD_TEST" + LIKELIHOOD_RATIO_TEST = "LIKELIHOOD_RATIO_TEST" + WALD_TEST = "WALD_TEST" + LOG_RANK_TEST = "LOG_RANK_TEST" + HARDY_WEINBERG_EQUILIBRIUM_TEST = "HARDY_WEINBERG_EQUILIBRIUM_TEST" + TRANSMISSION_DISEQUILIBRIUM_TEST = "TRANSMISSION_DISEQUILIBRIUM_TEST" + PEARSON_CORRELATION_TEST = "PEARSON_CORRELATION_TEST" + SPEARMAN_CORRELATION_TEST = "SPEARMAN_CORRELATION_TEST" + AB_TEST = "AB_TEST" + BETWEEN_GROUP_COMPARISON_TEST = "BETWEEN_GROUP_COMPARISON_TEST" + WITHIN_SUBJECT_COMPARISON_TEST = "WITHIN_SUBJECT_COMPARISON_TEST" + NON_PARAMETRIC_TEST = "NON_PARAMETRIC_TEST" + +# Set metadata after class creation to avoid it becoming an enum member +StatisticalTestEnum._metadata = { + "STUDENTS_T_TEST": {'description': "Test in which the test statistic follows a Student's t distribution under the null hypothesis; used when the population is assumed normal but the sample is small", 'meaning': 'OBI:0000739', 'aliases': ['t-test', 't-Test']}, + "ONE_SAMPLE_T_TEST": {'description': "Student's t-test comparing a sample mean against a specified population mean", 'meaning': 'STATO:0000302'}, + "PAIRED_T_TEST": {'description': "Student's t-test for differences between paired observations, as in a repeated measures design with two measurements per subject", 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE": {'description': 'Two-sample t-test comparing the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303', 'annotations': {'note': 'The bare terms "unpaired t-test" and "independent samples t-test" are ambiguous: they are attached here because this is the classical equal-variance form, but common software defaults to the Welch variant (R\'s t.test, scipy.stats.ttest_ind with equal_var=False). Choose TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE when the source did not assume equal variances.'}, 'aliases': ['independent samples t-test', 'unpaired t-test']}, + "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE": {'description': 'Two-sample t-test used when the variances of the two populations are not assumed equal', 'meaning': 'STATO:0000304', 'annotations': {'note': 'This is the default two-sample t-test in R and SciPy, so an unqualified "unpaired t-test" in a methods section often means this rather than TWO_SAMPLE_T_TEST_EQUAL_VARIANCE.'}, 'aliases': ["Welch's t-test"]}, + "YUEN_T_TEST": {'description': 'Robust two-sample t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, + "Z_TEST": {'description': 'Test evaluating the null hypothesis that the means of two populations are equal using a normal reference distribution', 'meaning': 'STATO:0000052'}, + "ONE_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate extension of the one-sample t-test comparing a vector of means against a reference vector', 'meaning': 'STATO:0000153'}, + "TWO_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate generalization of the two-sample t-test comparing mean vectors of two populations', 'meaning': 'STATO:0000098'}, + "ANOVA": {'description': 'Analysis of variance testing whether the means of several groups are equal', 'meaning': 'OBI:0200201', 'aliases': ['analysis of variance']}, + "ONE_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of a single independent variable', 'meaning': 'STATO:0000044'}, + "TWO_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of exactly two independent variables', 'meaning': 'STATO:0000045'}, + "MULTIWAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of more than two independent variables', 'meaning': 'STATO:0000048'}, + "REPEATED_MEASURES_ANOVA": {'description': 'Analysis of variance developed for non-independent observations arising from repeated measurements on the same experimental unit', 'meaning': 'STATO:0000260'}, + "MANOVA": {'description': 'Procedure for comparing multivariate sample means when there are two or more dependent variables', 'meaning': 'STATO:0000454'}, + "ANCOVA": {'description': 'Analysis of covariance evaluating whether population means of a dependent variable are equal across levels of a categorical independent variable while controlling for covariates', 'meaning': 'STATO:0000179', 'aliases': ['analysis of covariance']}, + "F_TEST": {'description': 'Test in which the test statistic follows an F-distribution under the null hypothesis', 'meaning': 'STATO:0000086'}, + "MANN_WHITNEY_U_TEST": {'description': 'Non-parametric test comparing two independent groups without assuming normally distributed values', 'meaning': 'STATO:0000076', 'aliases': ['Wilcoxon rank sum test', 'Mann-Whitney Test']}, + "WILCOXON_SIGNED_RANK_TEST": {'description': 'Non-parametric test of the null hypothesis that the median difference between paired observations is zero', 'meaning': 'STATO:0000092'}, + "KRUSKAL_WALLIS_TEST": {'description': 'Non-parametric test comparing two or more groups without assuming normally distributed values', 'meaning': 'STATO:0000094', 'aliases': ['Kruskal-Wallis Test']}, + "FRIEDMAN_TEST": {'description': 'Non-parametric test for differences among multiple related groups; extension of the Wilcoxon signed-rank test to more than two conditions', 'meaning': 'STATO:0000641'}, + "SIGN_TEST": {'description': 'Non-parametric test assessing whether the median of a population equals a specified value', 'meaning': 'STATO:0000644'}, + "CHI_SQUARE_TEST": {'description': 'Test in which the sampling distribution of the test statistic is a chi-square distribution under the null hypothesis', 'meaning': 'OBI:0200200'}, + "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE": {'description': 'Chi-square test of the independence of two categorical variables in a contingency table', 'meaning': 'STATO:0000081'}, + "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST": {'description': 'Chi-square test evaluating the goodness of fit of observed counts to an expected distribution', 'meaning': 'STATO:0000309'}, + "YATES_CORRECTED_CHI_SQUARE_TEST": {'description': 'Chi-square test of association between two dichotomous variables with a continuity correction', 'meaning': 'STATO:0000070', 'aliases': ["Yates' chi-squared test"]}, + "CHI_SQUARE_TEST_FOR_HOMOGENEITY": {'description': 'Test comparing proportions observed across multiple groups using contingency table frequencies', 'meaning': 'STATO:0000701'}, + "FISHERS_EXACT_TEST": {'description': 'Exact test for non-random association between two categorical variables', 'meaning': 'STATO:0000073'}, + "BARNARDS_TEST": {'description': "Exact unconditional test of association between two categorical variables, often more powerful than Fisher's exact test", 'meaning': 'STATO:0000310'}, + "MCNEMAR_TEST": {'description': 'Test applied to 2 x 2 contingency tables of paired nominal data to compare marginal frequencies', 'meaning': 'STATO:0000433'}, + "COCHRANS_Q_TEST": {'description': 'Test for unreplicated randomized block designs with a binary response and paired data', 'meaning': 'STATO:0000434'}, + "COCHRAN_ARMITAGE_TEST_FOR_TREND": {'description': 'Test for association between a dichotomous variable and an ordered categorical variable', 'meaning': 'STATO:0000148'}, + "COCHRAN_MANTEL_HAENSZEL_TEST": {'description': 'Test of independence between two categorical variables stratified by a third variable', 'meaning': 'STATO:0000074', 'aliases': ['Cochran-Mantel-Haenszel test']}, + "EXACT_BINOMIAL_TEST": {'description': 'Test of the statistical significance of deviations from a theoretically expected distribution of observations into two categories', 'meaning': 'STATO:0000298', 'aliases': ['binomial test']}, + "HYPERGEOMETRIC_TEST": {'description': 'Test evaluating whether a random variable follows a hypergeometric distribution; widely used for over-representation analysis', 'meaning': 'STATO:0000285', 'aliases': ['over-representation test']}, + "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES": {'description': 'Test evaluating whether a discrete predictor variable is associated with a discrete response variable', 'meaning': 'STATO:0000027'}, + "GOODNESS_OF_FIT_TEST": {'description': 'Test evaluating whether a sample distribution can be considered equivalent to a theoretical distribution', 'meaning': 'STATO:0000191'}, + "SHAPIRO_WILK_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a normally distributed population', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING_TEST": {'description': 'Goodness of fit test of whether a sample is drawn from a given probability distribution, weighting the tails more heavily', 'meaning': 'STATO:0000042'}, + "HOSMER_LEMESHOW_TEST": {'description': 'Goodness of fit test for logistic regression models comparing predicted probabilities against observed outcomes', 'meaning': 'STATO:0000653'}, + "LEVENES_TEST": {'description': 'Test of the null hypothesis of equality of variance across several populations', 'meaning': 'STATO:0000078'}, + "BARTLETTS_TEST": {'description': 'Test of whether k samples are drawn from populations with equal variances; sensitive to departures from normality', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE_TEST": {'description': 'Test of equality of group variances based on deviations from the group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN_TEST": {'description': 'Score test of the hypothesis of constant error variance against the alternative that error variance depends on the fitted values', 'meaning': 'STATO:0000284'}, + "HOMOSKEDASTICITY_TEST": {'description': 'Test evaluating whether variances from several random samples are similar', 'meaning': 'STATO:0000137', 'aliases': ['homoscedasticity test']}, + "HOMOGENEITY_TEST": {'description': 'Test evaluating whether a statistical measure computed from several random samples is similar', 'meaning': 'STATO:0000697'}, + "SPHERICITY_TEST": {'description': 'Test of the null hypothesis of equality of the variances of differences between levels of a repeated measures factor', 'meaning': 'STATO:0000131'}, + "MAUCHLYS_TEST": {'description': 'Test of sphericity in the context of repeated measures analysis of variance', 'meaning': 'STATO:0000199'}, + "ODDS_RATIO_HOMOGENEITY_TEST": {'description': 'Test of the null hypothesis that odds ratios are consistent across strata of a population', 'meaning': 'STATO:0000247'}, + "BRESLOW_DAY_TEST": {'description': 'Test of whether odds ratios are homogeneous across several 2x2 contingency tables', 'meaning': 'STATO:0000130'}, + "TARONES_TEST": {'description': 'Test of the null hypothesis that odds ratios are homogeneous across strata', 'meaning': 'STATO:0000136'}, + "WOOLFS_TEST": {'description': 'Test of the null hypothesis that odds ratios are the same across all strata of the population under investigation', 'meaning': 'STATO:0000246'}, + "POST_HOC_ANALYSIS": {'description': 'Test carried out following an analysis of variance that rejected the null hypothesis, to identify which groups differ', 'meaning': 'STATO:0000133'}, + "TUKEY_HSD_TEST": {'description': 'Post-hoc test following a significant ANOVA that determines which means differ, controlling the family-wise error rate', 'meaning': 'STATO:0000187', 'aliases': ['Tukey honestly significant difference test']}, + "NEWMAN_KEULS_TEST": {'description': 'Stepwise multiple comparison procedure identifying sample means that differ significantly, based on the studentized range statistic', 'meaning': 'STATO:0000261', 'aliases': ['Student-Newman-Keuls test']}, + "SCHEFFE_TEST": {'description': 'Conservative post-hoc procedure evaluating all possible contrasts while adjusting significance levels for multiple comparisons', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE_TEST": {'description': 'Post-hoc test for multiple comparisons of treatments by means of the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNNS_TEST": {'description': 'Non-parametric post-hoc test run after a Kruskal-Wallis test to identify which groups differ', 'meaning': 'STATO:0000490', 'aliases': ["Dunn's multiple comparison test"]}, + "CONOVER_IMAN_TEST": {'description': 'Post-hoc test for pairwise multiple comparisons using rank sums following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, + "GRUBBS_TEST": {'description': 'Test detecting a single outlier in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000441'}, + "DIXON_Q_TEST": {'description': 'Test detecting outliers in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000440'}, + "TIETJEN_MOORE_TEST": {'description': "Generalization of Grubbs' test allowing detection of more than one outlier", 'meaning': 'STATO:0000442'}, + "GENERALIZED_ESD_TEST": {'description': 'Outlier detection test with a built-in correction for multiple testing', 'meaning': 'STATO:0000443', 'aliases': ['generalized ESD test']}, + "LIKELIHOOD_RATIO_TEST": {'description': 'Test of whether there is evidence for moving from a simple model to a more complex model in which the simple model is nested', 'meaning': 'OBI:0000861'}, + "WALD_TEST": {'description': 'Test evaluating whether one or more model coefficients differ from zero, given their variance-covariance matrix', 'meaning': 'STATO:0000559', 'aliases': ['Wald chi-squared test']}, + "LOG_RANK_TEST": {'description': 'Test comparing the survival distributions of two or more groups', 'meaning': 'STATO:0000640', 'aliases': ['logrank test']}, + "HARDY_WEINBERG_EQUILIBRIUM_TEST": {'description': "Test of whether a population's allele proportions are in Hardy-Weinberg equilibrium, often used as a genotyping quality control", 'meaning': 'STATO:0000181'}, + "TRANSMISSION_DISEQUILIBRIUM_TEST": {'description': 'Test for genetic linkage between a genetic marker and a trait in families, robust to population structure', 'meaning': 'STATO:0000275'}, + "PEARSON_CORRELATION_TEST": {'description': "Test of whether two continuous variables are linearly associated, based on Pearson's correlation coefficient", 'meaning': 'NCIT:C53244'}, + "SPEARMAN_CORRELATION_TEST": {'description': "Non-parametric test of whether two variables are monotonically associated, based on Spearman's rank correlation coefficient", 'meaning': 'NCIT:C53249'}, + "AB_TEST": {'description': 'Statistical testing comparing two types of treatments or interventions', 'meaning': 'STATO:0000715'}, + "BETWEEN_GROUP_COMPARISON_TEST": {'description': 'Test detecting differences between the means computed for each study group population', 'meaning': 'STATO:0000279'}, + "WITHIN_SUBJECT_COMPARISON_TEST": {'description': 'Test evaluating whether a change occurs within one experimental unit over time following a treatment or event', 'meaning': 'STATO:0000202'}, + "NON_PARAMETRIC_TEST": {'description': 'Test making no assumption about the underlying data distribution', 'meaning': 'STATO:0000198'}, +} + +class TTestTypeEnum(RichEnum): + """ + Variants of Student's t-test + """ + # Enum members + ONE_SAMPLE = "ONE_SAMPLE" + PAIRED = "PAIRED" + TWO_SAMPLE_EQUAL_VARIANCE = "TWO_SAMPLE_EQUAL_VARIANCE" + TWO_SAMPLE_UNEQUAL_VARIANCE = "TWO_SAMPLE_UNEQUAL_VARIANCE" + TRIMMED_MEANS = "TRIMMED_MEANS" + +# Set metadata after class creation to avoid it becoming an enum member +TTestTypeEnum._metadata = { + "ONE_SAMPLE": {'description': 'Compares a sample mean against a specified population mean', 'meaning': 'STATO:0000302'}, + "PAIRED": {'description': 'Compares paired observations from the same experimental units', 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_EQUAL_VARIANCE": {'description': 'Compares the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303'}, + "TWO_SAMPLE_UNEQUAL_VARIANCE": {'description': "Compares the means of two independent samples with unequal variances (Welch's t-test)", 'meaning': 'STATO:0000304'}, + "TRIMMED_MEANS": {'description': 'Robust t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, +} + +class NormalityTestEnum(RichEnum): + """ + Goodness of fit tests commonly used to assess whether a sample is drawn from a normally distributed population + """ + # Enum members + SHAPIRO_WILK = "SHAPIRO_WILK" + KOLMOGOROV_SMIRNOV = "KOLMOGOROV_SMIRNOV" + ANDERSON_DARLING = "ANDERSON_DARLING" + +# Set metadata after class creation to avoid it becoming an enum member +NormalityTestEnum._metadata = { + "SHAPIRO_WILK": {'description': 'Tests the null hypothesis that a sample comes from a normal distribution', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV": {'description': 'Tests whether a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING": {'description': 'Tests whether a sample is drawn from a given probability distribution, with added sensitivity in the tails', 'meaning': 'STATO:0000042'}, +} + +class HomoscedasticityTestEnum(RichEnum): + """ + Tests evaluating equality of variances across groups or samples + """ + # Enum members + LEVENE = "LEVENE" + BARTLETT = "BARTLETT" + BROWN_FORSYTHE = "BROWN_FORSYTHE" + BREUSCH_PAGAN = "BREUSCH_PAGAN" + +# Set metadata after class creation to avoid it becoming an enum member +HomoscedasticityTestEnum._metadata = { + "LEVENE": {'description': 'Tests the null hypothesis of equality of variance in several populations', 'meaning': 'STATO:0000078'}, + "BARTLETT": {'description': 'Tests whether k samples come from populations with equal variances', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE": {'description': 'Tests equality of group variances using deviations from group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN": {'description': 'Tests for heteroscedasticity of regression residuals', 'meaning': 'STATO:0000284'}, +} + +class PostHocTestEnum(RichEnum): + """ + Multiple comparison procedures carried out after a significant omnibus test such as an ANOVA or Kruskal-Wallis test + """ + # Enum members + TUKEY_HSD = "TUKEY_HSD" + NEWMAN_KEULS = "NEWMAN_KEULS" + SCHEFFE = "SCHEFFE" + LEAST_SIGNIFICANT_DIFFERENCE = "LEAST_SIGNIFICANT_DIFFERENCE" + DUNN = "DUNN" + CONOVER_IMAN = "CONOVER_IMAN" + +# Set metadata after class creation to avoid it becoming an enum member +PostHocTestEnum._metadata = { + "TUKEY_HSD": {'description': 'Determines which means differ after a significant ANOVA while controlling the family-wise error rate', 'meaning': 'STATO:0000187'}, + "NEWMAN_KEULS": {'description': 'Stepwise multiple comparison procedure based on the studentized range', 'meaning': 'STATO:0000261'}, + "SCHEFFE": {'description': 'Conservative procedure evaluating all possible contrasts', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE": {'description': 'Pairwise comparisons using the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNN": {'description': 'Non-parametric post-hoc test following a Kruskal-Wallis test', 'meaning': 'STATO:0000490'}, + "CONOVER_IMAN": {'description': 'Pairwise rank-sum comparisons following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, +} + +class MultipleTestingCorrectionEnum(RichEnum): + """ + Methods for adjusting p-values or significance thresholds when many hypotheses are tested simultaneously. +As with StatisticalTestEnum, concrete methods (BONFERRONI, HOLM_BONFERRONI, BENJAMINI_HOCHBERG) sit alongside the error-rate classes they belong to (FAMILY_WISE_ERROR_RATE, FALSE_DISCOVERY_RATE) and procedural classes (SIMULTANEOUS, SEQUENTIAL). The classes are intended for sources that report only "FDR-corrected" without naming a procedure. + """ + # Enum members + BONFERRONI = "BONFERRONI" + HOLM_BONFERRONI = "HOLM_BONFERRONI" + BENJAMINI_HOCHBERG = "BENJAMINI_HOCHBERG" + BENJAMINI_YEKUTIELI = "BENJAMINI_YEKUTIELI" + HOLM_FDR = "HOLM_FDR" + HOMMEL_FDR = "HOMMEL_FDR" + FAMILY_WISE_ERROR_RATE = "FAMILY_WISE_ERROR_RATE" + FALSE_DISCOVERY_RATE = "FALSE_DISCOVERY_RATE" + SIMULTANEOUS = "SIMULTANEOUS" + SEQUENTIAL = "SEQUENTIAL" + ALPHA_SPENDING = "ALPHA_SPENDING" + ALPHA_INVESTING = "ALPHA_INVESTING" + NONE = "NONE" + +# Set metadata after class creation to avoid it becoming an enum member +MultipleTestingCorrectionEnum._metadata = { + "BONFERRONI": {'description': 'Divides the desired family-wise significance level by the number of comparisons made', 'meaning': 'NCIT:C61594', 'aliases': ['Bonferroni correction']}, + "HOLM_BONFERRONI": {'description': 'Sequentially rejective closed-test procedure controlling the family-wise error rate', 'meaning': 'OBI:0200066', 'aliases': ['Holm correction']}, + "BENJAMINI_HOCHBERG": {'description': 'Sequential p-value procedure controlling the false discovery rate under independence or positive dependence', 'meaning': 'OBI:0200036', 'aliases': ['BH', 'BH-FDR']}, + "BENJAMINI_YEKUTIELI": {'description': 'False discovery rate procedure valid under arbitrary dependence between tests', 'meaning': 'OBI:0200049', 'aliases': ['BY']}, + "HOLM_FDR": {'description': 'Application of the Holm p-value procedure to correct false discovery rate. Note that Holm\'s step-down procedure controls the family-wise error rate, not the false discovery rate; the "false discovery rate" wording is STATO\'s own label for this term. Prefer HOLM_BONFERRONI unless you specifically need the STATO term.', 'meaning': 'STATO:0000551'}, + "HOMMEL_FDR": {'description': 'Application of the Hommel p-value procedure to correct false discovery rate', 'meaning': 'STATO:0000552'}, + "FAMILY_WISE_ERROR_RATE": {'description': 'Procedure controlling the probability of making at least one false positive across a family of tests', 'meaning': 'OBI:0200073', 'aliases': ['FWER correction']}, + "FALSE_DISCOVERY_RATE": {'description': 'Procedure controlling the expected proportion of false positives among rejected hypotheses', 'meaning': 'OBI:0200163'}, + "SIMULTANEOUS": {'description': 'Correction method applying a single adjustment across all tests simultaneously', 'meaning': 'STATO:0000601'}, + "SEQUENTIAL": {'description': 'Correction method applying adjustments in a stepwise, ordered fashion', 'meaning': 'STATO:0000602'}, + "ALPHA_SPENDING": {'description': 'Sequential procedure allocating portions of the overall type I error rate across interim analyses', 'meaning': 'STATO:0000605'}, + "ALPHA_INVESTING": {'description': 'Sequential procedure that earns and spends alpha as hypotheses are tested', 'meaning': 'STATO:0000604'}, + "NONE": {'description': 'No adjustment made for multiple testing', 'annotations': {'note': 'No appropriate ontology term found for absence of correction'}}, +} + +class CorrelationCoefficientEnum(RichEnum): + """ + Coefficients quantifying the strength of association between two variables + """ + # Enum members + PEARSON = "PEARSON" + SPEARMAN = "SPEARMAN" + KENDALL = "KENDALL" + +# Set metadata after class creation to avoid it becoming an enum member +CorrelationCoefficientEnum._metadata = { + "PEARSON": {'description': 'Evaluates the strength of linear association between two continuous variables', 'meaning': 'STATO:0000280', 'aliases': ["Pearson's r"]}, + "SPEARMAN": {'description': 'Non-parametric measure of statistical dependence between two ranked variables', 'meaning': 'STATO:0000201', 'aliases': ["Spearman's rho"]}, + "KENDALL": {'description': 'Correlation coefficient between two ordinal or ranked variables', 'meaning': 'STATO:0000240', 'aliases': ["Kendall's tau"]}, +} + +class TestTailednessEnum(RichEnum): + """ + Whether a statistical test allocates the significance level to one or both tails of the reference distribution + """ + # Enum members + ONE_TAILED = "ONE_TAILED" + TWO_TAILED = "TWO_TAILED" + +# Set metadata after class creation to avoid it becoming an enum member +TestTailednessEnum._metadata = { + "ONE_TAILED": {'description': 'Allocates all of the significance level to one tail, evaluating a directional alternative hypothesis', 'meaning': 'STATO:0000286', 'aliases': ['one-sided test']}, + "TWO_TAILED": {'description': 'Allocates half of the significance level to each tail, evaluating a non-directional alternative hypothesis', 'meaning': 'STATO:0000287', 'aliases': ['two-sided test']}, +} + +class DistributionalAssumptionEnum(RichEnum): + """ + Whether an inference procedure assumes a parametric form for the underlying population distribution. +Note the deliberate type approximation: the values denote a property of a procedure, but the available ontology terms (NCIT:C53230, STATO:0000198) denote classes of test. Neither PATO nor OBI currently has a quality or characteristic term for "parametric", so the test classes are used as the closest available referent. + """ + # Enum members + PARAMETRIC = "PARAMETRIC" + NON_PARAMETRIC = "NON_PARAMETRIC" + +# Set metadata after class creation to avoid it becoming an enum member +DistributionalAssumptionEnum._metadata = { + "PARAMETRIC": {'description': 'Procedure that incorporates assumptions about the population probability distribution', 'meaning': 'NCIT:C53230'}, + "NON_PARAMETRIC": {'description': 'Procedure that makes no assumption about the underlying data distribution', 'meaning': 'STATO:0000198', 'aliases': ['Non-Parametric Test']}, +} + +class ComparisonObjectiveEnum(RichEnum): + """ + The objective of a between-group comparison, particularly in the design of controlled trials + """ + # Enum members + SUPERIORITY = "SUPERIORITY" + NON_INFERIORITY = "NON_INFERIORITY" + EQUIVALENCE = "EQUIVALENCE" + +# Set metadata after class creation to avoid it becoming an enum member +ComparisonObjectiveEnum._metadata = { + "SUPERIORITY": {'description': 'Comparison intended to show that the difference in effects exceeds a prespecified threshold of meaningful benefit', 'meaning': 'STATO:0000718'}, + "NON_INFERIORITY": {'description': 'Comparison intended to show that any difference in effects lies below a prespecified threshold of meaningful harm', 'meaning': 'STATO:0000716'}, + "EQUIVALENCE": {'description': 'Comparison intended to show that the absolute difference in effects is smaller than a prespecified threshold', 'meaning': 'STATO:0000717'}, +} + class PersonStatusEnum(RichEnum): """ Vital status of a person (living or deceased) @@ -15338,6 +15674,720 @@ class FMRIParadigmTypeEnum(RichEnum): "NATURALISTIC": {'description': 'Ecologically valid stimuli (movies, stories)', 'meaning': 'EDAM:topic_3678', 'annotations': {'stimulus_type': 'complex, realistic', 'advantage': 'ecological validity', 'analysis': 'inter-subject correlation'}, 'aliases': ['Experimental design and studies']}, } +class DICOMModalityEnum(RichEnum): + """ + Acquisition modality codes from DICOM PS3.16 Context ID 29 (Acquisition Modality), the defined terms for the Modality (0008,0060) attribute. The permissible value is the DICOM code itself; the title is the NCI Thesaurus label where a mapping exists and the DICOM code meaning is carried as an alias when it differs. Where an NCI Thesaurus term exists it is the meaning and the DCM code is an exact mapping; otherwise the DCM code is the meaning, so every value carries its DCM code in one of the two fields. Waveform modalities (ECG, EEG, etc.) are defined in CID 34 and are not included here, nor are the non-acquisition values that also appear in Modality (0008,0060) such as SR, PR, SEG, KO, DOC, OT and the RT objects. + """ + # Enum members + AR = "AR" + BI = "BI" + BMD = "BMD" + CR = "CR" + CT = "CT" + CFM = "CFM" + DMS = "DMS" + DG = "DG" + DX = "DX" + ES = "ES" + XC = "XC" + GM = "GM" + IO = "IO" + IVOCT = "IVOCT" + IVUS = "IVUS" + KER = "KER" + LS = "LS" + LEN = "LEN" + MR = "MR" + MG = "MG" + NM = "NM" + OAM = "OAM" + OPM = "OPM" + OP = "OP" + OPT = "OPT" + OPTBSV = "OPTBSV" + OPTENF = "OPTENF" + OPV = "OPV" + OCT = "OCT" + OSS = "OSS" + PX = "PX" + PA = "PA" + PT = "PT" + RF = "RF" + RG = "RG" + RTIMAGE = "RTIMAGE" + SM = "SM" + SRF = "SRF" + TG = "TG" + US = "US" + BDUS = "BDUS" + VA = "VA" + XA = "XA" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMModalityEnum._metadata = { + "AR": {'description': 'Automated measurement of refractive error of the eye', 'meaning': 'NCIT:C176330'}, + "BI": {'description': 'Imaging based on magnetic fields produced by the body, such as magnetoencephalography', 'meaning': 'DCM:BI'}, + "BMD": {'description': 'Measurement of bone mineral content and density, such as DXA', 'meaning': 'NCIT:C190514'}, + "CR": {'description': 'X-ray imaging using a phosphor imaging plate read out to a digital image', 'meaning': 'NCIT:C190521'}, + "CT": {'description': 'Cross-sectional X-ray imaging reconstructed by computer', 'meaning': 'NCIT:C17204'}, + "CFM": {'description': 'Laser-scanning microscopy that rejects out-of-focus light', 'meaning': 'NCIT:C17753'}, + "DMS": {'description': 'Non-invasive microscopic examination of the skin surface', 'meaning': 'NCIT:C116478'}, + "DG": {'description': 'Transillumination imaging of tissue, historically used for the breast', 'meaning': 'DCM:DG'}, + "DX": {'description': 'Projection X-ray imaging acquired directly with a digital detector', 'meaning': 'NCIT:C18001'}, + "ES": {'description': 'Imaging from an endoscope inserted into a body cavity or organ, including laryngoscopy and video endoscopy', 'meaning': 'NCIT:C16546', 'aliases': ['Endoscopy']}, + "XC": {'description': 'Visible-light photography of the patient with an external camera', 'meaning': 'DCM:XC'}, + "GM": {'description': 'General microscopy not otherwise classified', 'meaning': 'NCIT:C16853', 'aliases': ['General Microscopy']}, + "IO": {'description': 'Dental X-ray imaging with the detector inside the mouth', 'meaning': 'NCIT:C190548', 'aliases': ['Intra-oral Radiography']}, + "IVOCT": {'description': 'Catheter-based optical coherence tomography of blood vessels', 'meaning': 'NCIT:C190550'}, + "IVUS": {'description': 'Catheter-based ultrasound imaging of blood vessels', 'meaning': 'NCIT:C99535'}, + "KER": {'description': 'Measurement of the curvature of the anterior corneal surface', 'meaning': 'NCIT:C190551'}, + "LS": {'description': 'Surface geometry acquired with a laser scanner', 'meaning': 'DCM:LS'}, + "LEN": {'description': 'Measurement of the optical properties of spectacle lenses', 'meaning': 'DCM:LEN'}, + "MR": {'description': 'Imaging using radiofrequency pulses in a strong magnetic field', 'meaning': 'NCIT:C16809', 'aliases': ['Magnetic Resonance']}, + "MG": {'description': 'Low-dose X-ray imaging of the breast', 'meaning': 'NCIT:C16818'}, + "NM": {'description': 'Gamma camera imaging of an administered radiotracer, including planar and SPECT', 'meaning': 'NCIT:C62667', 'aliases': ['Nuclear Medicine']}, + "OAM": {'description': 'Measurement of axial dimensions of the eye, such as axial length', 'meaning': 'DCM:OAM'}, + "OPM": {'description': 'Topographic or thickness maps of ocular structures', 'meaning': 'DCM:OPM'}, + "OP": {'description': 'Photography of the eye, including fundus and slit lamp photography', 'meaning': 'NCIT:C190559'}, + "OPT": {'description': 'Optical coherence tomography of the eye, including retinal OCT B-scans', 'meaning': 'NCIT:C190561'}, + "OPTBSV": {'description': 'Volume analysis derived from ophthalmic OCT B-scans', 'meaning': 'DCM:OPTBSV'}, + "OPTENF": {'description': 'Transverse (en face) images derived from ophthalmic OCT volumes', 'meaning': 'NCIT:C190563', 'aliases': ['Ophthalmic Tomography En Face']}, + "OPV": {'description': 'Perimetry results describing the visual field', 'meaning': 'DCM:OPV'}, + "OCT": {'description': 'Interferometric imaging using near-infrared light, used outside ophthalmology', 'meaning': 'NCIT:C20828'}, + "OSS": {'description': 'Surface geometry acquired with an optical (non-laser) scanner', 'meaning': 'DCM:OSS'}, + "PX": {'description': 'Dental panoramic radiography of the jaws', 'meaning': 'DCM:PX'}, + "PA": {'description': 'Imaging of ultrasonic waves generated by optical absorption of pulsed light', 'meaning': 'NCIT:C116749', 'aliases': ['Photoacoustic']}, + "PT": {'description': 'Tomographic imaging of a positron-emitting radiotracer', 'meaning': 'NCIT:C17007'}, + "RF": {'description': 'Real-time X-ray imaging, including radiofluoroscopy', 'meaning': 'NCIT:C16588', 'aliases': ['Radiofluoroscopy']}, + "RG": {'description': 'Conventional film or screen radiographic imaging', 'meaning': 'NCIT:C38101', 'aliases': ['Radiographic imaging']}, + "RTIMAGE": {'description': 'Radiotherapy portal or setup image', 'meaning': 'DCM:RTIMAGE'}, + "SM": {'description': 'Whole slide imaging of microscope slides', 'meaning': 'DCM:SM'}, + "SRF": {'description': 'Refraction measured with patient feedback', 'meaning': 'DCM:SRF'}, + "TG": {'description': 'Imaging of body surface temperature', 'meaning': 'NCIT:C17194'}, + "US": {'description': 'Imaging using high-frequency sound waves, including static images and cine loops', 'meaning': 'NCIT:C17230', 'aliases': ['Ultrasound']}, + "BDUS": {'description': 'Quantitative ultrasound estimation of bone mineral density', 'meaning': 'NCIT:C190516'}, + "VA": {'description': 'Measurement of the sharpness of vision', 'meaning': 'NCIT:C87149'}, + "XA": {'description': 'X-ray imaging of blood vessels with contrast, including digital subtraction angiography', 'meaning': 'NCIT:C20080'}, +} + +class DICOMValueRepresentationEnum(RichEnum): + """ + The Value Representations (VRs) defined in DICOM PS3.5 Section 6.2, which specify the data type and format of the value of a data element. Tag validation tools check that each attribute is encoded with the VR required by the data dictionary. Permissible values are the two-letter DICOM VR codes. + """ + # Enum members + AE = "AE" + AS = "AS" + AT = "AT" + CS = "CS" + DA = "DA" + DS = "DS" + DT = "DT" + FL = "FL" + FD = "FD" + IS = "IS" + LO = "LO" + LT = "LT" + OB = "OB" + OD = "OD" + OF = "OF" + OL = "OL" + OV = "OV" + OW = "OW" + PN = "PN" + SH = "SH" + SL = "SL" + SQ = "SQ" + SS = "SS" + ST = "ST" + SV = "SV" + TM = "TM" + UC = "UC" + UI = "UI" + UL = "UL" + UN = "UN" + UR = "UR" + US = "US" + UT = "UT" + UV = "UV" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMValueRepresentationEnum._metadata = { + "AE": {'description': 'A string identifying an Application Entity; 16 bytes maximum', 'annotations': {'category': 'string'}}, + "AS": {'description': 'Age in the format nnnD, nnnW, nnnM or nnnY (days, weeks, months, years)', 'annotations': {'category': 'string'}}, + "AT": {'description': 'An ordered pair of 16-bit unsigned integers that is the value of a data element tag', 'annotations': {'category': 'binary'}}, + "CS": {'description': 'A string identifying a controlled concept; uppercase letters, digits, space and underscore, 16 bytes maximum', 'annotations': {'category': 'string'}}, + "DA": {'description': 'A date in the format YYYYMMDD', 'annotations': {'category': 'date_time'}}, + "DS": {'description': 'A string representing a fixed point or floating point number', 'annotations': {'category': 'string'}}, + "DT": {'description': 'A concatenated date-time string of the form YYYYMMDDHHMMSS.FFFFFF&ZZXX', 'annotations': {'category': 'date_time'}}, + "FL": {'description': 'Single precision IEEE 754 binary32 floating point value', 'annotations': {'category': 'binary'}}, + "FD": {'description': 'Double precision IEEE 754 binary64 floating point value', 'annotations': {'category': 'binary'}}, + "IS": {'description': 'A string representing a base-10 integer', 'annotations': {'category': 'string'}}, + "LO": {'description': 'A character string of up to 64 characters', 'annotations': {'category': 'string'}}, + "LT": {'description': 'A character string that may contain one or more paragraphs, up to 10240 characters', 'annotations': {'category': 'text'}}, + "OB": {'description': 'An octet stream whose encoding is specified by the negotiated transfer syntax', 'annotations': {'category': 'binary'}}, + "OD": {'description': 'A stream of IEEE 754 binary64 values', 'annotations': {'category': 'binary'}}, + "OF": {'description': 'A stream of IEEE 754 binary32 values', 'annotations': {'category': 'binary'}}, + "OL": {'description': 'A stream of 32-bit words', 'annotations': {'category': 'binary'}}, + "OV": {'description': 'A stream of 64-bit words', 'annotations': {'category': 'binary'}}, + "OW": {'description': 'A stream of 16-bit words; commonly used for Pixel Data', 'annotations': {'category': 'binary'}}, + "PN": {'description': 'A character string encoded using a five-component convention (family, given, middle, prefix, suffix)', 'annotations': {'category': 'string'}}, + "SH": {'description': 'A character string of up to 16 characters', 'annotations': {'category': 'string'}}, + "SL": {'description': "Signed 32-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "SQ": {'description': 'A sequence of zero or more items, each of which is a nested data set', 'annotations': {'category': 'sequence'}}, + "SS": {'description': "Signed 16-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "ST": {'description': 'A character string that may contain one or more paragraphs, up to 1024 characters', 'annotations': {'category': 'text'}}, + "SV": {'description': 'Signed 64-bit integer', 'annotations': {'category': 'binary'}}, + "TM": {'description': 'A time in the format HHMMSS.FFFFFF', 'annotations': {'category': 'date_time'}}, + "UC": {'description': 'A character string of unlimited length', 'annotations': {'category': 'string'}}, + "UI": {'description': 'A string of numeric components separated by periods, up to 64 characters, used for UIDs such as SOP Instance UIDs and transfer syntax UIDs', 'annotations': {'category': 'string'}}, + "UL": {'description': 'Unsigned 32-bit integer', 'annotations': {'category': 'binary'}}, + "UN": {'description': 'An octet stream whose encoding of the contents is unknown', 'annotations': {'category': 'binary'}}, + "UR": {'description': 'A string identifying a URI or URL as defined in RFC 3986', 'annotations': {'category': 'string'}}, + "US": {'description': 'Unsigned 16-bit integer', 'annotations': {'category': 'binary'}}, + "UT": {'description': 'A character string that may contain one or more paragraphs, of unlimited length', 'annotations': {'category': 'text'}}, + "UV": {'description': 'Unsigned 64-bit integer', 'annotations': {'category': 'binary'}}, +} + +class DICOMAttributeTypeEnum(RichEnum): + """ + Attribute requirement types defined in DICOM PS3.5 Section 7.4, which state whether an attribute must be present in a data set and whether it may have a zero-length value. Conformance checkers report missing Type 1 and Type 2 attributes as errors. These types also determine which de-identification action (D, Z or X) may be applied to an attribute. + """ + # Enum members + TYPE_1 = "TYPE_1" + TYPE_1C = "TYPE_1C" + TYPE_2 = "TYPE_2" + TYPE_2C = "TYPE_2C" + TYPE_3 = "TYPE_3" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMAttributeTypeEnum._metadata = { + "TYPE_1": {'description': 'The attribute shall be present with a valid non-zero-length value', 'aliases': ['1']}, + "TYPE_1C": {'description': 'The attribute shall be present with a valid value when a specified condition is met, and shall not be present otherwise', 'aliases': ['1C']}, + "TYPE_2": {'description': 'The attribute shall be present but may have a zero-length value if the value is unknown', 'aliases': ['2']}, + "TYPE_2C": {'description': 'The attribute shall be present, possibly with zero length, when a specified condition is met', 'aliases': ['2C']}, + "TYPE_3": {'description': 'The attribute is optional and may be absent or present with or without a value', 'aliases': ['3']}, +} + +class DICOMTransferSyntaxEnum(RichEnum): + """ + Transfer syntaxes registered in DICOM PS3.6 Annex A that define the byte ordering, VR encoding and pixel data compression of a DICOM data set. Pixel data validation includes confirming that decompression from a lossy or lossless transfer syntax yields the expected bit depth and that no unintended data loss occurred. Video transfer syntaxes (MPEG-2, H.264, HEVC) are used for endoscopy and ultrasound cine acquisitions. Fragmentable variants of the MPEG transfer syntaxes and retired JPEG processes are omitted; the full registry is at the see_also link. + """ + # Enum members + IMPLICIT_VR_LITTLE_ENDIAN = "IMPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_LITTLE_ENDIAN = "EXPLICIT_VR_LITTLE_ENDIAN" + ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN = "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN" + DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN = "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_BIG_ENDIAN = "EXPLICIT_VR_BIG_ENDIAN" + JPEG_BASELINE_PROCESS_1 = "JPEG_BASELINE_PROCESS_1" + JPEG_EXTENDED_PROCESS_2_4 = "JPEG_EXTENDED_PROCESS_2_4" + JPEG_LOSSLESS_PROCESS_14 = "JPEG_LOSSLESS_PROCESS_14" + JPEG_LOSSLESS_PROCESS_14_SV1 = "JPEG_LOSSLESS_PROCESS_14_SV1" + JPEG_LS_LOSSLESS = "JPEG_LS_LOSSLESS" + JPEG_LS_NEAR_LOSSLESS = "JPEG_LS_NEAR_LOSSLESS" + JPEG_2000_LOSSLESS_ONLY = "JPEG_2000_LOSSLESS_ONLY" + JPEG_2000 = "JPEG_2000" + JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY = "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY" + JPEG_2000_MULTICOMPONENT = "JPEG_2000_MULTICOMPONENT" + JPIP_REFERENCED = "JPIP_REFERENCED" + JPIP_REFERENCED_DEFLATE = "JPIP_REFERENCED_DEFLATE" + MPEG2_MAIN_PROFILE_MAIN_LEVEL = "MPEG2_MAIN_PROFILE_MAIN_LEVEL" + MPEG2_MAIN_PROFILE_HIGH_LEVEL = "MPEG2_MAIN_PROFILE_HIGH_LEVEL" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D" + MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2 = "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2" + HEVC_H265_MAIN_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_PROFILE_LEVEL_5_1" + HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1" + JPEG_XL_LOSSLESS = "JPEG_XL_LOSSLESS" + JPEG_XL_JPEG_RECOMPRESSION = "JPEG_XL_JPEG_RECOMPRESSION" + JPEG_XL = "JPEG_XL" + HTJ2K_LOSSLESS_ONLY = "HTJ2K_LOSSLESS_ONLY" + HTJ2K_RPCL_LOSSLESS_ONLY = "HTJ2K_RPCL_LOSSLESS_ONLY" + HTJ2K = "HTJ2K" + RLE_LOSSLESS = "RLE_LOSSLESS" + SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO" + SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMTransferSyntaxEnum._metadata = { + "IMPLICIT_VR_LITTLE_ENDIAN": {'description': 'Default transfer syntax for DICOM; VRs are looked up from the data dictionary rather than encoded', 'annotations': {'uid': '1.2.840.10008.1.2', 'compression': 'none'}}, + "EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed encoding with VRs explicitly encoded in each data element', 'annotations': {'uid': '1.2.840.10008.1.2.1', 'compression': 'none'}}, + "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed pixel data encapsulated in fragments, one per frame', 'annotations': {'uid': '1.2.840.10008.1.2.1.98', 'compression': 'none'}}, + "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Explicit VR Little Endian data set compressed as a whole with the deflate algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.1.99', 'compression': 'lossless'}}, + "EXPLICIT_VR_BIG_ENDIAN": {'description': 'Big endian byte ordering with explicit VRs; retired but still encountered in legacy archives', 'annotations': {'uid': '1.2.840.10008.1.2.2', 'compression': 'none', 'retired': 'true'}}, + "JPEG_BASELINE_PROCESS_1": {'description': 'Default transfer syntax for lossy JPEG 8-bit image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.50', 'compression': 'lossy'}}, + "JPEG_EXTENDED_PROCESS_2_4": {'description': 'Default transfer syntax for lossy JPEG 12-bit image compression (Process 4 only)', 'annotations': {'uid': '1.2.840.10008.1.2.4.51', 'compression': 'lossy'}}, + "JPEG_LOSSLESS_PROCESS_14": {'description': 'Lossless JPEG compression using any predictor', 'annotations': {'uid': '1.2.840.10008.1.2.4.57', 'compression': 'lossless'}}, + "JPEG_LOSSLESS_PROCESS_14_SV1": {'description': 'Default transfer syntax for lossless JPEG image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.70', 'compression': 'lossless'}}, + "JPEG_LS_LOSSLESS": {'description': 'Lossless compression using the JPEG-LS (ISO 14495) algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.4.80', 'compression': 'lossless'}}, + "JPEG_LS_NEAR_LOSSLESS": {'description': 'Near-lossless JPEG-LS compression with a bounded per-pixel error', 'annotations': {'uid': '1.2.840.10008.1.2.4.81', 'compression': 'lossy'}}, + "JPEG_2000_LOSSLESS_ONLY": {'description': 'JPEG 2000 wavelet compression restricted to reversible (lossless) mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.90', 'compression': 'lossless'}}, + "JPEG_2000": {'description': 'JPEG 2000 wavelet compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.91', 'compression': 'lossy or lossless'}}, + "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY": {'description': 'JPEG 2000 Part 2 multi-component transform, reversible mode only', 'annotations': {'uid': '1.2.840.10008.1.2.4.92', 'compression': 'lossless'}}, + "JPEG_2000_MULTICOMPONENT": {'description': 'JPEG 2000 Part 2 multi-component transform, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.93', 'compression': 'lossy or lossless'}}, + "JPIP_REFERENCED": {'description': 'Pixel data referenced via a JPEG 2000 Interactive Protocol URL rather than encoded in the data set', 'annotations': {'uid': '1.2.840.10008.1.2.4.94', 'compression': 'referenced'}}, + "JPIP_REFERENCED_DEFLATE": {'description': 'JPIP referenced pixel data with the remaining data set deflated', 'annotations': {'uid': '1.2.840.10008.1.2.4.95', 'compression': 'referenced'}}, + "MPEG2_MAIN_PROFILE_MAIN_LEVEL": {'description': 'MPEG-2 video compression for standard definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.100', 'compression': 'lossy', 'media': 'video'}}, + "MPEG2_MAIN_PROFILE_HIGH_LEVEL": {'description': 'MPEG-2 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.101', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.102', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression constrained for Blu-ray Disc compatibility', 'annotations': {'uid': '1.2.840.10008.1.2.4.103', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D": {'description': 'H.264 video compression for 2D video at higher frame rates and resolutions', 'annotations': {'uid': '1.2.840.10008.1.2.4.104', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D": {'description': 'H.264 video compression for 3D (stereoscopic) video', 'annotations': {'uid': '1.2.840.10008.1.2.4.105', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2": {'description': 'H.264 stereo high profile for stereoscopic video', 'annotations': {'uid': '1.2.840.10008.1.2.4.106', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 8-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.107', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 10-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.108', 'compression': 'lossy', 'media': 'video'}}, + "JPEG_XL_LOSSLESS": {'description': 'JPEG XL compression restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.110', 'compression': 'lossless'}}, + "JPEG_XL_JPEG_RECOMPRESSION": {'description': 'Lossless recompression of existing JPEG codestreams using JPEG XL', 'annotations': {'uid': '1.2.840.10008.1.2.4.111', 'compression': 'lossless'}}, + "JPEG_XL": {'description': 'JPEG XL compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.112', 'compression': 'lossy or lossless'}}, + "HTJ2K_LOSSLESS_ONLY": {'description': 'High-throughput JPEG 2000 (Part 15) restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.201', 'compression': 'lossless'}}, + "HTJ2K_RPCL_LOSSLESS_ONLY": {'description': 'Lossless high-throughput JPEG 2000 with resolution-position-component-layer progression for progressive decoding', 'annotations': {'uid': '1.2.840.10008.1.2.4.202', 'compression': 'lossless'}}, + "HTJ2K": {'description': 'High-throughput JPEG 2000, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.203', 'compression': 'lossy or lossless'}}, + "RLE_LOSSLESS": {'description': 'Run-length encoded lossless compression, widely used for ultrasound', 'annotations': {'uid': '1.2.840.10008.1.2.5', 'compression': 'lossless'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO": {'description': 'Uncompressed progressive video streamed per SMPTE ST 2110-20, used in real-time video communication', 'annotations': {'uid': '1.2.840.10008.1.2.7.1', 'compression': 'none', 'media': 'video'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO": {'description': 'Uncompressed interlaced video streamed per SMPTE ST 2110-20', 'annotations': {'uid': '1.2.840.10008.1.2.7.2', 'compression': 'none', 'media': 'video'}}, +} + +class DICOMNetworkServiceEnum(RichEnum): + """ + Network services used to query, retrieve and store DICOM instances between imaging systems such as PACS, modalities and research archives. Includes the classic DIMSE (DICOM Message Service Element) services of PS3.7 and the RESTful DICOMweb services of PS3.18. Cataloguing which services a source repository supports is part of the data landscape assessment that precedes extraction. + """ + # Enum members + C_ECHO = "C_ECHO" + C_STORE = "C_STORE" + C_FIND = "C_FIND" + C_MOVE = "C_MOVE" + C_GET = "C_GET" + N_EVENT_REPORT = "N_EVENT_REPORT" + N_GET = "N_GET" + N_SET = "N_SET" + N_ACTION = "N_ACTION" + N_CREATE = "N_CREATE" + N_DELETE = "N_DELETE" + QIDO_RS = "QIDO_RS" + WADO_RS = "WADO_RS" + STOW_RS = "STOW_RS" + WADO_URI = "WADO_URI" + UPS_RS = "UPS_RS" + CUSTOM_API = "CUSTOM_API" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMNetworkServiceEnum._metadata = { + "C_ECHO": {'description': 'DIMSE verification service used to test connectivity between two application entities', 'annotations': {'protocol': 'DIMSE'}}, + "C_STORE": {'description': 'DIMSE storage service that pushes a composite instance to a peer', 'annotations': {'protocol': 'DIMSE'}}, + "C_FIND": {'description': "DIMSE query service that matches attributes against a peer's database at patient, study, series or instance level", 'annotations': {'protocol': 'DIMSE'}}, + "C_MOVE": {'description': 'DIMSE retrieve service that instructs a peer to send matching instances to a named destination via C-STORE', 'annotations': {'protocol': 'DIMSE'}}, + "C_GET": {'description': 'DIMSE retrieve service that returns matching instances on the same association', 'annotations': {'protocol': 'DIMSE'}}, + "N_EVENT_REPORT": {'description': 'DIMSE-N notification service used to report events on a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_GET": {'description': 'DIMSE-N service that retrieves attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_SET": {'description': 'DIMSE-N service that modifies attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_ACTION": {'description': 'DIMSE-N service that requests an action on a normalized SOP instance, such as storage commitment', 'annotations': {'protocol': 'DIMSE'}}, + "N_CREATE": {'description': 'DIMSE-N service that creates a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_DELETE": {'description': 'DIMSE-N service that deletes a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "QIDO_RS": {'description': 'DICOMweb RESTful query service (Query based on ID for DICOM Objects) for searching studies, series and instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_RS": {'description': 'DICOMweb RESTful retrieve service (Web Access to DICOM Objects) for retrieving studies, series, instances, frames, metadata and rendered images', 'annotations': {'protocol': 'DICOMweb'}}, + "STOW_RS": {'description': 'DICOMweb RESTful store service (Store Over the Web) for uploading instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_URI": {'description': 'Legacy DICOMweb URI-based retrieve service for single instances', 'annotations': {'protocol': 'DICOMweb'}}, + "UPS_RS": {'description': 'DICOMweb RESTful worklist service for Unified Procedure Step management', 'annotations': {'protocol': 'DICOMweb'}}, + "CUSTOM_API": {'description': 'A vendor- or institution-specific interface that is not a standard DICOM network service'}, +} + +class DICOMSoftwareToolEnum(RichEnum): + """ + Software toolkits, libraries, validators, servers and platforms commonly used to read, write, validate, anonymize and serve DICOM data in research data management pipelines. The category annotation distinguishes general-purpose toolkits from conformance validators, archive servers and metadata anonymizers. + """ + # Enum members + DCMTK = "DCMTK" + PYDICOM = "PYDICOM" + GDCM = "GDCM" + DCM4CHE = "DCM4CHE" + ITK = "ITK" + DVTK = "DVTK" + DICOM3TOOLS = "DICOM3TOOLS" + DCIODVFY = "DCIODVFY" + DCENTVFY = "DCENTVFY" + PIXELMED = "PIXELMED" + RSNA_CTP = "RSNA_CTP" + ORTHANC = "ORTHANC" + DCM4CHEE = "DCM4CHEE" + XNAT = "XNAT" + TCIA_UTILS = "TCIA_UTILS" + DICOM_CLEANER = "DICOM_CLEANER" + HOROS = "HOROS" + OSIRIX = "OSIRIX" + SLICER_3D = "SLICER_3D" + ITK_SNAP = "ITK_SNAP" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMSoftwareToolEnum._metadata = { + "DCMTK": {'description': 'OFFIS DICOM Toolkit; C/C++ libraries and command-line utilities implementing DICOM network services and file handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://dicom.offis.de/en/dcmtk/'}}, + "PYDICOM": {'description': 'Pure Python library for reading, modifying and writing DICOM files, including pixel data access', 'annotations': {'category': 'toolkit', 'language': 'Python', 'license': 'MIT', 'url': 'https://github.com/pydicom/pydicom'}}, + "GDCM": {'description': 'Grassroots DICOM; C++ library with Python and other bindings for DICOM file and image codec handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://sourceforge.net/projects/gdcm/'}}, + "DCM4CHE": {'description': 'Java DICOM toolkit and the basis of the dcm4chee archive', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'MPL/GPL/LGPL', 'url': 'https://www.dcm4che.org/'}}, + "ITK": {'description': 'Insight Toolkit; C++ image processing library with DICOM readers built on GDCM', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'Apache-2.0', 'url': 'https://itk.org/'}}, + "DVTK": {'description': 'DICOM Validation Toolkit; validates object conformance and network behaviour against the standard', 'annotations': {'category': 'validator', 'language': 'C#', 'license': 'LGPL', 'url': 'https://www.dvtk.org/'}}, + "DICOM3TOOLS": {'description': "David Clunie's command-line utilities for creating, modifying, dumping and validating DICOM files", 'annotations': {'category': 'validator', 'language': 'C++', 'license': 'BSD', 'url': 'http://www.dclunie.com/dicom3tools.html'}}, + "DCIODVFY": {'description': 'dicom3tools utility that verifies a file against the Information Object Definition for its modality, reporting missing required attributes, incorrect VRs and values outside allowed ranges', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "DCENTVFY": {'description': 'dicom3tools utility that checks consistency of entity-level attributes across multiple files, such as all instances in a series sharing the same Series Instance UID', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "PIXELMED": {'description': 'PixelMed Java DICOM toolkit, including the DicomCleaner metadata anonymizer', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.pixelmed.com/'}}, + "RSNA_CTP": {'description': 'RSNA Clinical Trial Processor; pipeline application with a configurable DICOM anonymizer', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'url': 'https://mircwiki.rsna.org/index.php?title=CTP-The_RSNA_Clinical_Trial_Processor'}}, + "ORTHANC": {'description': 'Lightweight open-source DICOM server with a REST API and DICOMweb plugin', 'annotations': {'category': 'server', 'language': 'C++', 'license': 'GPL-3.0', 'url': 'https://www.orthanc-server.com/'}}, + "DCM4CHEE": {'description': 'Open-source DICOM archive and image manager built on dcm4che', 'annotations': {'category': 'server', 'language': 'Java', 'url': 'https://www.dcm4che.org/'}}, + "XNAT": {'description': 'Extensible Neuroimaging Archive Toolkit; open-source imaging informatics platform for managing, storing and sharing imaging data', 'annotations': {'category': 'platform', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.xnat.org/'}}, + "TCIA_UTILS": {'description': 'Python utilities from The Cancer Imaging Archive for querying, downloading and inventorying DICOM metadata', 'annotations': {'category': 'toolkit', 'language': 'Python', 'url': 'https://github.com/kirbyju/tcia_utils'}}, + "DICOM_CLEANER": {'description': 'PixelMed graphical tool for metadata de-identification and blackout of burned-in text', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'part_of': 'PixelMed'}}, + "HOROS": {'description': 'Open-source macOS DICOM viewer forked from OsiriX with built-in anonymization', 'annotations': {'category': 'viewer', 'license': 'LGPL-3.0', 'url': 'https://horosproject.org/'}}, + "OSIRIX": {'description': 'Commercial macOS DICOM viewer and workstation', 'annotations': {'category': 'viewer', 'license': 'commercial', 'url': 'https://www.osirix-viewer.com/'}}, + "SLICER_3D": {'description': 'Open-source platform for medical image visualization, segmentation and analysis with DICOM import', 'annotations': {'category': 'viewer', 'license': 'BSD-style', 'url': 'https://www.slicer.org/'}}, + "ITK_SNAP": {'description': 'Open-source tool for manual and semi-automatic segmentation of 3D medical images', 'annotations': {'category': 'viewer', 'license': 'GPL', 'url': 'http://www.itksnap.org/'}}, +} + +class DICOMDeidentificationMethodEnum(RichEnum): + """ + The Basic Application Level Confidentiality Profile and its options defined in DICOM PS3.15 Annex E, as coded in PS3.16 Context ID 7050 (De-identification Method). These codes are recorded in the De-identification Method Code Sequence (0012,0064) to document what was done to an instance. The "Clean" options remove additional identifying content; the "Retain" options preserve information that the basic profile would otherwise remove. + """ + # Enum members + BASIC_APPLICATION_CONFIDENTIALITY_PROFILE = "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE" + CLEAN_PIXEL_DATA_OPTION = "CLEAN_PIXEL_DATA_OPTION" + CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION = "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION" + CLEAN_GRAPHICS_OPTION = "CLEAN_GRAPHICS_OPTION" + CLEAN_STRUCTURED_CONTENT_OPTION = "CLEAN_STRUCTURED_CONTENT_OPTION" + CLEAN_DESCRIPTORS_OPTION = "CLEAN_DESCRIPTORS_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION" + RETAIN_PATIENT_CHARACTERISTICS_OPTION = "RETAIN_PATIENT_CHARACTERISTICS_OPTION" + RETAIN_DEVICE_IDENTITY_OPTION = "RETAIN_DEVICE_IDENTITY_OPTION" + RETAIN_UIDS_OPTION = "RETAIN_UIDS_OPTION" + RETAIN_SAFE_PRIVATE_OPTION = "RETAIN_SAFE_PRIVATE_OPTION" + RETAIN_INSTITUTION_IDENTITY_OPTION = "RETAIN_INSTITUTION_IDENTITY_OPTION" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMDeidentificationMethodEnum._metadata = { + "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE": {'description': 'The baseline profile that removes or replaces all attributes known to carry identifying information, including UIDs, dates and descriptive text', 'meaning': 'DCM:113100', 'annotations': {'kind': 'profile'}}, + "CLEAN_PIXEL_DATA_OPTION": {'description': 'Burned-in identifying text and annotations in the pixel data are removed', 'meaning': 'DCM:113101', 'annotations': {'kind': 'clean option'}}, + "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION": {'description': 'Recognizable visual features such as the face are removed from pixel data; this is the option under which de-facing is recorded', 'meaning': 'DCM:113102', 'annotations': {'kind': 'clean option'}}, + "CLEAN_GRAPHICS_OPTION": {'description': 'Identifying information in graphic annotations, overlays and presentation states is removed', 'meaning': 'DCM:113103', 'annotations': {'kind': 'clean option'}}, + "CLEAN_STRUCTURED_CONTENT_OPTION": {'description': 'Identifying information in structured report content items is removed', 'meaning': 'DCM:113104', 'annotations': {'kind': 'clean option'}}, + "CLEAN_DESCRIPTORS_OPTION": {'description': 'Free-text descriptors such as Study Description are cleaned of identifying content rather than removed', 'meaning': 'DCM:113105', 'annotations': {'kind': 'clean option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION": {'description': 'Dates and times are retained unmodified to preserve the temporal relationship between studies', 'meaning': 'DCM:113106', 'annotations': {'kind': 'retain option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION": {'description': 'Dates and times are shifted consistently so that intervals between studies are preserved', 'meaning': 'DCM:113107', 'annotations': {'kind': 'retain option'}}, + "RETAIN_PATIENT_CHARACTERISTICS_OPTION": {'description': 'Physical characteristics such as age, sex, height and weight are retained', 'meaning': 'DCM:113108', 'annotations': {'kind': 'retain option'}}, + "RETAIN_DEVICE_IDENTITY_OPTION": {'description': 'Device identifying attributes such as manufacturer, model and serial number are retained', 'meaning': 'DCM:113109', 'annotations': {'kind': 'retain option'}}, + "RETAIN_UIDS_OPTION": {'description': 'Original UIDs are retained rather than replaced', 'meaning': 'DCM:113110', 'annotations': {'kind': 'retain option'}}, + "RETAIN_SAFE_PRIVATE_OPTION": {'description': 'Private attributes known not to contain identifying information are retained', 'meaning': 'DCM:113111', 'annotations': {'kind': 'retain option'}}, + "RETAIN_INSTITUTION_IDENTITY_OPTION": {'description': 'Institution identifying attributes such as institution name and address are retained', 'meaning': 'DCM:113112', 'annotations': {'kind': 'retain option'}}, +} + +class DICOMDeidentificationActionEnum(RichEnum): + """ + Action codes from DICOM PS3.15 Table E.1-1a that specify how a de-identifier treats each attribute under the Basic Application Level Confidentiality Profile. Compound codes (for example Z/D) indicate that the first action applies unless the attribute's type requires the second to maintain IOD conformance. Permissible values use the DICOM code letters, with slashes replaced by underscores in compound codes. + """ + # Enum members + D = "D" + Z = "Z" + X = "X" + K = "K" + C = "C" + U = "U" + Z_D = "Z_D" + X_Z = "X_Z" + X_D = "X_D" + X_Z_D = "X_Z_D" + X_Z_U = "X_Z_U" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMDeidentificationActionEnum._metadata = { + "D": {'description': 'Replace with a non-zero length value that may be a dummy value and consistent with the VR'}, + "Z": {'description': 'Replace with a zero length value, or a non-zero length value that may be a dummy value and consistent with the VR'}, + "X": {'description': 'Remove the attribute, and if the attribute is a sequence, remove all sequence items and their contained attributes'}, + "K": {'description': 'Keep unchanged for non-sequence attributes; cleaned for sequences'}, + "C": {'description': 'Replace with values of similar meaning known not to contain identifying information and consistent with the VR'}, + "U": {'description': 'Replace with a non-zero length UID that is internally consistent within a set of instances'}, + "Z_D": {'description': 'Z unless D is required to maintain IOD conformance (Type 2 versus Type 1)', 'aliases': ['Z/D']}, + "X_Z": {'description': 'X unless Z is required to maintain IOD conformance (Type 3 versus Type 2)', 'aliases': ['X/Z']}, + "X_D": {'description': 'X unless D is required to maintain IOD conformance (Type 3 versus Type 1)', 'aliases': ['X/D']}, + "X_Z_D": {'description': 'X unless Z or D is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1)', 'aliases': ['X/Z/D']}, + "X_Z_U": {'description': 'X unless Z or replacement of contained instance UIDs (U) is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1 sequences containing UID references)', 'aliases': ['X/Z/U*']}, +} + +class ImageDeidentificationTargetEnum(RichEnum): + """ + The components of a medical imaging object that can carry identifying information and therefore need to be addressed by a de-identification workflow. A workflow first assesses whether an image requires pixel-level (face or head) de-identification or only metadata de-identification. + """ + # Enum members + HEADER_METADATA = "HEADER_METADATA" + PRIVATE_ATTRIBUTES = "PRIVATE_ATTRIBUTES" + BURNED_IN_ANNOTATION = "BURNED_IN_ANNOTATION" + FACIAL_FEATURES = "FACIAL_FEATURES" + UNIQUE_IDENTIFIERS = "UNIQUE_IDENTIFIERS" + STRUCTURED_CONTENT = "STRUCTURED_CONTENT" + +# Set metadata after class creation to avoid it becoming an enum member +ImageDeidentificationTargetEnum._metadata = { + "HEADER_METADATA": {'description': 'Standard DICOM attributes such as patient name, identifiers, birth date and study dates'}, + "PRIVATE_ATTRIBUTES": {'description': 'Vendor-specific private tags that may contain identifying information and are not covered by the standard attribute list'}, + "BURNED_IN_ANNOTATION": {'description': 'Text or graphics rendered into the pixel data, common in ultrasound, secondary capture and screenshots'}, + "FACIAL_FEATURES": {'description': 'Facial surface anatomy reconstructable from volumetric head CT or MRI pixel data, or visible in photographs and video'}, + "UNIQUE_IDENTIFIERS": {'description': 'Study, series and instance UIDs and accession numbers that can link an instance back to the source system'}, + "STRUCTURED_CONTENT": {'description': 'Identifying content in structured reports, overlays, presentation states and embedded documents'}, +} + +class DeidentificationRegulatoryFrameworkEnum(RichEnum): + """ + Regulations and standards that define when medical imaging data is considered de-identified. Under HIPAA, full-face photographs and comparable images are direct identifiers; under the GDPR, facial images are biometric personal data requiring special handling. + """ + # Enum members + HIPAA_SAFE_HARBOR = "HIPAA_SAFE_HARBOR" + HIPAA_EXPERT_DETERMINATION = "HIPAA_EXPERT_DETERMINATION" + GDPR_ANONYMISATION = "GDPR_ANONYMISATION" + GDPR_PSEUDONYMISATION = "GDPR_PSEUDONYMISATION" + DICOM_PS3_15_CONFIDENTIALITY_PROFILE = "DICOM_PS3_15_CONFIDENTIALITY_PROFILE" + MIDI_TASK_GROUP_RECOMMENDATIONS = "MIDI_TASK_GROUP_RECOMMENDATIONS" + +# Set metadata after class creation to avoid it becoming an enum member +DeidentificationRegulatoryFrameworkEnum._metadata = { + "HIPAA_SAFE_HARBOR": {'description': 'US HIPAA Privacy Rule method requiring removal of 18 specified identifier types, including full-face photographs and comparable images', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(2)'}}, + "HIPAA_EXPERT_DETERMINATION": {'description': 'US HIPAA Privacy Rule method in which a qualified expert determines that the risk of re-identification is very small', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(1)'}}, + "GDPR_ANONYMISATION": {'description': 'Irreversible processing such that the data subject is no longer identifiable, taking the data outside the scope of the EU General Data Protection Regulation', 'meaning': 'NCIT:C142392', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR anonymisation']}, + "GDPR_PSEUDONYMISATION": {'description': 'Processing so that data can no longer be attributed to a subject without additional information kept separately, as defined in GDPR Article 4(5)', 'meaning': 'NCIT:C142654', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR pseudonymisation']}, + "DICOM_PS3_15_CONFIDENTIALITY_PROFILE": {'description': "The DICOM standard's own de-identification profile and options, designed to satisfy known regulations", 'annotations': {'jurisdiction': 'international'}}, + "MIDI_TASK_GROUP_RECOMMENDATIONS": {'description': 'Best practices and recommendations of the Medical Image De-Identification (MIDI) Task Group (Clunie et al.)', 'annotations': {'jurisdiction': 'international'}}, +} + +class DefacingMethodEnum(RichEnum): + """ + Approaches to pixel-level de-identification that remove or obscure facial features in head imaging. Skull-stripping removes all non-brain tissue and may discard useful anatomy; face-specific methods aim to remove only facial features while preserving as much of the head volume as possible. + """ + # Enum members + SKULL_STRIPPING = "SKULL_STRIPPING" + TEMPLATE_BASED_MASKING = "TEMPLATE_BASED_MASKING" + SURFACE_BLURRING = "SURFACE_BLURRING" + SHEARING_PLANE = "SHEARING_PLANE" + DEEP_LEARNING_SEGMENTATION = "DEEP_LEARNING_SEGMENTATION" + REFACING = "REFACING" + MANUAL_MASKING = "MANUAL_MASKING" + FACE_DETECTION_AND_BLURRING = "FACE_DETECTION_AND_BLURRING" + MANUAL_CROP_OR_BLUR = "MANUAL_CROP_OR_BLUR" + +# Set metadata after class creation to avoid it becoming an enum member +DefacingMethodEnum._metadata = { + "SKULL_STRIPPING": {'description': 'Removal of all non-brain tissue including scalp, skull and face, for example with FSL BET or AFNI 3dSkullStrip', 'annotations': {'preserves_skull': 'false'}, 'aliases': ['brain extraction']}, + "TEMPLATE_BASED_MASKING": {'description': 'Registration of the image to a standard brain template such as MNI152 followed by application of a predefined binary face mask that zeros out facial voxels', 'annotations': {'preserves_skull': 'true', 'example_tools': 'PyDeface, FreeSurfer mri_deface, mydeface'}}, + "SURFACE_BLURRING": {'description': 'Diffusion or blurring of face surface voxels to obscure identity while preserving head shape, as in Milchenko and Marcus (2013)', 'annotations': {'preserves_skull': 'true'}}, + "SHEARING_PLANE": {'description': 'Removal of the front of the head by computing a plane through the head and discarding voxels in front of it, as in QuickShear', 'annotations': {'preserves_skull': 'partial'}, 'aliases': ['cropping plane']}, + "DEEP_LEARNING_SEGMENTATION": {'description': 'Use of a trained neural network such as a 3D U-Net to segment facial features (eyes, ears, nose) and mask or blur them', 'annotations': {'preserves_skull': 'true', 'example_tools': 'DeepDefacer, Asan Defacer'}}, + "REFACING": {'description': "Replacement of the subject's face with an average or synthetic face so that images retain a realistic head surface", 'annotations': {'preserves_skull': 'true', 'example_tools': 'AFNI refacer'}}, + "MANUAL_MASKING": {'description': 'Interactive painting or erosion of a face mask in an image editor such as 3D Slicer or ITK-SNAP, followed by zeroing or blurring of masked voxels', 'annotations': {'preserves_skull': 'true'}}, + "FACE_DETECTION_AND_BLURRING": {'description': 'Frame-by-frame detection of faces in 2D images or video followed by blurring, pixelation or masking, for example with OpenCV Haar cascades', 'annotations': {'applicable_to': 'photographs, video'}}, + "MANUAL_CROP_OR_BLUR": {'description': 'Manual cropping or blurring of the face region in photographs or video with an image or video editor', 'annotations': {'applicable_to': 'photographs, video'}}, +} + +class DefacingToolEnum(RichEnum): + """ + Software tools and pipelines used for pixel-level de-identification of head imaging and photographs, with their supported modalities, method and licensing. Metadata-only anonymizers are included for completeness because they are commonly paired with defacing tools, but they do not remove facial features. + """ + # Enum members + PYDEFACE = "PYDEFACE" + FREESURFER_MRI_DEFACE = "FREESURFER_MRI_DEFACE" + AFNI_REFACER = "AFNI_REFACER" + QUICKSHEAR = "QUICKSHEAR" + DEEPDEFACER = "DEEPDEFACER" + ASAN_DEFACER = "ASAN_DEFACER" + MYDEFACE = "MYDEFACE" + MASK_FACE = "MASK_FACE" + FSL_BET = "FSL_BET" + AFNI_3DSKULLSTRIP = "AFNI_3DSKULLSTRIP" + ITK_SNAP = "ITK_SNAP" + SLICER_3D = "SLICER_3D" + IMAGEJ_FIJI = "IMAGEJ_FIJI" + OPENCV = "OPENCV" + OSIRIX_HOROS_PLUGIN = "OSIRIX_HOROS_PLUGIN" + PIXELMED_DICOM_ANONYMIZER = "PIXELMED_DICOM_ANONYMIZER" + MANUAL_PHOTO_VIDEO_EDITING = "MANUAL_PHOTO_VIDEO_EDITING" + +# Set metadata after class creation to avoid it becoming an enum member +DefacingToolEnum._metadata = { + "PYDEFACE": {'description': 'Aligns a T1-weighted MRI to a template with FSL FLIRT and zeros out voxels in a predefined facial mask', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/poldracklab/pydeface'}}, + "FREESURFER_MRI_DEFACE": {'description': 'Template mask defacing using affine registration to fit a generic face mask, distributed with FreeSurfer', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'FreeSurfer'}}, + "AFNI_REFACER": {'description': 'AFNI template-based defacing and refacing tool, often combined with skull stripping', 'annotations': {'modality': 'MRI (T1w)', 'method': 'refacing', 'license': 'AFNI (open source)'}}, + "QUICKSHEAR": {'description': 'Computes a shearing plane through the head and removes the front of the head', 'annotations': {'modality': 'MRI (T1w)', 'method': 'shearing plane', 'license': 'open source'}}, + "DEEPDEFACER": {'description': '3D U-Net trained to generate a facial mask from T1 MRI scans', 'annotations': {'modality': 'MRI (T1w, T2w)', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "ASAN_DEFACER": {'description': '3D U-Net that segments eyes, ears and nose and masks them, applicable to MRI and CT', 'annotations': {'modality': 'MRI, CT', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "MYDEFACE": {'description': 'Defacing utility similar to PyDeface using an FSL FLIRT-registered mask', 'annotations': {'modality': 'MRI (T1w, FLAIR)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/neurolabusc/mydeface'}}, + "MASK_FACE": {'description': 'Surface blurring tool from Milchenko and Marcus that obscures surface anatomy in volumetric data', 'annotations': {'modality': 'MRI, CT', 'method': 'surface blurring', 'license': 'open source'}}, + "FSL_BET": {'description': 'FMRIB Software Library Brain Extraction Tool; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'FSL (open source)'}}, + "AFNI_3DSKULLSTRIP": {'description': 'AFNI brain extraction program; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'AFNI (open source)'}}, + "ITK_SNAP": {'description': 'Interactive segmentation tool used to manually paint or erode a face mask in any 3D volume', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'GPL'}}, + "SLICER_3D": {'description': 'Image computing platform used to manually paint a face mask over a region of interest', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'BSD-style'}}, + "IMAGEJ_FIJI": {'description': 'General image analysis tools used to manually blur or crop the face region in 2D or 3D images', 'annotations': {'modality': '2D and 3D images', 'method': 'manual crop or blur', 'license': 'open source'}}, + "OPENCV": {'description': 'Computer vision library used for face detection (for example Haar cascades) followed by blurring or pixelation in video and 2D images', 'annotations': {'modality': 'video, 2D images', 'method': 'face detection and blurring', 'license': 'Apache-2.0'}}, + "OSIRIX_HOROS_PLUGIN": {'description': 'Viewer plugins offering built-in anonymization with face removal options for multi-modality DICOM', 'annotations': {'modality': 'DICOM (multi-modality)', 'method': 'template-based masking', 'license': 'commercial / free'}}, + "PIXELMED_DICOM_ANONYMIZER": {'description': 'Metadata anonymization only; does not mask faces', 'annotations': {'modality': 'DICOM files', 'method': 'metadata anonymization', 'license': 'BSD'}}, + "MANUAL_PHOTO_VIDEO_EDITING": {'description': 'Cropping or blurring faces in photographs and videos with general-purpose editors', 'annotations': {'modality': 'photographs, video', 'method': 'manual crop or blur'}}, +} + +class ImagingDataLifecycleStageEnum(RichEnum): + """ + Sequential stages of DICOM data management for preparing FAIR, AI-ready medical imaging datasets. Stages after extraction form the data reliability workflow that checks that imaging data is complete, standardized and biologically plausible before sharing. + """ + # Enum members + DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION = "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION" + FILE_INTEGRITY_VERIFICATION = "FILE_INTEGRITY_VERIFICATION" + DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS = "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS" + METADATA_TAG_VALIDATION = "METADATA_TAG_VALIDATION" + IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION = "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION" + DEIDENTIFICATION = "DEIDENTIFICATION" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingDataLifecycleStageEnum._metadata = { + "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION": {'description': 'Extraction of imaging data from clinical repositories such as PACS, preceded by a landscape assessment of source locations, database systems, modalities and acquisition devices', 'annotations': {'stage_number': 1}}, + "FILE_INTEGRITY_VERIFICATION": {'description': 'Computation and periodic re-verification of cryptographic checksums such as SHA-256 to detect silent corruption from network errors, media decay or system failure', 'annotations': {'stage_number': 2}}, + "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS": {'description': 'Detection of structurally invalid DICOM files (truncated, wrong VR encoding, missing required tags) and checks of internal coherence such as identifier uniqueness and demographic consistency across sites', 'annotations': {'stage_number': 3}}, + "METADATA_TAG_VALIDATION": {'description': "Validation of DICOM attributes against the standard's VR, VM and type rules and against biological plausibility, and inventory of private tags", 'annotations': {'stage_number': 4}}, + "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION": {'description': 'Verification that pixel data is readable and plausible, that decompression preserves bit depth, and computation of image quality metrics', 'annotations': {'stage_number': 5}}, + "DEIDENTIFICATION": {'description': 'Removal of protected health information from headers and of facial features from pixel data before sharing and reuse', 'meaning': 'NCIT:C45970', 'annotations': {'stage_number': 6}}, +} + +class ImagingDataSourceTypeEnum(RichEnum): + """ + Types of systems in a hospital or research network that hold medical imaging data and from which it may be extracted. A landscape assessment records, for each source, the platform vendor, software version, supported query mechanisms, patient identifier handling, retention policy and anonymization capabilities. + """ + # Enum members + PACS = "PACS" + VENDOR_NEUTRAL_ARCHIVE = "VENDOR_NEUTRAL_ARCHIVE" + DEPARTMENTAL_IMAGING_ARCHIVE = "DEPARTMENTAL_IMAGING_ARCHIVE" + RESEARCH_IMAGING_PLATFORM = "RESEARCH_IMAGING_PLATFORM" + MODALITY_WORKSTATION = "MODALITY_WORKSTATION" + ELECTRONIC_HEALTH_RECORD = "ELECTRONIC_HEALTH_RECORD" + PUBLIC_IMAGING_REPOSITORY = "PUBLIC_IMAGING_REPOSITORY" + CLOUD_IMAGING_ARCHIVE = "CLOUD_IMAGING_ARCHIVE" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingDataSourceTypeEnum._metadata = { + "PACS": {'description': 'Clinical system for storing, retrieving and distributing medical images, typically the central radiology archive', 'meaning': 'NCIT:C17624'}, + "VENDOR_NEUTRAL_ARCHIVE": {'description': 'Enterprise archive that stores images from multiple departments and PACS vendors in a standard format', 'aliases': ['VNA']}, + "DEPARTMENTAL_IMAGING_ARCHIVE": {'description': 'Local archive maintained by a clinical department such as cardiology, ophthalmology or endoscopy outside the central PACS'}, + "RESEARCH_IMAGING_PLATFORM": {'description': 'Research-specific imaging informatics database such as XNAT used to manage, store and share imaging data'}, + "MODALITY_WORKSTATION": {'description': 'Acquisition device or attached workstation that exports images through vendor-specific software'}, + "ELECTRONIC_HEALTH_RECORD": {'description': 'Clinical record system that references or embeds imaging studies and provides encounter linkage', 'meaning': 'NCIT:C142529'}, + "PUBLIC_IMAGING_REPOSITORY": {'description': 'Openly accessible imaging data resource such as The Cancer Imaging Archive or OpenNeuro'}, + "CLOUD_IMAGING_ARCHIVE": {'description': 'Cloud-hosted object storage or managed imaging service holding DICOM data'}, +} + +class DICOMValidationIssueTypeEnum(RichEnum): + """ + Categories of problems detected when validating DICOM files and collections for completeness, conformance, metadata consistency, pixel data integrity and plausibility. Used to classify findings from tools such as dciodvfy, dcentvfy, DVTk and pydicom during data reliability workflows. + """ + # Enum members + TRUNCATED_FILE = "TRUNCATED_FILE" + INVALID_VR_ENCODING = "INVALID_VR_ENCODING" + MISSING_REQUIRED_ATTRIBUTE = "MISSING_REQUIRED_ATTRIBUTE" + VALUE_MULTIPLICITY_VIOLATION = "VALUE_MULTIPLICITY_VIOLATION" + VALUE_OUT_OF_RANGE = "VALUE_OUT_OF_RANGE" + INVALID_UID_SYNTAX = "INVALID_UID_SYNTAX" + DUPLICATE_UID = "DUPLICATE_UID" + INCONSISTENT_ENTITY_ATTRIBUTES = "INCONSISTENT_ENTITY_ATTRIBUTES" + DATE_INCONSISTENCY = "DATE_INCONSISTENCY" + IMPLAUSIBLE_VALUE = "IMPLAUSIBLE_VALUE" + NONSTANDARD_PRIVATE_ATTRIBUTE = "NONSTANDARD_PRIVATE_ATTRIBUTE" + IDENTIFIER_LINKAGE_ERROR = "IDENTIFIER_LINKAGE_ERROR" + UNREADABLE_PIXEL_DATA = "UNREADABLE_PIXEL_DATA" + DECOMPRESSION_MISMATCH = "DECOMPRESSION_MISMATCH" + CHECKSUM_MISMATCH = "CHECKSUM_MISMATCH" + PROTECTED_HEALTH_INFORMATION_PRESENT = "PROTECTED_HEALTH_INFORMATION_PRESENT" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMValidationIssueTypeEnum._metadata = { + "TRUNCATED_FILE": {'description': 'The file is incomplete, for example a truncated transfer syntax or missing pixel data at the end of the file', 'annotations': {'category': 'structural'}}, + "INVALID_VR_ENCODING": {'description': 'An attribute is encoded with a Value Representation that does not match the data dictionary or the transfer syntax', 'annotations': {'category': 'structural'}}, + "MISSING_REQUIRED_ATTRIBUTE": {'description': 'A Type 1 or Type 2 attribute required by the IOD, such as StudyInstanceUID or PixelData, is absent', 'annotations': {'category': 'conformance'}}, + "VALUE_MULTIPLICITY_VIOLATION": {'description': 'An attribute has more or fewer values than permitted by its Value Multiplicity', 'annotations': {'category': 'conformance'}}, + "VALUE_OUT_OF_RANGE": {'description': 'An attribute value is outside the enumerated or defined range allowed by the standard', 'annotations': {'category': 'conformance'}}, + "INVALID_UID_SYNTAX": {'description': 'A UID does not conform to DICOM UID syntax, for example non-numeric components or excess length', 'annotations': {'category': 'conformance'}}, + "DUPLICATE_UID": {'description': 'The same SOP Instance UID or other UID is reused across instances that should be distinct', 'annotations': {'category': 'consistency'}}, + "INCONSISTENT_ENTITY_ATTRIBUTES": {'description': 'Attributes that should be identical across instances of the same entity differ, such as instances in one series carrying different Series Instance UIDs', 'annotations': {'category': 'consistency'}}, + "DATE_INCONSISTENCY": {'description': "Dates are mutually inconsistent, such as a study date after the patient's death date or a series date before the study date", 'annotations': {'category': 'plausibility'}}, + "IMPLAUSIBLE_VALUE": {'description': 'A syntactically valid value that is biologically implausible, such as a patient age of 150 years', 'annotations': {'category': 'plausibility'}}, + "NONSTANDARD_PRIVATE_ATTRIBUTE": {'description': "A private tag is present that is not documented in the site's private tag dictionary", 'annotations': {'category': 'documentation'}}, + "IDENTIFIER_LINKAGE_ERROR": {'description': 'Patient or study identifiers do not link correctly to clinical records, or demographics disagree across linked records', 'annotations': {'category': 'consistency'}}, + "UNREADABLE_PIXEL_DATA": {'description': 'The pixel data cannot be decoded, typically due to acquisition or packaging problems', 'annotations': {'category': 'pixel data'}}, + "DECOMPRESSION_MISMATCH": {'description': 'Decompressed pixel data has an unexpected bit depth or differs from the uncompressed original beyond the expected loss', 'annotations': {'category': 'pixel data'}}, + "CHECKSUM_MISMATCH": {'description': "The file's cryptographic hash no longer matches the value recorded at ingest, indicating corruption or alteration", 'annotations': {'category': 'integrity'}}, + "PROTECTED_HEALTH_INFORMATION_PRESENT": {'description': 'Identifying information remains in the header, private tags or pixel data after de-identification', 'annotations': {'category': 'privacy'}}, +} + +class ImageQualityMetricEnum(RichEnum): + """ + Metrics computed during image quality and pixel data validation to document that images are readable and of adequate fidelity for AI applications. Simple metrics can be extended to check conformance with FDA technical performance guidance for quantitative imaging devices where applicable. + """ + # Enum members + PIXEL_READABILITY = "PIXEL_READABILITY" + INTENSITY_HISTOGRAM = "INTENSITY_HISTOGRAM" + SIGNAL_TO_NOISE_RATIO = "SIGNAL_TO_NOISE_RATIO" + CONTRAST_TO_NOISE_RATIO = "CONTRAST_TO_NOISE_RATIO" + SHARPNESS = "SHARPNESS" + BIT_DEPTH = "BIT_DEPTH" + PIXEL_SPACING = "PIXEL_SPACING" + SLICE_THICKNESS = "SLICE_THICKNESS" + COMPRESSION_FIDELITY = "COMPRESSION_FIDELITY" + ARTIFACT_PRESENCE = "ARTIFACT_PRESENCE" + +# Set metadata after class creation to avoid it becoming an enum member +ImageQualityMetricEnum._metadata = { + "PIXEL_READABILITY": {'description': 'Whether the pixel array can be decoded without error'}, + "INTENSITY_HISTOGRAM": {'description': 'Distribution of pixel intensities, checked for extreme outliers, clipping or empty images'}, + "SIGNAL_TO_NOISE_RATIO": {'description': 'Ratio of signal in a region of interest to the standard deviation of background noise', 'meaning': 'NCIT:C94983', 'aliases': ['SNR']}, + "CONTRAST_TO_NOISE_RATIO": {'description': 'Difference in signal between two regions relative to background noise', 'aliases': ['CNR']}, + "SHARPNESS": {'description': 'Measure of edge definition or high-frequency content, such as Laplacian variance'}, + "BIT_DEPTH": {'description': 'Number of bits per pixel stored and allocated, checked for consistency after decompression'}, + "PIXEL_SPACING": {'description': 'Physical distance between pixel centres, checked for presence and plausibility'}, + "SLICE_THICKNESS": {'description': 'Nominal thickness of each slice in a volumetric acquisition, checked for presence and plausibility'}, + "COMPRESSION_FIDELITY": {'description': 'Agreement between compressed and original pixel data, for example comparing a JPEG-compressed instance with its uncompressed source'}, + "ARTIFACT_PRESENCE": {'description': 'Detection of motion, metal, aliasing or other acquisition artifacts'}, +} + +class ImagingInteroperabilityStandardEnum(RichEnum): + """ + Standards and data models used to represent medical imaging metadata and to link images with clinical records, electronic health records and multimodal research datasets. + """ + # Enum members + DICOM = "DICOM" + DICOMWEB = "DICOMWEB" + HL7_FHIR_IMAGINGSTUDY = "HL7_FHIR_IMAGINGSTUDY" + OMOP_CDM_IMAGING_EXTENSION = "OMOP_CDM_IMAGING_EXTENSION" + IHE_PROFILES = "IHE_PROFILES" + BIDS = "BIDS" + NIFTI = "NIFTI" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingInteroperabilityStandardEnum._metadata = { + "DICOM": {'description': 'Digital Imaging and Communications in Medicine (ISO 12052), the standard for storing, transmitting and managing medical imaging data', 'annotations': {'url': 'https://www.dicomstandard.org/'}}, + "DICOMWEB": {'description': 'RESTful web services for DICOM (QIDO-RS, WADO-RS, STOW-RS) defined in DICOM PS3.18', 'annotations': {'url': 'https://www.dicomstandard.org/using/dicomweb'}}, + "HL7_FHIR_IMAGINGSTUDY": {'description': 'FHIR resource representing a DICOM study and its series and instances, used to integrate imaging metadata into FHIR-based systems', 'annotations': {'url': 'https://www.hl7.org/fhir/imagingstudy.html'}}, + "OMOP_CDM_IMAGING_EXTENSION": {'description': 'OHDSI Observational Medical Outcomes Partnership Common Data Model extension for imaging-based observational research, used to link DICOM studies to clinical encounters', 'annotations': {'url': 'https://github.com/OHDSI/OmopImaging'}}, + "IHE_PROFILES": {'description': 'Integrating the Healthcare Enterprise profiles for image sharing and identifier management, such as XDS-I and PIX', 'annotations': {'url': 'https://www.ihe.net/'}}, + "BIDS": {'description': 'Community standard for organizing and describing neuroimaging datasets, commonly used after conversion from DICOM', 'annotations': {'url': 'https://bids.neuroimaging.io/'}}, + "NIFTI": {'description': 'Neuroimaging Informatics Technology Initiative file format for volumetric images, the usual target of DICOM conversion in neuroimaging pipelines', 'annotations': {'url': 'https://nifti.nimh.nih.gov/'}}, +} + +class Bridge2AIDataGenerationProjectEnum(RichEnum): + """ + Data generation projects (Grand Challenges) of the NIH Bridge to Artificial Intelligence (Bridge2AI) program, which creates standardized, annotated, ethically sourced AI-ready datasets across a diverse set of modalities. + """ + # Enum members + CHORUS = "CHORUS" + AI_READI = "AI_READI" + VOICE = "VOICE" + CM4AI = "CM4AI" + +# Set metadata after class creation to avoid it becoming an enum member +Bridge2AIDataGenerationProjectEnum._metadata = { + "CHORUS": {'description': 'Collaborative Hospital Repository Uniting Standards; the AI/ML for Clinical Care Grand Challenge, linking ICU imaging (MRI, CT, ultrasound, X-ray) with physiologic and clinical data', 'annotations': {'url': 'https://bridge2ai.org/data-chorus/'}, 'aliases': ['Clinical Care']}, + "AI_READI": {'description': 'Artificial Intelligence Ready and Equitable Atlas for Diabetes Insights; the Salutogenesis Grand Challenge, including ophthalmology retinal imaging', 'annotations': {'url': 'https://bridge2ai.org/people-ai-readi/'}, 'aliases': ['Salutogenesis']}, + "VOICE": {'description': 'The Precision Public Health Grand Challenge, connecting voice recordings with laryngoscopy video, brain MRI and CT, and omics data', 'annotations': {'url': 'https://bridge2ai.org/people-voice/'}, 'aliases': ['Precision Public Health']}, + "CM4AI": {'description': 'Cell Maps for Artificial Intelligence; the Functional Genomics Grand Challenge, mapping cellular architecture with imaging and proteomics', 'annotations': {'url': 'https://cm4ai.org/'}, 'aliases': ['Functional Genomics']}, +} + class FamilyRelationship(RichEnum): """ Family relationships used in pedigree and family history documentation @@ -16229,6 +17279,366 @@ class DrugResponseEnum(RichEnum): "UNKNOWN_RESPONSE": {'description': 'Treatment response unknown', 'meaning': 'NCIT:C17998'}, } +class G2PConfidenceCategory(RichEnum): + """ + The level of confidence that a gene-disease association is real, as asserted by G2P curators. G2P uses the GenCC gene-disease validity classification terms. Operationally several groups use definitive, strong and moderate for clinical reporting; limited, disputed and refuted are not used for clinical reporting. GenCC classification identifiers are recorded in the gencc_classification_id annotation rather than as meaning:, because the GENCC prefix is not registered in bioregistry, OLS or the OBO PURL system and so cannot be resolved; the identifiers were taken from GenCC's own submissions export. + """ + # Enum members + DEFINITIVE = "DEFINITIVE" + STRONG = "STRONG" + MODERATE = "MODERATE" + LIMITED = "LIMITED" + DISPUTED = "DISPUTED" + REFUTED = "REFUTED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PConfidenceCategory._metadata = { + "DEFINITIVE": {'description': "The role of this gene in this particular disease has been repeatedly demonstrated in both the research and clinical diagnostic settings, and has been upheld over time (at least 2 independent publication over 3 years' time). No convincing evidence has emerged that contradicts the role of the gene in the specified disease. (previously labelled as confirmed) The strength of evidence within publications as well as their number and publication dates is taken into account. In practice, this usually means at least 4 publications over 5 years. Typically this will also include convincing bioinformatic or functional evidence of causation, making it very unlikely that this gene-disease association would ever be refuted.", 'annotations': {'gencc_classification_id': 'GENCC:100001', 'clinical_reporting': 'true'}, 'aliases': ['confirmed']}, + "STRONG": {'description': "The role of this gene as a monogenic cause of disease has been repeatedly and independently demonstrated providing very strong convincing evidence in humans and no conflicting evidence for this gene's role in this disease. (previously labelled as probable).", 'annotations': {'gencc_classification_id': 'GENCC:100002', 'clinical_reporting': 'true'}, 'aliases': ['probable']}, + "MODERATE": {'description': 'There is moderate evidence in humans to support a casual role for this gene in this disease with no contradictory evidence. The body of evidence is not large (e.g possibly only one key paper) but appears convincing enough that the gene-disease pair is likely to be validated with additional evidence in the near future.', 'annotations': {'gencc_classification_id': 'GENCC:100003', 'clinical_reporting': 'true'}}, + "LIMITED": {'description': 'Little human evidence exists to support a casual role for this gene in this disease, but not all evidence has been refuted. For example, there may be a collection of rare missense variants in humans but without convincing functional impact, segregration data that could either arise by chance (e.g across one or two meioses) or does not implicate a single gene, or functional data without direct recapitulation of the phenotype. Overall, the body of evidence does not meet contemporary criteria for claiming a valid association with disease. The majority are probably false associations. (previously labelled as possible).', 'annotations': {'gencc_classification_id': 'GENCC:100004', 'clinical_reporting': 'false'}, 'aliases': ['possible']}, + "DISPUTED": {'description': 'Although evidence has been reported, other evidence of equal weight disputes the claim.', 'annotations': {'gencc_classification_id': 'GENCC:100005', 'clinical_reporting': 'false'}}, + "REFUTED": {'description': 'There has been an assertion of a gene-disease association in the literature, but new valid evidence has arisen that refutes the entire original body of evidence.', 'annotations': {'gencc_classification_id': 'GENCC:100006', 'clinical_reporting': 'false'}}, +} + +class G2PAllelicRequirement(RichEnum): + """ + The genotype required at the locus for the disease to manifest, also referred to in G2P as the genotype. HPO mode of inheritance (MOI) terminology is used; G2P uses synonyms of the MOI terms as many of the disorders described are de novo. +The nine values are G2P's published genotype list, taken verbatim from the API the terminology page itself calls (GET /gene2phenotype/api/attribs/, key "genotype"), which includes the bare monoallelic_X alongside monoallelic_X_hemizygous and monoallelic_X_heterozygous. +All nine G2P genotype strings are recorded by HPO as oio:hasExactSynonym of the term mapped below (verified against the HPO release directly; note that the OLS obo_synonym field under-reports these, listing only synonyms that carry an xref). That exact-synonym correspondence is what makes these mappings unambiguous. +By convention in this enum, title is the HPO term label and the G2P string is carried as an alias, matching the pv-mapping guidance and clinical/genetics.yaml; consumers wanting G2P's own display string should read aliases. + """ + # Enum members + MONOALLELIC_AUTOSOMAL = "MONOALLELIC_AUTOSOMAL" + BIALLELIC_AUTOSOMAL = "BIALLELIC_AUTOSOMAL" + MONOALLELIC_X = "MONOALLELIC_X" + MONOALLELIC_X_HEMIZYGOUS = "MONOALLELIC_X_HEMIZYGOUS" + MONOALLELIC_X_HETEROZYGOUS = "MONOALLELIC_X_HETEROZYGOUS" + MONOALLELIC_Y_HEMIZYGOUS = "MONOALLELIC_Y_HEMIZYGOUS" + MONOALLELIC_PAR = "MONOALLELIC_PAR" + BIALLELIC_PAR = "BIALLELIC_PAR" + MITOCHONDRIAL = "MITOCHONDRIAL" + +# Set metadata after class creation to avoid it becoming an enum member +G2PAllelicRequirement._metadata = { + "MONOALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing mutations on an autosomal chromosome identified on one allele in all or the vast majority of with specific disorder.', 'meaning': 'HP:0000006', 'aliases': ['monoallelic_autosomal']}, + "BIALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles in the autosomal chromosome.', 'meaning': 'HP:0000007', 'aliases': ['biallelic_autosomal']}, + "MONOALLELIC_X": {'description': 'Plausible disease-causing mutations identified on the X chromosome.', 'meaning': 'HP:0001417', 'aliases': ['monoallelic_X']}, + "MONOALLELIC_X_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified on the X chromosome in a male as a cause of a specific disease, the disorder being predominantly recessive in female carriers.', 'meaning': 'HP:0001419', 'aliases': ['monoallelic_X_hemizygous']}, + "MONOALLELIC_X_HETEROZYGOUS": {'description': 'Plausible disease-causing mutations identified in one copy of the X chromosome in females as a cause of a specific disease, include disorders where heterozygous females and hemizygous males are similarly affected e.g SMC1A mutations.', 'meaning': 'HP:0001423', 'aliases': ['monoallelic_X_heterozygous']}, + "MONOALLELIC_Y_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified in an allele found in the Y chromosome. The Y chromosome is passed from father to son as this mutation may affect only males.', 'meaning': 'HP:0001450', 'aliases': ['monoallelic_Y_hemizygous']}, + "MONOALLELIC_PAR": {'description': 'Plausible disease-causing mutations identified in an allele found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034340', 'aliases': ['monoallelic_PAR']}, + "BIALLELIC_PAR": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034341', 'aliases': ['biallelic_PAR']}, + "MITOCHONDRIAL": {'description': 'Plausible disease-causing mutations identified on mitochondrial DNA where homoplasmy or heteroplasmy are associated with a specific disorder.', 'meaning': 'HP:0001427', 'aliases': ['mitochondrial']}, +} + +class G2PCrossCuttingModifier(RichEnum): + """ + Additional qualifiers applied to the allelic requirement of a G2P gene-disease association. HPO inheritance qualifier terms (HP:0034335) are used where available. Potential secondary finding and restricted mutation set are G2P-specific and have no HPO equivalent. + """ + # Enum members + DISPLAYS_ANTICIPATION = "DISPLAYS_ANTICIPATION" + IMPRINTED_REGION = "IMPRINTED_REGION" + TYPICALLY_DE_NOVO = "TYPICALLY_DE_NOVO" + TYPICALLY_MOSAIC = "TYPICALLY_MOSAIC" + TYPIFIED_BY_INCOMPLETE_PENETRANCE = "TYPIFIED_BY_INCOMPLETE_PENETRANCE" + POTENTIAL_SECONDARY_FINDING = "POTENTIAL_SECONDARY_FINDING" + RESTRICTED_MUTATION_SET = "RESTRICTED_MUTATION_SET" + +# Set metadata after class creation to avoid it becoming an enum member +G2PCrossCuttingModifier._metadata = { + "DISPLAYS_ANTICIPATION": {'description': 'A phenomenon in which the severity of a disorder increases, or the age of onset decreases, as the disorder is passed from one generation to the next, typically due to expansion of a repeat sequence. For example, Myotonic Dystrophy is caused by triplet repeat expansion in the DMPK gene.', 'meaning': 'HP:0003743', 'aliases': ['displays anticipation']}, + "IMPRINTED_REGION": {'description': 'Requires that the abnormal allele be paternal or maternal in origin, depending on the disease-gene relationship. Imprinting refers to a normal developmental process in which either the paternal or maternal allele is inactivated, depending on the specific locus, thus leading to expression from only one copy of the gene. Disease typically manifests when a deleterious variant is inherited from a parent whose copy of the gene would normally be expressed, but not when a deleterious variant is inherited from a parent whose copy of the gene would normally be inactivated.', 'meaning': 'HP:0034338', 'aliases': ['imprinted region']}, + "TYPICALLY_DE_NOVO": {'description': 'Plausible disease causing mutations that occur post zygotically (formation of gametes). Note that this G2P wording is internally inconsistent: post-zygotic events are somatic, which is what TYPICALLY_MOSAIC describes, whereas gametogenesis is pre-zygotic. The mapped HPO term HP:0025352 carries the intended sense, defining conditions that are exclusively or predominantly observed to display de novo variants.', 'meaning': 'HP:0025352', 'aliases': ['typically de novo']}, + "TYPICALLY_MOSAIC": {'description': 'Plausible disease causing mutations identified on one allele in a proportion of cells with the others being wild-type.', 'meaning': 'HP:0001442', 'aliases': ['typically mosaic']}, + "TYPIFIED_BY_INCOMPLETE_PENETRANCE": {'description': 'A condition in which not all individuals carrying the disease-causing genotype manifest the associated phenotype.', 'meaning': 'HP:0003829', 'aliases': ['typified by incomplete penetrance']}, + "POTENTIAL_SECONDARY_FINDING": {'description': 'This includes ACMG Secondary Findings and/or late onset conditions.'}, + "RESTRICTED_MUTATION_SET": {'description': 'This is used when a disease is associated with a single recurrent variant or a set of variants only found in a particular protein domain.'}, +} + +class G2PMolecularMechanism(RichEnum): + """ + The mechanism of disease derived from the available evidence, following the definitions of Backwell and Marsh (PMID:35395171). These mechanisms describe a gene-disease association rather than an individual variant, so the Sequence Ontology variant terms are recorded as close mappings rather than exact meanings. + """ + # Enum members + LOSS_OF_FUNCTION = "LOSS_OF_FUNCTION" + GAIN_OF_FUNCTION = "GAIN_OF_FUNCTION" + DOMINANT_NEGATIVE = "DOMINANT_NEGATIVE" + UNDETERMINED_NON_LOSS_OF_FUNCTION = "UNDETERMINED_NON_LOSS_OF_FUNCTION" + UNDETERMINED = "UNDETERMINED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanism._metadata = { + "LOSS_OF_FUNCTION": {'description': 'Loss-of-function variants involve a loss of the normal biological function of a protein. Often these are nonsense or frameshift mutations that introduce premature stop codons. Due to nonsense-mediated decay of the resulting mRNAs, most premature stop codons will result in no protein being produced, rather than a truncated protein. However, there are also many examples of loss-of-function variants that change the amino acid sequence and result in non-functional protein products. These mutations can cause a complete loss of function (amorphic), analogous to a protein null mutation, or only a partial loss of function (hypomorphic). May also include variants in regulatory regions.', 'aliases': ['loss_of_function_variant']}, + "GAIN_OF_FUNCTION": {'description': 'Gain-of-function variants have their phenotypic effect because the mutant protein does something different than the wild-type protein. Often, these variants cause disease by increasing protein activity (hypermorphic) or introducing a completely new function (neomorphic), but the specific molecular mechanisms underlying gain-of-function mutations can be complex. May also include variants in regulatory regions.', 'aliases': ['gain_of_function_variant']}, + "DOMINANT_NEGATIVE": {'description': 'Dominant-negative variants involve the mutant protein directly or indirectly blocking the normal biological function of the wild-type protein (antimorphic). They can thus cause a disproportionate (>50%) loss of function, even though only half of the protein is mutated eg. heterozygous variants in COL1A1 that disrupt the triple collagen helix.', 'aliases': ['antimorphic', 'dominant_negative_variant']}, + "UNDETERMINED_NON_LOSS_OF_FUNCTION": {'description': 'Very often it is difficult to distinguish between dominant negative and gain of function, but it is clearly a non-loss-of-function mechanism (e.g. from co-expression experiments showing a damaging effect from the mutant allele).', 'aliases': ['undetermined non-loss-of-function']}, + "UNDETERMINED": {'description': 'Not known.'}, +} + +class G2PMolecularMechanismSynopsis(RichEnum): + """ + A more detailed description of the molecular mechanism of a G2P gene-disease association, following the definitions of Backwell and Marsh (PMID:35395171). A synopsis refines the higher-level molecular mechanism; more than one synopsis may apply to a single gene-disease association. + """ + # Enum members + DESTABILISING_LOF = "DESTABILISING_LOF" + INTERACTION_DISRUPTING_LOF = "INTERACTION_DISRUPTING_LOF" + LOSS_OF_ACTIVITY_LOF = "LOSS_OF_ACTIVITY_LOF" + LOF_DUE_TO_PROTEIN_MISLOCALISATION = "LOF_DUE_TO_PROTEIN_MISLOCALISATION" + ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE = "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE" + COMPETITIVE_DOMINANT_NEGATIVE = "COMPETITIVE_DOMINANT_NEGATIVE" + ASSEMBLY_MEDIATED_GOF = "ASSEMBLY_MEDIATED_GOF" + LOCAL_LOF_LEADING_TO_OVERALL_GOF = "LOCAL_LOF_LEADING_TO_OVERALL_GOF" + AGGREGATION = "AGGREGATION" + OTHER_GOF = "OTHER_GOF" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanismSynopsis._metadata = { + "DESTABILISING_LOF": {'description': 'A process whereby a missense change destabilises the protein structure resulting in loss of function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "INTERACTION_DISRUPTING_LOF": {'description': 'A process whereby a variant allele disrupts interaction resulting in loss of function, for example a change in an interaction site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOSS_OF_ACTIVITY_LOF": {'description': 'A process whereby a variant allele disrupts activity resulting in loss of function, for example a change in an active site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOF_DUE_TO_PROTEIN_MISLOCALISATION": {'description': 'A loss of function caused by mislocalisation of a protein, rather than direct disruption of its structure or function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE": {'description': 'A protein change which does not prevent coassembly into a complex with wild-type subunits but results in poisoning the activity of the hybrid complex, causing a disproportionate loss of function.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "COMPETITIVE_DOMINANT_NEGATIVE": {'description': 'A process whereby the novel protein disrupts specific interactions by competing with wild-type protein, thus having a dominant-negative effect.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "ASSEMBLY_MEDIATED_GOF": {'description': 'A process whereby incorporation of a mutant subunit into a protein complex leads to a gain of function, for example through constitutive activation of a channel.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "LOCAL_LOF_LEADING_TO_OVERALL_GOF": {'description': 'A gain of function caused by the localised loss of a specific function within a protein, for example binding of a regulatory domain is disrupted but enzymatic activity is retained.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "AGGREGATION": {'description': 'A process by which the variant allele causes aggregation usually causing toxic gain of function, for example misfolded proteins self-assembling into large aggregates or RNA binding protein gelation.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "OTHER_GOF": {'description': 'A gain of function process other than local loss of function or assembly mediated, for example a mutation in an active site which changes histone binding causing a novel function.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, +} + +class G2PMolecularMechanismSupport(RichEnum): + """ + Whether the molecular mechanism recorded for a G2P gene-disease association is directly supported by reported evidence, or inferred by the curator. + """ + # Enum members + EVIDENCE = "EVIDENCE" + INFERRED = "INFERRED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanismSupport._metadata = { + "EVIDENCE": {'description': 'The molecular mechanism is directly supported by experimental evidence reported in a publication attached to the record.'}, + "INFERRED": {'description': 'The molecular mechanism is inferred by the curator rather than directly evidenced in the attached publications.'}, +} + +class G2PMechanismEvidenceCategory(RichEnum): + """ + The broad category of experimental evidence supporting a molecular mechanism in G2P. G2P evidence classifications reuse terms from the ClinGen gene-disease validity SOP Experimental Evidence Summary Matrix. + """ + # Enum members + FUNCTION = "FUNCTION" + FUNCTIONAL_ALTERATION = "FUNCTIONAL_ALTERATION" + MODELS = "MODELS" + RESCUE = "RESCUE" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMechanismEvidenceCategory._metadata = { + "FUNCTION": {'description': 'Evidence about the biochemical function, expression or interactions of the gene product.'}, + "FUNCTIONAL_ALTERATION": {'description': 'Evidence from cells in which the function of the gene has been disrupted, showing a phenotype consistent with the human disease process.'}, + "MODELS": {'description': 'Evidence from a cell culture model or non-human model organism with a disrupted copy of the gene.'}, + "RESCUE": {'description': 'Evidence that the phenotype can be rescued by restoring the wild-type gene or gene product.'}, +} + +class G2PFunctionEvidence(RichEnum): + """ + Types of evidence in the function category of the G2P molecular mechanism evidence classification. + """ + # Enum members + BIOCHEMICAL = "BIOCHEMICAL" + PROTEIN_INTERACTION = "PROTEIN_INTERACTION" + PROTEIN_EXPRESSION = "PROTEIN_EXPRESSION" + IN_SILICO_MODELLING = "IN_SILICO_MODELLING" + +# Set metadata after class creation to avoid it becoming an enum member +G2PFunctionEvidence._metadata = { + "BIOCHEMICAL": {'description': 'Evidence showing the gene product performs a biochemical function: (A) shared with other known genes in the disease of interest, or (B) consistent with the phenotype.'}, + "PROTEIN_INTERACTION": {'description': 'Evidence showing the gene product interacts with proteins previously implicated in the disease of interest.'}, + "PROTEIN_EXPRESSION": {'description': 'Evidence showing the gene is expressed in tissues relevant to the disease of interest and/or is altered in expression in patients who have the disease.'}, + "IN_SILICO_MODELLING": {'description': 'Evidence generated using computer simulations and models predicting the functional impact of relevant gene-specific variants. These models can predict protein structure changes, disruption of protein interactions, or changes in gene and/or protein expression.'}, +} + +class G2PFunctionalAlterationEvidence(RichEnum): + """ + Types of evidence in the functional alteration category of the G2P molecular mechanism evidence classification, distinguished by whether the cells came from an affected individual. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + NON_PATIENT_CELLS = "NON_PATIENT_CELLS" + +# Set metadata after class creation to avoid it becoming an enum member +G2PFunctionalAlterationEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that cultured patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, + "NON_PATIENT_CELLS": {'description': 'Evidence showing that cultured non-patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, +} + +class G2PModelsEvidence(RichEnum): + """ + Types of evidence in the models category of the G2P molecular mechanism evidence classification. + """ + # Enum members + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation to avoid it becoming an enum member +G2PModelsEvidence._metadata = { + "CELL_CULTURE_MODEL": {'description': 'A cell culture model with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'A non-human model organism with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, +} + +class G2PRescueEvidence(RichEnum): + """ + Types of evidence in the rescue category of the G2P molecular mechanism evidence classification, distinguished by the system in which rescue was demonstrated. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation to avoid it becoming an enum member +G2PRescueEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that the phenotype can be rescued in patient cells.'}, + "CELL_CULTURE_MODEL": {'description': 'Evidence showing that the phenotype can be rescued in cell culture models.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'Evidence showing that the phenotype can be rescued in non-human model organisms.'}, +} + +class G2PVariantConsequence(RichEnum): + """ + The consequence of the reported variants at the protein (for protein-coding genes) or the RNA (for non-protein coding genes), per allele. These are Sequence Ontology terms developed for G2P and described in PMID:37982373; the descriptions below are the G2P-authored usage notes rather than the SO text definitions. As in the other SO-backed enums here, title is uniformly the SO term label and any differing G2P label is carried as an alias; for four of the six values the SO and G2P labels coincide, which is why only altered_gene_product_sequence and function_uncertain_variant carry an alias. + """ + # Enum members + ALTERED_GENE_PRODUCT_LEVEL = "ALTERED_GENE_PRODUCT_LEVEL" + DECREASED_GENE_PRODUCT_LEVEL = "DECREASED_GENE_PRODUCT_LEVEL" + ABSENT_GENE_PRODUCT = "ABSENT_GENE_PRODUCT" + INCREASED_GENE_PRODUCT_LEVEL = "INCREASED_GENE_PRODUCT_LEVEL" + ALTERED_GENE_PRODUCT_STRUCTURE = "ALTERED_GENE_PRODUCT_STRUCTURE" + UNCERTAIN = "UNCERTAIN" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantConsequence._metadata = { + "ALTERED_GENE_PRODUCT_LEVEL": {'description': 'A sequence variant that alters the level or amount of gene product produced. This high-level term can be applied where the direction of level change (increased vs decreased gene product level) is unknown or not confirmed, e.g., promoter or enhancer variants, some splice variants.', 'meaning': 'SO:0002314'}, + "DECREASED_GENE_PRODUCT_LEVEL": {'description': "A sequence variant that decreases the level or amount of gene product produced, e.g., a 5' UTR variant that reduced protein levels by disrupting translation, a 3' UTR variant that affects RNA stability, splice variants that decrease but do not stop expression, variants leading to nonsense-mediated-decay (NMD)-competent premature termination codon (PTCs), or gene-disrupting structural variants.", 'meaning': 'SO:0002316'}, + "ABSENT_GENE_PRODUCT": {'description': 'A sequence variant that results in no gene product. e.g., whole gene or other large scale disruptive structural variant, variants producing NMD-competent PTCs.', 'meaning': 'SO:0002317'}, + "INCREASED_GENE_PRODUCT_LEVEL": {'description': 'A variant that increases the level or amount of gene product produced, e.g., non-disruptive gene duplications, some promoter or enhancer variants.', 'meaning': 'SO:0002315'}, + "ALTERED_GENE_PRODUCT_STRUCTURE": {'description': 'A sequence variant that alters the sequence of a gene product. e.g., missense variants, NMD-incompetent PTCs, and other length-changing variants (in-frame indels, stop loss).', 'meaning': 'SO:0002318', 'aliases': ['altered gene product structure']}, + "UNCERTAIN": {'description': 'A sequence variant in which the function of a gene product is unknown with respect to a reference. Used by G2P where the consequence of the reported variants could not be determined.', 'meaning': 'SO:0002220', 'aliases': ['uncertain']}, +} + +class G2PVariantTypeGroup(RichEnum): + """ + The primary type grouping under which G2P organises the variant types associated with a curated gene-disease pair. + """ + # Enum members + NMD_VARIANTS = "NMD_VARIANTS" + SPLICE_VARIANTS = "SPLICE_VARIANTS" + REGULATORY_VARIANTS = "REGULATORY_VARIANTS" + PROTEIN_CHANGING_VARIANTS = "PROTEIN_CHANGING_VARIANTS" + OTHER_VARIANTS = "OTHER_VARIANTS" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantTypeGroup._metadata = { + "NMD_VARIANTS": {'description': 'Variant types qualified by whether the resulting transcript is predicted to trigger or escape nonsense-mediated decay.'}, + "SPLICE_VARIANTS": {'description': 'Variant types affecting splice sites or splice regions.'}, + "REGULATORY_VARIANTS": {'description': 'Variant types in untranslated or regulatory regions.'}, + "PROTEIN_CHANGING_VARIANTS": {'description': 'Variant types that change the coding sequence of the gene product.'}, + "OTHER_VARIANTS": {'description': 'Variant types not covered by the NMD, splice, regulatory or protein changing groups, including structural and repeat changes.'}, +} + +class G2PVariantType(RichEnum): + """ + The types of variants associated with the curated gene-disease pair reported in the publication. All terms are Sequence Ontology terms. Where G2P uses a label that differs from the current SO label, the G2P label is recorded as an alias. Descriptions are the SO text definitions where SO provides one. +The NMD-qualified types have two parents in SO, so they are modelled with the base variant as is_a and the NMD qualifier as a mixin. LinkML preserves both, but as of linkml 1.9.5 the OWL generator emits only the is_a parent as rdfs:subClassOf and drops the mixin, so the NMD axis is additionally recorded in the nmd_status annotation to keep it available in every generated artifact. If a later linkml emits permissible-value mixins, that annotation is redundant and can go. + """ + # Enum members + NMD_TRIGGERING = "NMD_TRIGGERING" + NMD_ESCAPING = "NMD_ESCAPING" + STOP_GAINED_NMD_TRIGGERING = "STOP_GAINED_NMD_TRIGGERING" + STOP_GAINED_NMD_ESCAPING = "STOP_GAINED_NMD_ESCAPING" + FRAMESHIFT_VARIANT_NMD_TRIGGERING = "FRAMESHIFT_VARIANT_NMD_TRIGGERING" + FRAMESHIFT_VARIANT_NMD_ESCAPING = "FRAMESHIFT_VARIANT_NMD_ESCAPING" + SPLICE_DONOR_VARIANT_NMD_TRIGGERING = "SPLICE_DONOR_VARIANT_NMD_TRIGGERING" + SPLICE_DONOR_VARIANT_NMD_ESCAPING = "SPLICE_DONOR_VARIANT_NMD_ESCAPING" + SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING = "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING" + SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING = "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING" + SPLICE_REGION_VARIANT = "SPLICE_REGION_VARIANT" + SPLICE_ACCEPTOR_VARIANT = "SPLICE_ACCEPTOR_VARIANT" + SPLICE_DONOR_VARIANT = "SPLICE_DONOR_VARIANT" + FIVE_PRIME_UTR_VARIANT = "FIVE_PRIME_UTR_VARIANT" + THREE_PRIME_UTR_VARIANT = "THREE_PRIME_UTR_VARIANT" + REGULATORY_REGION_VARIANT = "REGULATORY_REGION_VARIANT" + START_LOST = "START_LOST" + STOP_GAINED = "STOP_GAINED" + STOP_LOST = "STOP_LOST" + FRAMESHIFT_VARIANT = "FRAMESHIFT_VARIANT" + MISSENSE_VARIANT = "MISSENSE_VARIANT" + INFRAME_INSERTION = "INFRAME_INSERTION" + INFRAME_DELETION = "INFRAME_DELETION" + SYNONYMOUS_VARIANT = "SYNONYMOUS_VARIANT" + INTRON_VARIANT = "INTRON_VARIANT" + INTERGENIC_VARIANT = "INTERGENIC_VARIANT" + NON_CODING_TRANSCRIPT_VARIANT = "NON_CODING_TRANSCRIPT_VARIANT" + SHORT_TANDEM_REPEAT_CHANGE = "SHORT_TANDEM_REPEAT_CHANGE" + COPY_NUMBER_VARIATION = "COPY_NUMBER_VARIATION" + WHOLE_PARTIAL_GENE_DELETION = "WHOLE_PARTIAL_GENE_DELETION" + WHOLE_PARTIAL_GENE_DUPLICATION = "WHOLE_PARTIAL_GENE_DUPLICATION" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantType._metadata = { + "NMD_TRIGGERING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript that leads to nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002319', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_triggering']}, + "NMD_ESCAPING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript but allows the transcript to escape nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002320', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_escaping']}, + "STOP_GAINED_NMD_TRIGGERING": {'description': 'A stop_gained (SO:0001587) variant that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002321', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "STOP_GAINED_NMD_ESCAPING": {'description': 'A stop_gained (SO:0001587) variant that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002322', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "FRAMESHIFT_VARIANT_NMD_TRIGGERING": {'description': 'A frameshift_variant (SO:0001589) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002323', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "FRAMESHIFT_VARIANT_NMD_ESCAPING": {'description': 'A frameshift_variant (SO:0001589) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002324', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_DONOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_donor_variant (SO:0001575) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002325', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_DONOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_donor_variant (SO:0001575) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002326', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_acceptor_variant (SO:0001574) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002327', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_acceptor_variant (SO:0001574) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002328', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_REGION_VARIANT": {'description': 'A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron.', 'meaning': 'SO:0001630', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_ACCEPTOR_VARIANT": {'description': "A splice variant that changes the 2 base region at the 3' end of an intron.", 'meaning': 'SO:0001574', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_DONOR_VARIANT": {'description': "A splice variant that changes the 2 base pair region at the 5' end of an intron.", 'meaning': 'SO:0001575', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "FIVE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 5' UTR.", 'meaning': 'SO:0001623', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "THREE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 3' UTR.", 'meaning': 'SO:0001624', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "REGULATORY_REGION_VARIANT": {'description': 'A sequence variant located within a regulatory region.', 'meaning': 'SO:0001566', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "START_LOST": {'description': 'A codon variant that changes at least one base of the canonical start codon.', 'meaning': 'SO:0002012', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_GAINED": {'description': 'A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened polypeptide.', 'meaning': 'SO:0001587', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_LOST": {'description': 'A sequence variant where at least one base of the terminator codon (stop) is changed, resulting in an elongated transcript.', 'meaning': 'SO:0001578', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "FRAMESHIFT_VARIANT": {'description': 'A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three.', 'meaning': 'SO:0001589', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "MISSENSE_VARIANT": {'description': 'A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved.', 'meaning': 'SO:0001583', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_INSERTION": {'description': 'An inframe non synonymous variant that inserts bases into in the coding sequence.', 'meaning': 'SO:0001821', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_DELETION": {'description': 'An inframe non synonymous variant that deletes bases from the coding sequence.', 'meaning': 'SO:0001822', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "SYNONYMOUS_VARIANT": {'description': 'A sequence variant where there is no resulting change to the encoded amino acid.', 'meaning': 'SO:0001819', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTRON_VARIANT": {'description': 'A transcript variant occurring within an intron.', 'meaning': 'SO:0001627', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTERGENIC_VARIANT": {'description': 'A sequence variant located in the intergenic region, between genes.', 'meaning': 'SO:0001628', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "NON_CODING_TRANSCRIPT_VARIANT": {'description': 'A transcript variant of a non coding RNA gene.', 'meaning': 'SO:0001619', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "SHORT_TANDEM_REPEAT_CHANGE": {'description': 'A sequence variant where the copies of a short tandem repeat (STR) feature are either contracted or expanded. SO:0002161 carries no text definition; this description is taken from the SO term comment.', 'meaning': 'SO:0002161', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "COPY_NUMBER_VARIATION": {'description': 'A variation that increases or decreases the copy number of a given region.', 'meaning': 'SO:0001019', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "WHOLE_PARTIAL_GENE_DELETION": {'description': 'A feature ablation whereby the deleted region includes a transcript feature. Used by G2P to record whole or partial gene deletions.', 'meaning': 'SO:0001893', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_deletion']}, + "WHOLE_PARTIAL_GENE_DUPLICATION": {'description': 'A feature amplification of a region containing a transcript. Used by G2P to record whole or partial gene duplications.', 'meaning': 'SO:0001889', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_duplication']}, +} + +class G2PPanel(RichEnum): + """ + The disease-area panels into which G2P organises its curated gene-disease associations. A gene-disease association may appear on more than one panel. + """ + # Enum members + CANCER = "CANCER" + CARDIAC = "CARDIAC" + DD = "DD" + EAR = "EAR" + EYE = "EYE" + SKELETAL = "SKELETAL" + SKIN = "SKIN" + +# Set metadata after class creation to avoid it becoming an enum member +G2PPanel._metadata = { + "CANCER": {'description': 'Cancer disorders.'}, + "CARDIAC": {'description': 'Cardiac disorders.'}, + "DD": {'description': 'Developmental disorders.', 'aliases': ['Developmental disorders']}, + "EAR": {'description': 'Ear disorders.'}, + "EYE": {'description': 'Eye disorders.'}, + "SKELETAL": {'description': 'Skeletal disorders.'}, + "SKIN": {'description': 'Skin disorders.'}, +} + class ProcessScaleEnum(RichEnum): """ Scale of bioprocessing operations from lab bench to commercial production @@ -16357,6 +17767,16 @@ class DownstreamProcessEnum(RichEnum): DISTILLATION = "DISTILLATION" DRYING = "DRYING" HOMOGENIZATION = "HOMOGENIZATION" + CLARIFICATION = "CLARIFICATION" + FLOCCULATION = "FLOCCULATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + DIAFILTRATION = "DIAFILTRATION" + TANGENTIAL_FLOW_FILTRATION = "TANGENTIAL_FLOW_FILTRATION" + BUFFER_EXCHANGE = "BUFFER_EXCHANGE" + ADSORPTION = "ADSORPTION" + VIRAL_INACTIVATION = "VIRAL_INACTIVATION" + POLISHING = "POLISHING" + LYOPHILIZATION = "LYOPHILIZATION" # Set metadata after class creation to avoid it becoming an enum member DownstreamProcessEnum._metadata = { @@ -16369,6 +17789,16 @@ class DownstreamProcessEnum(RichEnum): "DISTILLATION": {'description': 'Distillation', 'meaning': 'CHMO:0001534', 'annotations': {'principle': 'Boiling point difference'}}, "DRYING": {'description': 'Drying operations', 'meaning': 'CHMO:0001551', 'annotations': {'types': 'Spray, freeze, vacuum'}}, "HOMOGENIZATION": {'description': 'Cell disruption/homogenization', 'annotations': {'methods': 'High pressure, bead mill'}}, + "CLARIFICATION": {'description': 'Removal of cells and debris to produce a clarified harvest', 'annotations': {'methods': 'Centrifugation, depth filtration'}}, + "FLOCCULATION": {'description': 'Aggregation of cells and debris into flocs to aid clarification'}, + "ULTRAFILTRATION": {'description': 'Membrane concentration retaining macromolecules such as proteins', 'meaning': 'CHMO:0001645', 'annotations': {'mwco': 'Typically 1-1000 kDa'}}, + "DIAFILTRATION": {'description': 'Buffer exchange and desalting by ultrafiltration with continuous makeup'}, + "TANGENTIAL_FLOW_FILTRATION": {'description': 'Crossflow membrane filtration used for concentration and diafiltration', 'annotations': {'aliases': 'TFF, crossflow filtration'}}, + "BUFFER_EXCHANGE": {'description': 'Replacement of the buffer matrix of a product stream'}, + "ADSORPTION": {'description': 'Capture of product or impurities onto a solid sorbent'}, + "VIRAL_INACTIVATION": {'description': 'Treatment step that inactivates potential viral contaminants', 'annotations': {'methods': 'Low pH, solvent/detergent, heat'}}, + "POLISHING": {'description': 'Final chromatographic or filtration steps to remove trace impurities'}, + "LYOPHILIZATION": {'description': 'Freeze-drying to produce a stable solid product', 'meaning': 'CHMO:0001553', 'annotations': {'aliases': 'freeze drying'}}, } class FeedstockTypeEnum(RichEnum): @@ -16529,6 +17959,780 @@ class BioprocessOptimizationType(RichEnum): "DIGITAL_TWIN_MODELING": {'description': 'Use of computational process models for simulation, prediction, and optimization', 'annotations': {'approaches': 'mechanistic models, hybrid models, machine learning'}}, } +class UnitOperationType(RichEnum): + """ + Fundamental chemical and process engineering unit operations - the discrete processing steps that transform, separate, combine, or move process material. Grouped (via the unit_operation_class annotation) into momentum transfer, heat transfer, mass-transfer separations, mechanical separations, solids processing, reaction, and storage. + """ + # Enum members + PUMPING = "PUMPING" + COMPRESSION = "COMPRESSION" + GAS_MOVING = "GAS_MOVING" + FLOW_SPLITTING = "FLOW_SPLITTING" + STREAM_MIXING = "STREAM_MIXING" + HEAT_EXCHANGE = "HEAT_EXCHANGE" + HEATING = "HEATING" + COOLING = "COOLING" + CONDENSATION = "CONDENSATION" + EVAPORATION = "EVAPORATION" + DISTILLATION = "DISTILLATION" + ABSORPTION = "ABSORPTION" + STRIPPING = "STRIPPING" + LIQUID_LIQUID_EXTRACTION = "LIQUID_LIQUID_EXTRACTION" + LEACHING = "LEACHING" + ADSORPTION = "ADSORPTION" + ION_EXCHANGE = "ION_EXCHANGE" + CHROMATOGRAPHY = "CHROMATOGRAPHY" + CRYSTALLIZATION = "CRYSTALLIZATION" + PRECIPITATION = "PRECIPITATION" + DRYING = "DRYING" + FREEZE_DRYING = "FREEZE_DRYING" + HUMIDIFICATION = "HUMIDIFICATION" + MEMBRANE_SEPARATION = "MEMBRANE_SEPARATION" + MICROFILTRATION = "MICROFILTRATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + NANOFILTRATION = "NANOFILTRATION" + REVERSE_OSMOSIS = "REVERSE_OSMOSIS" + DIALYSIS = "DIALYSIS" + ELECTRODIALYSIS = "ELECTRODIALYSIS" + PERVAPORATION = "PERVAPORATION" + FILTRATION = "FILTRATION" + CENTRIFUGATION = "CENTRIFUGATION" + SEDIMENTATION = "SEDIMENTATION" + CLARIFICATION = "CLARIFICATION" + FLOTATION = "FLOTATION" + FLOCCULATION = "FLOCCULATION" + CYCLONE_SEPARATION = "CYCLONE_SEPARATION" + SCREENING = "SCREENING" + GAS_LIQUID_SEPARATION = "GAS_LIQUID_SEPARATION" + SIZE_REDUCTION = "SIZE_REDUCTION" + SIZE_ENLARGEMENT = "SIZE_ENLARGEMENT" + MIXING = "MIXING" + SOLIDS_CONVEYING = "SOLIDS_CONVEYING" + CHEMICAL_REACTION = "CHEMICAL_REACTION" + FERMENTATION = "FERMENTATION" + COMBUSTION = "COMBUSTION" + GASIFICATION = "GASIFICATION" + PYROLYSIS = "PYROLYSIS" + ELECTROLYSIS = "ELECTROLYSIS" + NEUTRALIZATION = "NEUTRALIZATION" + PURIFICATION = "PURIFICATION" + STORAGE = "STORAGE" + +# Set metadata after class creation to avoid it becoming an enum member +UnitOperationType._metadata = { + "PUMPING": {'description': 'Raising the pressure or moving of a liquid stream using a pump', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "COMPRESSION": {'description': 'Raising the pressure of a gas or vapor stream using a compressor', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "GAS_MOVING": {'description': 'Moving a gas stream at low pressure rise using a fan or blower', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "FLOW_SPLITTING": {'description': 'Dividing a single stream into two or more streams of identical composition', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "STREAM_MIXING": {'description': 'Combining two or more streams into a single stream', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "HEAT_EXCHANGE": {'description': 'Transfer of thermal energy between two streams without phase-change intent', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "HEATING": {'description': 'Raising the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "COOLING": {'description': 'Lowering the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "CONDENSATION": {'description': 'Converting a vapor to a liquid by removing heat', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "EVAPORATION": {'description': 'Concentrating a solution by vaporizing solvent, typically water', 'meaning': 'CHMO:0001574', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "DISTILLATION": {'description': 'Separation of components by differences in volatility (boiling point)', 'meaning': 'CHMO:0001532', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ABSORPTION": {'description': 'Selective transfer of one or more gas-phase components into a liquid solvent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "STRIPPING": {'description': 'Selective transfer of dissolved components from a liquid into a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LIQUID_LIQUID_EXTRACTION": {'description': 'Separation by partitioning of solutes between two immiscible liquid phases', 'meaning': 'CHMO:0001577', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LEACHING": {'description': 'Solid-liquid extraction of soluble components from a solid using a solvent', 'meaning': 'CHMO:0001681', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ADSORPTION": {'description': 'Selective uptake of components onto the surface of a solid sorbent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ION_EXCHANGE": {'description': 'Reversible exchange of ions between a solution and a solid ion-exchange resin', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CHROMATOGRAPHY": {'description': 'Separation by differential partitioning of solutes between a mobile and stationary phase', 'meaning': 'CHMO:0001000', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CRYSTALLIZATION": {'description': 'Formation of a solid crystalline phase from a solution or melt', 'meaning': 'PROCO:0000052', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "PRECIPITATION": {'description': 'Formation of an insoluble solid from solution by chemical or physical means', 'meaning': 'CHMO:0001688', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "DRYING": {'description': 'Removal of a liquid (usually water) from a solid or surface by vaporization', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "FREEZE_DRYING": {'description': 'Removal of solvent by sublimation from the frozen state (lyophilization)', 'meaning': 'CHMO:0001553', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION', 'aliases': 'lyophilization'}}, + "HUMIDIFICATION": {'description': 'Addition of water vapor to a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "MEMBRANE_SEPARATION": {'description': 'Separation of stream components using a semipermeable membrane', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "MICROFILTRATION": {'description': 'Membrane separation retaining particles roughly 0.1-10 micrometers', 'meaning': 'CHMO:0001641', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ULTRAFILTRATION": {'description': 'Membrane separation retaining macromolecules and colloids', 'meaning': 'CHMO:0001645', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "NANOFILTRATION": {'description': 'Membrane separation retaining small molecules and multivalent ions', 'meaning': 'CHMO:0001642', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "REVERSE_OSMOSIS": {'description': 'Pressure-driven membrane separation rejecting dissolved salts and small solutes', 'meaning': 'CHMO:0001643', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "DIALYSIS": {'description': 'Diffusive membrane separation of solutes across a concentration gradient', 'meaning': 'CHMO:0001522', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ELECTRODIALYSIS": {'description': 'Membrane separation of ions driven by an applied electric field', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "PERVAPORATION": {'description': 'Membrane separation combining permeation and partial vaporization of the permeate', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "FILTRATION": {'description': 'Separation of solids from a fluid by passage through a porous medium', 'meaning': 'CHMO:0001640', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CENTRIFUGATION": {'description': 'Separation of phases by density difference under centrifugal force', 'meaning': 'OBI:0302886', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SEDIMENTATION": {'description': 'Gravity separation of suspended solids or immiscible liquids by settling', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CLARIFICATION": {'description': 'Removal of suspended solids from a liquid to produce a clarified stream', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOTATION": {'description': 'Separation of solids or droplets by attachment to rising gas bubbles', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOCCULATION": {'description': 'Aggregation of fine suspended particles into larger flocs to aid separation', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CYCLONE_SEPARATION": {'description': 'Separation of particles from a fluid using centrifugal force in a cyclone', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SCREENING": {'description': 'Separation of particulate solids by size using a screen or sieve', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "GAS_LIQUID_SEPARATION": {'description': 'Disengagement of vapor and liquid phases, e.g. in a flash or knockout drum', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SIZE_REDUCTION": {'description': 'Reduction of particle size by crushing, grinding, or milling (comminution)', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SIZE_ENLARGEMENT": {'description': 'Increase of particle size by granulation, agglomeration, or pelletizing', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "MIXING": {'description': 'Blending of materials to achieve compositional or thermal uniformity', 'meaning': 'CHMO:0001685', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SOLIDS_CONVEYING": {'description': 'Transport of bulk particulate solids between process steps', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "CHEMICAL_REACTION": {'description': 'Chemical conversion of reactants to products in a reactor', 'annotations': {'unit_operation_class': 'REACTION'}}, + "FERMENTATION": {'description': 'Microbial or enzymatic conversion of substrate to product in a bioreactor', 'meaning': 'CHMO:0001624', 'annotations': {'unit_operation_class': 'REACTION'}}, + "COMBUSTION": {'description': 'Exothermic oxidation of a fuel, typically to generate heat or power', 'meaning': 'CHMO:0001473', 'annotations': {'unit_operation_class': 'REACTION'}}, + "GASIFICATION": {'description': 'Conversion of carbonaceous feedstock to synthesis gas under limited oxygen', 'meaning': 'CHMO:0001501', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PYROLYSIS": {'description': 'Thermal decomposition of material in the absence of oxygen', 'meaning': 'CHMO:0001502', 'annotations': {'unit_operation_class': 'REACTION'}}, + "ELECTROLYSIS": {'description': 'Driving a non-spontaneous chemical reaction using electrical energy', 'annotations': {'unit_operation_class': 'REACTION'}}, + "NEUTRALIZATION": {'description': 'Adjustment of pH by reaction of acid and base', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PURIFICATION": {'description': 'Removal of impurities to increase the purity of a product stream', 'meaning': 'CHMO:0002231', 'annotations': {'unit_operation_class': 'SEPARATION'}}, + "STORAGE": {'description': 'Holding of material in a vessel or tank between process steps', 'annotations': {'unit_operation_class': 'STORAGE'}}, +} + +class ProcessEquipmentType(RichEnum): + """ + Physical equipment / asset types used in process plants. These correspond to the nodes of a process flowsheet and complement UnitOperationType (which describes the function performed). Grouped via the equipment_class annotation. + """ + # Enum members + STORAGE_TANK = "STORAGE_TANK" + PRESSURE_VESSEL = "PRESSURE_VESSEL" + HOPPER = "HOPPER" + FLASH_DRUM = "FLASH_DRUM" + KNOCKOUT_DRUM = "KNOCKOUT_DRUM" + REACTOR = "REACTOR" + BIOREACTOR = "BIOREACTOR" + FERMENTER = "FERMENTER" + DISTILLATION_COLUMN = "DISTILLATION_COLUMN" + ABSORPTION_COLUMN = "ABSORPTION_COLUMN" + STRIPPING_COLUMN = "STRIPPING_COLUMN" + EXTRACTION_COLUMN = "EXTRACTION_COLUMN" + CHROMATOGRAPHY_COLUMN = "CHROMATOGRAPHY_COLUMN" + SCRUBBER = "SCRUBBER" + HEAT_EXCHANGER = "HEAT_EXCHANGER" + CONDENSER = "CONDENSER" + REBOILER = "REBOILER" + EVAPORATOR = "EVAPORATOR" + FURNACE = "FURNACE" + BOILER = "BOILER" + COOLING_TOWER = "COOLING_TOWER" + DRYER = "DRYER" + CRYSTALLIZER = "CRYSTALLIZER" + PUMP = "PUMP" + COMPRESSOR = "COMPRESSOR" + BLOWER = "BLOWER" + FAN = "FAN" + VALVE = "VALVE" + CENTRIFUGE = "CENTRIFUGE" + FILTER = "FILTER" + DECANTER = "DECANTER" + CLARIFIER = "CLARIFIER" + CYCLONE = "CYCLONE" + HYDROCYCLONE = "HYDROCYCLONE" + MEMBRANE_MODULE = "MEMBRANE_MODULE" + SETTLER = "SETTLER" + MIXER = "MIXER" + AGITATOR = "AGITATOR" + MILL = "MILL" + CRUSHER = "CRUSHER" + SCREEN = "SCREEN" + CONVEYOR = "CONVEYOR" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessEquipmentType._metadata = { + "STORAGE_TANK": {'description': 'Atmospheric or low-pressure vessel for holding liquids or solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "PRESSURE_VESSEL": {'description': 'Vessel designed to hold contents at elevated pressure', 'annotations': {'equipment_class': 'VESSEL'}}, + "HOPPER": {'description': 'Funnel-shaped vessel for storing and discharging bulk solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "FLASH_DRUM": {'description': 'Vessel for separating vapor and liquid produced by a pressure let-down', 'annotations': {'equipment_class': 'VESSEL'}}, + "KNOCKOUT_DRUM": {'description': 'Vessel that removes entrained liquid from a gas stream', 'annotations': {'equipment_class': 'VESSEL'}}, + "REACTOR": {'description': 'Vessel in which chemical reactions are carried out', 'annotations': {'equipment_class': 'REACTOR', 'subtypes': 'CSTR, plug-flow, batch, fixed-bed, fluidized-bed'}}, + "BIOREACTOR": {'description': 'Vessel for culturing cells or carrying out enzymatic reactions', 'meaning': 'OBI:0001046', 'annotations': {'equipment_class': 'REACTOR'}}, + "FERMENTER": {'description': 'Bioreactor configured for microbial fermentation', 'annotations': {'equipment_class': 'REACTOR'}}, + "DISTILLATION_COLUMN": {'description': 'Column with trays or packing for vapor-liquid separation by distillation', 'annotations': {'equipment_class': 'COLUMN'}}, + "ABSORPTION_COLUMN": {'description': 'Column for gas absorption into a liquid solvent', 'annotations': {'equipment_class': 'COLUMN'}}, + "STRIPPING_COLUMN": {'description': 'Column for stripping volatile components from a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "EXTRACTION_COLUMN": {'description': 'Column for liquid-liquid extraction', 'annotations': {'equipment_class': 'COLUMN'}}, + "CHROMATOGRAPHY_COLUMN": {'description': 'Column packed with a stationary phase for chromatographic separation', 'meaning': 'OBI:0000038', 'annotations': {'equipment_class': 'COLUMN'}}, + "SCRUBBER": {'description': 'Contactor for removing pollutants or particulates from a gas using a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "HEAT_EXCHANGER": {'description': 'Equipment that transfers heat between two fluid streams', 'annotations': {'equipment_class': 'HEAT_TRANSFER', 'subtypes': 'shell-and-tube, plate, air-cooled'}}, + "CONDENSER": {'description': 'Heat exchanger that condenses a vapor to liquid', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "REBOILER": {'description': 'Heat exchanger that supplies boilup at the base of a distillation column', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "EVAPORATOR": {'description': 'Equipment that concentrates a solution by vaporizing solvent', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "FURNACE": {'description': 'Fired heater that raises stream temperature by combustion', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "BOILER": {'description': 'Equipment that generates steam by transferring combustion heat to water', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "COOLING_TOWER": {'description': 'Equipment that rejects process heat to the atmosphere by evaporative cooling', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "DRYER": {'description': 'Equipment for removing liquid from solids by vaporization', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "CRYSTALLIZER": {'description': 'Equipment for producing crystalline solids from solution or melt', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "PUMP": {'description': 'Machine that moves or pressurizes a liquid', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "COMPRESSOR": {'description': 'Machine that raises the pressure of a gas', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "BLOWER": {'description': 'Machine that moves gas at a low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "FAN": {'description': 'Machine that moves large gas volumes at very low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "VALVE": {'description': 'Device that regulates, directs, or controls stream flow', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "CENTRIFUGE": {'description': 'Equipment that separates phases by density under centrifugal force', 'meaning': 'OBI:0400106', 'annotations': {'equipment_class': 'SEPARATION'}}, + "FILTER": {'description': 'Equipment that separates solids from a fluid using a porous medium', 'annotations': {'equipment_class': 'SEPARATION'}}, + "DECANTER": {'description': 'Equipment that separates immiscible liquids or settled solids by gravity', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CLARIFIER": {'description': 'Settling tank that removes suspended solids from a liquid', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CYCLONE": {'description': 'Device that separates particles from a fluid by centrifugal action', 'annotations': {'equipment_class': 'SEPARATION'}}, + "HYDROCYCLONE": {'description': 'Cyclone that separates solids or immiscible liquids from a liquid stream', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MEMBRANE_MODULE": {'description': 'Housing containing membrane elements for a membrane separation', 'annotations': {'equipment_class': 'SEPARATION'}}, + "SETTLER": {'description': 'Vessel allowing phases to separate by gravity settling', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MIXER": {'description': 'Equipment for blending streams or materials', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "AGITATOR": {'description': 'Impeller-driven device that mixes vessel contents', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "MILL": {'description': 'Equipment that reduces particle size by grinding or crushing', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CRUSHER": {'description': 'Equipment that reduces large solids by mechanical force', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "SCREEN": {'description': 'Equipment that classifies particulate solids by size', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CONVEYOR": {'description': 'Equipment that transports bulk solids between locations', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, +} + +class ProcessStreamRole(RichEnum): + """ + The functional role of a stream within a process flowsheet, independent of its chemical composition. + """ + # Enum members + FEED = "FEED" + RAW_MATERIAL = "RAW_MATERIAL" + PRODUCT = "PRODUCT" + BYPRODUCT = "BYPRODUCT" + INTERMEDIATE = "INTERMEDIATE" + RECYCLE = "RECYCLE" + PURGE = "PURGE" + BLEED = "BLEED" + MAKEUP = "MAKEUP" + WASTE = "WASTE" + EFFLUENT = "EFFLUENT" + EMISSION = "EMISSION" + UTILITY = "UTILITY" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessStreamRole._metadata = { + "FEED": {'description': 'A stream entering the process or a unit operation as input'}, + "RAW_MATERIAL": {'description': 'A fresh raw material or reactant stream entering the process battery limits'}, + "PRODUCT": {'description': 'A primary product stream of commercial value leaving the process'}, + "BYPRODUCT": {'description': 'A secondary saleable or usable product produced alongside the main product'}, + "INTERMEDIATE": {'description': 'A stream flowing between unit operations within the process'}, + "RECYCLE": {'description': 'A stream returned to an upstream point for reprocessing'}, + "PURGE": {'description': 'A stream withdrawn from a recycle loop to prevent accumulation of inerts or impurities'}, + "BLEED": {'description': 'A small continuous stream withdrawn to control composition or level'}, + "MAKEUP": {'description': 'A stream added to replenish material lost from a circulating loop'}, + "WASTE": {'description': 'A stream with no further use that must be treated or disposed of'}, + "EFFLUENT": {'description': 'A liquid waste stream discharged from the process'}, + "EMISSION": {'description': 'A gaseous stream released to the atmosphere'}, + "UTILITY": {'description': 'A service stream (e.g. steam, cooling water) supplied to a unit operation'}, +} + +class ProcessStreamPhase(RichEnum): + """ + The physical phase or phase combination of a process stream. For single-phase fundamental states see also StateOfMatterEnum in the physics module; this enum adds the multiphase combinations common in process engineering. + """ + # Enum members + GAS = "GAS" + LIQUID = "LIQUID" + SOLID = "SOLID" + SUPERCRITICAL = "SUPERCRITICAL" + VAPOR_LIQUID = "VAPOR_LIQUID" + LIQUID_LIQUID = "LIQUID_LIQUID" + VAPOR_LIQUID_LIQUID = "VAPOR_LIQUID_LIQUID" + SLURRY = "SLURRY" + GAS_SOLID = "GAS_SOLID" + MULTIPHASE = "MULTIPHASE" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessStreamPhase._metadata = { + "GAS": {'description': 'A single gas or vapor phase', 'annotations': {'sff_phase_code': 'g'}}, + "LIQUID": {'description': 'A single liquid phase', 'annotations': {'sff_phase_code': 'l'}}, + "SOLID": {'description': 'A single solid phase', 'annotations': {'sff_phase_code': 's'}}, + "SUPERCRITICAL": {'description': 'A supercritical fluid above its critical temperature and pressure'}, + "VAPOR_LIQUID": {'description': 'A two-phase mixture of vapor and liquid'}, + "LIQUID_LIQUID": {'description': 'A two-phase mixture of two immiscible liquids'}, + "VAPOR_LIQUID_LIQUID": {'description': 'A three-phase mixture of a vapor and two immiscible liquids'}, + "SLURRY": {'description': 'A suspension of solids in a liquid'}, + "GAS_SOLID": {'description': 'A two-phase mixture of gas and entrained or fluidized solids'}, + "MULTIPHASE": {'description': 'A stream containing more than one phase, of mixed or unspecified composition'}, +} + +class UtilityType(RichEnum): + """ + Common plant utilities consumed or produced by process unit operations, used for energy and mass balance accounting on a flowsheet. + """ + # Enum members + STEAM = "STEAM" + LOW_PRESSURE_STEAM = "LOW_PRESSURE_STEAM" + MEDIUM_PRESSURE_STEAM = "MEDIUM_PRESSURE_STEAM" + HIGH_PRESSURE_STEAM = "HIGH_PRESSURE_STEAM" + COOLING_WATER = "COOLING_WATER" + CHILLED_WATER = "CHILLED_WATER" + REFRIGERANT = "REFRIGERANT" + HOT_OIL = "HOT_OIL" + BRINE = "BRINE" + ELECTRICITY = "ELECTRICITY" + PROCESS_WATER = "PROCESS_WATER" + DEMINERALIZED_WATER = "DEMINERALIZED_WATER" + NATURAL_GAS = "NATURAL_GAS" + FUEL_GAS = "FUEL_GAS" + COMPRESSED_AIR = "COMPRESSED_AIR" + INSTRUMENT_AIR = "INSTRUMENT_AIR" + NITROGEN = "NITROGEN" + FLARE = "FLARE" + +# Set metadata after class creation to avoid it becoming an enum member +UtilityType._metadata = { + "STEAM": {'description': 'Process steam used for heating or stripping', 'annotations': {'utility_category': 'HEAT'}}, + "LOW_PRESSURE_STEAM": {'description': 'Low-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '<3 barg'}}, + "MEDIUM_PRESSURE_STEAM": {'description': 'Medium-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '3-20 barg'}}, + "HIGH_PRESSURE_STEAM": {'description': 'High-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '>20 barg'}}, + "COOLING_WATER": {'description': 'Recirculated cooling water for heat rejection', 'annotations': {'utility_category': 'HEAT'}}, + "CHILLED_WATER": {'description': 'Refrigerated water for below-ambient cooling', 'annotations': {'utility_category': 'HEAT'}}, + "REFRIGERANT": {'description': 'Refrigerant fluid for low-temperature cooling duty', 'annotations': {'utility_category': 'HEAT'}}, + "HOT_OIL": {'description': 'Thermal oil heat-transfer fluid for high-temperature heating', 'annotations': {'utility_category': 'HEAT'}}, + "BRINE": {'description': 'Chilled brine used as a low-temperature coolant', 'annotations': {'utility_category': 'HEAT'}}, + "ELECTRICITY": {'description': 'Electrical power supplied to drivers and equipment', 'annotations': {'utility_category': 'POWER'}}, + "PROCESS_WATER": {'description': 'Treated water used as a process input', 'annotations': {'utility_category': 'OTHER'}}, + "DEMINERALIZED_WATER": {'description': 'High-purity demineralized water utility', 'annotations': {'utility_category': 'OTHER'}}, + "NATURAL_GAS": {'description': 'Natural gas supplied as fuel or feedstock', 'annotations': {'utility_category': 'OTHER'}}, + "FUEL_GAS": {'description': 'Fuel gas burned in fired heaters and boilers', 'annotations': {'utility_category': 'OTHER'}}, + "COMPRESSED_AIR": {'description': 'Compressed air utility for process or actuation use', 'annotations': {'utility_category': 'OTHER'}}, + "INSTRUMENT_AIR": {'description': 'Clean dry compressed air for instrumentation', 'annotations': {'utility_category': 'OTHER'}}, + "NITROGEN": {'description': 'Nitrogen used for inerting, blanketing, or purging', 'annotations': {'utility_category': 'OTHER'}}, + "FLARE": {'description': 'Flare system for safe combustion of relieved gases', 'annotations': {'utility_category': 'OTHER'}}, +} + +class ProcessIndustryCategory(RichEnum): + """ + Sectors of the process (continuous and batch) manufacturing industries. The pisces_category annotation records the corresponding top-level category in the PISCES Standard Flowsheet Format where one exists. + """ + # Enum members + PETROLEUM_REFINING = "PETROLEUM_REFINING" + PETROCHEMICAL = "PETROCHEMICAL" + BULK_CHEMICAL = "BULK_CHEMICAL" + SPECIALTY_CHEMICAL = "SPECIALTY_CHEMICAL" + AGROCHEMICAL = "AGROCHEMICAL" + POLYMER_AND_PLASTICS = "POLYMER_AND_PLASTICS" + PHARMACEUTICAL = "PHARMACEUTICAL" + BIOTECHNOLOGY = "BIOTECHNOLOGY" + BIOFUEL = "BIOFUEL" + FOOD_AND_BEVERAGE = "FOOD_AND_BEVERAGE" + PULP_AND_PAPER = "PULP_AND_PAPER" + METALS_AND_MINING = "METALS_AND_MINING" + WATER_AND_WASTEWATER_TREATMENT = "WATER_AND_WASTEWATER_TREATMENT" + POWER_GENERATION = "POWER_GENERATION" + GAS_PROCESSING = "GAS_PROCESSING" + CEMENT_AND_CONSTRUCTION_MATERIALS = "CEMENT_AND_CONSTRUCTION_MATERIALS" + GLASS_AND_CERAMICS = "GLASS_AND_CERAMICS" + TEXTILE = "TEXTILE" + COSMETICS_AND_PERSONAL_CARE = "COSMETICS_AND_PERSONAL_CARE" + NUCLEAR_FUEL = "NUCLEAR_FUEL" + SEMICONDUCTOR = "SEMICONDUCTOR" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessIndustryCategory._metadata = { + "PETROLEUM_REFINING": {'description': 'Refining of crude oil into fuels and feedstocks', 'annotations': {'pisces_category': 'Energy'}}, + "PETROCHEMICAL": {'description': 'Production of chemicals derived from petroleum and natural gas', 'annotations': {'pisces_category': 'Chemical'}}, + "BULK_CHEMICAL": {'description': 'Large-volume production of commodity chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "SPECIALTY_CHEMICAL": {'description': 'Production of lower-volume, high-value performance chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "AGROCHEMICAL": {'description': 'Production of fertilizers, pesticides, and other agricultural chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "POLYMER_AND_PLASTICS": {'description': 'Production of polymers, resins, and plastic materials', 'annotations': {'pisces_category': 'Chemical'}}, + "PHARMACEUTICAL": {'description': 'Manufacture of active pharmaceutical ingredients and drug products', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOTECHNOLOGY": {'description': 'Manufacture of products using biological systems and fermentation', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOFUEL": {'description': 'Production of biologically derived fuels such as ethanol and biodiesel', 'annotations': {'pisces_category': 'Biofuel'}}, + "FOOD_AND_BEVERAGE": {'description': 'Processing and manufacture of food and beverage products', 'annotations': {'pisces_category': 'Food Product'}}, + "PULP_AND_PAPER": {'description': 'Production of pulp, paper, and board from fiber'}, + "METALS_AND_MINING": {'description': 'Extraction and processing of metals and minerals'}, + "WATER_AND_WASTEWATER_TREATMENT": {'description': 'Treatment of water and wastewater streams'}, + "POWER_GENERATION": {'description': 'Generation of electrical power and process heat', 'annotations': {'pisces_category': 'Energy'}}, + "GAS_PROCESSING": {'description': 'Processing and separation of natural gas and industrial gases', 'annotations': {'pisces_category': 'Energy'}}, + "CEMENT_AND_CONSTRUCTION_MATERIALS": {'description': 'Production of cement, lime, and construction materials'}, + "GLASS_AND_CERAMICS": {'description': 'Manufacture of glass and ceramic products'}, + "TEXTILE": {'description': 'Production and finishing of textile fibers and fabrics'}, + "COSMETICS_AND_PERSONAL_CARE": {'description': 'Manufacture of cosmetics and personal care products'}, + "NUCLEAR_FUEL": {'description': 'Processing of nuclear fuel materials', 'annotations': {'pisces_category': 'Energy'}}, + "SEMICONDUCTOR": {'description': 'Fabrication of semiconductor and microelectronic materials'}, +} + +class ProcessOperationMode(RichEnum): + """ + The temporal mode in which a process or unit operation is run. + """ + # Enum members + BATCH = "BATCH" + CONTINUOUS = "CONTINUOUS" + SEMI_BATCH = "SEMI_BATCH" + SEMI_CONTINUOUS = "SEMI_CONTINUOUS" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessOperationMode._metadata = { + "BATCH": {'description': 'Material is charged, processed, and discharged in discrete batches'}, + "CONTINUOUS": {'description': 'Material flows through the process steadily without interruption'}, + "SEMI_BATCH": {'description': 'A hybrid mode where some streams are continuous while others are batch-wise'}, + "SEMI_CONTINUOUS": {'description': 'Process alternates between continuous operation and periodic interruptions'}, +} + +class EquationOfStateModel(RichEnum): + """ + Equations of state used to compute fugacity coefficients and PVT behavior of fluids in process simulation (the SFF phi method). + """ + # Enum members + IDEAL_GAS = "IDEAL_GAS" + VIRIAL = "VIRIAL" + REDLICH_KWONG = "REDLICH_KWONG" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + PENG_ROBINSON = "PENG_ROBINSON" + PENG_ROBINSON_BOSTON_MATHIAS = "PENG_ROBINSON_BOSTON_MATHIAS" + SRK_BOSTON_MATHIAS = "SRK_BOSTON_MATHIAS" + LEE_KESLER_PLOCKER = "LEE_KESLER_PLOCKER" + BENEDICT_WEBB_RUBIN_STARLING = "BENEDICT_WEBB_RUBIN_STARLING" + PREDICTIVE_SRK = "PREDICTIVE_SRK" + PC_SAFT = "PC_SAFT" + CUBIC_PLUS_ASSOCIATION = "CUBIC_PLUS_ASSOCIATION" + GERG_2008 = "GERG_2008" + IAPWS_95 = "IAPWS_95" + +# Set metadata after class creation to avoid it becoming an enum member +EquationOfStateModel._metadata = { + "IDEAL_GAS": {'description': 'Ideal gas law, assuming no intermolecular interactions'}, + "VIRIAL": {'description': 'Virial equation of state expressed as a power series in density or pressure'}, + "REDLICH_KWONG": {'description': 'Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'RK'}}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave modification of the Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'SRK'}}, + "PENG_ROBINSON": {'description': 'Peng-Robinson cubic equation of state', 'annotations': {'abbreviation': 'PR'}}, + "PENG_ROBINSON_BOSTON_MATHIAS": {'description': 'Peng-Robinson with Boston-Mathias alpha function for supercritical extrapolation', 'annotations': {'abbreviation': 'PR-BM'}}, + "SRK_BOSTON_MATHIAS": {'description': 'Soave-Redlich-Kwong with Boston-Mathias alpha function', 'annotations': {'abbreviation': 'SRK-BM'}}, + "LEE_KESLER_PLOCKER": {'description': 'Lee-Kesler-Plocker corresponding-states equation of state', 'annotations': {'abbreviation': 'LKP'}}, + "BENEDICT_WEBB_RUBIN_STARLING": {'description': 'Benedict-Webb-Rubin-Starling equation of state for light hydrocarbons', 'annotations': {'abbreviation': 'BWRS'}}, + "PREDICTIVE_SRK": {'description': 'Predictive SRK combining SRK with a UNIFAC-based mixing rule', 'annotations': {'abbreviation': 'PSRK'}}, + "PC_SAFT": {'description': 'Perturbed-chain statistical associating fluid theory equation of state', 'annotations': {'abbreviation': 'PC-SAFT'}}, + "CUBIC_PLUS_ASSOCIATION": {'description': 'Cubic-plus-association equation of state for associating fluids', 'annotations': {'abbreviation': 'CPA'}}, + "GERG_2008": {'description': 'GERG-2008 reference equation of state for natural gas mixtures'}, + "IAPWS_95": {'description': 'IAPWS-95 reference formulation for the thermodynamic properties of water', 'annotations': {'aliases': 'steam tables'}}, +} + +class ActivityCoefficientModel(RichEnum): + """ + Excess Gibbs energy / activity-coefficient models for non-ideal liquid phases (the SFF gamma method). + """ + # Enum members + IDEAL = "IDEAL" + MARGULES = "MARGULES" + VAN_LAAR = "VAN_LAAR" + REGULAR_SOLUTION = "REGULAR_SOLUTION" + WILSON = "WILSON" + NRTL = "NRTL" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + UNIFAC_DORTMUND = "UNIFAC_DORTMUND" + FLORY_HUGGINS = "FLORY_HUGGINS" + PITZER = "PITZER" + COSMO_SAC = "COSMO_SAC" + +# Set metadata after class creation to avoid it becoming an enum member +ActivityCoefficientModel._metadata = { + "IDEAL": {'description': "Ideal solution, all activity coefficients equal to one (Raoult's law)"}, + "MARGULES": {'description': 'Margules two-parameter activity-coefficient model'}, + "VAN_LAAR": {'description': 'Van Laar activity-coefficient model'}, + "REGULAR_SOLUTION": {'description': 'Scatchard-Hildebrand regular solution model based on solubility parameters'}, + "WILSON": {'description': 'Wilson local-composition activity-coefficient model'}, + "NRTL": {'description': 'Non-random two-liquid local-composition activity-coefficient model'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL model for systems containing ions', 'annotations': {'abbreviation': 'eNRTL'}}, + "UNIQUAC": {'description': 'Universal quasi-chemical activity-coefficient model'}, + "UNIFAC": {'description': 'UNIQUAC functional-group activity-coefficient (group-contribution) model'}, + "UNIFAC_DORTMUND": {'description': 'Modified UNIFAC (Dortmund) group-contribution model'}, + "FLORY_HUGGINS": {'description': 'Flory-Huggins model for polymer solutions'}, + "PITZER": {'description': 'Pitzer model for aqueous electrolyte activity coefficients'}, + "COSMO_SAC": {'description': 'COSMO-based segment activity-coefficient model from quantum chemistry', 'annotations': {'aliases': 'COSMO-RS, COSMO-SAC'}}, +} + +class ThermodynamicPropertyPackage(RichEnum): + """ + Named property methods/packages offered by process simulators, typically combining an equation of state and/or an activity-coefficient model. Used where a single package label rather than separate gamma/phi methods is recorded. + """ + # Enum members + IDEAL = "IDEAL" + NRTL = "NRTL" + NRTL_RK = "NRTL_RK" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + WILSON = "WILSON" + VAN_LAAR = "VAN_LAAR" + PENG_ROBINSON = "PENG_ROBINSON" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + PITZER = "PITZER" + CHAO_SEADER = "CHAO_SEADER" + GRAYSON_STREED = "GRAYSON_STREED" + BRAUN_K10 = "BRAUN_K10" + PC_SAFT = "PC_SAFT" + STEAM_TABLES = "STEAM_TABLES" + API_SOUR = "API_SOUR" + +# Set metadata after class creation to avoid it becoming an enum member +ThermodynamicPropertyPackage._metadata = { + "IDEAL": {'description': "Ideal (Raoult's law) property package"}, + "NRTL": {'description': 'NRTL activity model with ideal or RK vapor phase'}, + "NRTL_RK": {'description': 'NRTL activity model with Redlich-Kwong vapor phase'}, + "UNIQUAC": {'description': 'UNIQUAC activity model property package'}, + "UNIFAC": {'description': 'UNIFAC group-contribution property package'}, + "WILSON": {'description': 'Wilson activity model property package'}, + "VAN_LAAR": {'description': 'Van Laar activity model property package'}, + "PENG_ROBINSON": {'description': 'Peng-Robinson equation-of-state property package'}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave-Redlich-Kwong equation-of-state property package'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL property package for ionic systems'}, + "PITZER": {'description': 'Pitzer property package for aqueous electrolytes'}, + "CHAO_SEADER": {'description': 'Chao-Seader semi-empirical package for hydrocarbon systems'}, + "GRAYSON_STREED": {'description': 'Grayson-Streed package for hydrogen-rich hydrocarbon systems'}, + "BRAUN_K10": {'description': 'Braun K10 package for low-pressure heavy hydrocarbon systems', 'annotations': {'abbreviation': 'BK10'}}, + "PC_SAFT": {'description': 'PC-SAFT equation-of-state property package'}, + "STEAM_TABLES": {'description': 'Steam-table (IAPWS / ASME) property package for water and steam'}, + "API_SOUR": {'description': 'API sour-water package for systems with acid gases and ammonia'}, +} + +class MixingRuleModel(RichEnum): + """ + Mixing rules applied to equation-of-state parameters for mixtures (the SFF mixture method). + """ + # Enum members + IDEAL = "IDEAL" + VAN_DER_WAALS = "VAN_DER_WAALS" + HURON_VIDAL = "HURON_VIDAL" + MODIFIED_HURON_VIDAL = "MODIFIED_HURON_VIDAL" + WONG_SANDLER = "WONG_SANDLER" + PSRK_MIXING = "PSRK_MIXING" + +# Set metadata after class creation to avoid it becoming an enum member +MixingRuleModel._metadata = { + "IDEAL": {'description': 'Ideal mixing, no excess properties'}, + "VAN_DER_WAALS": {'description': 'Classical van der Waals one-fluid mixing rule with binary interaction parameters', 'annotations': {'aliases': 'classical, quadratic mixing rule'}}, + "HURON_VIDAL": {'description': 'Huron-Vidal mixing rule coupling an equation of state to an excess Gibbs energy model'}, + "MODIFIED_HURON_VIDAL": {'description': 'Modified Huron-Vidal first/second order mixing rules', 'annotations': {'aliases': 'MHV1, MHV2'}}, + "WONG_SANDLER": {'description': 'Wong-Sandler mixing rule with correct low- and high-density limits'}, + "PSRK_MIXING": {'description': 'Predictive SRK (PSRK) mixing rule based on UNIFAC'}, +} + +class PoyntingCorrectionMethod(RichEnum): + """ + Treatment of the Poynting correction factor accounting for the effect of pressure on liquid fugacity (the SFF PCF method). + """ + # Enum members + NONE = "NONE" + POYNTING = "POYNTING" + +# Set metadata after class creation to avoid it becoming an enum member +PoyntingCorrectionMethod._metadata = { + "NONE": {'description': 'No Poynting correction applied'}, + "POYNTING": {'description': 'Poynting correction factor applied to the liquid fugacity'}, +} + +class DesignSimulationMethod(RichEnum): + """ + Methods used to design or simulate unit operations, particularly separation columns - ranging from graphical and shortcut methods to rigorous stage-by-stage and rate-based models. + """ + # Enum members + MCCABE_THIELE = "MCCABE_THIELE" + PONCHON_SAVARIT = "PONCHON_SAVARIT" + FENSKE_UNDERWOOD_GILLILAND = "FENSKE_UNDERWOOD_GILLILAND" + KREMSER = "KREMSER" + MESH = "MESH" + INSIDE_OUT = "INSIDE_OUT" + RATE_BASED = "RATE_BASED" + EQUILIBRIUM_STAGE = "EQUILIBRIUM_STAGE" + SHORTCUT = "SHORTCUT" + RIGOROUS = "RIGOROUS" + PINCH_ANALYSIS = "PINCH_ANALYSIS" + +# Set metadata after class creation to avoid it becoming an enum member +DesignSimulationMethod._metadata = { + "MCCABE_THIELE": {'description': 'McCabe-Thiele graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "PONCHON_SAVARIT": {'description': 'Ponchon-Savarit enthalpy-composition graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "FENSKE_UNDERWOOD_GILLILAND": {'description': 'Fenske-Underwood-Gilliland shortcut method for multicomponent distillation', 'annotations': {'method_class': 'SHORTCUT', 'abbreviation': 'FUG'}}, + "KREMSER": {'description': 'Kremser shortcut method for absorber and stripper design', 'annotations': {'method_class': 'SHORTCUT'}}, + "MESH": {'description': 'Rigorous equilibrium-stage solution of the Material, Equilibrium, Summation and Heat (enthalpy) equations', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "INSIDE_OUT": {'description': 'Inside-out algorithm for rigorous equilibrium-stage column convergence', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "RATE_BASED": {'description': 'Rate-based (nonequilibrium) model accounting for mass and heat transfer rates', 'annotations': {'method_class': 'RATE_BASED'}}, + "EQUILIBRIUM_STAGE": {'description': 'Generic equilibrium-stage model assuming each stage reaches phase equilibrium', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "SHORTCUT": {'description': 'Generic shortcut / approximate design method', 'annotations': {'method_class': 'SHORTCUT'}}, + "RIGOROUS": {'description': 'Generic rigorous design method', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "PINCH_ANALYSIS": {'description': 'Pinch analysis for heat-exchanger network and energy integration', 'annotations': {'method_class': 'ENERGY_INTEGRATION'}}, +} + +class FlowsheetSolutionApproach(RichEnum): + """ + The overall computational strategy used to converge a process flowsheet. + """ + # Enum members + SEQUENTIAL_MODULAR = "SEQUENTIAL_MODULAR" + EQUATION_ORIENTED = "EQUATION_ORIENTED" + SIMULTANEOUS_MODULAR = "SIMULTANEOUS_MODULAR" + +# Set metadata after class creation to avoid it becoming an enum member +FlowsheetSolutionApproach._metadata = { + "SEQUENTIAL_MODULAR": {'description': 'Units solved one at a time in sequence, iterating on recycle tear streams'}, + "EQUATION_ORIENTED": {'description': 'All model equations assembled and solved simultaneously'}, + "SIMULTANEOUS_MODULAR": {'description': 'Hybrid approach combining modular unit models with a simultaneous convergence layer'}, +} + +class ProcessSimulator(RichEnum): + """ + Process simulation software packages used to model chemical and biochemical process flowsheets. + """ + # Enum members + ASPEN_PLUS = "ASPEN_PLUS" + ASPEN_HYSYS = "ASPEN_HYSYS" + ASPEN_CUSTOM_MODELER = "ASPEN_CUSTOM_MODELER" + UNISIM_DESIGN = "UNISIM_DESIGN" + PRO_II = "PRO_II" + AVEVA_PROCESS_SIMULATION = "AVEVA_PROCESS_SIMULATION" + CHEMCAD = "CHEMCAD" + DWSIM = "DWSIM" + COCO_SIMULATOR = "COCO_SIMULATOR" + GPROMS = "GPROMS" + PROSIMPLUS = "PROSIMPLUS" + PETRO_SIM = "PETRO_SIM" + BIOSTEAM = "BIOSTEAM" + SUPERPRO_DESIGNER = "SUPERPRO_DESIGNER" + IDAES = "IDAES" + CAPE_OPEN = "CAPE_OPEN" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessSimulator._metadata = { + "ASPEN_PLUS": {'description': 'Aspen Plus steady-state process simulator (AspenTech)'}, + "ASPEN_HYSYS": {'description': 'Aspen HYSYS process simulator (AspenTech)'}, + "ASPEN_CUSTOM_MODELER": {'description': 'Aspen Custom Modeler for user-defined unit operation models (AspenTech)'}, + "UNISIM_DESIGN": {'description': 'Honeywell UniSim Design process simulator'}, + "PRO_II": {'description': 'AVEVA Pro/II (formerly SimSci Pro/II) process simulator'}, + "AVEVA_PROCESS_SIMULATION": {'description': 'AVEVA Process Simulation (formerly SimCentral)'}, + "CHEMCAD": {'description': 'ChemCAD process simulator (Chemstations)'}, + "DWSIM": {'description': 'DWSIM open-source CAPE-OPEN process simulator'}, + "COCO_SIMULATOR": {'description': 'COCO/COFE free CAPE-OPEN flowsheeting environment'}, + "GPROMS": {'description': 'gPROMS equation-oriented process modeling environment (Siemens / PSE)'}, + "PROSIMPLUS": {'description': 'ProSimPlus steady-state process simulator (ProSim)'}, + "PETRO_SIM": {'description': 'KBC Petro-SIM process simulator'}, + "BIOSTEAM": {'description': 'BioSTEAM open-source biorefinery simulation and techno-economic analysis package'}, + "SUPERPRO_DESIGNER": {'description': 'SuperPro Designer batch and bioprocess simulator (Intelligen)'}, + "IDAES": {'description': 'IDAES open-source equation-oriented process systems engineering platform (US DOE)'}, + "CAPE_OPEN": {'description': 'A CAPE-OPEN compliant simulator or unit (interoperability standard, simulator unspecified)'}, +} + +class ChemicalIdentifierScheme(RichEnum): + """ + Schemes used to identify chemical substances, including registry numbers, line notations, structure-derived keys, and database accessions. + """ + # Enum members + CAS_RN = "CAS_RN" + SMILES = "SMILES" + INCHI = "INCHI" + INCHIKEY = "INCHIKEY" + IUPAC_NAME = "IUPAC_NAME" + MOLECULAR_FORMULA = "MOLECULAR_FORMULA" + PUBCHEM_CID = "PUBCHEM_CID" + CHEBI_ID = "CHEBI_ID" + KEGG_COMPOUND = "KEGG_COMPOUND" + DRUGBANK_ID = "DRUGBANK_ID" + EC_NUMBER = "EC_NUMBER" + +# Set metadata after class creation to avoid it becoming an enum member +ChemicalIdentifierScheme._metadata = { + "CAS_RN": {'description': 'CAS Registry Number assigned by the Chemical Abstracts Service', 'annotations': {'example': '64-17-5'}}, + "SMILES": {'description': 'Simplified Molecular-Input Line-Entry System structure notation', 'annotations': {'example': 'CCO'}}, + "INCHI": {'description': 'IUPAC International Chemical Identifier structure string', 'annotations': {'example': 'InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3'}}, + "INCHIKEY": {'description': 'Hashed fixed-length form of an InChI', 'annotations': {'example': 'LFQSCWFLJHTTHZ-UHFFFAOYSA-N'}}, + "IUPAC_NAME": {'description': 'Systematic IUPAC chemical name'}, + "MOLECULAR_FORMULA": {'description': 'Molecular or empirical chemical formula', 'annotations': {'example': 'C2H6O'}}, + "PUBCHEM_CID": {'description': 'PubChem Compound Identifier'}, + "CHEBI_ID": {'description': 'ChEBI ontology identifier'}, + "KEGG_COMPOUND": {'description': 'KEGG COMPOUND database accession'}, + "DRUGBANK_ID": {'description': 'DrugBank accession'}, + "EC_NUMBER": {'description': 'European Community (EINECS/EC) substance number'}, +} + +class CurrencyCode(RichEnum): + """ + World currencies by ISO 4217 alpha-3 code. The numeric_code, symbol, and minor_unit (number of decimal places) annotations record the corresponding ISO 4217 attributes. + """ + # Enum members + USD = "USD" + EUR = "EUR" + JPY = "JPY" + GBP = "GBP" + CNY = "CNY" + AUD = "AUD" + CAD = "CAD" + CHF = "CHF" + HKD = "HKD" + SGD = "SGD" + SEK = "SEK" + NOK = "NOK" + DKK = "DKK" + NZD = "NZD" + KRW = "KRW" + INR = "INR" + BRL = "BRL" + ZAR = "ZAR" + RUB = "RUB" + MXN = "MXN" + TRY = "TRY" + PLN = "PLN" + THB = "THB" + IDR = "IDR" + MYR = "MYR" + PHP = "PHP" + AED = "AED" + SAR = "SAR" + ILS = "ILS" + CZK = "CZK" + HUF = "HUF" + RON = "RON" + UAH = "UAH" + CLP = "CLP" + COP = "COP" + ARS = "ARS" + EGP = "EGP" + NGN = "NGN" + KES = "KES" + PKR = "PKR" + BDT = "BDT" + VND = "VND" + TWD = "TWD" + KWD = "KWD" + BHD = "BHD" + OMR = "OMR" + QAR = "QAR" + ISK = "ISK" + +# Set metadata after class creation to avoid it becoming an enum member +CurrencyCode._metadata = { + "USD": {'description': 'United States dollar', 'annotations': {'numeric_code': '840', 'symbol': '$', 'minor_unit': 2}}, + "EUR": {'description': 'Euro', 'annotations': {'numeric_code': '978', 'symbol': '€', 'minor_unit': 2}}, + "JPY": {'description': 'Japanese yen', 'annotations': {'numeric_code': '392', 'symbol': '¥', 'minor_unit': 0}}, + "GBP": {'description': 'British pound sterling', 'annotations': {'numeric_code': '826', 'symbol': '£', 'minor_unit': 2}}, + "CNY": {'description': 'Chinese yuan renminbi', 'annotations': {'numeric_code': '156', 'symbol': '¥', 'minor_unit': 2}}, + "AUD": {'description': 'Australian dollar', 'annotations': {'numeric_code': '036', 'symbol': '$', 'minor_unit': 2}}, + "CAD": {'description': 'Canadian dollar', 'annotations': {'numeric_code': '124', 'symbol': '$', 'minor_unit': 2}}, + "CHF": {'description': 'Swiss franc', 'annotations': {'numeric_code': '756', 'symbol': 'Fr', 'minor_unit': 2}}, + "HKD": {'description': 'Hong Kong dollar', 'annotations': {'numeric_code': '344', 'symbol': '$', 'minor_unit': 2}}, + "SGD": {'description': 'Singapore dollar', 'annotations': {'numeric_code': '702', 'symbol': '$', 'minor_unit': 2}}, + "SEK": {'description': 'Swedish krona', 'annotations': {'numeric_code': '752', 'symbol': 'kr', 'minor_unit': 2}}, + "NOK": {'description': 'Norwegian krone', 'annotations': {'numeric_code': '578', 'symbol': 'kr', 'minor_unit': 2}}, + "DKK": {'description': 'Danish krone', 'annotations': {'numeric_code': '208', 'symbol': 'kr', 'minor_unit': 2}}, + "NZD": {'description': 'New Zealand dollar', 'annotations': {'numeric_code': '554', 'symbol': '$', 'minor_unit': 2}}, + "KRW": {'description': 'South Korean won', 'annotations': {'numeric_code': '410', 'symbol': '₩', 'minor_unit': 0}}, + "INR": {'description': 'Indian rupee', 'annotations': {'numeric_code': '356', 'symbol': '₹', 'minor_unit': 2}}, + "BRL": {'description': 'Brazilian real', 'annotations': {'numeric_code': '986', 'symbol': 'R$', 'minor_unit': 2}}, + "ZAR": {'description': 'South African rand', 'annotations': {'numeric_code': '710', 'symbol': 'R', 'minor_unit': 2}}, + "RUB": {'description': 'Russian ruble', 'annotations': {'numeric_code': '643', 'symbol': '₽', 'minor_unit': 2}}, + "MXN": {'description': 'Mexican peso', 'annotations': {'numeric_code': '484', 'symbol': '$', 'minor_unit': 2}}, + "TRY": {'description': 'Turkish lira', 'annotations': {'numeric_code': '949', 'symbol': '₺', 'minor_unit': 2}}, + "PLN": {'description': 'Polish zloty', 'annotations': {'numeric_code': '985', 'symbol': 'zł', 'minor_unit': 2}}, + "THB": {'description': 'Thai baht', 'annotations': {'numeric_code': '764', 'symbol': '฿', 'minor_unit': 2}}, + "IDR": {'description': 'Indonesian rupiah', 'annotations': {'numeric_code': '360', 'symbol': 'Rp', 'minor_unit': 2}}, + "MYR": {'description': 'Malaysian ringgit', 'annotations': {'numeric_code': '458', 'symbol': 'RM', 'minor_unit': 2}}, + "PHP": {'description': 'Philippine peso', 'annotations': {'numeric_code': '608', 'symbol': '₱', 'minor_unit': 2}}, + "AED": {'description': 'United Arab Emirates dirham', 'annotations': {'numeric_code': '784', 'minor_unit': 2}}, + "SAR": {'description': 'Saudi riyal', 'annotations': {'numeric_code': '682', 'minor_unit': 2}}, + "ILS": {'description': 'Israeli new shekel', 'annotations': {'numeric_code': '376', 'symbol': '₪', 'minor_unit': 2}}, + "CZK": {'description': 'Czech koruna', 'annotations': {'numeric_code': '203', 'symbol': 'Kč', 'minor_unit': 2}}, + "HUF": {'description': 'Hungarian forint', 'annotations': {'numeric_code': '348', 'symbol': 'Ft', 'minor_unit': 2}}, + "RON": {'description': 'Romanian leu', 'annotations': {'numeric_code': '946', 'symbol': 'lei', 'minor_unit': 2}}, + "UAH": {'description': 'Ukrainian hryvnia', 'annotations': {'numeric_code': '980', 'symbol': '₴', 'minor_unit': 2}}, + "CLP": {'description': 'Chilean peso', 'annotations': {'numeric_code': '152', 'symbol': '$', 'minor_unit': 0}}, + "COP": {'description': 'Colombian peso', 'annotations': {'numeric_code': '170', 'symbol': '$', 'minor_unit': 2}}, + "ARS": {'description': 'Argentine peso', 'annotations': {'numeric_code': '032', 'symbol': '$', 'minor_unit': 2}}, + "EGP": {'description': 'Egyptian pound', 'annotations': {'numeric_code': '818', 'symbol': '£', 'minor_unit': 2}}, + "NGN": {'description': 'Nigerian naira', 'annotations': {'numeric_code': '566', 'symbol': '₦', 'minor_unit': 2}}, + "KES": {'description': 'Kenyan shilling', 'annotations': {'numeric_code': '404', 'symbol': 'Sh', 'minor_unit': 2}}, + "PKR": {'description': 'Pakistani rupee', 'annotations': {'numeric_code': '586', 'symbol': '₨', 'minor_unit': 2}}, + "BDT": {'description': 'Bangladeshi taka', 'annotations': {'numeric_code': '050', 'symbol': '৳', 'minor_unit': 2}}, + "VND": {'description': 'Vietnamese dong', 'annotations': {'numeric_code': '704', 'symbol': '₫', 'minor_unit': 0}}, + "TWD": {'description': 'New Taiwan dollar', 'annotations': {'numeric_code': '901', 'symbol': '$', 'minor_unit': 2}}, + "KWD": {'description': 'Kuwaiti dinar', 'annotations': {'numeric_code': '414', 'minor_unit': 3}}, + "BHD": {'description': 'Bahraini dinar', 'annotations': {'numeric_code': '048', 'minor_unit': 3}}, + "OMR": {'description': 'Omani rial', 'annotations': {'numeric_code': '512', 'minor_unit': 3}}, + "QAR": {'description': 'Qatari riyal', 'annotations': {'numeric_code': '634', 'minor_unit': 2}}, + "ISK": {'description': 'Icelandic krona', 'annotations': {'numeric_code': '352', 'symbol': 'kr', 'minor_unit': 0}}, +} + class LengthUnitEnum(RichEnum): """ Units of length/distance measurement @@ -16813,6 +19017,68 @@ class DataSizeUnitEnum(RichEnum): "TEBIBYTE": {'description': 'Tebibyte (2^40 bytes)', 'annotations': {'symbol': 'TiB', 'conversion_to_byte': '1099511627776', 'standard': 'binary'}}, } +class MassFlowRateUnitEnum(RichEnum): + """ + Units of mass flow rate (mass per unit time) + """ + # Enum members + KILOGRAM_PER_SECOND = "KILOGRAM_PER_SECOND" + KILOGRAM_PER_HOUR = "KILOGRAM_PER_HOUR" + GRAM_PER_SECOND = "GRAM_PER_SECOND" + TONNE_PER_HOUR = "TONNE_PER_HOUR" + TONNE_PER_DAY = "TONNE_PER_DAY" + POUND_PER_HOUR = "POUND_PER_HOUR" + +# Set metadata after class creation to avoid it becoming an enum member +MassFlowRateUnitEnum._metadata = { + "KILOGRAM_PER_SECOND": {'description': 'Kilograms per second (SI)', 'annotations': {'symbol': 'kg/s', 'system': 'SI'}}, + "KILOGRAM_PER_HOUR": {'description': 'Kilograms per hour', 'annotations': {'symbol': 'kg/h', 'conversion_to_kg_per_s': '0.000277778'}}, + "GRAM_PER_SECOND": {'description': 'Grams per second', 'annotations': {'symbol': 'g/s', 'conversion_to_kg_per_s': '0.001'}}, + "TONNE_PER_HOUR": {'description': 'Metric tonnes per hour', 'annotations': {'symbol': 't/h', 'conversion_to_kg_per_s': '0.277778'}}, + "TONNE_PER_DAY": {'description': 'Metric tonnes per day', 'annotations': {'symbol': 't/d', 'conversion_to_kg_per_s': '0.0115741'}}, + "POUND_PER_HOUR": {'description': 'Pounds (mass) per hour', 'annotations': {'symbol': 'lb/h', 'conversion_to_kg_per_s': '0.000125998', 'system': 'imperial'}}, +} + +class MolarFlowRateUnitEnum(RichEnum): + """ + Units of molar flow rate (amount of substance per unit time) + """ + # Enum members + MOLE_PER_SECOND = "MOLE_PER_SECOND" + MOLE_PER_HOUR = "MOLE_PER_HOUR" + KILOMOLE_PER_HOUR = "KILOMOLE_PER_HOUR" + KILOMOLE_PER_SECOND = "KILOMOLE_PER_SECOND" + +# Set metadata after class creation to avoid it becoming an enum member +MolarFlowRateUnitEnum._metadata = { + "MOLE_PER_SECOND": {'description': 'Moles per second (SI)', 'annotations': {'symbol': 'mol/s', 'system': 'SI'}}, + "MOLE_PER_HOUR": {'description': 'Moles per hour', 'annotations': {'symbol': 'mol/h', 'conversion_to_mol_per_s': '0.000277778'}}, + "KILOMOLE_PER_HOUR": {'description': 'Kilomoles per hour', 'annotations': {'symbol': 'kmol/h', 'conversion_to_mol_per_s': '0.277778'}}, + "KILOMOLE_PER_SECOND": {'description': 'Kilomoles per second', 'annotations': {'symbol': 'kmol/s', 'conversion_to_mol_per_s': '1000'}}, +} + +class VolumetricFlowRateUnitEnum(RichEnum): + """ + Units of volumetric flow rate (volume per unit time) + """ + # Enum members + CUBIC_METER_PER_SECOND = "CUBIC_METER_PER_SECOND" + CUBIC_METER_PER_HOUR = "CUBIC_METER_PER_HOUR" + LITER_PER_SECOND = "LITER_PER_SECOND" + LITER_PER_MINUTE = "LITER_PER_MINUTE" + GALLON_PER_MINUTE = "GALLON_PER_MINUTE" + CUBIC_FOOT_PER_MINUTE = "CUBIC_FOOT_PER_MINUTE" + +# Set metadata after class creation to avoid it becoming an enum member +VolumetricFlowRateUnitEnum._metadata = { + "CUBIC_METER_PER_SECOND": {'description': 'Cubic meters per second (SI)', 'annotations': {'symbol': 'm3/s', 'system': 'SI'}}, + "CUBIC_METER_PER_HOUR": {'description': 'Cubic meters per hour', 'annotations': {'symbol': 'm3/h', 'conversion_to_m3_per_s': '0.000277778'}}, + "LITER_PER_SECOND": {'description': 'Liters per second', 'annotations': {'symbol': 'L/s', 'conversion_to_m3_per_s': '0.001'}}, + "LITER_PER_MINUTE": {'description': 'Liters per minute', 'annotations': {'symbol': 'L/min', 'conversion_to_m3_per_s': '1.66667e-5'}}, + "GALLON_PER_MINUTE": {'description': 'US gallons per minute', 'annotations': {'symbol': 'gpm', 'conversion_to_m3_per_s': '6.30902e-5', 'system': 'US'}}, + "CUBIC_FOOT_PER_MINUTE": {'description': 'Cubic feet per minute', 'annotations': {'symbol': 'cfm', 'conversion_to_m3_per_s': '0.000471947', 'system': 'imperial'}}, +} + class QuantityKindEnum(RichEnum): """ Physical quantity kinds based on QUDT. These represent abstract types of physical quantities independent of the units used to measure them. @@ -17363,6 +19629,65 @@ class OpenSourceMaturityLevel(RichEnum): "ARCHIVED": {'description': 'No longer actively maintained'}, } +class SystemLifeCycleProcess15288(RichEnum): + """ + The 30 system life cycle processes grouped by ISO/IEC/IEEE 15288:2015. + """ + # Enum members + ACQUISITION = "ACQUISITION" + SUPPLY = "SUPPLY" + LIFE_CYCLE_MODEL_MANAGEMENT = "LIFE_CYCLE_MODEL_MANAGEMENT" + INFRASTRUCTURE_MANAGEMENT = "INFRASTRUCTURE_MANAGEMENT" + PORTFOLIO_MANAGEMENT = "PORTFOLIO_MANAGEMENT" + HUMAN_RESOURCE_MANAGEMENT = "HUMAN_RESOURCE_MANAGEMENT" + QUALITY_MANAGEMENT = "QUALITY_MANAGEMENT" + PROJECT_PLANNING = "PROJECT_PLANNING" + PROJECT_ASSESSMENT_AND_CONTROL = "PROJECT_ASSESSMENT_AND_CONTROL" + DECISION_MANAGEMENT = "DECISION_MANAGEMENT" + RISK_MANAGEMENT = "RISK_MANAGEMENT" + CONFIGURATION_MANAGEMENT = "CONFIGURATION_MANAGEMENT" + INFORMATION_MANAGEMENT = "INFORMATION_MANAGEMENT" + MEASUREMENT = "MEASUREMENT" + QUALITY_ASSURANCE = "QUALITY_ASSURANCE" + KNOWLEDGE_MANAGEMENT = "KNOWLEDGE_MANAGEMENT" + BUSINESS_OR_MISSION_ANALYSIS = "BUSINESS_OR_MISSION_ANALYSIS" + STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION = "STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION" + SYSTEM_REQUIREMENTS_DEFINITION = "SYSTEM_REQUIREMENTS_DEFINITION" + ARCHITECTURE_DEFINITION = "ARCHITECTURE_DEFINITION" + DESIGN_DEFINITION = "DESIGN_DEFINITION" + SYSTEM_ANALYSIS = "SYSTEM_ANALYSIS" + IMPLEMENTATION = "IMPLEMENTATION" + INTEGRATION = "INTEGRATION" + VERIFICATION = "VERIFICATION" + TRANSITION = "TRANSITION" + VALIDATION = "VALIDATION" + OPERATION = "OPERATION" + MAINTENANCE = "MAINTENANCE" + DISPOSAL = "DISPOSAL" + +# Set metadata after class creation to avoid it becoming an enum member +SystemLifeCycleProcess15288._metadata = { +} + +class VerificationValidationProcessIEEE1012(RichEnum): + """ + Verification and validation processes applied across the system, software, and hardware life cycle. + """ + # Enum members + CONCEPT_AND_REQUIREMENTS_V_AND_V = "CONCEPT_AND_REQUIREMENTS_V_AND_V" + ARCHITECTURE_AND_DESIGN_V_AND_V = "ARCHITECTURE_AND_DESIGN_V_AND_V" + IMPLEMENTATION_V_AND_V = "IMPLEMENTATION_V_AND_V" + INTEGRATION_V_AND_V = "INTEGRATION_V_AND_V" + QUALIFICATION_TESTING = "QUALIFICATION_TESTING" + INSTALLATION_AND_CHECKOUT = "INSTALLATION_AND_CHECKOUT" + OPERATION_V_AND_V = "OPERATION_V_AND_V" + MAINTENANCE_V_AND_V = "MAINTENANCE_V_AND_V" + DISPOSAL_V_AND_V = "DISPOSAL_V_AND_V" + +# Set metadata after class creation to avoid it becoming an enum member +VerificationValidationProcessIEEE1012._metadata = { +} + class OWLProfileEnum(RichEnum): """ OWL 2 profiles that provide different tradeoffs between expressiveness and computational complexity diff --git a/src/valuesets/datamodel/valuesets_pydantic.py b/src/valuesets/datamodel/valuesets_pydantic.py index 0a5f640a..6669b252 100644 --- a/src/valuesets/datamodel/valuesets_pydantic.py +++ b/src/valuesets/datamodel/valuesets_pydantic.py @@ -6360,6 +6360,342 @@ class OutcomeTypeEnum(RichEnum): "FN": {'description': 'False Negative'}, } +class StatisticalTestEnum(RichEnum): + """ + Statistical hypothesis tests, drawn primarily from the descendants of 'statistical hypothesis test' (OBI:0000673) in STATO. +This enum deliberately mixes abstraction levels: alongside concrete tests it retains STATO's grouping classes (GOODNESS_OF_FIT_TEST, HOMOSKEDASTICITY_TEST, SPHERICITY_TEST, POST_HOC_ANALYSIS, NON_PARAMETRIC_TEST and similar) so that a source reporting only "a test of normality was applied" can still be annotated. Prefer the most specific value that the source supports, and use a grouping value only when the specific test is genuinely not stated. +Several values are also repeated in the narrower enums below (TTestTypeEnum, NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum), which exist to constrain slot ranges. The duplicated meanings are intentional; from_meaning() resolves per enum class. + """ + # Enum members + STUDENTS_T_TEST = "STUDENTS_T_TEST" + ONE_SAMPLE_T_TEST = "ONE_SAMPLE_T_TEST" + PAIRED_T_TEST = "PAIRED_T_TEST" + TWO_SAMPLE_T_TEST_EQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE" + TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE" + YUEN_T_TEST = "YUEN_T_TEST" + Z_TEST = "Z_TEST" + ONE_SAMPLE_HOTELLING_T2_TEST = "ONE_SAMPLE_HOTELLING_T2_TEST" + TWO_SAMPLE_HOTELLING_T2_TEST = "TWO_SAMPLE_HOTELLING_T2_TEST" + ANOVA = "ANOVA" + ONE_WAY_ANOVA = "ONE_WAY_ANOVA" + TWO_WAY_ANOVA = "TWO_WAY_ANOVA" + MULTIWAY_ANOVA = "MULTIWAY_ANOVA" + REPEATED_MEASURES_ANOVA = "REPEATED_MEASURES_ANOVA" + MANOVA = "MANOVA" + ANCOVA = "ANCOVA" + F_TEST = "F_TEST" + MANN_WHITNEY_U_TEST = "MANN_WHITNEY_U_TEST" + WILCOXON_SIGNED_RANK_TEST = "WILCOXON_SIGNED_RANK_TEST" + KRUSKAL_WALLIS_TEST = "KRUSKAL_WALLIS_TEST" + FRIEDMAN_TEST = "FRIEDMAN_TEST" + SIGN_TEST = "SIGN_TEST" + CHI_SQUARE_TEST = "CHI_SQUARE_TEST" + PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE = "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE" + PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST = "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST" + YATES_CORRECTED_CHI_SQUARE_TEST = "YATES_CORRECTED_CHI_SQUARE_TEST" + CHI_SQUARE_TEST_FOR_HOMOGENEITY = "CHI_SQUARE_TEST_FOR_HOMOGENEITY" + FISHERS_EXACT_TEST = "FISHERS_EXACT_TEST" + BARNARDS_TEST = "BARNARDS_TEST" + MCNEMAR_TEST = "MCNEMAR_TEST" + COCHRANS_Q_TEST = "COCHRANS_Q_TEST" + COCHRAN_ARMITAGE_TEST_FOR_TREND = "COCHRAN_ARMITAGE_TEST_FOR_TREND" + COCHRAN_MANTEL_HAENSZEL_TEST = "COCHRAN_MANTEL_HAENSZEL_TEST" + EXACT_BINOMIAL_TEST = "EXACT_BINOMIAL_TEST" + HYPERGEOMETRIC_TEST = "HYPERGEOMETRIC_TEST" + TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES = "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES" + GOODNESS_OF_FIT_TEST = "GOODNESS_OF_FIT_TEST" + SHAPIRO_WILK_TEST = "SHAPIRO_WILK_TEST" + KOLMOGOROV_SMIRNOV_TEST = "KOLMOGOROV_SMIRNOV_TEST" + ANDERSON_DARLING_TEST = "ANDERSON_DARLING_TEST" + HOSMER_LEMESHOW_TEST = "HOSMER_LEMESHOW_TEST" + LEVENES_TEST = "LEVENES_TEST" + BARTLETTS_TEST = "BARTLETTS_TEST" + BROWN_FORSYTHE_TEST = "BROWN_FORSYTHE_TEST" + BREUSCH_PAGAN_TEST = "BREUSCH_PAGAN_TEST" + HOMOSKEDASTICITY_TEST = "HOMOSKEDASTICITY_TEST" + HOMOGENEITY_TEST = "HOMOGENEITY_TEST" + SPHERICITY_TEST = "SPHERICITY_TEST" + MAUCHLYS_TEST = "MAUCHLYS_TEST" + ODDS_RATIO_HOMOGENEITY_TEST = "ODDS_RATIO_HOMOGENEITY_TEST" + BRESLOW_DAY_TEST = "BRESLOW_DAY_TEST" + TARONES_TEST = "TARONES_TEST" + WOOLFS_TEST = "WOOLFS_TEST" + POST_HOC_ANALYSIS = "POST_HOC_ANALYSIS" + TUKEY_HSD_TEST = "TUKEY_HSD_TEST" + NEWMAN_KEULS_TEST = "NEWMAN_KEULS_TEST" + SCHEFFE_TEST = "SCHEFFE_TEST" + LEAST_SIGNIFICANT_DIFFERENCE_TEST = "LEAST_SIGNIFICANT_DIFFERENCE_TEST" + DUNNS_TEST = "DUNNS_TEST" + CONOVER_IMAN_TEST = "CONOVER_IMAN_TEST" + GRUBBS_TEST = "GRUBBS_TEST" + DIXON_Q_TEST = "DIXON_Q_TEST" + TIETJEN_MOORE_TEST = "TIETJEN_MOORE_TEST" + GENERALIZED_ESD_TEST = "GENERALIZED_ESD_TEST" + LIKELIHOOD_RATIO_TEST = "LIKELIHOOD_RATIO_TEST" + WALD_TEST = "WALD_TEST" + LOG_RANK_TEST = "LOG_RANK_TEST" + HARDY_WEINBERG_EQUILIBRIUM_TEST = "HARDY_WEINBERG_EQUILIBRIUM_TEST" + TRANSMISSION_DISEQUILIBRIUM_TEST = "TRANSMISSION_DISEQUILIBRIUM_TEST" + PEARSON_CORRELATION_TEST = "PEARSON_CORRELATION_TEST" + SPEARMAN_CORRELATION_TEST = "SPEARMAN_CORRELATION_TEST" + AB_TEST = "AB_TEST" + BETWEEN_GROUP_COMPARISON_TEST = "BETWEEN_GROUP_COMPARISON_TEST" + WITHIN_SUBJECT_COMPARISON_TEST = "WITHIN_SUBJECT_COMPARISON_TEST" + NON_PARAMETRIC_TEST = "NON_PARAMETRIC_TEST" + +# Set metadata after class creation to avoid it becoming an enum member +StatisticalTestEnum._metadata = { + "STUDENTS_T_TEST": {'description': "Test in which the test statistic follows a Student's t distribution under the null hypothesis; used when the population is assumed normal but the sample is small", 'meaning': 'OBI:0000739', 'aliases': ['t-test', 't-Test']}, + "ONE_SAMPLE_T_TEST": {'description': "Student's t-test comparing a sample mean against a specified population mean", 'meaning': 'STATO:0000302'}, + "PAIRED_T_TEST": {'description': "Student's t-test for differences between paired observations, as in a repeated measures design with two measurements per subject", 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE": {'description': 'Two-sample t-test comparing the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303', 'annotations': {'note': 'The bare terms "unpaired t-test" and "independent samples t-test" are ambiguous: they are attached here because this is the classical equal-variance form, but common software defaults to the Welch variant (R\'s t.test, scipy.stats.ttest_ind with equal_var=False). Choose TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE when the source did not assume equal variances.'}, 'aliases': ['independent samples t-test', 'unpaired t-test']}, + "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE": {'description': 'Two-sample t-test used when the variances of the two populations are not assumed equal', 'meaning': 'STATO:0000304', 'annotations': {'note': 'This is the default two-sample t-test in R and SciPy, so an unqualified "unpaired t-test" in a methods section often means this rather than TWO_SAMPLE_T_TEST_EQUAL_VARIANCE.'}, 'aliases': ["Welch's t-test"]}, + "YUEN_T_TEST": {'description': 'Robust two-sample t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, + "Z_TEST": {'description': 'Test evaluating the null hypothesis that the means of two populations are equal using a normal reference distribution', 'meaning': 'STATO:0000052'}, + "ONE_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate extension of the one-sample t-test comparing a vector of means against a reference vector', 'meaning': 'STATO:0000153'}, + "TWO_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate generalization of the two-sample t-test comparing mean vectors of two populations', 'meaning': 'STATO:0000098'}, + "ANOVA": {'description': 'Analysis of variance testing whether the means of several groups are equal', 'meaning': 'OBI:0200201', 'aliases': ['analysis of variance']}, + "ONE_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of a single independent variable', 'meaning': 'STATO:0000044'}, + "TWO_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of exactly two independent variables', 'meaning': 'STATO:0000045'}, + "MULTIWAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of more than two independent variables', 'meaning': 'STATO:0000048'}, + "REPEATED_MEASURES_ANOVA": {'description': 'Analysis of variance developed for non-independent observations arising from repeated measurements on the same experimental unit', 'meaning': 'STATO:0000260'}, + "MANOVA": {'description': 'Procedure for comparing multivariate sample means when there are two or more dependent variables', 'meaning': 'STATO:0000454'}, + "ANCOVA": {'description': 'Analysis of covariance evaluating whether population means of a dependent variable are equal across levels of a categorical independent variable while controlling for covariates', 'meaning': 'STATO:0000179', 'aliases': ['analysis of covariance']}, + "F_TEST": {'description': 'Test in which the test statistic follows an F-distribution under the null hypothesis', 'meaning': 'STATO:0000086'}, + "MANN_WHITNEY_U_TEST": {'description': 'Non-parametric test comparing two independent groups without assuming normally distributed values', 'meaning': 'STATO:0000076', 'aliases': ['Wilcoxon rank sum test', 'Mann-Whitney Test']}, + "WILCOXON_SIGNED_RANK_TEST": {'description': 'Non-parametric test of the null hypothesis that the median difference between paired observations is zero', 'meaning': 'STATO:0000092'}, + "KRUSKAL_WALLIS_TEST": {'description': 'Non-parametric test comparing two or more groups without assuming normally distributed values', 'meaning': 'STATO:0000094', 'aliases': ['Kruskal-Wallis Test']}, + "FRIEDMAN_TEST": {'description': 'Non-parametric test for differences among multiple related groups; extension of the Wilcoxon signed-rank test to more than two conditions', 'meaning': 'STATO:0000641'}, + "SIGN_TEST": {'description': 'Non-parametric test assessing whether the median of a population equals a specified value', 'meaning': 'STATO:0000644'}, + "CHI_SQUARE_TEST": {'description': 'Test in which the sampling distribution of the test statistic is a chi-square distribution under the null hypothesis', 'meaning': 'OBI:0200200'}, + "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE": {'description': 'Chi-square test of the independence of two categorical variables in a contingency table', 'meaning': 'STATO:0000081'}, + "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST": {'description': 'Chi-square test evaluating the goodness of fit of observed counts to an expected distribution', 'meaning': 'STATO:0000309'}, + "YATES_CORRECTED_CHI_SQUARE_TEST": {'description': 'Chi-square test of association between two dichotomous variables with a continuity correction', 'meaning': 'STATO:0000070', 'aliases': ["Yates' chi-squared test"]}, + "CHI_SQUARE_TEST_FOR_HOMOGENEITY": {'description': 'Test comparing proportions observed across multiple groups using contingency table frequencies', 'meaning': 'STATO:0000701'}, + "FISHERS_EXACT_TEST": {'description': 'Exact test for non-random association between two categorical variables', 'meaning': 'STATO:0000073'}, + "BARNARDS_TEST": {'description': "Exact unconditional test of association between two categorical variables, often more powerful than Fisher's exact test", 'meaning': 'STATO:0000310'}, + "MCNEMAR_TEST": {'description': 'Test applied to 2 x 2 contingency tables of paired nominal data to compare marginal frequencies', 'meaning': 'STATO:0000433'}, + "COCHRANS_Q_TEST": {'description': 'Test for unreplicated randomized block designs with a binary response and paired data', 'meaning': 'STATO:0000434'}, + "COCHRAN_ARMITAGE_TEST_FOR_TREND": {'description': 'Test for association between a dichotomous variable and an ordered categorical variable', 'meaning': 'STATO:0000148'}, + "COCHRAN_MANTEL_HAENSZEL_TEST": {'description': 'Test of independence between two categorical variables stratified by a third variable', 'meaning': 'STATO:0000074', 'aliases': ['Cochran-Mantel-Haenszel test']}, + "EXACT_BINOMIAL_TEST": {'description': 'Test of the statistical significance of deviations from a theoretically expected distribution of observations into two categories', 'meaning': 'STATO:0000298', 'aliases': ['binomial test']}, + "HYPERGEOMETRIC_TEST": {'description': 'Test evaluating whether a random variable follows a hypergeometric distribution; widely used for over-representation analysis', 'meaning': 'STATO:0000285', 'aliases': ['over-representation test']}, + "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES": {'description': 'Test evaluating whether a discrete predictor variable is associated with a discrete response variable', 'meaning': 'STATO:0000027'}, + "GOODNESS_OF_FIT_TEST": {'description': 'Test evaluating whether a sample distribution can be considered equivalent to a theoretical distribution', 'meaning': 'STATO:0000191'}, + "SHAPIRO_WILK_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a normally distributed population', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING_TEST": {'description': 'Goodness of fit test of whether a sample is drawn from a given probability distribution, weighting the tails more heavily', 'meaning': 'STATO:0000042'}, + "HOSMER_LEMESHOW_TEST": {'description': 'Goodness of fit test for logistic regression models comparing predicted probabilities against observed outcomes', 'meaning': 'STATO:0000653'}, + "LEVENES_TEST": {'description': 'Test of the null hypothesis of equality of variance across several populations', 'meaning': 'STATO:0000078'}, + "BARTLETTS_TEST": {'description': 'Test of whether k samples are drawn from populations with equal variances; sensitive to departures from normality', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE_TEST": {'description': 'Test of equality of group variances based on deviations from the group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN_TEST": {'description': 'Score test of the hypothesis of constant error variance against the alternative that error variance depends on the fitted values', 'meaning': 'STATO:0000284'}, + "HOMOSKEDASTICITY_TEST": {'description': 'Test evaluating whether variances from several random samples are similar', 'meaning': 'STATO:0000137', 'aliases': ['homoscedasticity test']}, + "HOMOGENEITY_TEST": {'description': 'Test evaluating whether a statistical measure computed from several random samples is similar', 'meaning': 'STATO:0000697'}, + "SPHERICITY_TEST": {'description': 'Test of the null hypothesis of equality of the variances of differences between levels of a repeated measures factor', 'meaning': 'STATO:0000131'}, + "MAUCHLYS_TEST": {'description': 'Test of sphericity in the context of repeated measures analysis of variance', 'meaning': 'STATO:0000199'}, + "ODDS_RATIO_HOMOGENEITY_TEST": {'description': 'Test of the null hypothesis that odds ratios are consistent across strata of a population', 'meaning': 'STATO:0000247'}, + "BRESLOW_DAY_TEST": {'description': 'Test of whether odds ratios are homogeneous across several 2x2 contingency tables', 'meaning': 'STATO:0000130'}, + "TARONES_TEST": {'description': 'Test of the null hypothesis that odds ratios are homogeneous across strata', 'meaning': 'STATO:0000136'}, + "WOOLFS_TEST": {'description': 'Test of the null hypothesis that odds ratios are the same across all strata of the population under investigation', 'meaning': 'STATO:0000246'}, + "POST_HOC_ANALYSIS": {'description': 'Test carried out following an analysis of variance that rejected the null hypothesis, to identify which groups differ', 'meaning': 'STATO:0000133'}, + "TUKEY_HSD_TEST": {'description': 'Post-hoc test following a significant ANOVA that determines which means differ, controlling the family-wise error rate', 'meaning': 'STATO:0000187', 'aliases': ['Tukey honestly significant difference test']}, + "NEWMAN_KEULS_TEST": {'description': 'Stepwise multiple comparison procedure identifying sample means that differ significantly, based on the studentized range statistic', 'meaning': 'STATO:0000261', 'aliases': ['Student-Newman-Keuls test']}, + "SCHEFFE_TEST": {'description': 'Conservative post-hoc procedure evaluating all possible contrasts while adjusting significance levels for multiple comparisons', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE_TEST": {'description': 'Post-hoc test for multiple comparisons of treatments by means of the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNNS_TEST": {'description': 'Non-parametric post-hoc test run after a Kruskal-Wallis test to identify which groups differ', 'meaning': 'STATO:0000490', 'aliases': ["Dunn's multiple comparison test"]}, + "CONOVER_IMAN_TEST": {'description': 'Post-hoc test for pairwise multiple comparisons using rank sums following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, + "GRUBBS_TEST": {'description': 'Test detecting a single outlier in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000441'}, + "DIXON_Q_TEST": {'description': 'Test detecting outliers in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000440'}, + "TIETJEN_MOORE_TEST": {'description': "Generalization of Grubbs' test allowing detection of more than one outlier", 'meaning': 'STATO:0000442'}, + "GENERALIZED_ESD_TEST": {'description': 'Outlier detection test with a built-in correction for multiple testing', 'meaning': 'STATO:0000443', 'aliases': ['generalized ESD test']}, + "LIKELIHOOD_RATIO_TEST": {'description': 'Test of whether there is evidence for moving from a simple model to a more complex model in which the simple model is nested', 'meaning': 'OBI:0000861'}, + "WALD_TEST": {'description': 'Test evaluating whether one or more model coefficients differ from zero, given their variance-covariance matrix', 'meaning': 'STATO:0000559', 'aliases': ['Wald chi-squared test']}, + "LOG_RANK_TEST": {'description': 'Test comparing the survival distributions of two or more groups', 'meaning': 'STATO:0000640', 'aliases': ['logrank test']}, + "HARDY_WEINBERG_EQUILIBRIUM_TEST": {'description': "Test of whether a population's allele proportions are in Hardy-Weinberg equilibrium, often used as a genotyping quality control", 'meaning': 'STATO:0000181'}, + "TRANSMISSION_DISEQUILIBRIUM_TEST": {'description': 'Test for genetic linkage between a genetic marker and a trait in families, robust to population structure', 'meaning': 'STATO:0000275'}, + "PEARSON_CORRELATION_TEST": {'description': "Test of whether two continuous variables are linearly associated, based on Pearson's correlation coefficient", 'meaning': 'NCIT:C53244'}, + "SPEARMAN_CORRELATION_TEST": {'description': "Non-parametric test of whether two variables are monotonically associated, based on Spearman's rank correlation coefficient", 'meaning': 'NCIT:C53249'}, + "AB_TEST": {'description': 'Statistical testing comparing two types of treatments or interventions', 'meaning': 'STATO:0000715'}, + "BETWEEN_GROUP_COMPARISON_TEST": {'description': 'Test detecting differences between the means computed for each study group population', 'meaning': 'STATO:0000279'}, + "WITHIN_SUBJECT_COMPARISON_TEST": {'description': 'Test evaluating whether a change occurs within one experimental unit over time following a treatment or event', 'meaning': 'STATO:0000202'}, + "NON_PARAMETRIC_TEST": {'description': 'Test making no assumption about the underlying data distribution', 'meaning': 'STATO:0000198'}, +} + +class TTestTypeEnum(RichEnum): + """ + Variants of Student's t-test + """ + # Enum members + ONE_SAMPLE = "ONE_SAMPLE" + PAIRED = "PAIRED" + TWO_SAMPLE_EQUAL_VARIANCE = "TWO_SAMPLE_EQUAL_VARIANCE" + TWO_SAMPLE_UNEQUAL_VARIANCE = "TWO_SAMPLE_UNEQUAL_VARIANCE" + TRIMMED_MEANS = "TRIMMED_MEANS" + +# Set metadata after class creation to avoid it becoming an enum member +TTestTypeEnum._metadata = { + "ONE_SAMPLE": {'description': 'Compares a sample mean against a specified population mean', 'meaning': 'STATO:0000302'}, + "PAIRED": {'description': 'Compares paired observations from the same experimental units', 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_EQUAL_VARIANCE": {'description': 'Compares the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303'}, + "TWO_SAMPLE_UNEQUAL_VARIANCE": {'description': "Compares the means of two independent samples with unequal variances (Welch's t-test)", 'meaning': 'STATO:0000304'}, + "TRIMMED_MEANS": {'description': 'Robust t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, +} + +class NormalityTestEnum(RichEnum): + """ + Goodness of fit tests commonly used to assess whether a sample is drawn from a normally distributed population + """ + # Enum members + SHAPIRO_WILK = "SHAPIRO_WILK" + KOLMOGOROV_SMIRNOV = "KOLMOGOROV_SMIRNOV" + ANDERSON_DARLING = "ANDERSON_DARLING" + +# Set metadata after class creation to avoid it becoming an enum member +NormalityTestEnum._metadata = { + "SHAPIRO_WILK": {'description': 'Tests the null hypothesis that a sample comes from a normal distribution', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV": {'description': 'Tests whether a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING": {'description': 'Tests whether a sample is drawn from a given probability distribution, with added sensitivity in the tails', 'meaning': 'STATO:0000042'}, +} + +class HomoscedasticityTestEnum(RichEnum): + """ + Tests evaluating equality of variances across groups or samples + """ + # Enum members + LEVENE = "LEVENE" + BARTLETT = "BARTLETT" + BROWN_FORSYTHE = "BROWN_FORSYTHE" + BREUSCH_PAGAN = "BREUSCH_PAGAN" + +# Set metadata after class creation to avoid it becoming an enum member +HomoscedasticityTestEnum._metadata = { + "LEVENE": {'description': 'Tests the null hypothesis of equality of variance in several populations', 'meaning': 'STATO:0000078'}, + "BARTLETT": {'description': 'Tests whether k samples come from populations with equal variances', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE": {'description': 'Tests equality of group variances using deviations from group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN": {'description': 'Tests for heteroscedasticity of regression residuals', 'meaning': 'STATO:0000284'}, +} + +class PostHocTestEnum(RichEnum): + """ + Multiple comparison procedures carried out after a significant omnibus test such as an ANOVA or Kruskal-Wallis test + """ + # Enum members + TUKEY_HSD = "TUKEY_HSD" + NEWMAN_KEULS = "NEWMAN_KEULS" + SCHEFFE = "SCHEFFE" + LEAST_SIGNIFICANT_DIFFERENCE = "LEAST_SIGNIFICANT_DIFFERENCE" + DUNN = "DUNN" + CONOVER_IMAN = "CONOVER_IMAN" + +# Set metadata after class creation to avoid it becoming an enum member +PostHocTestEnum._metadata = { + "TUKEY_HSD": {'description': 'Determines which means differ after a significant ANOVA while controlling the family-wise error rate', 'meaning': 'STATO:0000187'}, + "NEWMAN_KEULS": {'description': 'Stepwise multiple comparison procedure based on the studentized range', 'meaning': 'STATO:0000261'}, + "SCHEFFE": {'description': 'Conservative procedure evaluating all possible contrasts', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE": {'description': 'Pairwise comparisons using the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNN": {'description': 'Non-parametric post-hoc test following a Kruskal-Wallis test', 'meaning': 'STATO:0000490'}, + "CONOVER_IMAN": {'description': 'Pairwise rank-sum comparisons following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, +} + +class MultipleTestingCorrectionEnum(RichEnum): + """ + Methods for adjusting p-values or significance thresholds when many hypotheses are tested simultaneously. +As with StatisticalTestEnum, concrete methods (BONFERRONI, HOLM_BONFERRONI, BENJAMINI_HOCHBERG) sit alongside the error-rate classes they belong to (FAMILY_WISE_ERROR_RATE, FALSE_DISCOVERY_RATE) and procedural classes (SIMULTANEOUS, SEQUENTIAL). The classes are intended for sources that report only "FDR-corrected" without naming a procedure. + """ + # Enum members + BONFERRONI = "BONFERRONI" + HOLM_BONFERRONI = "HOLM_BONFERRONI" + BENJAMINI_HOCHBERG = "BENJAMINI_HOCHBERG" + BENJAMINI_YEKUTIELI = "BENJAMINI_YEKUTIELI" + HOLM_FDR = "HOLM_FDR" + HOMMEL_FDR = "HOMMEL_FDR" + FAMILY_WISE_ERROR_RATE = "FAMILY_WISE_ERROR_RATE" + FALSE_DISCOVERY_RATE = "FALSE_DISCOVERY_RATE" + SIMULTANEOUS = "SIMULTANEOUS" + SEQUENTIAL = "SEQUENTIAL" + ALPHA_SPENDING = "ALPHA_SPENDING" + ALPHA_INVESTING = "ALPHA_INVESTING" + NONE = "NONE" + +# Set metadata after class creation to avoid it becoming an enum member +MultipleTestingCorrectionEnum._metadata = { + "BONFERRONI": {'description': 'Divides the desired family-wise significance level by the number of comparisons made', 'meaning': 'NCIT:C61594', 'aliases': ['Bonferroni correction']}, + "HOLM_BONFERRONI": {'description': 'Sequentially rejective closed-test procedure controlling the family-wise error rate', 'meaning': 'OBI:0200066', 'aliases': ['Holm correction']}, + "BENJAMINI_HOCHBERG": {'description': 'Sequential p-value procedure controlling the false discovery rate under independence or positive dependence', 'meaning': 'OBI:0200036', 'aliases': ['BH', 'BH-FDR']}, + "BENJAMINI_YEKUTIELI": {'description': 'False discovery rate procedure valid under arbitrary dependence between tests', 'meaning': 'OBI:0200049', 'aliases': ['BY']}, + "HOLM_FDR": {'description': 'Application of the Holm p-value procedure to correct false discovery rate. Note that Holm\'s step-down procedure controls the family-wise error rate, not the false discovery rate; the "false discovery rate" wording is STATO\'s own label for this term. Prefer HOLM_BONFERRONI unless you specifically need the STATO term.', 'meaning': 'STATO:0000551'}, + "HOMMEL_FDR": {'description': 'Application of the Hommel p-value procedure to correct false discovery rate', 'meaning': 'STATO:0000552'}, + "FAMILY_WISE_ERROR_RATE": {'description': 'Procedure controlling the probability of making at least one false positive across a family of tests', 'meaning': 'OBI:0200073', 'aliases': ['FWER correction']}, + "FALSE_DISCOVERY_RATE": {'description': 'Procedure controlling the expected proportion of false positives among rejected hypotheses', 'meaning': 'OBI:0200163'}, + "SIMULTANEOUS": {'description': 'Correction method applying a single adjustment across all tests simultaneously', 'meaning': 'STATO:0000601'}, + "SEQUENTIAL": {'description': 'Correction method applying adjustments in a stepwise, ordered fashion', 'meaning': 'STATO:0000602'}, + "ALPHA_SPENDING": {'description': 'Sequential procedure allocating portions of the overall type I error rate across interim analyses', 'meaning': 'STATO:0000605'}, + "ALPHA_INVESTING": {'description': 'Sequential procedure that earns and spends alpha as hypotheses are tested', 'meaning': 'STATO:0000604'}, + "NONE": {'description': 'No adjustment made for multiple testing', 'annotations': {'note': 'No appropriate ontology term found for absence of correction'}}, +} + +class CorrelationCoefficientEnum(RichEnum): + """ + Coefficients quantifying the strength of association between two variables + """ + # Enum members + PEARSON = "PEARSON" + SPEARMAN = "SPEARMAN" + KENDALL = "KENDALL" + +# Set metadata after class creation to avoid it becoming an enum member +CorrelationCoefficientEnum._metadata = { + "PEARSON": {'description': 'Evaluates the strength of linear association between two continuous variables', 'meaning': 'STATO:0000280', 'aliases': ["Pearson's r"]}, + "SPEARMAN": {'description': 'Non-parametric measure of statistical dependence between two ranked variables', 'meaning': 'STATO:0000201', 'aliases': ["Spearman's rho"]}, + "KENDALL": {'description': 'Correlation coefficient between two ordinal or ranked variables', 'meaning': 'STATO:0000240', 'aliases': ["Kendall's tau"]}, +} + +class TestTailednessEnum(RichEnum): + """ + Whether a statistical test allocates the significance level to one or both tails of the reference distribution + """ + # Enum members + ONE_TAILED = "ONE_TAILED" + TWO_TAILED = "TWO_TAILED" + +# Set metadata after class creation to avoid it becoming an enum member +TestTailednessEnum._metadata = { + "ONE_TAILED": {'description': 'Allocates all of the significance level to one tail, evaluating a directional alternative hypothesis', 'meaning': 'STATO:0000286', 'aliases': ['one-sided test']}, + "TWO_TAILED": {'description': 'Allocates half of the significance level to each tail, evaluating a non-directional alternative hypothesis', 'meaning': 'STATO:0000287', 'aliases': ['two-sided test']}, +} + +class DistributionalAssumptionEnum(RichEnum): + """ + Whether an inference procedure assumes a parametric form for the underlying population distribution. +Note the deliberate type approximation: the values denote a property of a procedure, but the available ontology terms (NCIT:C53230, STATO:0000198) denote classes of test. Neither PATO nor OBI currently has a quality or characteristic term for "parametric", so the test classes are used as the closest available referent. + """ + # Enum members + PARAMETRIC = "PARAMETRIC" + NON_PARAMETRIC = "NON_PARAMETRIC" + +# Set metadata after class creation to avoid it becoming an enum member +DistributionalAssumptionEnum._metadata = { + "PARAMETRIC": {'description': 'Procedure that incorporates assumptions about the population probability distribution', 'meaning': 'NCIT:C53230'}, + "NON_PARAMETRIC": {'description': 'Procedure that makes no assumption about the underlying data distribution', 'meaning': 'STATO:0000198', 'aliases': ['Non-Parametric Test']}, +} + +class ComparisonObjectiveEnum(RichEnum): + """ + The objective of a between-group comparison, particularly in the design of controlled trials + """ + # Enum members + SUPERIORITY = "SUPERIORITY" + NON_INFERIORITY = "NON_INFERIORITY" + EQUIVALENCE = "EQUIVALENCE" + +# Set metadata after class creation to avoid it becoming an enum member +ComparisonObjectiveEnum._metadata = { + "SUPERIORITY": {'description': 'Comparison intended to show that the difference in effects exceeds a prespecified threshold of meaningful benefit', 'meaning': 'STATO:0000718'}, + "NON_INFERIORITY": {'description': 'Comparison intended to show that any difference in effects lies below a prespecified threshold of meaningful harm', 'meaning': 'STATO:0000716'}, + "EQUIVALENCE": {'description': 'Comparison intended to show that the absolute difference in effects is smaller than a prespecified threshold', 'meaning': 'STATO:0000717'}, +} + class PersonStatusEnum(RichEnum): """ Vital status of a person (living or deceased) @@ -15338,6 +15674,720 @@ class FMRIParadigmTypeEnum(RichEnum): "NATURALISTIC": {'description': 'Ecologically valid stimuli (movies, stories)', 'meaning': 'EDAM:topic_3678', 'annotations': {'stimulus_type': 'complex, realistic', 'advantage': 'ecological validity', 'analysis': 'inter-subject correlation'}, 'aliases': ['Experimental design and studies']}, } +class DICOMModalityEnum(RichEnum): + """ + Acquisition modality codes from DICOM PS3.16 Context ID 29 (Acquisition Modality), the defined terms for the Modality (0008,0060) attribute. The permissible value is the DICOM code itself; the title is the NCI Thesaurus label where a mapping exists and the DICOM code meaning is carried as an alias when it differs. Where an NCI Thesaurus term exists it is the meaning and the DCM code is an exact mapping; otherwise the DCM code is the meaning, so every value carries its DCM code in one of the two fields. Waveform modalities (ECG, EEG, etc.) are defined in CID 34 and are not included here, nor are the non-acquisition values that also appear in Modality (0008,0060) such as SR, PR, SEG, KO, DOC, OT and the RT objects. + """ + # Enum members + AR = "AR" + BI = "BI" + BMD = "BMD" + CR = "CR" + CT = "CT" + CFM = "CFM" + DMS = "DMS" + DG = "DG" + DX = "DX" + ES = "ES" + XC = "XC" + GM = "GM" + IO = "IO" + IVOCT = "IVOCT" + IVUS = "IVUS" + KER = "KER" + LS = "LS" + LEN = "LEN" + MR = "MR" + MG = "MG" + NM = "NM" + OAM = "OAM" + OPM = "OPM" + OP = "OP" + OPT = "OPT" + OPTBSV = "OPTBSV" + OPTENF = "OPTENF" + OPV = "OPV" + OCT = "OCT" + OSS = "OSS" + PX = "PX" + PA = "PA" + PT = "PT" + RF = "RF" + RG = "RG" + RTIMAGE = "RTIMAGE" + SM = "SM" + SRF = "SRF" + TG = "TG" + US = "US" + BDUS = "BDUS" + VA = "VA" + XA = "XA" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMModalityEnum._metadata = { + "AR": {'description': 'Automated measurement of refractive error of the eye', 'meaning': 'NCIT:C176330'}, + "BI": {'description': 'Imaging based on magnetic fields produced by the body, such as magnetoencephalography', 'meaning': 'DCM:BI'}, + "BMD": {'description': 'Measurement of bone mineral content and density, such as DXA', 'meaning': 'NCIT:C190514'}, + "CR": {'description': 'X-ray imaging using a phosphor imaging plate read out to a digital image', 'meaning': 'NCIT:C190521'}, + "CT": {'description': 'Cross-sectional X-ray imaging reconstructed by computer', 'meaning': 'NCIT:C17204'}, + "CFM": {'description': 'Laser-scanning microscopy that rejects out-of-focus light', 'meaning': 'NCIT:C17753'}, + "DMS": {'description': 'Non-invasive microscopic examination of the skin surface', 'meaning': 'NCIT:C116478'}, + "DG": {'description': 'Transillumination imaging of tissue, historically used for the breast', 'meaning': 'DCM:DG'}, + "DX": {'description': 'Projection X-ray imaging acquired directly with a digital detector', 'meaning': 'NCIT:C18001'}, + "ES": {'description': 'Imaging from an endoscope inserted into a body cavity or organ, including laryngoscopy and video endoscopy', 'meaning': 'NCIT:C16546', 'aliases': ['Endoscopy']}, + "XC": {'description': 'Visible-light photography of the patient with an external camera', 'meaning': 'DCM:XC'}, + "GM": {'description': 'General microscopy not otherwise classified', 'meaning': 'NCIT:C16853', 'aliases': ['General Microscopy']}, + "IO": {'description': 'Dental X-ray imaging with the detector inside the mouth', 'meaning': 'NCIT:C190548', 'aliases': ['Intra-oral Radiography']}, + "IVOCT": {'description': 'Catheter-based optical coherence tomography of blood vessels', 'meaning': 'NCIT:C190550'}, + "IVUS": {'description': 'Catheter-based ultrasound imaging of blood vessels', 'meaning': 'NCIT:C99535'}, + "KER": {'description': 'Measurement of the curvature of the anterior corneal surface', 'meaning': 'NCIT:C190551'}, + "LS": {'description': 'Surface geometry acquired with a laser scanner', 'meaning': 'DCM:LS'}, + "LEN": {'description': 'Measurement of the optical properties of spectacle lenses', 'meaning': 'DCM:LEN'}, + "MR": {'description': 'Imaging using radiofrequency pulses in a strong magnetic field', 'meaning': 'NCIT:C16809', 'aliases': ['Magnetic Resonance']}, + "MG": {'description': 'Low-dose X-ray imaging of the breast', 'meaning': 'NCIT:C16818'}, + "NM": {'description': 'Gamma camera imaging of an administered radiotracer, including planar and SPECT', 'meaning': 'NCIT:C62667', 'aliases': ['Nuclear Medicine']}, + "OAM": {'description': 'Measurement of axial dimensions of the eye, such as axial length', 'meaning': 'DCM:OAM'}, + "OPM": {'description': 'Topographic or thickness maps of ocular structures', 'meaning': 'DCM:OPM'}, + "OP": {'description': 'Photography of the eye, including fundus and slit lamp photography', 'meaning': 'NCIT:C190559'}, + "OPT": {'description': 'Optical coherence tomography of the eye, including retinal OCT B-scans', 'meaning': 'NCIT:C190561'}, + "OPTBSV": {'description': 'Volume analysis derived from ophthalmic OCT B-scans', 'meaning': 'DCM:OPTBSV'}, + "OPTENF": {'description': 'Transverse (en face) images derived from ophthalmic OCT volumes', 'meaning': 'NCIT:C190563', 'aliases': ['Ophthalmic Tomography En Face']}, + "OPV": {'description': 'Perimetry results describing the visual field', 'meaning': 'DCM:OPV'}, + "OCT": {'description': 'Interferometric imaging using near-infrared light, used outside ophthalmology', 'meaning': 'NCIT:C20828'}, + "OSS": {'description': 'Surface geometry acquired with an optical (non-laser) scanner', 'meaning': 'DCM:OSS'}, + "PX": {'description': 'Dental panoramic radiography of the jaws', 'meaning': 'DCM:PX'}, + "PA": {'description': 'Imaging of ultrasonic waves generated by optical absorption of pulsed light', 'meaning': 'NCIT:C116749', 'aliases': ['Photoacoustic']}, + "PT": {'description': 'Tomographic imaging of a positron-emitting radiotracer', 'meaning': 'NCIT:C17007'}, + "RF": {'description': 'Real-time X-ray imaging, including radiofluoroscopy', 'meaning': 'NCIT:C16588', 'aliases': ['Radiofluoroscopy']}, + "RG": {'description': 'Conventional film or screen radiographic imaging', 'meaning': 'NCIT:C38101', 'aliases': ['Radiographic imaging']}, + "RTIMAGE": {'description': 'Radiotherapy portal or setup image', 'meaning': 'DCM:RTIMAGE'}, + "SM": {'description': 'Whole slide imaging of microscope slides', 'meaning': 'DCM:SM'}, + "SRF": {'description': 'Refraction measured with patient feedback', 'meaning': 'DCM:SRF'}, + "TG": {'description': 'Imaging of body surface temperature', 'meaning': 'NCIT:C17194'}, + "US": {'description': 'Imaging using high-frequency sound waves, including static images and cine loops', 'meaning': 'NCIT:C17230', 'aliases': ['Ultrasound']}, + "BDUS": {'description': 'Quantitative ultrasound estimation of bone mineral density', 'meaning': 'NCIT:C190516'}, + "VA": {'description': 'Measurement of the sharpness of vision', 'meaning': 'NCIT:C87149'}, + "XA": {'description': 'X-ray imaging of blood vessels with contrast, including digital subtraction angiography', 'meaning': 'NCIT:C20080'}, +} + +class DICOMValueRepresentationEnum(RichEnum): + """ + The Value Representations (VRs) defined in DICOM PS3.5 Section 6.2, which specify the data type and format of the value of a data element. Tag validation tools check that each attribute is encoded with the VR required by the data dictionary. Permissible values are the two-letter DICOM VR codes. + """ + # Enum members + AE = "AE" + AS = "AS" + AT = "AT" + CS = "CS" + DA = "DA" + DS = "DS" + DT = "DT" + FL = "FL" + FD = "FD" + IS = "IS" + LO = "LO" + LT = "LT" + OB = "OB" + OD = "OD" + OF = "OF" + OL = "OL" + OV = "OV" + OW = "OW" + PN = "PN" + SH = "SH" + SL = "SL" + SQ = "SQ" + SS = "SS" + ST = "ST" + SV = "SV" + TM = "TM" + UC = "UC" + UI = "UI" + UL = "UL" + UN = "UN" + UR = "UR" + US = "US" + UT = "UT" + UV = "UV" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMValueRepresentationEnum._metadata = { + "AE": {'description': 'A string identifying an Application Entity; 16 bytes maximum', 'annotations': {'category': 'string'}}, + "AS": {'description': 'Age in the format nnnD, nnnW, nnnM or nnnY (days, weeks, months, years)', 'annotations': {'category': 'string'}}, + "AT": {'description': 'An ordered pair of 16-bit unsigned integers that is the value of a data element tag', 'annotations': {'category': 'binary'}}, + "CS": {'description': 'A string identifying a controlled concept; uppercase letters, digits, space and underscore, 16 bytes maximum', 'annotations': {'category': 'string'}}, + "DA": {'description': 'A date in the format YYYYMMDD', 'annotations': {'category': 'date_time'}}, + "DS": {'description': 'A string representing a fixed point or floating point number', 'annotations': {'category': 'string'}}, + "DT": {'description': 'A concatenated date-time string of the form YYYYMMDDHHMMSS.FFFFFF&ZZXX', 'annotations': {'category': 'date_time'}}, + "FL": {'description': 'Single precision IEEE 754 binary32 floating point value', 'annotations': {'category': 'binary'}}, + "FD": {'description': 'Double precision IEEE 754 binary64 floating point value', 'annotations': {'category': 'binary'}}, + "IS": {'description': 'A string representing a base-10 integer', 'annotations': {'category': 'string'}}, + "LO": {'description': 'A character string of up to 64 characters', 'annotations': {'category': 'string'}}, + "LT": {'description': 'A character string that may contain one or more paragraphs, up to 10240 characters', 'annotations': {'category': 'text'}}, + "OB": {'description': 'An octet stream whose encoding is specified by the negotiated transfer syntax', 'annotations': {'category': 'binary'}}, + "OD": {'description': 'A stream of IEEE 754 binary64 values', 'annotations': {'category': 'binary'}}, + "OF": {'description': 'A stream of IEEE 754 binary32 values', 'annotations': {'category': 'binary'}}, + "OL": {'description': 'A stream of 32-bit words', 'annotations': {'category': 'binary'}}, + "OV": {'description': 'A stream of 64-bit words', 'annotations': {'category': 'binary'}}, + "OW": {'description': 'A stream of 16-bit words; commonly used for Pixel Data', 'annotations': {'category': 'binary'}}, + "PN": {'description': 'A character string encoded using a five-component convention (family, given, middle, prefix, suffix)', 'annotations': {'category': 'string'}}, + "SH": {'description': 'A character string of up to 16 characters', 'annotations': {'category': 'string'}}, + "SL": {'description': "Signed 32-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "SQ": {'description': 'A sequence of zero or more items, each of which is a nested data set', 'annotations': {'category': 'sequence'}}, + "SS": {'description': "Signed 16-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "ST": {'description': 'A character string that may contain one or more paragraphs, up to 1024 characters', 'annotations': {'category': 'text'}}, + "SV": {'description': 'Signed 64-bit integer', 'annotations': {'category': 'binary'}}, + "TM": {'description': 'A time in the format HHMMSS.FFFFFF', 'annotations': {'category': 'date_time'}}, + "UC": {'description': 'A character string of unlimited length', 'annotations': {'category': 'string'}}, + "UI": {'description': 'A string of numeric components separated by periods, up to 64 characters, used for UIDs such as SOP Instance UIDs and transfer syntax UIDs', 'annotations': {'category': 'string'}}, + "UL": {'description': 'Unsigned 32-bit integer', 'annotations': {'category': 'binary'}}, + "UN": {'description': 'An octet stream whose encoding of the contents is unknown', 'annotations': {'category': 'binary'}}, + "UR": {'description': 'A string identifying a URI or URL as defined in RFC 3986', 'annotations': {'category': 'string'}}, + "US": {'description': 'Unsigned 16-bit integer', 'annotations': {'category': 'binary'}}, + "UT": {'description': 'A character string that may contain one or more paragraphs, of unlimited length', 'annotations': {'category': 'text'}}, + "UV": {'description': 'Unsigned 64-bit integer', 'annotations': {'category': 'binary'}}, +} + +class DICOMAttributeTypeEnum(RichEnum): + """ + Attribute requirement types defined in DICOM PS3.5 Section 7.4, which state whether an attribute must be present in a data set and whether it may have a zero-length value. Conformance checkers report missing Type 1 and Type 2 attributes as errors. These types also determine which de-identification action (D, Z or X) may be applied to an attribute. + """ + # Enum members + TYPE_1 = "TYPE_1" + TYPE_1C = "TYPE_1C" + TYPE_2 = "TYPE_2" + TYPE_2C = "TYPE_2C" + TYPE_3 = "TYPE_3" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMAttributeTypeEnum._metadata = { + "TYPE_1": {'description': 'The attribute shall be present with a valid non-zero-length value', 'aliases': ['1']}, + "TYPE_1C": {'description': 'The attribute shall be present with a valid value when a specified condition is met, and shall not be present otherwise', 'aliases': ['1C']}, + "TYPE_2": {'description': 'The attribute shall be present but may have a zero-length value if the value is unknown', 'aliases': ['2']}, + "TYPE_2C": {'description': 'The attribute shall be present, possibly with zero length, when a specified condition is met', 'aliases': ['2C']}, + "TYPE_3": {'description': 'The attribute is optional and may be absent or present with or without a value', 'aliases': ['3']}, +} + +class DICOMTransferSyntaxEnum(RichEnum): + """ + Transfer syntaxes registered in DICOM PS3.6 Annex A that define the byte ordering, VR encoding and pixel data compression of a DICOM data set. Pixel data validation includes confirming that decompression from a lossy or lossless transfer syntax yields the expected bit depth and that no unintended data loss occurred. Video transfer syntaxes (MPEG-2, H.264, HEVC) are used for endoscopy and ultrasound cine acquisitions. Fragmentable variants of the MPEG transfer syntaxes and retired JPEG processes are omitted; the full registry is at the see_also link. + """ + # Enum members + IMPLICIT_VR_LITTLE_ENDIAN = "IMPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_LITTLE_ENDIAN = "EXPLICIT_VR_LITTLE_ENDIAN" + ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN = "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN" + DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN = "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_BIG_ENDIAN = "EXPLICIT_VR_BIG_ENDIAN" + JPEG_BASELINE_PROCESS_1 = "JPEG_BASELINE_PROCESS_1" + JPEG_EXTENDED_PROCESS_2_4 = "JPEG_EXTENDED_PROCESS_2_4" + JPEG_LOSSLESS_PROCESS_14 = "JPEG_LOSSLESS_PROCESS_14" + JPEG_LOSSLESS_PROCESS_14_SV1 = "JPEG_LOSSLESS_PROCESS_14_SV1" + JPEG_LS_LOSSLESS = "JPEG_LS_LOSSLESS" + JPEG_LS_NEAR_LOSSLESS = "JPEG_LS_NEAR_LOSSLESS" + JPEG_2000_LOSSLESS_ONLY = "JPEG_2000_LOSSLESS_ONLY" + JPEG_2000 = "JPEG_2000" + JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY = "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY" + JPEG_2000_MULTICOMPONENT = "JPEG_2000_MULTICOMPONENT" + JPIP_REFERENCED = "JPIP_REFERENCED" + JPIP_REFERENCED_DEFLATE = "JPIP_REFERENCED_DEFLATE" + MPEG2_MAIN_PROFILE_MAIN_LEVEL = "MPEG2_MAIN_PROFILE_MAIN_LEVEL" + MPEG2_MAIN_PROFILE_HIGH_LEVEL = "MPEG2_MAIN_PROFILE_HIGH_LEVEL" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D" + MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2 = "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2" + HEVC_H265_MAIN_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_PROFILE_LEVEL_5_1" + HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1" + JPEG_XL_LOSSLESS = "JPEG_XL_LOSSLESS" + JPEG_XL_JPEG_RECOMPRESSION = "JPEG_XL_JPEG_RECOMPRESSION" + JPEG_XL = "JPEG_XL" + HTJ2K_LOSSLESS_ONLY = "HTJ2K_LOSSLESS_ONLY" + HTJ2K_RPCL_LOSSLESS_ONLY = "HTJ2K_RPCL_LOSSLESS_ONLY" + HTJ2K = "HTJ2K" + RLE_LOSSLESS = "RLE_LOSSLESS" + SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO" + SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMTransferSyntaxEnum._metadata = { + "IMPLICIT_VR_LITTLE_ENDIAN": {'description': 'Default transfer syntax for DICOM; VRs are looked up from the data dictionary rather than encoded', 'annotations': {'uid': '1.2.840.10008.1.2', 'compression': 'none'}}, + "EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed encoding with VRs explicitly encoded in each data element', 'annotations': {'uid': '1.2.840.10008.1.2.1', 'compression': 'none'}}, + "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed pixel data encapsulated in fragments, one per frame', 'annotations': {'uid': '1.2.840.10008.1.2.1.98', 'compression': 'none'}}, + "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Explicit VR Little Endian data set compressed as a whole with the deflate algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.1.99', 'compression': 'lossless'}}, + "EXPLICIT_VR_BIG_ENDIAN": {'description': 'Big endian byte ordering with explicit VRs; retired but still encountered in legacy archives', 'annotations': {'uid': '1.2.840.10008.1.2.2', 'compression': 'none', 'retired': 'true'}}, + "JPEG_BASELINE_PROCESS_1": {'description': 'Default transfer syntax for lossy JPEG 8-bit image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.50', 'compression': 'lossy'}}, + "JPEG_EXTENDED_PROCESS_2_4": {'description': 'Default transfer syntax for lossy JPEG 12-bit image compression (Process 4 only)', 'annotations': {'uid': '1.2.840.10008.1.2.4.51', 'compression': 'lossy'}}, + "JPEG_LOSSLESS_PROCESS_14": {'description': 'Lossless JPEG compression using any predictor', 'annotations': {'uid': '1.2.840.10008.1.2.4.57', 'compression': 'lossless'}}, + "JPEG_LOSSLESS_PROCESS_14_SV1": {'description': 'Default transfer syntax for lossless JPEG image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.70', 'compression': 'lossless'}}, + "JPEG_LS_LOSSLESS": {'description': 'Lossless compression using the JPEG-LS (ISO 14495) algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.4.80', 'compression': 'lossless'}}, + "JPEG_LS_NEAR_LOSSLESS": {'description': 'Near-lossless JPEG-LS compression with a bounded per-pixel error', 'annotations': {'uid': '1.2.840.10008.1.2.4.81', 'compression': 'lossy'}}, + "JPEG_2000_LOSSLESS_ONLY": {'description': 'JPEG 2000 wavelet compression restricted to reversible (lossless) mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.90', 'compression': 'lossless'}}, + "JPEG_2000": {'description': 'JPEG 2000 wavelet compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.91', 'compression': 'lossy or lossless'}}, + "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY": {'description': 'JPEG 2000 Part 2 multi-component transform, reversible mode only', 'annotations': {'uid': '1.2.840.10008.1.2.4.92', 'compression': 'lossless'}}, + "JPEG_2000_MULTICOMPONENT": {'description': 'JPEG 2000 Part 2 multi-component transform, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.93', 'compression': 'lossy or lossless'}}, + "JPIP_REFERENCED": {'description': 'Pixel data referenced via a JPEG 2000 Interactive Protocol URL rather than encoded in the data set', 'annotations': {'uid': '1.2.840.10008.1.2.4.94', 'compression': 'referenced'}}, + "JPIP_REFERENCED_DEFLATE": {'description': 'JPIP referenced pixel data with the remaining data set deflated', 'annotations': {'uid': '1.2.840.10008.1.2.4.95', 'compression': 'referenced'}}, + "MPEG2_MAIN_PROFILE_MAIN_LEVEL": {'description': 'MPEG-2 video compression for standard definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.100', 'compression': 'lossy', 'media': 'video'}}, + "MPEG2_MAIN_PROFILE_HIGH_LEVEL": {'description': 'MPEG-2 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.101', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.102', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression constrained for Blu-ray Disc compatibility', 'annotations': {'uid': '1.2.840.10008.1.2.4.103', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D": {'description': 'H.264 video compression for 2D video at higher frame rates and resolutions', 'annotations': {'uid': '1.2.840.10008.1.2.4.104', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D": {'description': 'H.264 video compression for 3D (stereoscopic) video', 'annotations': {'uid': '1.2.840.10008.1.2.4.105', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2": {'description': 'H.264 stereo high profile for stereoscopic video', 'annotations': {'uid': '1.2.840.10008.1.2.4.106', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 8-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.107', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 10-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.108', 'compression': 'lossy', 'media': 'video'}}, + "JPEG_XL_LOSSLESS": {'description': 'JPEG XL compression restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.110', 'compression': 'lossless'}}, + "JPEG_XL_JPEG_RECOMPRESSION": {'description': 'Lossless recompression of existing JPEG codestreams using JPEG XL', 'annotations': {'uid': '1.2.840.10008.1.2.4.111', 'compression': 'lossless'}}, + "JPEG_XL": {'description': 'JPEG XL compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.112', 'compression': 'lossy or lossless'}}, + "HTJ2K_LOSSLESS_ONLY": {'description': 'High-throughput JPEG 2000 (Part 15) restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.201', 'compression': 'lossless'}}, + "HTJ2K_RPCL_LOSSLESS_ONLY": {'description': 'Lossless high-throughput JPEG 2000 with resolution-position-component-layer progression for progressive decoding', 'annotations': {'uid': '1.2.840.10008.1.2.4.202', 'compression': 'lossless'}}, + "HTJ2K": {'description': 'High-throughput JPEG 2000, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.203', 'compression': 'lossy or lossless'}}, + "RLE_LOSSLESS": {'description': 'Run-length encoded lossless compression, widely used for ultrasound', 'annotations': {'uid': '1.2.840.10008.1.2.5', 'compression': 'lossless'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO": {'description': 'Uncompressed progressive video streamed per SMPTE ST 2110-20, used in real-time video communication', 'annotations': {'uid': '1.2.840.10008.1.2.7.1', 'compression': 'none', 'media': 'video'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO": {'description': 'Uncompressed interlaced video streamed per SMPTE ST 2110-20', 'annotations': {'uid': '1.2.840.10008.1.2.7.2', 'compression': 'none', 'media': 'video'}}, +} + +class DICOMNetworkServiceEnum(RichEnum): + """ + Network services used to query, retrieve and store DICOM instances between imaging systems such as PACS, modalities and research archives. Includes the classic DIMSE (DICOM Message Service Element) services of PS3.7 and the RESTful DICOMweb services of PS3.18. Cataloguing which services a source repository supports is part of the data landscape assessment that precedes extraction. + """ + # Enum members + C_ECHO = "C_ECHO" + C_STORE = "C_STORE" + C_FIND = "C_FIND" + C_MOVE = "C_MOVE" + C_GET = "C_GET" + N_EVENT_REPORT = "N_EVENT_REPORT" + N_GET = "N_GET" + N_SET = "N_SET" + N_ACTION = "N_ACTION" + N_CREATE = "N_CREATE" + N_DELETE = "N_DELETE" + QIDO_RS = "QIDO_RS" + WADO_RS = "WADO_RS" + STOW_RS = "STOW_RS" + WADO_URI = "WADO_URI" + UPS_RS = "UPS_RS" + CUSTOM_API = "CUSTOM_API" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMNetworkServiceEnum._metadata = { + "C_ECHO": {'description': 'DIMSE verification service used to test connectivity between two application entities', 'annotations': {'protocol': 'DIMSE'}}, + "C_STORE": {'description': 'DIMSE storage service that pushes a composite instance to a peer', 'annotations': {'protocol': 'DIMSE'}}, + "C_FIND": {'description': "DIMSE query service that matches attributes against a peer's database at patient, study, series or instance level", 'annotations': {'protocol': 'DIMSE'}}, + "C_MOVE": {'description': 'DIMSE retrieve service that instructs a peer to send matching instances to a named destination via C-STORE', 'annotations': {'protocol': 'DIMSE'}}, + "C_GET": {'description': 'DIMSE retrieve service that returns matching instances on the same association', 'annotations': {'protocol': 'DIMSE'}}, + "N_EVENT_REPORT": {'description': 'DIMSE-N notification service used to report events on a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_GET": {'description': 'DIMSE-N service that retrieves attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_SET": {'description': 'DIMSE-N service that modifies attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_ACTION": {'description': 'DIMSE-N service that requests an action on a normalized SOP instance, such as storage commitment', 'annotations': {'protocol': 'DIMSE'}}, + "N_CREATE": {'description': 'DIMSE-N service that creates a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_DELETE": {'description': 'DIMSE-N service that deletes a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "QIDO_RS": {'description': 'DICOMweb RESTful query service (Query based on ID for DICOM Objects) for searching studies, series and instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_RS": {'description': 'DICOMweb RESTful retrieve service (Web Access to DICOM Objects) for retrieving studies, series, instances, frames, metadata and rendered images', 'annotations': {'protocol': 'DICOMweb'}}, + "STOW_RS": {'description': 'DICOMweb RESTful store service (Store Over the Web) for uploading instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_URI": {'description': 'Legacy DICOMweb URI-based retrieve service for single instances', 'annotations': {'protocol': 'DICOMweb'}}, + "UPS_RS": {'description': 'DICOMweb RESTful worklist service for Unified Procedure Step management', 'annotations': {'protocol': 'DICOMweb'}}, + "CUSTOM_API": {'description': 'A vendor- or institution-specific interface that is not a standard DICOM network service'}, +} + +class DICOMSoftwareToolEnum(RichEnum): + """ + Software toolkits, libraries, validators, servers and platforms commonly used to read, write, validate, anonymize and serve DICOM data in research data management pipelines. The category annotation distinguishes general-purpose toolkits from conformance validators, archive servers and metadata anonymizers. + """ + # Enum members + DCMTK = "DCMTK" + PYDICOM = "PYDICOM" + GDCM = "GDCM" + DCM4CHE = "DCM4CHE" + ITK = "ITK" + DVTK = "DVTK" + DICOM3TOOLS = "DICOM3TOOLS" + DCIODVFY = "DCIODVFY" + DCENTVFY = "DCENTVFY" + PIXELMED = "PIXELMED" + RSNA_CTP = "RSNA_CTP" + ORTHANC = "ORTHANC" + DCM4CHEE = "DCM4CHEE" + XNAT = "XNAT" + TCIA_UTILS = "TCIA_UTILS" + DICOM_CLEANER = "DICOM_CLEANER" + HOROS = "HOROS" + OSIRIX = "OSIRIX" + SLICER_3D = "SLICER_3D" + ITK_SNAP = "ITK_SNAP" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMSoftwareToolEnum._metadata = { + "DCMTK": {'description': 'OFFIS DICOM Toolkit; C/C++ libraries and command-line utilities implementing DICOM network services and file handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://dicom.offis.de/en/dcmtk/'}}, + "PYDICOM": {'description': 'Pure Python library for reading, modifying and writing DICOM files, including pixel data access', 'annotations': {'category': 'toolkit', 'language': 'Python', 'license': 'MIT', 'url': 'https://github.com/pydicom/pydicom'}}, + "GDCM": {'description': 'Grassroots DICOM; C++ library with Python and other bindings for DICOM file and image codec handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://sourceforge.net/projects/gdcm/'}}, + "DCM4CHE": {'description': 'Java DICOM toolkit and the basis of the dcm4chee archive', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'MPL/GPL/LGPL', 'url': 'https://www.dcm4che.org/'}}, + "ITK": {'description': 'Insight Toolkit; C++ image processing library with DICOM readers built on GDCM', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'Apache-2.0', 'url': 'https://itk.org/'}}, + "DVTK": {'description': 'DICOM Validation Toolkit; validates object conformance and network behaviour against the standard', 'annotations': {'category': 'validator', 'language': 'C#', 'license': 'LGPL', 'url': 'https://www.dvtk.org/'}}, + "DICOM3TOOLS": {'description': "David Clunie's command-line utilities for creating, modifying, dumping and validating DICOM files", 'annotations': {'category': 'validator', 'language': 'C++', 'license': 'BSD', 'url': 'http://www.dclunie.com/dicom3tools.html'}}, + "DCIODVFY": {'description': 'dicom3tools utility that verifies a file against the Information Object Definition for its modality, reporting missing required attributes, incorrect VRs and values outside allowed ranges', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "DCENTVFY": {'description': 'dicom3tools utility that checks consistency of entity-level attributes across multiple files, such as all instances in a series sharing the same Series Instance UID', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "PIXELMED": {'description': 'PixelMed Java DICOM toolkit, including the DicomCleaner metadata anonymizer', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.pixelmed.com/'}}, + "RSNA_CTP": {'description': 'RSNA Clinical Trial Processor; pipeline application with a configurable DICOM anonymizer', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'url': 'https://mircwiki.rsna.org/index.php?title=CTP-The_RSNA_Clinical_Trial_Processor'}}, + "ORTHANC": {'description': 'Lightweight open-source DICOM server with a REST API and DICOMweb plugin', 'annotations': {'category': 'server', 'language': 'C++', 'license': 'GPL-3.0', 'url': 'https://www.orthanc-server.com/'}}, + "DCM4CHEE": {'description': 'Open-source DICOM archive and image manager built on dcm4che', 'annotations': {'category': 'server', 'language': 'Java', 'url': 'https://www.dcm4che.org/'}}, + "XNAT": {'description': 'Extensible Neuroimaging Archive Toolkit; open-source imaging informatics platform for managing, storing and sharing imaging data', 'annotations': {'category': 'platform', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.xnat.org/'}}, + "TCIA_UTILS": {'description': 'Python utilities from The Cancer Imaging Archive for querying, downloading and inventorying DICOM metadata', 'annotations': {'category': 'toolkit', 'language': 'Python', 'url': 'https://github.com/kirbyju/tcia_utils'}}, + "DICOM_CLEANER": {'description': 'PixelMed graphical tool for metadata de-identification and blackout of burned-in text', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'part_of': 'PixelMed'}}, + "HOROS": {'description': 'Open-source macOS DICOM viewer forked from OsiriX with built-in anonymization', 'annotations': {'category': 'viewer', 'license': 'LGPL-3.0', 'url': 'https://horosproject.org/'}}, + "OSIRIX": {'description': 'Commercial macOS DICOM viewer and workstation', 'annotations': {'category': 'viewer', 'license': 'commercial', 'url': 'https://www.osirix-viewer.com/'}}, + "SLICER_3D": {'description': 'Open-source platform for medical image visualization, segmentation and analysis with DICOM import', 'annotations': {'category': 'viewer', 'license': 'BSD-style', 'url': 'https://www.slicer.org/'}}, + "ITK_SNAP": {'description': 'Open-source tool for manual and semi-automatic segmentation of 3D medical images', 'annotations': {'category': 'viewer', 'license': 'GPL', 'url': 'http://www.itksnap.org/'}}, +} + +class DICOMDeidentificationMethodEnum(RichEnum): + """ + The Basic Application Level Confidentiality Profile and its options defined in DICOM PS3.15 Annex E, as coded in PS3.16 Context ID 7050 (De-identification Method). These codes are recorded in the De-identification Method Code Sequence (0012,0064) to document what was done to an instance. The "Clean" options remove additional identifying content; the "Retain" options preserve information that the basic profile would otherwise remove. + """ + # Enum members + BASIC_APPLICATION_CONFIDENTIALITY_PROFILE = "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE" + CLEAN_PIXEL_DATA_OPTION = "CLEAN_PIXEL_DATA_OPTION" + CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION = "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION" + CLEAN_GRAPHICS_OPTION = "CLEAN_GRAPHICS_OPTION" + CLEAN_STRUCTURED_CONTENT_OPTION = "CLEAN_STRUCTURED_CONTENT_OPTION" + CLEAN_DESCRIPTORS_OPTION = "CLEAN_DESCRIPTORS_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION" + RETAIN_PATIENT_CHARACTERISTICS_OPTION = "RETAIN_PATIENT_CHARACTERISTICS_OPTION" + RETAIN_DEVICE_IDENTITY_OPTION = "RETAIN_DEVICE_IDENTITY_OPTION" + RETAIN_UIDS_OPTION = "RETAIN_UIDS_OPTION" + RETAIN_SAFE_PRIVATE_OPTION = "RETAIN_SAFE_PRIVATE_OPTION" + RETAIN_INSTITUTION_IDENTITY_OPTION = "RETAIN_INSTITUTION_IDENTITY_OPTION" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMDeidentificationMethodEnum._metadata = { + "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE": {'description': 'The baseline profile that removes or replaces all attributes known to carry identifying information, including UIDs, dates and descriptive text', 'meaning': 'DCM:113100', 'annotations': {'kind': 'profile'}}, + "CLEAN_PIXEL_DATA_OPTION": {'description': 'Burned-in identifying text and annotations in the pixel data are removed', 'meaning': 'DCM:113101', 'annotations': {'kind': 'clean option'}}, + "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION": {'description': 'Recognizable visual features such as the face are removed from pixel data; this is the option under which de-facing is recorded', 'meaning': 'DCM:113102', 'annotations': {'kind': 'clean option'}}, + "CLEAN_GRAPHICS_OPTION": {'description': 'Identifying information in graphic annotations, overlays and presentation states is removed', 'meaning': 'DCM:113103', 'annotations': {'kind': 'clean option'}}, + "CLEAN_STRUCTURED_CONTENT_OPTION": {'description': 'Identifying information in structured report content items is removed', 'meaning': 'DCM:113104', 'annotations': {'kind': 'clean option'}}, + "CLEAN_DESCRIPTORS_OPTION": {'description': 'Free-text descriptors such as Study Description are cleaned of identifying content rather than removed', 'meaning': 'DCM:113105', 'annotations': {'kind': 'clean option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION": {'description': 'Dates and times are retained unmodified to preserve the temporal relationship between studies', 'meaning': 'DCM:113106', 'annotations': {'kind': 'retain option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION": {'description': 'Dates and times are shifted consistently so that intervals between studies are preserved', 'meaning': 'DCM:113107', 'annotations': {'kind': 'retain option'}}, + "RETAIN_PATIENT_CHARACTERISTICS_OPTION": {'description': 'Physical characteristics such as age, sex, height and weight are retained', 'meaning': 'DCM:113108', 'annotations': {'kind': 'retain option'}}, + "RETAIN_DEVICE_IDENTITY_OPTION": {'description': 'Device identifying attributes such as manufacturer, model and serial number are retained', 'meaning': 'DCM:113109', 'annotations': {'kind': 'retain option'}}, + "RETAIN_UIDS_OPTION": {'description': 'Original UIDs are retained rather than replaced', 'meaning': 'DCM:113110', 'annotations': {'kind': 'retain option'}}, + "RETAIN_SAFE_PRIVATE_OPTION": {'description': 'Private attributes known not to contain identifying information are retained', 'meaning': 'DCM:113111', 'annotations': {'kind': 'retain option'}}, + "RETAIN_INSTITUTION_IDENTITY_OPTION": {'description': 'Institution identifying attributes such as institution name and address are retained', 'meaning': 'DCM:113112', 'annotations': {'kind': 'retain option'}}, +} + +class DICOMDeidentificationActionEnum(RichEnum): + """ + Action codes from DICOM PS3.15 Table E.1-1a that specify how a de-identifier treats each attribute under the Basic Application Level Confidentiality Profile. Compound codes (for example Z/D) indicate that the first action applies unless the attribute's type requires the second to maintain IOD conformance. Permissible values use the DICOM code letters, with slashes replaced by underscores in compound codes. + """ + # Enum members + D = "D" + Z = "Z" + X = "X" + K = "K" + C = "C" + U = "U" + Z_D = "Z_D" + X_Z = "X_Z" + X_D = "X_D" + X_Z_D = "X_Z_D" + X_Z_U = "X_Z_U" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMDeidentificationActionEnum._metadata = { + "D": {'description': 'Replace with a non-zero length value that may be a dummy value and consistent with the VR'}, + "Z": {'description': 'Replace with a zero length value, or a non-zero length value that may be a dummy value and consistent with the VR'}, + "X": {'description': 'Remove the attribute, and if the attribute is a sequence, remove all sequence items and their contained attributes'}, + "K": {'description': 'Keep unchanged for non-sequence attributes; cleaned for sequences'}, + "C": {'description': 'Replace with values of similar meaning known not to contain identifying information and consistent with the VR'}, + "U": {'description': 'Replace with a non-zero length UID that is internally consistent within a set of instances'}, + "Z_D": {'description': 'Z unless D is required to maintain IOD conformance (Type 2 versus Type 1)', 'aliases': ['Z/D']}, + "X_Z": {'description': 'X unless Z is required to maintain IOD conformance (Type 3 versus Type 2)', 'aliases': ['X/Z']}, + "X_D": {'description': 'X unless D is required to maintain IOD conformance (Type 3 versus Type 1)', 'aliases': ['X/D']}, + "X_Z_D": {'description': 'X unless Z or D is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1)', 'aliases': ['X/Z/D']}, + "X_Z_U": {'description': 'X unless Z or replacement of contained instance UIDs (U) is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1 sequences containing UID references)', 'aliases': ['X/Z/U*']}, +} + +class ImageDeidentificationTargetEnum(RichEnum): + """ + The components of a medical imaging object that can carry identifying information and therefore need to be addressed by a de-identification workflow. A workflow first assesses whether an image requires pixel-level (face or head) de-identification or only metadata de-identification. + """ + # Enum members + HEADER_METADATA = "HEADER_METADATA" + PRIVATE_ATTRIBUTES = "PRIVATE_ATTRIBUTES" + BURNED_IN_ANNOTATION = "BURNED_IN_ANNOTATION" + FACIAL_FEATURES = "FACIAL_FEATURES" + UNIQUE_IDENTIFIERS = "UNIQUE_IDENTIFIERS" + STRUCTURED_CONTENT = "STRUCTURED_CONTENT" + +# Set metadata after class creation to avoid it becoming an enum member +ImageDeidentificationTargetEnum._metadata = { + "HEADER_METADATA": {'description': 'Standard DICOM attributes such as patient name, identifiers, birth date and study dates'}, + "PRIVATE_ATTRIBUTES": {'description': 'Vendor-specific private tags that may contain identifying information and are not covered by the standard attribute list'}, + "BURNED_IN_ANNOTATION": {'description': 'Text or graphics rendered into the pixel data, common in ultrasound, secondary capture and screenshots'}, + "FACIAL_FEATURES": {'description': 'Facial surface anatomy reconstructable from volumetric head CT or MRI pixel data, or visible in photographs and video'}, + "UNIQUE_IDENTIFIERS": {'description': 'Study, series and instance UIDs and accession numbers that can link an instance back to the source system'}, + "STRUCTURED_CONTENT": {'description': 'Identifying content in structured reports, overlays, presentation states and embedded documents'}, +} + +class DeidentificationRegulatoryFrameworkEnum(RichEnum): + """ + Regulations and standards that define when medical imaging data is considered de-identified. Under HIPAA, full-face photographs and comparable images are direct identifiers; under the GDPR, facial images are biometric personal data requiring special handling. + """ + # Enum members + HIPAA_SAFE_HARBOR = "HIPAA_SAFE_HARBOR" + HIPAA_EXPERT_DETERMINATION = "HIPAA_EXPERT_DETERMINATION" + GDPR_ANONYMISATION = "GDPR_ANONYMISATION" + GDPR_PSEUDONYMISATION = "GDPR_PSEUDONYMISATION" + DICOM_PS3_15_CONFIDENTIALITY_PROFILE = "DICOM_PS3_15_CONFIDENTIALITY_PROFILE" + MIDI_TASK_GROUP_RECOMMENDATIONS = "MIDI_TASK_GROUP_RECOMMENDATIONS" + +# Set metadata after class creation to avoid it becoming an enum member +DeidentificationRegulatoryFrameworkEnum._metadata = { + "HIPAA_SAFE_HARBOR": {'description': 'US HIPAA Privacy Rule method requiring removal of 18 specified identifier types, including full-face photographs and comparable images', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(2)'}}, + "HIPAA_EXPERT_DETERMINATION": {'description': 'US HIPAA Privacy Rule method in which a qualified expert determines that the risk of re-identification is very small', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(1)'}}, + "GDPR_ANONYMISATION": {'description': 'Irreversible processing such that the data subject is no longer identifiable, taking the data outside the scope of the EU General Data Protection Regulation', 'meaning': 'NCIT:C142392', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR anonymisation']}, + "GDPR_PSEUDONYMISATION": {'description': 'Processing so that data can no longer be attributed to a subject without additional information kept separately, as defined in GDPR Article 4(5)', 'meaning': 'NCIT:C142654', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR pseudonymisation']}, + "DICOM_PS3_15_CONFIDENTIALITY_PROFILE": {'description': "The DICOM standard's own de-identification profile and options, designed to satisfy known regulations", 'annotations': {'jurisdiction': 'international'}}, + "MIDI_TASK_GROUP_RECOMMENDATIONS": {'description': 'Best practices and recommendations of the Medical Image De-Identification (MIDI) Task Group (Clunie et al.)', 'annotations': {'jurisdiction': 'international'}}, +} + +class DefacingMethodEnum(RichEnum): + """ + Approaches to pixel-level de-identification that remove or obscure facial features in head imaging. Skull-stripping removes all non-brain tissue and may discard useful anatomy; face-specific methods aim to remove only facial features while preserving as much of the head volume as possible. + """ + # Enum members + SKULL_STRIPPING = "SKULL_STRIPPING" + TEMPLATE_BASED_MASKING = "TEMPLATE_BASED_MASKING" + SURFACE_BLURRING = "SURFACE_BLURRING" + SHEARING_PLANE = "SHEARING_PLANE" + DEEP_LEARNING_SEGMENTATION = "DEEP_LEARNING_SEGMENTATION" + REFACING = "REFACING" + MANUAL_MASKING = "MANUAL_MASKING" + FACE_DETECTION_AND_BLURRING = "FACE_DETECTION_AND_BLURRING" + MANUAL_CROP_OR_BLUR = "MANUAL_CROP_OR_BLUR" + +# Set metadata after class creation to avoid it becoming an enum member +DefacingMethodEnum._metadata = { + "SKULL_STRIPPING": {'description': 'Removal of all non-brain tissue including scalp, skull and face, for example with FSL BET or AFNI 3dSkullStrip', 'annotations': {'preserves_skull': 'false'}, 'aliases': ['brain extraction']}, + "TEMPLATE_BASED_MASKING": {'description': 'Registration of the image to a standard brain template such as MNI152 followed by application of a predefined binary face mask that zeros out facial voxels', 'annotations': {'preserves_skull': 'true', 'example_tools': 'PyDeface, FreeSurfer mri_deface, mydeface'}}, + "SURFACE_BLURRING": {'description': 'Diffusion or blurring of face surface voxels to obscure identity while preserving head shape, as in Milchenko and Marcus (2013)', 'annotations': {'preserves_skull': 'true'}}, + "SHEARING_PLANE": {'description': 'Removal of the front of the head by computing a plane through the head and discarding voxels in front of it, as in QuickShear', 'annotations': {'preserves_skull': 'partial'}, 'aliases': ['cropping plane']}, + "DEEP_LEARNING_SEGMENTATION": {'description': 'Use of a trained neural network such as a 3D U-Net to segment facial features (eyes, ears, nose) and mask or blur them', 'annotations': {'preserves_skull': 'true', 'example_tools': 'DeepDefacer, Asan Defacer'}}, + "REFACING": {'description': "Replacement of the subject's face with an average or synthetic face so that images retain a realistic head surface", 'annotations': {'preserves_skull': 'true', 'example_tools': 'AFNI refacer'}}, + "MANUAL_MASKING": {'description': 'Interactive painting or erosion of a face mask in an image editor such as 3D Slicer or ITK-SNAP, followed by zeroing or blurring of masked voxels', 'annotations': {'preserves_skull': 'true'}}, + "FACE_DETECTION_AND_BLURRING": {'description': 'Frame-by-frame detection of faces in 2D images or video followed by blurring, pixelation or masking, for example with OpenCV Haar cascades', 'annotations': {'applicable_to': 'photographs, video'}}, + "MANUAL_CROP_OR_BLUR": {'description': 'Manual cropping or blurring of the face region in photographs or video with an image or video editor', 'annotations': {'applicable_to': 'photographs, video'}}, +} + +class DefacingToolEnum(RichEnum): + """ + Software tools and pipelines used for pixel-level de-identification of head imaging and photographs, with their supported modalities, method and licensing. Metadata-only anonymizers are included for completeness because they are commonly paired with defacing tools, but they do not remove facial features. + """ + # Enum members + PYDEFACE = "PYDEFACE" + FREESURFER_MRI_DEFACE = "FREESURFER_MRI_DEFACE" + AFNI_REFACER = "AFNI_REFACER" + QUICKSHEAR = "QUICKSHEAR" + DEEPDEFACER = "DEEPDEFACER" + ASAN_DEFACER = "ASAN_DEFACER" + MYDEFACE = "MYDEFACE" + MASK_FACE = "MASK_FACE" + FSL_BET = "FSL_BET" + AFNI_3DSKULLSTRIP = "AFNI_3DSKULLSTRIP" + ITK_SNAP = "ITK_SNAP" + SLICER_3D = "SLICER_3D" + IMAGEJ_FIJI = "IMAGEJ_FIJI" + OPENCV = "OPENCV" + OSIRIX_HOROS_PLUGIN = "OSIRIX_HOROS_PLUGIN" + PIXELMED_DICOM_ANONYMIZER = "PIXELMED_DICOM_ANONYMIZER" + MANUAL_PHOTO_VIDEO_EDITING = "MANUAL_PHOTO_VIDEO_EDITING" + +# Set metadata after class creation to avoid it becoming an enum member +DefacingToolEnum._metadata = { + "PYDEFACE": {'description': 'Aligns a T1-weighted MRI to a template with FSL FLIRT and zeros out voxels in a predefined facial mask', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/poldracklab/pydeface'}}, + "FREESURFER_MRI_DEFACE": {'description': 'Template mask defacing using affine registration to fit a generic face mask, distributed with FreeSurfer', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'FreeSurfer'}}, + "AFNI_REFACER": {'description': 'AFNI template-based defacing and refacing tool, often combined with skull stripping', 'annotations': {'modality': 'MRI (T1w)', 'method': 'refacing', 'license': 'AFNI (open source)'}}, + "QUICKSHEAR": {'description': 'Computes a shearing plane through the head and removes the front of the head', 'annotations': {'modality': 'MRI (T1w)', 'method': 'shearing plane', 'license': 'open source'}}, + "DEEPDEFACER": {'description': '3D U-Net trained to generate a facial mask from T1 MRI scans', 'annotations': {'modality': 'MRI (T1w, T2w)', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "ASAN_DEFACER": {'description': '3D U-Net that segments eyes, ears and nose and masks them, applicable to MRI and CT', 'annotations': {'modality': 'MRI, CT', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "MYDEFACE": {'description': 'Defacing utility similar to PyDeface using an FSL FLIRT-registered mask', 'annotations': {'modality': 'MRI (T1w, FLAIR)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/neurolabusc/mydeface'}}, + "MASK_FACE": {'description': 'Surface blurring tool from Milchenko and Marcus that obscures surface anatomy in volumetric data', 'annotations': {'modality': 'MRI, CT', 'method': 'surface blurring', 'license': 'open source'}}, + "FSL_BET": {'description': 'FMRIB Software Library Brain Extraction Tool; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'FSL (open source)'}}, + "AFNI_3DSKULLSTRIP": {'description': 'AFNI brain extraction program; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'AFNI (open source)'}}, + "ITK_SNAP": {'description': 'Interactive segmentation tool used to manually paint or erode a face mask in any 3D volume', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'GPL'}}, + "SLICER_3D": {'description': 'Image computing platform used to manually paint a face mask over a region of interest', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'BSD-style'}}, + "IMAGEJ_FIJI": {'description': 'General image analysis tools used to manually blur or crop the face region in 2D or 3D images', 'annotations': {'modality': '2D and 3D images', 'method': 'manual crop or blur', 'license': 'open source'}}, + "OPENCV": {'description': 'Computer vision library used for face detection (for example Haar cascades) followed by blurring or pixelation in video and 2D images', 'annotations': {'modality': 'video, 2D images', 'method': 'face detection and blurring', 'license': 'Apache-2.0'}}, + "OSIRIX_HOROS_PLUGIN": {'description': 'Viewer plugins offering built-in anonymization with face removal options for multi-modality DICOM', 'annotations': {'modality': 'DICOM (multi-modality)', 'method': 'template-based masking', 'license': 'commercial / free'}}, + "PIXELMED_DICOM_ANONYMIZER": {'description': 'Metadata anonymization only; does not mask faces', 'annotations': {'modality': 'DICOM files', 'method': 'metadata anonymization', 'license': 'BSD'}}, + "MANUAL_PHOTO_VIDEO_EDITING": {'description': 'Cropping or blurring faces in photographs and videos with general-purpose editors', 'annotations': {'modality': 'photographs, video', 'method': 'manual crop or blur'}}, +} + +class ImagingDataLifecycleStageEnum(RichEnum): + """ + Sequential stages of DICOM data management for preparing FAIR, AI-ready medical imaging datasets. Stages after extraction form the data reliability workflow that checks that imaging data is complete, standardized and biologically plausible before sharing. + """ + # Enum members + DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION = "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION" + FILE_INTEGRITY_VERIFICATION = "FILE_INTEGRITY_VERIFICATION" + DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS = "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS" + METADATA_TAG_VALIDATION = "METADATA_TAG_VALIDATION" + IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION = "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION" + DEIDENTIFICATION = "DEIDENTIFICATION" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingDataLifecycleStageEnum._metadata = { + "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION": {'description': 'Extraction of imaging data from clinical repositories such as PACS, preceded by a landscape assessment of source locations, database systems, modalities and acquisition devices', 'annotations': {'stage_number': 1}}, + "FILE_INTEGRITY_VERIFICATION": {'description': 'Computation and periodic re-verification of cryptographic checksums such as SHA-256 to detect silent corruption from network errors, media decay or system failure', 'annotations': {'stage_number': 2}}, + "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS": {'description': 'Detection of structurally invalid DICOM files (truncated, wrong VR encoding, missing required tags) and checks of internal coherence such as identifier uniqueness and demographic consistency across sites', 'annotations': {'stage_number': 3}}, + "METADATA_TAG_VALIDATION": {'description': "Validation of DICOM attributes against the standard's VR, VM and type rules and against biological plausibility, and inventory of private tags", 'annotations': {'stage_number': 4}}, + "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION": {'description': 'Verification that pixel data is readable and plausible, that decompression preserves bit depth, and computation of image quality metrics', 'annotations': {'stage_number': 5}}, + "DEIDENTIFICATION": {'description': 'Removal of protected health information from headers and of facial features from pixel data before sharing and reuse', 'meaning': 'NCIT:C45970', 'annotations': {'stage_number': 6}}, +} + +class ImagingDataSourceTypeEnum(RichEnum): + """ + Types of systems in a hospital or research network that hold medical imaging data and from which it may be extracted. A landscape assessment records, for each source, the platform vendor, software version, supported query mechanisms, patient identifier handling, retention policy and anonymization capabilities. + """ + # Enum members + PACS = "PACS" + VENDOR_NEUTRAL_ARCHIVE = "VENDOR_NEUTRAL_ARCHIVE" + DEPARTMENTAL_IMAGING_ARCHIVE = "DEPARTMENTAL_IMAGING_ARCHIVE" + RESEARCH_IMAGING_PLATFORM = "RESEARCH_IMAGING_PLATFORM" + MODALITY_WORKSTATION = "MODALITY_WORKSTATION" + ELECTRONIC_HEALTH_RECORD = "ELECTRONIC_HEALTH_RECORD" + PUBLIC_IMAGING_REPOSITORY = "PUBLIC_IMAGING_REPOSITORY" + CLOUD_IMAGING_ARCHIVE = "CLOUD_IMAGING_ARCHIVE" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingDataSourceTypeEnum._metadata = { + "PACS": {'description': 'Clinical system for storing, retrieving and distributing medical images, typically the central radiology archive', 'meaning': 'NCIT:C17624'}, + "VENDOR_NEUTRAL_ARCHIVE": {'description': 'Enterprise archive that stores images from multiple departments and PACS vendors in a standard format', 'aliases': ['VNA']}, + "DEPARTMENTAL_IMAGING_ARCHIVE": {'description': 'Local archive maintained by a clinical department such as cardiology, ophthalmology or endoscopy outside the central PACS'}, + "RESEARCH_IMAGING_PLATFORM": {'description': 'Research-specific imaging informatics database such as XNAT used to manage, store and share imaging data'}, + "MODALITY_WORKSTATION": {'description': 'Acquisition device or attached workstation that exports images through vendor-specific software'}, + "ELECTRONIC_HEALTH_RECORD": {'description': 'Clinical record system that references or embeds imaging studies and provides encounter linkage', 'meaning': 'NCIT:C142529'}, + "PUBLIC_IMAGING_REPOSITORY": {'description': 'Openly accessible imaging data resource such as The Cancer Imaging Archive or OpenNeuro'}, + "CLOUD_IMAGING_ARCHIVE": {'description': 'Cloud-hosted object storage or managed imaging service holding DICOM data'}, +} + +class DICOMValidationIssueTypeEnum(RichEnum): + """ + Categories of problems detected when validating DICOM files and collections for completeness, conformance, metadata consistency, pixel data integrity and plausibility. Used to classify findings from tools such as dciodvfy, dcentvfy, DVTk and pydicom during data reliability workflows. + """ + # Enum members + TRUNCATED_FILE = "TRUNCATED_FILE" + INVALID_VR_ENCODING = "INVALID_VR_ENCODING" + MISSING_REQUIRED_ATTRIBUTE = "MISSING_REQUIRED_ATTRIBUTE" + VALUE_MULTIPLICITY_VIOLATION = "VALUE_MULTIPLICITY_VIOLATION" + VALUE_OUT_OF_RANGE = "VALUE_OUT_OF_RANGE" + INVALID_UID_SYNTAX = "INVALID_UID_SYNTAX" + DUPLICATE_UID = "DUPLICATE_UID" + INCONSISTENT_ENTITY_ATTRIBUTES = "INCONSISTENT_ENTITY_ATTRIBUTES" + DATE_INCONSISTENCY = "DATE_INCONSISTENCY" + IMPLAUSIBLE_VALUE = "IMPLAUSIBLE_VALUE" + NONSTANDARD_PRIVATE_ATTRIBUTE = "NONSTANDARD_PRIVATE_ATTRIBUTE" + IDENTIFIER_LINKAGE_ERROR = "IDENTIFIER_LINKAGE_ERROR" + UNREADABLE_PIXEL_DATA = "UNREADABLE_PIXEL_DATA" + DECOMPRESSION_MISMATCH = "DECOMPRESSION_MISMATCH" + CHECKSUM_MISMATCH = "CHECKSUM_MISMATCH" + PROTECTED_HEALTH_INFORMATION_PRESENT = "PROTECTED_HEALTH_INFORMATION_PRESENT" + +# Set metadata after class creation to avoid it becoming an enum member +DICOMValidationIssueTypeEnum._metadata = { + "TRUNCATED_FILE": {'description': 'The file is incomplete, for example a truncated transfer syntax or missing pixel data at the end of the file', 'annotations': {'category': 'structural'}}, + "INVALID_VR_ENCODING": {'description': 'An attribute is encoded with a Value Representation that does not match the data dictionary or the transfer syntax', 'annotations': {'category': 'structural'}}, + "MISSING_REQUIRED_ATTRIBUTE": {'description': 'A Type 1 or Type 2 attribute required by the IOD, such as StudyInstanceUID or PixelData, is absent', 'annotations': {'category': 'conformance'}}, + "VALUE_MULTIPLICITY_VIOLATION": {'description': 'An attribute has more or fewer values than permitted by its Value Multiplicity', 'annotations': {'category': 'conformance'}}, + "VALUE_OUT_OF_RANGE": {'description': 'An attribute value is outside the enumerated or defined range allowed by the standard', 'annotations': {'category': 'conformance'}}, + "INVALID_UID_SYNTAX": {'description': 'A UID does not conform to DICOM UID syntax, for example non-numeric components or excess length', 'annotations': {'category': 'conformance'}}, + "DUPLICATE_UID": {'description': 'The same SOP Instance UID or other UID is reused across instances that should be distinct', 'annotations': {'category': 'consistency'}}, + "INCONSISTENT_ENTITY_ATTRIBUTES": {'description': 'Attributes that should be identical across instances of the same entity differ, such as instances in one series carrying different Series Instance UIDs', 'annotations': {'category': 'consistency'}}, + "DATE_INCONSISTENCY": {'description': "Dates are mutually inconsistent, such as a study date after the patient's death date or a series date before the study date", 'annotations': {'category': 'plausibility'}}, + "IMPLAUSIBLE_VALUE": {'description': 'A syntactically valid value that is biologically implausible, such as a patient age of 150 years', 'annotations': {'category': 'plausibility'}}, + "NONSTANDARD_PRIVATE_ATTRIBUTE": {'description': "A private tag is present that is not documented in the site's private tag dictionary", 'annotations': {'category': 'documentation'}}, + "IDENTIFIER_LINKAGE_ERROR": {'description': 'Patient or study identifiers do not link correctly to clinical records, or demographics disagree across linked records', 'annotations': {'category': 'consistency'}}, + "UNREADABLE_PIXEL_DATA": {'description': 'The pixel data cannot be decoded, typically due to acquisition or packaging problems', 'annotations': {'category': 'pixel data'}}, + "DECOMPRESSION_MISMATCH": {'description': 'Decompressed pixel data has an unexpected bit depth or differs from the uncompressed original beyond the expected loss', 'annotations': {'category': 'pixel data'}}, + "CHECKSUM_MISMATCH": {'description': "The file's cryptographic hash no longer matches the value recorded at ingest, indicating corruption or alteration", 'annotations': {'category': 'integrity'}}, + "PROTECTED_HEALTH_INFORMATION_PRESENT": {'description': 'Identifying information remains in the header, private tags or pixel data after de-identification', 'annotations': {'category': 'privacy'}}, +} + +class ImageQualityMetricEnum(RichEnum): + """ + Metrics computed during image quality and pixel data validation to document that images are readable and of adequate fidelity for AI applications. Simple metrics can be extended to check conformance with FDA technical performance guidance for quantitative imaging devices where applicable. + """ + # Enum members + PIXEL_READABILITY = "PIXEL_READABILITY" + INTENSITY_HISTOGRAM = "INTENSITY_HISTOGRAM" + SIGNAL_TO_NOISE_RATIO = "SIGNAL_TO_NOISE_RATIO" + CONTRAST_TO_NOISE_RATIO = "CONTRAST_TO_NOISE_RATIO" + SHARPNESS = "SHARPNESS" + BIT_DEPTH = "BIT_DEPTH" + PIXEL_SPACING = "PIXEL_SPACING" + SLICE_THICKNESS = "SLICE_THICKNESS" + COMPRESSION_FIDELITY = "COMPRESSION_FIDELITY" + ARTIFACT_PRESENCE = "ARTIFACT_PRESENCE" + +# Set metadata after class creation to avoid it becoming an enum member +ImageQualityMetricEnum._metadata = { + "PIXEL_READABILITY": {'description': 'Whether the pixel array can be decoded without error'}, + "INTENSITY_HISTOGRAM": {'description': 'Distribution of pixel intensities, checked for extreme outliers, clipping or empty images'}, + "SIGNAL_TO_NOISE_RATIO": {'description': 'Ratio of signal in a region of interest to the standard deviation of background noise', 'meaning': 'NCIT:C94983', 'aliases': ['SNR']}, + "CONTRAST_TO_NOISE_RATIO": {'description': 'Difference in signal between two regions relative to background noise', 'aliases': ['CNR']}, + "SHARPNESS": {'description': 'Measure of edge definition or high-frequency content, such as Laplacian variance'}, + "BIT_DEPTH": {'description': 'Number of bits per pixel stored and allocated, checked for consistency after decompression'}, + "PIXEL_SPACING": {'description': 'Physical distance between pixel centres, checked for presence and plausibility'}, + "SLICE_THICKNESS": {'description': 'Nominal thickness of each slice in a volumetric acquisition, checked for presence and plausibility'}, + "COMPRESSION_FIDELITY": {'description': 'Agreement between compressed and original pixel data, for example comparing a JPEG-compressed instance with its uncompressed source'}, + "ARTIFACT_PRESENCE": {'description': 'Detection of motion, metal, aliasing or other acquisition artifacts'}, +} + +class ImagingInteroperabilityStandardEnum(RichEnum): + """ + Standards and data models used to represent medical imaging metadata and to link images with clinical records, electronic health records and multimodal research datasets. + """ + # Enum members + DICOM = "DICOM" + DICOMWEB = "DICOMWEB" + HL7_FHIR_IMAGINGSTUDY = "HL7_FHIR_IMAGINGSTUDY" + OMOP_CDM_IMAGING_EXTENSION = "OMOP_CDM_IMAGING_EXTENSION" + IHE_PROFILES = "IHE_PROFILES" + BIDS = "BIDS" + NIFTI = "NIFTI" + +# Set metadata after class creation to avoid it becoming an enum member +ImagingInteroperabilityStandardEnum._metadata = { + "DICOM": {'description': 'Digital Imaging and Communications in Medicine (ISO 12052), the standard for storing, transmitting and managing medical imaging data', 'annotations': {'url': 'https://www.dicomstandard.org/'}}, + "DICOMWEB": {'description': 'RESTful web services for DICOM (QIDO-RS, WADO-RS, STOW-RS) defined in DICOM PS3.18', 'annotations': {'url': 'https://www.dicomstandard.org/using/dicomweb'}}, + "HL7_FHIR_IMAGINGSTUDY": {'description': 'FHIR resource representing a DICOM study and its series and instances, used to integrate imaging metadata into FHIR-based systems', 'annotations': {'url': 'https://www.hl7.org/fhir/imagingstudy.html'}}, + "OMOP_CDM_IMAGING_EXTENSION": {'description': 'OHDSI Observational Medical Outcomes Partnership Common Data Model extension for imaging-based observational research, used to link DICOM studies to clinical encounters', 'annotations': {'url': 'https://github.com/OHDSI/OmopImaging'}}, + "IHE_PROFILES": {'description': 'Integrating the Healthcare Enterprise profiles for image sharing and identifier management, such as XDS-I and PIX', 'annotations': {'url': 'https://www.ihe.net/'}}, + "BIDS": {'description': 'Community standard for organizing and describing neuroimaging datasets, commonly used after conversion from DICOM', 'annotations': {'url': 'https://bids.neuroimaging.io/'}}, + "NIFTI": {'description': 'Neuroimaging Informatics Technology Initiative file format for volumetric images, the usual target of DICOM conversion in neuroimaging pipelines', 'annotations': {'url': 'https://nifti.nimh.nih.gov/'}}, +} + +class Bridge2AIDataGenerationProjectEnum(RichEnum): + """ + Data generation projects (Grand Challenges) of the NIH Bridge to Artificial Intelligence (Bridge2AI) program, which creates standardized, annotated, ethically sourced AI-ready datasets across a diverse set of modalities. + """ + # Enum members + CHORUS = "CHORUS" + AI_READI = "AI_READI" + VOICE = "VOICE" + CM4AI = "CM4AI" + +# Set metadata after class creation to avoid it becoming an enum member +Bridge2AIDataGenerationProjectEnum._metadata = { + "CHORUS": {'description': 'Collaborative Hospital Repository Uniting Standards; the AI/ML for Clinical Care Grand Challenge, linking ICU imaging (MRI, CT, ultrasound, X-ray) with physiologic and clinical data', 'annotations': {'url': 'https://bridge2ai.org/data-chorus/'}, 'aliases': ['Clinical Care']}, + "AI_READI": {'description': 'Artificial Intelligence Ready and Equitable Atlas for Diabetes Insights; the Salutogenesis Grand Challenge, including ophthalmology retinal imaging', 'annotations': {'url': 'https://bridge2ai.org/people-ai-readi/'}, 'aliases': ['Salutogenesis']}, + "VOICE": {'description': 'The Precision Public Health Grand Challenge, connecting voice recordings with laryngoscopy video, brain MRI and CT, and omics data', 'annotations': {'url': 'https://bridge2ai.org/people-voice/'}, 'aliases': ['Precision Public Health']}, + "CM4AI": {'description': 'Cell Maps for Artificial Intelligence; the Functional Genomics Grand Challenge, mapping cellular architecture with imaging and proteomics', 'annotations': {'url': 'https://cm4ai.org/'}, 'aliases': ['Functional Genomics']}, +} + class FamilyRelationship(RichEnum): """ Family relationships used in pedigree and family history documentation @@ -16229,6 +17279,366 @@ class DrugResponseEnum(RichEnum): "UNKNOWN_RESPONSE": {'description': 'Treatment response unknown', 'meaning': 'NCIT:C17998'}, } +class G2PConfidenceCategory(RichEnum): + """ + The level of confidence that a gene-disease association is real, as asserted by G2P curators. G2P uses the GenCC gene-disease validity classification terms. Operationally several groups use definitive, strong and moderate for clinical reporting; limited, disputed and refuted are not used for clinical reporting. GenCC classification identifiers are recorded in the gencc_classification_id annotation rather than as meaning:, because the GENCC prefix is not registered in bioregistry, OLS or the OBO PURL system and so cannot be resolved; the identifiers were taken from GenCC's own submissions export. + """ + # Enum members + DEFINITIVE = "DEFINITIVE" + STRONG = "STRONG" + MODERATE = "MODERATE" + LIMITED = "LIMITED" + DISPUTED = "DISPUTED" + REFUTED = "REFUTED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PConfidenceCategory._metadata = { + "DEFINITIVE": {'description': "The role of this gene in this particular disease has been repeatedly demonstrated in both the research and clinical diagnostic settings, and has been upheld over time (at least 2 independent publication over 3 years' time). No convincing evidence has emerged that contradicts the role of the gene in the specified disease. (previously labelled as confirmed) The strength of evidence within publications as well as their number and publication dates is taken into account. In practice, this usually means at least 4 publications over 5 years. Typically this will also include convincing bioinformatic or functional evidence of causation, making it very unlikely that this gene-disease association would ever be refuted.", 'annotations': {'gencc_classification_id': 'GENCC:100001', 'clinical_reporting': 'true'}, 'aliases': ['confirmed']}, + "STRONG": {'description': "The role of this gene as a monogenic cause of disease has been repeatedly and independently demonstrated providing very strong convincing evidence in humans and no conflicting evidence for this gene's role in this disease. (previously labelled as probable).", 'annotations': {'gencc_classification_id': 'GENCC:100002', 'clinical_reporting': 'true'}, 'aliases': ['probable']}, + "MODERATE": {'description': 'There is moderate evidence in humans to support a casual role for this gene in this disease with no contradictory evidence. The body of evidence is not large (e.g possibly only one key paper) but appears convincing enough that the gene-disease pair is likely to be validated with additional evidence in the near future.', 'annotations': {'gencc_classification_id': 'GENCC:100003', 'clinical_reporting': 'true'}}, + "LIMITED": {'description': 'Little human evidence exists to support a casual role for this gene in this disease, but not all evidence has been refuted. For example, there may be a collection of rare missense variants in humans but without convincing functional impact, segregration data that could either arise by chance (e.g across one or two meioses) or does not implicate a single gene, or functional data without direct recapitulation of the phenotype. Overall, the body of evidence does not meet contemporary criteria for claiming a valid association with disease. The majority are probably false associations. (previously labelled as possible).', 'annotations': {'gencc_classification_id': 'GENCC:100004', 'clinical_reporting': 'false'}, 'aliases': ['possible']}, + "DISPUTED": {'description': 'Although evidence has been reported, other evidence of equal weight disputes the claim.', 'annotations': {'gencc_classification_id': 'GENCC:100005', 'clinical_reporting': 'false'}}, + "REFUTED": {'description': 'There has been an assertion of a gene-disease association in the literature, but new valid evidence has arisen that refutes the entire original body of evidence.', 'annotations': {'gencc_classification_id': 'GENCC:100006', 'clinical_reporting': 'false'}}, +} + +class G2PAllelicRequirement(RichEnum): + """ + The genotype required at the locus for the disease to manifest, also referred to in G2P as the genotype. HPO mode of inheritance (MOI) terminology is used; G2P uses synonyms of the MOI terms as many of the disorders described are de novo. +The nine values are G2P's published genotype list, taken verbatim from the API the terminology page itself calls (GET /gene2phenotype/api/attribs/, key "genotype"), which includes the bare monoallelic_X alongside monoallelic_X_hemizygous and monoallelic_X_heterozygous. +All nine G2P genotype strings are recorded by HPO as oio:hasExactSynonym of the term mapped below (verified against the HPO release directly; note that the OLS obo_synonym field under-reports these, listing only synonyms that carry an xref). That exact-synonym correspondence is what makes these mappings unambiguous. +By convention in this enum, title is the HPO term label and the G2P string is carried as an alias, matching the pv-mapping guidance and clinical/genetics.yaml; consumers wanting G2P's own display string should read aliases. + """ + # Enum members + MONOALLELIC_AUTOSOMAL = "MONOALLELIC_AUTOSOMAL" + BIALLELIC_AUTOSOMAL = "BIALLELIC_AUTOSOMAL" + MONOALLELIC_X = "MONOALLELIC_X" + MONOALLELIC_X_HEMIZYGOUS = "MONOALLELIC_X_HEMIZYGOUS" + MONOALLELIC_X_HETEROZYGOUS = "MONOALLELIC_X_HETEROZYGOUS" + MONOALLELIC_Y_HEMIZYGOUS = "MONOALLELIC_Y_HEMIZYGOUS" + MONOALLELIC_PAR = "MONOALLELIC_PAR" + BIALLELIC_PAR = "BIALLELIC_PAR" + MITOCHONDRIAL = "MITOCHONDRIAL" + +# Set metadata after class creation to avoid it becoming an enum member +G2PAllelicRequirement._metadata = { + "MONOALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing mutations on an autosomal chromosome identified on one allele in all or the vast majority of with specific disorder.', 'meaning': 'HP:0000006', 'aliases': ['monoallelic_autosomal']}, + "BIALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles in the autosomal chromosome.', 'meaning': 'HP:0000007', 'aliases': ['biallelic_autosomal']}, + "MONOALLELIC_X": {'description': 'Plausible disease-causing mutations identified on the X chromosome.', 'meaning': 'HP:0001417', 'aliases': ['monoallelic_X']}, + "MONOALLELIC_X_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified on the X chromosome in a male as a cause of a specific disease, the disorder being predominantly recessive in female carriers.', 'meaning': 'HP:0001419', 'aliases': ['monoallelic_X_hemizygous']}, + "MONOALLELIC_X_HETEROZYGOUS": {'description': 'Plausible disease-causing mutations identified in one copy of the X chromosome in females as a cause of a specific disease, include disorders where heterozygous females and hemizygous males are similarly affected e.g SMC1A mutations.', 'meaning': 'HP:0001423', 'aliases': ['monoallelic_X_heterozygous']}, + "MONOALLELIC_Y_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified in an allele found in the Y chromosome. The Y chromosome is passed from father to son as this mutation may affect only males.', 'meaning': 'HP:0001450', 'aliases': ['monoallelic_Y_hemizygous']}, + "MONOALLELIC_PAR": {'description': 'Plausible disease-causing mutations identified in an allele found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034340', 'aliases': ['monoallelic_PAR']}, + "BIALLELIC_PAR": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034341', 'aliases': ['biallelic_PAR']}, + "MITOCHONDRIAL": {'description': 'Plausible disease-causing mutations identified on mitochondrial DNA where homoplasmy or heteroplasmy are associated with a specific disorder.', 'meaning': 'HP:0001427', 'aliases': ['mitochondrial']}, +} + +class G2PCrossCuttingModifier(RichEnum): + """ + Additional qualifiers applied to the allelic requirement of a G2P gene-disease association. HPO inheritance qualifier terms (HP:0034335) are used where available. Potential secondary finding and restricted mutation set are G2P-specific and have no HPO equivalent. + """ + # Enum members + DISPLAYS_ANTICIPATION = "DISPLAYS_ANTICIPATION" + IMPRINTED_REGION = "IMPRINTED_REGION" + TYPICALLY_DE_NOVO = "TYPICALLY_DE_NOVO" + TYPICALLY_MOSAIC = "TYPICALLY_MOSAIC" + TYPIFIED_BY_INCOMPLETE_PENETRANCE = "TYPIFIED_BY_INCOMPLETE_PENETRANCE" + POTENTIAL_SECONDARY_FINDING = "POTENTIAL_SECONDARY_FINDING" + RESTRICTED_MUTATION_SET = "RESTRICTED_MUTATION_SET" + +# Set metadata after class creation to avoid it becoming an enum member +G2PCrossCuttingModifier._metadata = { + "DISPLAYS_ANTICIPATION": {'description': 'A phenomenon in which the severity of a disorder increases, or the age of onset decreases, as the disorder is passed from one generation to the next, typically due to expansion of a repeat sequence. For example, Myotonic Dystrophy is caused by triplet repeat expansion in the DMPK gene.', 'meaning': 'HP:0003743', 'aliases': ['displays anticipation']}, + "IMPRINTED_REGION": {'description': 'Requires that the abnormal allele be paternal or maternal in origin, depending on the disease-gene relationship. Imprinting refers to a normal developmental process in which either the paternal or maternal allele is inactivated, depending on the specific locus, thus leading to expression from only one copy of the gene. Disease typically manifests when a deleterious variant is inherited from a parent whose copy of the gene would normally be expressed, but not when a deleterious variant is inherited from a parent whose copy of the gene would normally be inactivated.', 'meaning': 'HP:0034338', 'aliases': ['imprinted region']}, + "TYPICALLY_DE_NOVO": {'description': 'Plausible disease causing mutations that occur post zygotically (formation of gametes). Note that this G2P wording is internally inconsistent: post-zygotic events are somatic, which is what TYPICALLY_MOSAIC describes, whereas gametogenesis is pre-zygotic. The mapped HPO term HP:0025352 carries the intended sense, defining conditions that are exclusively or predominantly observed to display de novo variants.', 'meaning': 'HP:0025352', 'aliases': ['typically de novo']}, + "TYPICALLY_MOSAIC": {'description': 'Plausible disease causing mutations identified on one allele in a proportion of cells with the others being wild-type.', 'meaning': 'HP:0001442', 'aliases': ['typically mosaic']}, + "TYPIFIED_BY_INCOMPLETE_PENETRANCE": {'description': 'A condition in which not all individuals carrying the disease-causing genotype manifest the associated phenotype.', 'meaning': 'HP:0003829', 'aliases': ['typified by incomplete penetrance']}, + "POTENTIAL_SECONDARY_FINDING": {'description': 'This includes ACMG Secondary Findings and/or late onset conditions.'}, + "RESTRICTED_MUTATION_SET": {'description': 'This is used when a disease is associated with a single recurrent variant or a set of variants only found in a particular protein domain.'}, +} + +class G2PMolecularMechanism(RichEnum): + """ + The mechanism of disease derived from the available evidence, following the definitions of Backwell and Marsh (PMID:35395171). These mechanisms describe a gene-disease association rather than an individual variant, so the Sequence Ontology variant terms are recorded as close mappings rather than exact meanings. + """ + # Enum members + LOSS_OF_FUNCTION = "LOSS_OF_FUNCTION" + GAIN_OF_FUNCTION = "GAIN_OF_FUNCTION" + DOMINANT_NEGATIVE = "DOMINANT_NEGATIVE" + UNDETERMINED_NON_LOSS_OF_FUNCTION = "UNDETERMINED_NON_LOSS_OF_FUNCTION" + UNDETERMINED = "UNDETERMINED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanism._metadata = { + "LOSS_OF_FUNCTION": {'description': 'Loss-of-function variants involve a loss of the normal biological function of a protein. Often these are nonsense or frameshift mutations that introduce premature stop codons. Due to nonsense-mediated decay of the resulting mRNAs, most premature stop codons will result in no protein being produced, rather than a truncated protein. However, there are also many examples of loss-of-function variants that change the amino acid sequence and result in non-functional protein products. These mutations can cause a complete loss of function (amorphic), analogous to a protein null mutation, or only a partial loss of function (hypomorphic). May also include variants in regulatory regions.', 'aliases': ['loss_of_function_variant']}, + "GAIN_OF_FUNCTION": {'description': 'Gain-of-function variants have their phenotypic effect because the mutant protein does something different than the wild-type protein. Often, these variants cause disease by increasing protein activity (hypermorphic) or introducing a completely new function (neomorphic), but the specific molecular mechanisms underlying gain-of-function mutations can be complex. May also include variants in regulatory regions.', 'aliases': ['gain_of_function_variant']}, + "DOMINANT_NEGATIVE": {'description': 'Dominant-negative variants involve the mutant protein directly or indirectly blocking the normal biological function of the wild-type protein (antimorphic). They can thus cause a disproportionate (>50%) loss of function, even though only half of the protein is mutated eg. heterozygous variants in COL1A1 that disrupt the triple collagen helix.', 'aliases': ['antimorphic', 'dominant_negative_variant']}, + "UNDETERMINED_NON_LOSS_OF_FUNCTION": {'description': 'Very often it is difficult to distinguish between dominant negative and gain of function, but it is clearly a non-loss-of-function mechanism (e.g. from co-expression experiments showing a damaging effect from the mutant allele).', 'aliases': ['undetermined non-loss-of-function']}, + "UNDETERMINED": {'description': 'Not known.'}, +} + +class G2PMolecularMechanismSynopsis(RichEnum): + """ + A more detailed description of the molecular mechanism of a G2P gene-disease association, following the definitions of Backwell and Marsh (PMID:35395171). A synopsis refines the higher-level molecular mechanism; more than one synopsis may apply to a single gene-disease association. + """ + # Enum members + DESTABILISING_LOF = "DESTABILISING_LOF" + INTERACTION_DISRUPTING_LOF = "INTERACTION_DISRUPTING_LOF" + LOSS_OF_ACTIVITY_LOF = "LOSS_OF_ACTIVITY_LOF" + LOF_DUE_TO_PROTEIN_MISLOCALISATION = "LOF_DUE_TO_PROTEIN_MISLOCALISATION" + ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE = "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE" + COMPETITIVE_DOMINANT_NEGATIVE = "COMPETITIVE_DOMINANT_NEGATIVE" + ASSEMBLY_MEDIATED_GOF = "ASSEMBLY_MEDIATED_GOF" + LOCAL_LOF_LEADING_TO_OVERALL_GOF = "LOCAL_LOF_LEADING_TO_OVERALL_GOF" + AGGREGATION = "AGGREGATION" + OTHER_GOF = "OTHER_GOF" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanismSynopsis._metadata = { + "DESTABILISING_LOF": {'description': 'A process whereby a missense change destabilises the protein structure resulting in loss of function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "INTERACTION_DISRUPTING_LOF": {'description': 'A process whereby a variant allele disrupts interaction resulting in loss of function, for example a change in an interaction site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOSS_OF_ACTIVITY_LOF": {'description': 'A process whereby a variant allele disrupts activity resulting in loss of function, for example a change in an active site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOF_DUE_TO_PROTEIN_MISLOCALISATION": {'description': 'A loss of function caused by mislocalisation of a protein, rather than direct disruption of its structure or function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE": {'description': 'A protein change which does not prevent coassembly into a complex with wild-type subunits but results in poisoning the activity of the hybrid complex, causing a disproportionate loss of function.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "COMPETITIVE_DOMINANT_NEGATIVE": {'description': 'A process whereby the novel protein disrupts specific interactions by competing with wild-type protein, thus having a dominant-negative effect.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "ASSEMBLY_MEDIATED_GOF": {'description': 'A process whereby incorporation of a mutant subunit into a protein complex leads to a gain of function, for example through constitutive activation of a channel.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "LOCAL_LOF_LEADING_TO_OVERALL_GOF": {'description': 'A gain of function caused by the localised loss of a specific function within a protein, for example binding of a regulatory domain is disrupted but enzymatic activity is retained.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "AGGREGATION": {'description': 'A process by which the variant allele causes aggregation usually causing toxic gain of function, for example misfolded proteins self-assembling into large aggregates or RNA binding protein gelation.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "OTHER_GOF": {'description': 'A gain of function process other than local loss of function or assembly mediated, for example a mutation in an active site which changes histone binding causing a novel function.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, +} + +class G2PMolecularMechanismSupport(RichEnum): + """ + Whether the molecular mechanism recorded for a G2P gene-disease association is directly supported by reported evidence, or inferred by the curator. + """ + # Enum members + EVIDENCE = "EVIDENCE" + INFERRED = "INFERRED" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMolecularMechanismSupport._metadata = { + "EVIDENCE": {'description': 'The molecular mechanism is directly supported by experimental evidence reported in a publication attached to the record.'}, + "INFERRED": {'description': 'The molecular mechanism is inferred by the curator rather than directly evidenced in the attached publications.'}, +} + +class G2PMechanismEvidenceCategory(RichEnum): + """ + The broad category of experimental evidence supporting a molecular mechanism in G2P. G2P evidence classifications reuse terms from the ClinGen gene-disease validity SOP Experimental Evidence Summary Matrix. + """ + # Enum members + FUNCTION = "FUNCTION" + FUNCTIONAL_ALTERATION = "FUNCTIONAL_ALTERATION" + MODELS = "MODELS" + RESCUE = "RESCUE" + +# Set metadata after class creation to avoid it becoming an enum member +G2PMechanismEvidenceCategory._metadata = { + "FUNCTION": {'description': 'Evidence about the biochemical function, expression or interactions of the gene product.'}, + "FUNCTIONAL_ALTERATION": {'description': 'Evidence from cells in which the function of the gene has been disrupted, showing a phenotype consistent with the human disease process.'}, + "MODELS": {'description': 'Evidence from a cell culture model or non-human model organism with a disrupted copy of the gene.'}, + "RESCUE": {'description': 'Evidence that the phenotype can be rescued by restoring the wild-type gene or gene product.'}, +} + +class G2PFunctionEvidence(RichEnum): + """ + Types of evidence in the function category of the G2P molecular mechanism evidence classification. + """ + # Enum members + BIOCHEMICAL = "BIOCHEMICAL" + PROTEIN_INTERACTION = "PROTEIN_INTERACTION" + PROTEIN_EXPRESSION = "PROTEIN_EXPRESSION" + IN_SILICO_MODELLING = "IN_SILICO_MODELLING" + +# Set metadata after class creation to avoid it becoming an enum member +G2PFunctionEvidence._metadata = { + "BIOCHEMICAL": {'description': 'Evidence showing the gene product performs a biochemical function: (A) shared with other known genes in the disease of interest, or (B) consistent with the phenotype.'}, + "PROTEIN_INTERACTION": {'description': 'Evidence showing the gene product interacts with proteins previously implicated in the disease of interest.'}, + "PROTEIN_EXPRESSION": {'description': 'Evidence showing the gene is expressed in tissues relevant to the disease of interest and/or is altered in expression in patients who have the disease.'}, + "IN_SILICO_MODELLING": {'description': 'Evidence generated using computer simulations and models predicting the functional impact of relevant gene-specific variants. These models can predict protein structure changes, disruption of protein interactions, or changes in gene and/or protein expression.'}, +} + +class G2PFunctionalAlterationEvidence(RichEnum): + """ + Types of evidence in the functional alteration category of the G2P molecular mechanism evidence classification, distinguished by whether the cells came from an affected individual. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + NON_PATIENT_CELLS = "NON_PATIENT_CELLS" + +# Set metadata after class creation to avoid it becoming an enum member +G2PFunctionalAlterationEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that cultured patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, + "NON_PATIENT_CELLS": {'description': 'Evidence showing that cultured non-patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, +} + +class G2PModelsEvidence(RichEnum): + """ + Types of evidence in the models category of the G2P molecular mechanism evidence classification. + """ + # Enum members + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation to avoid it becoming an enum member +G2PModelsEvidence._metadata = { + "CELL_CULTURE_MODEL": {'description': 'A cell culture model with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'A non-human model organism with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, +} + +class G2PRescueEvidence(RichEnum): + """ + Types of evidence in the rescue category of the G2P molecular mechanism evidence classification, distinguished by the system in which rescue was demonstrated. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation to avoid it becoming an enum member +G2PRescueEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that the phenotype can be rescued in patient cells.'}, + "CELL_CULTURE_MODEL": {'description': 'Evidence showing that the phenotype can be rescued in cell culture models.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'Evidence showing that the phenotype can be rescued in non-human model organisms.'}, +} + +class G2PVariantConsequence(RichEnum): + """ + The consequence of the reported variants at the protein (for protein-coding genes) or the RNA (for non-protein coding genes), per allele. These are Sequence Ontology terms developed for G2P and described in PMID:37982373; the descriptions below are the G2P-authored usage notes rather than the SO text definitions. As in the other SO-backed enums here, title is uniformly the SO term label and any differing G2P label is carried as an alias; for four of the six values the SO and G2P labels coincide, which is why only altered_gene_product_sequence and function_uncertain_variant carry an alias. + """ + # Enum members + ALTERED_GENE_PRODUCT_LEVEL = "ALTERED_GENE_PRODUCT_LEVEL" + DECREASED_GENE_PRODUCT_LEVEL = "DECREASED_GENE_PRODUCT_LEVEL" + ABSENT_GENE_PRODUCT = "ABSENT_GENE_PRODUCT" + INCREASED_GENE_PRODUCT_LEVEL = "INCREASED_GENE_PRODUCT_LEVEL" + ALTERED_GENE_PRODUCT_STRUCTURE = "ALTERED_GENE_PRODUCT_STRUCTURE" + UNCERTAIN = "UNCERTAIN" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantConsequence._metadata = { + "ALTERED_GENE_PRODUCT_LEVEL": {'description': 'A sequence variant that alters the level or amount of gene product produced. This high-level term can be applied where the direction of level change (increased vs decreased gene product level) is unknown or not confirmed, e.g., promoter or enhancer variants, some splice variants.', 'meaning': 'SO:0002314'}, + "DECREASED_GENE_PRODUCT_LEVEL": {'description': "A sequence variant that decreases the level or amount of gene product produced, e.g., a 5' UTR variant that reduced protein levels by disrupting translation, a 3' UTR variant that affects RNA stability, splice variants that decrease but do not stop expression, variants leading to nonsense-mediated-decay (NMD)-competent premature termination codon (PTCs), or gene-disrupting structural variants.", 'meaning': 'SO:0002316'}, + "ABSENT_GENE_PRODUCT": {'description': 'A sequence variant that results in no gene product. e.g., whole gene or other large scale disruptive structural variant, variants producing NMD-competent PTCs.', 'meaning': 'SO:0002317'}, + "INCREASED_GENE_PRODUCT_LEVEL": {'description': 'A variant that increases the level or amount of gene product produced, e.g., non-disruptive gene duplications, some promoter or enhancer variants.', 'meaning': 'SO:0002315'}, + "ALTERED_GENE_PRODUCT_STRUCTURE": {'description': 'A sequence variant that alters the sequence of a gene product. e.g., missense variants, NMD-incompetent PTCs, and other length-changing variants (in-frame indels, stop loss).', 'meaning': 'SO:0002318', 'aliases': ['altered gene product structure']}, + "UNCERTAIN": {'description': 'A sequence variant in which the function of a gene product is unknown with respect to a reference. Used by G2P where the consequence of the reported variants could not be determined.', 'meaning': 'SO:0002220', 'aliases': ['uncertain']}, +} + +class G2PVariantTypeGroup(RichEnum): + """ + The primary type grouping under which G2P organises the variant types associated with a curated gene-disease pair. + """ + # Enum members + NMD_VARIANTS = "NMD_VARIANTS" + SPLICE_VARIANTS = "SPLICE_VARIANTS" + REGULATORY_VARIANTS = "REGULATORY_VARIANTS" + PROTEIN_CHANGING_VARIANTS = "PROTEIN_CHANGING_VARIANTS" + OTHER_VARIANTS = "OTHER_VARIANTS" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantTypeGroup._metadata = { + "NMD_VARIANTS": {'description': 'Variant types qualified by whether the resulting transcript is predicted to trigger or escape nonsense-mediated decay.'}, + "SPLICE_VARIANTS": {'description': 'Variant types affecting splice sites or splice regions.'}, + "REGULATORY_VARIANTS": {'description': 'Variant types in untranslated or regulatory regions.'}, + "PROTEIN_CHANGING_VARIANTS": {'description': 'Variant types that change the coding sequence of the gene product.'}, + "OTHER_VARIANTS": {'description': 'Variant types not covered by the NMD, splice, regulatory or protein changing groups, including structural and repeat changes.'}, +} + +class G2PVariantType(RichEnum): + """ + The types of variants associated with the curated gene-disease pair reported in the publication. All terms are Sequence Ontology terms. Where G2P uses a label that differs from the current SO label, the G2P label is recorded as an alias. Descriptions are the SO text definitions where SO provides one. +The NMD-qualified types have two parents in SO, so they are modelled with the base variant as is_a and the NMD qualifier as a mixin. LinkML preserves both, but as of linkml 1.9.5 the OWL generator emits only the is_a parent as rdfs:subClassOf and drops the mixin, so the NMD axis is additionally recorded in the nmd_status annotation to keep it available in every generated artifact. If a later linkml emits permissible-value mixins, that annotation is redundant and can go. + """ + # Enum members + NMD_TRIGGERING = "NMD_TRIGGERING" + NMD_ESCAPING = "NMD_ESCAPING" + STOP_GAINED_NMD_TRIGGERING = "STOP_GAINED_NMD_TRIGGERING" + STOP_GAINED_NMD_ESCAPING = "STOP_GAINED_NMD_ESCAPING" + FRAMESHIFT_VARIANT_NMD_TRIGGERING = "FRAMESHIFT_VARIANT_NMD_TRIGGERING" + FRAMESHIFT_VARIANT_NMD_ESCAPING = "FRAMESHIFT_VARIANT_NMD_ESCAPING" + SPLICE_DONOR_VARIANT_NMD_TRIGGERING = "SPLICE_DONOR_VARIANT_NMD_TRIGGERING" + SPLICE_DONOR_VARIANT_NMD_ESCAPING = "SPLICE_DONOR_VARIANT_NMD_ESCAPING" + SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING = "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING" + SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING = "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING" + SPLICE_REGION_VARIANT = "SPLICE_REGION_VARIANT" + SPLICE_ACCEPTOR_VARIANT = "SPLICE_ACCEPTOR_VARIANT" + SPLICE_DONOR_VARIANT = "SPLICE_DONOR_VARIANT" + FIVE_PRIME_UTR_VARIANT = "FIVE_PRIME_UTR_VARIANT" + THREE_PRIME_UTR_VARIANT = "THREE_PRIME_UTR_VARIANT" + REGULATORY_REGION_VARIANT = "REGULATORY_REGION_VARIANT" + START_LOST = "START_LOST" + STOP_GAINED = "STOP_GAINED" + STOP_LOST = "STOP_LOST" + FRAMESHIFT_VARIANT = "FRAMESHIFT_VARIANT" + MISSENSE_VARIANT = "MISSENSE_VARIANT" + INFRAME_INSERTION = "INFRAME_INSERTION" + INFRAME_DELETION = "INFRAME_DELETION" + SYNONYMOUS_VARIANT = "SYNONYMOUS_VARIANT" + INTRON_VARIANT = "INTRON_VARIANT" + INTERGENIC_VARIANT = "INTERGENIC_VARIANT" + NON_CODING_TRANSCRIPT_VARIANT = "NON_CODING_TRANSCRIPT_VARIANT" + SHORT_TANDEM_REPEAT_CHANGE = "SHORT_TANDEM_REPEAT_CHANGE" + COPY_NUMBER_VARIATION = "COPY_NUMBER_VARIATION" + WHOLE_PARTIAL_GENE_DELETION = "WHOLE_PARTIAL_GENE_DELETION" + WHOLE_PARTIAL_GENE_DUPLICATION = "WHOLE_PARTIAL_GENE_DUPLICATION" + +# Set metadata after class creation to avoid it becoming an enum member +G2PVariantType._metadata = { + "NMD_TRIGGERING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript that leads to nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002319', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_triggering']}, + "NMD_ESCAPING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript but allows the transcript to escape nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002320', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_escaping']}, + "STOP_GAINED_NMD_TRIGGERING": {'description': 'A stop_gained (SO:0001587) variant that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002321', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "STOP_GAINED_NMD_ESCAPING": {'description': 'A stop_gained (SO:0001587) variant that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002322', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "FRAMESHIFT_VARIANT_NMD_TRIGGERING": {'description': 'A frameshift_variant (SO:0001589) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002323', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "FRAMESHIFT_VARIANT_NMD_ESCAPING": {'description': 'A frameshift_variant (SO:0001589) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002324', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_DONOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_donor_variant (SO:0001575) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002325', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_DONOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_donor_variant (SO:0001575) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002326', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_acceptor_variant (SO:0001574) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002327', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_acceptor_variant (SO:0001574) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002328', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_REGION_VARIANT": {'description': 'A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron.', 'meaning': 'SO:0001630', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_ACCEPTOR_VARIANT": {'description': "A splice variant that changes the 2 base region at the 3' end of an intron.", 'meaning': 'SO:0001574', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_DONOR_VARIANT": {'description': "A splice variant that changes the 2 base pair region at the 5' end of an intron.", 'meaning': 'SO:0001575', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "FIVE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 5' UTR.", 'meaning': 'SO:0001623', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "THREE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 3' UTR.", 'meaning': 'SO:0001624', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "REGULATORY_REGION_VARIANT": {'description': 'A sequence variant located within a regulatory region.', 'meaning': 'SO:0001566', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "START_LOST": {'description': 'A codon variant that changes at least one base of the canonical start codon.', 'meaning': 'SO:0002012', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_GAINED": {'description': 'A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened polypeptide.', 'meaning': 'SO:0001587', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_LOST": {'description': 'A sequence variant where at least one base of the terminator codon (stop) is changed, resulting in an elongated transcript.', 'meaning': 'SO:0001578', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "FRAMESHIFT_VARIANT": {'description': 'A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three.', 'meaning': 'SO:0001589', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "MISSENSE_VARIANT": {'description': 'A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved.', 'meaning': 'SO:0001583', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_INSERTION": {'description': 'An inframe non synonymous variant that inserts bases into in the coding sequence.', 'meaning': 'SO:0001821', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_DELETION": {'description': 'An inframe non synonymous variant that deletes bases from the coding sequence.', 'meaning': 'SO:0001822', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "SYNONYMOUS_VARIANT": {'description': 'A sequence variant where there is no resulting change to the encoded amino acid.', 'meaning': 'SO:0001819', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTRON_VARIANT": {'description': 'A transcript variant occurring within an intron.', 'meaning': 'SO:0001627', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTERGENIC_VARIANT": {'description': 'A sequence variant located in the intergenic region, between genes.', 'meaning': 'SO:0001628', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "NON_CODING_TRANSCRIPT_VARIANT": {'description': 'A transcript variant of a non coding RNA gene.', 'meaning': 'SO:0001619', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "SHORT_TANDEM_REPEAT_CHANGE": {'description': 'A sequence variant where the copies of a short tandem repeat (STR) feature are either contracted or expanded. SO:0002161 carries no text definition; this description is taken from the SO term comment.', 'meaning': 'SO:0002161', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "COPY_NUMBER_VARIATION": {'description': 'A variation that increases or decreases the copy number of a given region.', 'meaning': 'SO:0001019', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "WHOLE_PARTIAL_GENE_DELETION": {'description': 'A feature ablation whereby the deleted region includes a transcript feature. Used by G2P to record whole or partial gene deletions.', 'meaning': 'SO:0001893', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_deletion']}, + "WHOLE_PARTIAL_GENE_DUPLICATION": {'description': 'A feature amplification of a region containing a transcript. Used by G2P to record whole or partial gene duplications.', 'meaning': 'SO:0001889', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_duplication']}, +} + +class G2PPanel(RichEnum): + """ + The disease-area panels into which G2P organises its curated gene-disease associations. A gene-disease association may appear on more than one panel. + """ + # Enum members + CANCER = "CANCER" + CARDIAC = "CARDIAC" + DD = "DD" + EAR = "EAR" + EYE = "EYE" + SKELETAL = "SKELETAL" + SKIN = "SKIN" + +# Set metadata after class creation to avoid it becoming an enum member +G2PPanel._metadata = { + "CANCER": {'description': 'Cancer disorders.'}, + "CARDIAC": {'description': 'Cardiac disorders.'}, + "DD": {'description': 'Developmental disorders.', 'aliases': ['Developmental disorders']}, + "EAR": {'description': 'Ear disorders.'}, + "EYE": {'description': 'Eye disorders.'}, + "SKELETAL": {'description': 'Skeletal disorders.'}, + "SKIN": {'description': 'Skin disorders.'}, +} + class ProcessScaleEnum(RichEnum): """ Scale of bioprocessing operations from lab bench to commercial production @@ -16357,6 +17767,16 @@ class DownstreamProcessEnum(RichEnum): DISTILLATION = "DISTILLATION" DRYING = "DRYING" HOMOGENIZATION = "HOMOGENIZATION" + CLARIFICATION = "CLARIFICATION" + FLOCCULATION = "FLOCCULATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + DIAFILTRATION = "DIAFILTRATION" + TANGENTIAL_FLOW_FILTRATION = "TANGENTIAL_FLOW_FILTRATION" + BUFFER_EXCHANGE = "BUFFER_EXCHANGE" + ADSORPTION = "ADSORPTION" + VIRAL_INACTIVATION = "VIRAL_INACTIVATION" + POLISHING = "POLISHING" + LYOPHILIZATION = "LYOPHILIZATION" # Set metadata after class creation to avoid it becoming an enum member DownstreamProcessEnum._metadata = { @@ -16369,6 +17789,16 @@ class DownstreamProcessEnum(RichEnum): "DISTILLATION": {'description': 'Distillation', 'meaning': 'CHMO:0001534', 'annotations': {'principle': 'Boiling point difference'}}, "DRYING": {'description': 'Drying operations', 'meaning': 'CHMO:0001551', 'annotations': {'types': 'Spray, freeze, vacuum'}}, "HOMOGENIZATION": {'description': 'Cell disruption/homogenization', 'annotations': {'methods': 'High pressure, bead mill'}}, + "CLARIFICATION": {'description': 'Removal of cells and debris to produce a clarified harvest', 'annotations': {'methods': 'Centrifugation, depth filtration'}}, + "FLOCCULATION": {'description': 'Aggregation of cells and debris into flocs to aid clarification'}, + "ULTRAFILTRATION": {'description': 'Membrane concentration retaining macromolecules such as proteins', 'meaning': 'CHMO:0001645', 'annotations': {'mwco': 'Typically 1-1000 kDa'}}, + "DIAFILTRATION": {'description': 'Buffer exchange and desalting by ultrafiltration with continuous makeup'}, + "TANGENTIAL_FLOW_FILTRATION": {'description': 'Crossflow membrane filtration used for concentration and diafiltration', 'annotations': {'aliases': 'TFF, crossflow filtration'}}, + "BUFFER_EXCHANGE": {'description': 'Replacement of the buffer matrix of a product stream'}, + "ADSORPTION": {'description': 'Capture of product or impurities onto a solid sorbent'}, + "VIRAL_INACTIVATION": {'description': 'Treatment step that inactivates potential viral contaminants', 'annotations': {'methods': 'Low pH, solvent/detergent, heat'}}, + "POLISHING": {'description': 'Final chromatographic or filtration steps to remove trace impurities'}, + "LYOPHILIZATION": {'description': 'Freeze-drying to produce a stable solid product', 'meaning': 'CHMO:0001553', 'annotations': {'aliases': 'freeze drying'}}, } class FeedstockTypeEnum(RichEnum): @@ -16529,6 +17959,780 @@ class BioprocessOptimizationType(RichEnum): "DIGITAL_TWIN_MODELING": {'description': 'Use of computational process models for simulation, prediction, and optimization', 'annotations': {'approaches': 'mechanistic models, hybrid models, machine learning'}}, } +class UnitOperationType(RichEnum): + """ + Fundamental chemical and process engineering unit operations - the discrete processing steps that transform, separate, combine, or move process material. Grouped (via the unit_operation_class annotation) into momentum transfer, heat transfer, mass-transfer separations, mechanical separations, solids processing, reaction, and storage. + """ + # Enum members + PUMPING = "PUMPING" + COMPRESSION = "COMPRESSION" + GAS_MOVING = "GAS_MOVING" + FLOW_SPLITTING = "FLOW_SPLITTING" + STREAM_MIXING = "STREAM_MIXING" + HEAT_EXCHANGE = "HEAT_EXCHANGE" + HEATING = "HEATING" + COOLING = "COOLING" + CONDENSATION = "CONDENSATION" + EVAPORATION = "EVAPORATION" + DISTILLATION = "DISTILLATION" + ABSORPTION = "ABSORPTION" + STRIPPING = "STRIPPING" + LIQUID_LIQUID_EXTRACTION = "LIQUID_LIQUID_EXTRACTION" + LEACHING = "LEACHING" + ADSORPTION = "ADSORPTION" + ION_EXCHANGE = "ION_EXCHANGE" + CHROMATOGRAPHY = "CHROMATOGRAPHY" + CRYSTALLIZATION = "CRYSTALLIZATION" + PRECIPITATION = "PRECIPITATION" + DRYING = "DRYING" + FREEZE_DRYING = "FREEZE_DRYING" + HUMIDIFICATION = "HUMIDIFICATION" + MEMBRANE_SEPARATION = "MEMBRANE_SEPARATION" + MICROFILTRATION = "MICROFILTRATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + NANOFILTRATION = "NANOFILTRATION" + REVERSE_OSMOSIS = "REVERSE_OSMOSIS" + DIALYSIS = "DIALYSIS" + ELECTRODIALYSIS = "ELECTRODIALYSIS" + PERVAPORATION = "PERVAPORATION" + FILTRATION = "FILTRATION" + CENTRIFUGATION = "CENTRIFUGATION" + SEDIMENTATION = "SEDIMENTATION" + CLARIFICATION = "CLARIFICATION" + FLOTATION = "FLOTATION" + FLOCCULATION = "FLOCCULATION" + CYCLONE_SEPARATION = "CYCLONE_SEPARATION" + SCREENING = "SCREENING" + GAS_LIQUID_SEPARATION = "GAS_LIQUID_SEPARATION" + SIZE_REDUCTION = "SIZE_REDUCTION" + SIZE_ENLARGEMENT = "SIZE_ENLARGEMENT" + MIXING = "MIXING" + SOLIDS_CONVEYING = "SOLIDS_CONVEYING" + CHEMICAL_REACTION = "CHEMICAL_REACTION" + FERMENTATION = "FERMENTATION" + COMBUSTION = "COMBUSTION" + GASIFICATION = "GASIFICATION" + PYROLYSIS = "PYROLYSIS" + ELECTROLYSIS = "ELECTROLYSIS" + NEUTRALIZATION = "NEUTRALIZATION" + PURIFICATION = "PURIFICATION" + STORAGE = "STORAGE" + +# Set metadata after class creation to avoid it becoming an enum member +UnitOperationType._metadata = { + "PUMPING": {'description': 'Raising the pressure or moving of a liquid stream using a pump', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "COMPRESSION": {'description': 'Raising the pressure of a gas or vapor stream using a compressor', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "GAS_MOVING": {'description': 'Moving a gas stream at low pressure rise using a fan or blower', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "FLOW_SPLITTING": {'description': 'Dividing a single stream into two or more streams of identical composition', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "STREAM_MIXING": {'description': 'Combining two or more streams into a single stream', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "HEAT_EXCHANGE": {'description': 'Transfer of thermal energy between two streams without phase-change intent', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "HEATING": {'description': 'Raising the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "COOLING": {'description': 'Lowering the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "CONDENSATION": {'description': 'Converting a vapor to a liquid by removing heat', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "EVAPORATION": {'description': 'Concentrating a solution by vaporizing solvent, typically water', 'meaning': 'CHMO:0001574', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "DISTILLATION": {'description': 'Separation of components by differences in volatility (boiling point)', 'meaning': 'CHMO:0001532', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ABSORPTION": {'description': 'Selective transfer of one or more gas-phase components into a liquid solvent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "STRIPPING": {'description': 'Selective transfer of dissolved components from a liquid into a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LIQUID_LIQUID_EXTRACTION": {'description': 'Separation by partitioning of solutes between two immiscible liquid phases', 'meaning': 'CHMO:0001577', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LEACHING": {'description': 'Solid-liquid extraction of soluble components from a solid using a solvent', 'meaning': 'CHMO:0001681', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ADSORPTION": {'description': 'Selective uptake of components onto the surface of a solid sorbent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ION_EXCHANGE": {'description': 'Reversible exchange of ions between a solution and a solid ion-exchange resin', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CHROMATOGRAPHY": {'description': 'Separation by differential partitioning of solutes between a mobile and stationary phase', 'meaning': 'CHMO:0001000', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CRYSTALLIZATION": {'description': 'Formation of a solid crystalline phase from a solution or melt', 'meaning': 'PROCO:0000052', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "PRECIPITATION": {'description': 'Formation of an insoluble solid from solution by chemical or physical means', 'meaning': 'CHMO:0001688', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "DRYING": {'description': 'Removal of a liquid (usually water) from a solid or surface by vaporization', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "FREEZE_DRYING": {'description': 'Removal of solvent by sublimation from the frozen state (lyophilization)', 'meaning': 'CHMO:0001553', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION', 'aliases': 'lyophilization'}}, + "HUMIDIFICATION": {'description': 'Addition of water vapor to a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "MEMBRANE_SEPARATION": {'description': 'Separation of stream components using a semipermeable membrane', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "MICROFILTRATION": {'description': 'Membrane separation retaining particles roughly 0.1-10 micrometers', 'meaning': 'CHMO:0001641', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ULTRAFILTRATION": {'description': 'Membrane separation retaining macromolecules and colloids', 'meaning': 'CHMO:0001645', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "NANOFILTRATION": {'description': 'Membrane separation retaining small molecules and multivalent ions', 'meaning': 'CHMO:0001642', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "REVERSE_OSMOSIS": {'description': 'Pressure-driven membrane separation rejecting dissolved salts and small solutes', 'meaning': 'CHMO:0001643', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "DIALYSIS": {'description': 'Diffusive membrane separation of solutes across a concentration gradient', 'meaning': 'CHMO:0001522', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ELECTRODIALYSIS": {'description': 'Membrane separation of ions driven by an applied electric field', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "PERVAPORATION": {'description': 'Membrane separation combining permeation and partial vaporization of the permeate', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "FILTRATION": {'description': 'Separation of solids from a fluid by passage through a porous medium', 'meaning': 'CHMO:0001640', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CENTRIFUGATION": {'description': 'Separation of phases by density difference under centrifugal force', 'meaning': 'OBI:0302886', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SEDIMENTATION": {'description': 'Gravity separation of suspended solids or immiscible liquids by settling', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CLARIFICATION": {'description': 'Removal of suspended solids from a liquid to produce a clarified stream', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOTATION": {'description': 'Separation of solids or droplets by attachment to rising gas bubbles', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOCCULATION": {'description': 'Aggregation of fine suspended particles into larger flocs to aid separation', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CYCLONE_SEPARATION": {'description': 'Separation of particles from a fluid using centrifugal force in a cyclone', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SCREENING": {'description': 'Separation of particulate solids by size using a screen or sieve', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "GAS_LIQUID_SEPARATION": {'description': 'Disengagement of vapor and liquid phases, e.g. in a flash or knockout drum', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SIZE_REDUCTION": {'description': 'Reduction of particle size by crushing, grinding, or milling (comminution)', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SIZE_ENLARGEMENT": {'description': 'Increase of particle size by granulation, agglomeration, or pelletizing', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "MIXING": {'description': 'Blending of materials to achieve compositional or thermal uniformity', 'meaning': 'CHMO:0001685', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SOLIDS_CONVEYING": {'description': 'Transport of bulk particulate solids between process steps', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "CHEMICAL_REACTION": {'description': 'Chemical conversion of reactants to products in a reactor', 'annotations': {'unit_operation_class': 'REACTION'}}, + "FERMENTATION": {'description': 'Microbial or enzymatic conversion of substrate to product in a bioreactor', 'meaning': 'CHMO:0001624', 'annotations': {'unit_operation_class': 'REACTION'}}, + "COMBUSTION": {'description': 'Exothermic oxidation of a fuel, typically to generate heat or power', 'meaning': 'CHMO:0001473', 'annotations': {'unit_operation_class': 'REACTION'}}, + "GASIFICATION": {'description': 'Conversion of carbonaceous feedstock to synthesis gas under limited oxygen', 'meaning': 'CHMO:0001501', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PYROLYSIS": {'description': 'Thermal decomposition of material in the absence of oxygen', 'meaning': 'CHMO:0001502', 'annotations': {'unit_operation_class': 'REACTION'}}, + "ELECTROLYSIS": {'description': 'Driving a non-spontaneous chemical reaction using electrical energy', 'annotations': {'unit_operation_class': 'REACTION'}}, + "NEUTRALIZATION": {'description': 'Adjustment of pH by reaction of acid and base', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PURIFICATION": {'description': 'Removal of impurities to increase the purity of a product stream', 'meaning': 'CHMO:0002231', 'annotations': {'unit_operation_class': 'SEPARATION'}}, + "STORAGE": {'description': 'Holding of material in a vessel or tank between process steps', 'annotations': {'unit_operation_class': 'STORAGE'}}, +} + +class ProcessEquipmentType(RichEnum): + """ + Physical equipment / asset types used in process plants. These correspond to the nodes of a process flowsheet and complement UnitOperationType (which describes the function performed). Grouped via the equipment_class annotation. + """ + # Enum members + STORAGE_TANK = "STORAGE_TANK" + PRESSURE_VESSEL = "PRESSURE_VESSEL" + HOPPER = "HOPPER" + FLASH_DRUM = "FLASH_DRUM" + KNOCKOUT_DRUM = "KNOCKOUT_DRUM" + REACTOR = "REACTOR" + BIOREACTOR = "BIOREACTOR" + FERMENTER = "FERMENTER" + DISTILLATION_COLUMN = "DISTILLATION_COLUMN" + ABSORPTION_COLUMN = "ABSORPTION_COLUMN" + STRIPPING_COLUMN = "STRIPPING_COLUMN" + EXTRACTION_COLUMN = "EXTRACTION_COLUMN" + CHROMATOGRAPHY_COLUMN = "CHROMATOGRAPHY_COLUMN" + SCRUBBER = "SCRUBBER" + HEAT_EXCHANGER = "HEAT_EXCHANGER" + CONDENSER = "CONDENSER" + REBOILER = "REBOILER" + EVAPORATOR = "EVAPORATOR" + FURNACE = "FURNACE" + BOILER = "BOILER" + COOLING_TOWER = "COOLING_TOWER" + DRYER = "DRYER" + CRYSTALLIZER = "CRYSTALLIZER" + PUMP = "PUMP" + COMPRESSOR = "COMPRESSOR" + BLOWER = "BLOWER" + FAN = "FAN" + VALVE = "VALVE" + CENTRIFUGE = "CENTRIFUGE" + FILTER = "FILTER" + DECANTER = "DECANTER" + CLARIFIER = "CLARIFIER" + CYCLONE = "CYCLONE" + HYDROCYCLONE = "HYDROCYCLONE" + MEMBRANE_MODULE = "MEMBRANE_MODULE" + SETTLER = "SETTLER" + MIXER = "MIXER" + AGITATOR = "AGITATOR" + MILL = "MILL" + CRUSHER = "CRUSHER" + SCREEN = "SCREEN" + CONVEYOR = "CONVEYOR" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessEquipmentType._metadata = { + "STORAGE_TANK": {'description': 'Atmospheric or low-pressure vessel for holding liquids or solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "PRESSURE_VESSEL": {'description': 'Vessel designed to hold contents at elevated pressure', 'annotations': {'equipment_class': 'VESSEL'}}, + "HOPPER": {'description': 'Funnel-shaped vessel for storing and discharging bulk solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "FLASH_DRUM": {'description': 'Vessel for separating vapor and liquid produced by a pressure let-down', 'annotations': {'equipment_class': 'VESSEL'}}, + "KNOCKOUT_DRUM": {'description': 'Vessel that removes entrained liquid from a gas stream', 'annotations': {'equipment_class': 'VESSEL'}}, + "REACTOR": {'description': 'Vessel in which chemical reactions are carried out', 'annotations': {'equipment_class': 'REACTOR', 'subtypes': 'CSTR, plug-flow, batch, fixed-bed, fluidized-bed'}}, + "BIOREACTOR": {'description': 'Vessel for culturing cells or carrying out enzymatic reactions', 'meaning': 'OBI:0001046', 'annotations': {'equipment_class': 'REACTOR'}}, + "FERMENTER": {'description': 'Bioreactor configured for microbial fermentation', 'annotations': {'equipment_class': 'REACTOR'}}, + "DISTILLATION_COLUMN": {'description': 'Column with trays or packing for vapor-liquid separation by distillation', 'annotations': {'equipment_class': 'COLUMN'}}, + "ABSORPTION_COLUMN": {'description': 'Column for gas absorption into a liquid solvent', 'annotations': {'equipment_class': 'COLUMN'}}, + "STRIPPING_COLUMN": {'description': 'Column for stripping volatile components from a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "EXTRACTION_COLUMN": {'description': 'Column for liquid-liquid extraction', 'annotations': {'equipment_class': 'COLUMN'}}, + "CHROMATOGRAPHY_COLUMN": {'description': 'Column packed with a stationary phase for chromatographic separation', 'meaning': 'OBI:0000038', 'annotations': {'equipment_class': 'COLUMN'}}, + "SCRUBBER": {'description': 'Contactor for removing pollutants or particulates from a gas using a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "HEAT_EXCHANGER": {'description': 'Equipment that transfers heat between two fluid streams', 'annotations': {'equipment_class': 'HEAT_TRANSFER', 'subtypes': 'shell-and-tube, plate, air-cooled'}}, + "CONDENSER": {'description': 'Heat exchanger that condenses a vapor to liquid', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "REBOILER": {'description': 'Heat exchanger that supplies boilup at the base of a distillation column', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "EVAPORATOR": {'description': 'Equipment that concentrates a solution by vaporizing solvent', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "FURNACE": {'description': 'Fired heater that raises stream temperature by combustion', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "BOILER": {'description': 'Equipment that generates steam by transferring combustion heat to water', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "COOLING_TOWER": {'description': 'Equipment that rejects process heat to the atmosphere by evaporative cooling', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "DRYER": {'description': 'Equipment for removing liquid from solids by vaporization', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "CRYSTALLIZER": {'description': 'Equipment for producing crystalline solids from solution or melt', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "PUMP": {'description': 'Machine that moves or pressurizes a liquid', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "COMPRESSOR": {'description': 'Machine that raises the pressure of a gas', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "BLOWER": {'description': 'Machine that moves gas at a low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "FAN": {'description': 'Machine that moves large gas volumes at very low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "VALVE": {'description': 'Device that regulates, directs, or controls stream flow', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "CENTRIFUGE": {'description': 'Equipment that separates phases by density under centrifugal force', 'meaning': 'OBI:0400106', 'annotations': {'equipment_class': 'SEPARATION'}}, + "FILTER": {'description': 'Equipment that separates solids from a fluid using a porous medium', 'annotations': {'equipment_class': 'SEPARATION'}}, + "DECANTER": {'description': 'Equipment that separates immiscible liquids or settled solids by gravity', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CLARIFIER": {'description': 'Settling tank that removes suspended solids from a liquid', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CYCLONE": {'description': 'Device that separates particles from a fluid by centrifugal action', 'annotations': {'equipment_class': 'SEPARATION'}}, + "HYDROCYCLONE": {'description': 'Cyclone that separates solids or immiscible liquids from a liquid stream', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MEMBRANE_MODULE": {'description': 'Housing containing membrane elements for a membrane separation', 'annotations': {'equipment_class': 'SEPARATION'}}, + "SETTLER": {'description': 'Vessel allowing phases to separate by gravity settling', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MIXER": {'description': 'Equipment for blending streams or materials', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "AGITATOR": {'description': 'Impeller-driven device that mixes vessel contents', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "MILL": {'description': 'Equipment that reduces particle size by grinding or crushing', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CRUSHER": {'description': 'Equipment that reduces large solids by mechanical force', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "SCREEN": {'description': 'Equipment that classifies particulate solids by size', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CONVEYOR": {'description': 'Equipment that transports bulk solids between locations', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, +} + +class ProcessStreamRole(RichEnum): + """ + The functional role of a stream within a process flowsheet, independent of its chemical composition. + """ + # Enum members + FEED = "FEED" + RAW_MATERIAL = "RAW_MATERIAL" + PRODUCT = "PRODUCT" + BYPRODUCT = "BYPRODUCT" + INTERMEDIATE = "INTERMEDIATE" + RECYCLE = "RECYCLE" + PURGE = "PURGE" + BLEED = "BLEED" + MAKEUP = "MAKEUP" + WASTE = "WASTE" + EFFLUENT = "EFFLUENT" + EMISSION = "EMISSION" + UTILITY = "UTILITY" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessStreamRole._metadata = { + "FEED": {'description': 'A stream entering the process or a unit operation as input'}, + "RAW_MATERIAL": {'description': 'A fresh raw material or reactant stream entering the process battery limits'}, + "PRODUCT": {'description': 'A primary product stream of commercial value leaving the process'}, + "BYPRODUCT": {'description': 'A secondary saleable or usable product produced alongside the main product'}, + "INTERMEDIATE": {'description': 'A stream flowing between unit operations within the process'}, + "RECYCLE": {'description': 'A stream returned to an upstream point for reprocessing'}, + "PURGE": {'description': 'A stream withdrawn from a recycle loop to prevent accumulation of inerts or impurities'}, + "BLEED": {'description': 'A small continuous stream withdrawn to control composition or level'}, + "MAKEUP": {'description': 'A stream added to replenish material lost from a circulating loop'}, + "WASTE": {'description': 'A stream with no further use that must be treated or disposed of'}, + "EFFLUENT": {'description': 'A liquid waste stream discharged from the process'}, + "EMISSION": {'description': 'A gaseous stream released to the atmosphere'}, + "UTILITY": {'description': 'A service stream (e.g. steam, cooling water) supplied to a unit operation'}, +} + +class ProcessStreamPhase(RichEnum): + """ + The physical phase or phase combination of a process stream. For single-phase fundamental states see also StateOfMatterEnum in the physics module; this enum adds the multiphase combinations common in process engineering. + """ + # Enum members + GAS = "GAS" + LIQUID = "LIQUID" + SOLID = "SOLID" + SUPERCRITICAL = "SUPERCRITICAL" + VAPOR_LIQUID = "VAPOR_LIQUID" + LIQUID_LIQUID = "LIQUID_LIQUID" + VAPOR_LIQUID_LIQUID = "VAPOR_LIQUID_LIQUID" + SLURRY = "SLURRY" + GAS_SOLID = "GAS_SOLID" + MULTIPHASE = "MULTIPHASE" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessStreamPhase._metadata = { + "GAS": {'description': 'A single gas or vapor phase', 'annotations': {'sff_phase_code': 'g'}}, + "LIQUID": {'description': 'A single liquid phase', 'annotations': {'sff_phase_code': 'l'}}, + "SOLID": {'description': 'A single solid phase', 'annotations': {'sff_phase_code': 's'}}, + "SUPERCRITICAL": {'description': 'A supercritical fluid above its critical temperature and pressure'}, + "VAPOR_LIQUID": {'description': 'A two-phase mixture of vapor and liquid'}, + "LIQUID_LIQUID": {'description': 'A two-phase mixture of two immiscible liquids'}, + "VAPOR_LIQUID_LIQUID": {'description': 'A three-phase mixture of a vapor and two immiscible liquids'}, + "SLURRY": {'description': 'A suspension of solids in a liquid'}, + "GAS_SOLID": {'description': 'A two-phase mixture of gas and entrained or fluidized solids'}, + "MULTIPHASE": {'description': 'A stream containing more than one phase, of mixed or unspecified composition'}, +} + +class UtilityType(RichEnum): + """ + Common plant utilities consumed or produced by process unit operations, used for energy and mass balance accounting on a flowsheet. + """ + # Enum members + STEAM = "STEAM" + LOW_PRESSURE_STEAM = "LOW_PRESSURE_STEAM" + MEDIUM_PRESSURE_STEAM = "MEDIUM_PRESSURE_STEAM" + HIGH_PRESSURE_STEAM = "HIGH_PRESSURE_STEAM" + COOLING_WATER = "COOLING_WATER" + CHILLED_WATER = "CHILLED_WATER" + REFRIGERANT = "REFRIGERANT" + HOT_OIL = "HOT_OIL" + BRINE = "BRINE" + ELECTRICITY = "ELECTRICITY" + PROCESS_WATER = "PROCESS_WATER" + DEMINERALIZED_WATER = "DEMINERALIZED_WATER" + NATURAL_GAS = "NATURAL_GAS" + FUEL_GAS = "FUEL_GAS" + COMPRESSED_AIR = "COMPRESSED_AIR" + INSTRUMENT_AIR = "INSTRUMENT_AIR" + NITROGEN = "NITROGEN" + FLARE = "FLARE" + +# Set metadata after class creation to avoid it becoming an enum member +UtilityType._metadata = { + "STEAM": {'description': 'Process steam used for heating or stripping', 'annotations': {'utility_category': 'HEAT'}}, + "LOW_PRESSURE_STEAM": {'description': 'Low-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '<3 barg'}}, + "MEDIUM_PRESSURE_STEAM": {'description': 'Medium-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '3-20 barg'}}, + "HIGH_PRESSURE_STEAM": {'description': 'High-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '>20 barg'}}, + "COOLING_WATER": {'description': 'Recirculated cooling water for heat rejection', 'annotations': {'utility_category': 'HEAT'}}, + "CHILLED_WATER": {'description': 'Refrigerated water for below-ambient cooling', 'annotations': {'utility_category': 'HEAT'}}, + "REFRIGERANT": {'description': 'Refrigerant fluid for low-temperature cooling duty', 'annotations': {'utility_category': 'HEAT'}}, + "HOT_OIL": {'description': 'Thermal oil heat-transfer fluid for high-temperature heating', 'annotations': {'utility_category': 'HEAT'}}, + "BRINE": {'description': 'Chilled brine used as a low-temperature coolant', 'annotations': {'utility_category': 'HEAT'}}, + "ELECTRICITY": {'description': 'Electrical power supplied to drivers and equipment', 'annotations': {'utility_category': 'POWER'}}, + "PROCESS_WATER": {'description': 'Treated water used as a process input', 'annotations': {'utility_category': 'OTHER'}}, + "DEMINERALIZED_WATER": {'description': 'High-purity demineralized water utility', 'annotations': {'utility_category': 'OTHER'}}, + "NATURAL_GAS": {'description': 'Natural gas supplied as fuel or feedstock', 'annotations': {'utility_category': 'OTHER'}}, + "FUEL_GAS": {'description': 'Fuel gas burned in fired heaters and boilers', 'annotations': {'utility_category': 'OTHER'}}, + "COMPRESSED_AIR": {'description': 'Compressed air utility for process or actuation use', 'annotations': {'utility_category': 'OTHER'}}, + "INSTRUMENT_AIR": {'description': 'Clean dry compressed air for instrumentation', 'annotations': {'utility_category': 'OTHER'}}, + "NITROGEN": {'description': 'Nitrogen used for inerting, blanketing, or purging', 'annotations': {'utility_category': 'OTHER'}}, + "FLARE": {'description': 'Flare system for safe combustion of relieved gases', 'annotations': {'utility_category': 'OTHER'}}, +} + +class ProcessIndustryCategory(RichEnum): + """ + Sectors of the process (continuous and batch) manufacturing industries. The pisces_category annotation records the corresponding top-level category in the PISCES Standard Flowsheet Format where one exists. + """ + # Enum members + PETROLEUM_REFINING = "PETROLEUM_REFINING" + PETROCHEMICAL = "PETROCHEMICAL" + BULK_CHEMICAL = "BULK_CHEMICAL" + SPECIALTY_CHEMICAL = "SPECIALTY_CHEMICAL" + AGROCHEMICAL = "AGROCHEMICAL" + POLYMER_AND_PLASTICS = "POLYMER_AND_PLASTICS" + PHARMACEUTICAL = "PHARMACEUTICAL" + BIOTECHNOLOGY = "BIOTECHNOLOGY" + BIOFUEL = "BIOFUEL" + FOOD_AND_BEVERAGE = "FOOD_AND_BEVERAGE" + PULP_AND_PAPER = "PULP_AND_PAPER" + METALS_AND_MINING = "METALS_AND_MINING" + WATER_AND_WASTEWATER_TREATMENT = "WATER_AND_WASTEWATER_TREATMENT" + POWER_GENERATION = "POWER_GENERATION" + GAS_PROCESSING = "GAS_PROCESSING" + CEMENT_AND_CONSTRUCTION_MATERIALS = "CEMENT_AND_CONSTRUCTION_MATERIALS" + GLASS_AND_CERAMICS = "GLASS_AND_CERAMICS" + TEXTILE = "TEXTILE" + COSMETICS_AND_PERSONAL_CARE = "COSMETICS_AND_PERSONAL_CARE" + NUCLEAR_FUEL = "NUCLEAR_FUEL" + SEMICONDUCTOR = "SEMICONDUCTOR" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessIndustryCategory._metadata = { + "PETROLEUM_REFINING": {'description': 'Refining of crude oil into fuels and feedstocks', 'annotations': {'pisces_category': 'Energy'}}, + "PETROCHEMICAL": {'description': 'Production of chemicals derived from petroleum and natural gas', 'annotations': {'pisces_category': 'Chemical'}}, + "BULK_CHEMICAL": {'description': 'Large-volume production of commodity chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "SPECIALTY_CHEMICAL": {'description': 'Production of lower-volume, high-value performance chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "AGROCHEMICAL": {'description': 'Production of fertilizers, pesticides, and other agricultural chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "POLYMER_AND_PLASTICS": {'description': 'Production of polymers, resins, and plastic materials', 'annotations': {'pisces_category': 'Chemical'}}, + "PHARMACEUTICAL": {'description': 'Manufacture of active pharmaceutical ingredients and drug products', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOTECHNOLOGY": {'description': 'Manufacture of products using biological systems and fermentation', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOFUEL": {'description': 'Production of biologically derived fuels such as ethanol and biodiesel', 'annotations': {'pisces_category': 'Biofuel'}}, + "FOOD_AND_BEVERAGE": {'description': 'Processing and manufacture of food and beverage products', 'annotations': {'pisces_category': 'Food Product'}}, + "PULP_AND_PAPER": {'description': 'Production of pulp, paper, and board from fiber'}, + "METALS_AND_MINING": {'description': 'Extraction and processing of metals and minerals'}, + "WATER_AND_WASTEWATER_TREATMENT": {'description': 'Treatment of water and wastewater streams'}, + "POWER_GENERATION": {'description': 'Generation of electrical power and process heat', 'annotations': {'pisces_category': 'Energy'}}, + "GAS_PROCESSING": {'description': 'Processing and separation of natural gas and industrial gases', 'annotations': {'pisces_category': 'Energy'}}, + "CEMENT_AND_CONSTRUCTION_MATERIALS": {'description': 'Production of cement, lime, and construction materials'}, + "GLASS_AND_CERAMICS": {'description': 'Manufacture of glass and ceramic products'}, + "TEXTILE": {'description': 'Production and finishing of textile fibers and fabrics'}, + "COSMETICS_AND_PERSONAL_CARE": {'description': 'Manufacture of cosmetics and personal care products'}, + "NUCLEAR_FUEL": {'description': 'Processing of nuclear fuel materials', 'annotations': {'pisces_category': 'Energy'}}, + "SEMICONDUCTOR": {'description': 'Fabrication of semiconductor and microelectronic materials'}, +} + +class ProcessOperationMode(RichEnum): + """ + The temporal mode in which a process or unit operation is run. + """ + # Enum members + BATCH = "BATCH" + CONTINUOUS = "CONTINUOUS" + SEMI_BATCH = "SEMI_BATCH" + SEMI_CONTINUOUS = "SEMI_CONTINUOUS" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessOperationMode._metadata = { + "BATCH": {'description': 'Material is charged, processed, and discharged in discrete batches'}, + "CONTINUOUS": {'description': 'Material flows through the process steadily without interruption'}, + "SEMI_BATCH": {'description': 'A hybrid mode where some streams are continuous while others are batch-wise'}, + "SEMI_CONTINUOUS": {'description': 'Process alternates between continuous operation and periodic interruptions'}, +} + +class EquationOfStateModel(RichEnum): + """ + Equations of state used to compute fugacity coefficients and PVT behavior of fluids in process simulation (the SFF phi method). + """ + # Enum members + IDEAL_GAS = "IDEAL_GAS" + VIRIAL = "VIRIAL" + REDLICH_KWONG = "REDLICH_KWONG" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + PENG_ROBINSON = "PENG_ROBINSON" + PENG_ROBINSON_BOSTON_MATHIAS = "PENG_ROBINSON_BOSTON_MATHIAS" + SRK_BOSTON_MATHIAS = "SRK_BOSTON_MATHIAS" + LEE_KESLER_PLOCKER = "LEE_KESLER_PLOCKER" + BENEDICT_WEBB_RUBIN_STARLING = "BENEDICT_WEBB_RUBIN_STARLING" + PREDICTIVE_SRK = "PREDICTIVE_SRK" + PC_SAFT = "PC_SAFT" + CUBIC_PLUS_ASSOCIATION = "CUBIC_PLUS_ASSOCIATION" + GERG_2008 = "GERG_2008" + IAPWS_95 = "IAPWS_95" + +# Set metadata after class creation to avoid it becoming an enum member +EquationOfStateModel._metadata = { + "IDEAL_GAS": {'description': 'Ideal gas law, assuming no intermolecular interactions'}, + "VIRIAL": {'description': 'Virial equation of state expressed as a power series in density or pressure'}, + "REDLICH_KWONG": {'description': 'Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'RK'}}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave modification of the Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'SRK'}}, + "PENG_ROBINSON": {'description': 'Peng-Robinson cubic equation of state', 'annotations': {'abbreviation': 'PR'}}, + "PENG_ROBINSON_BOSTON_MATHIAS": {'description': 'Peng-Robinson with Boston-Mathias alpha function for supercritical extrapolation', 'annotations': {'abbreviation': 'PR-BM'}}, + "SRK_BOSTON_MATHIAS": {'description': 'Soave-Redlich-Kwong with Boston-Mathias alpha function', 'annotations': {'abbreviation': 'SRK-BM'}}, + "LEE_KESLER_PLOCKER": {'description': 'Lee-Kesler-Plocker corresponding-states equation of state', 'annotations': {'abbreviation': 'LKP'}}, + "BENEDICT_WEBB_RUBIN_STARLING": {'description': 'Benedict-Webb-Rubin-Starling equation of state for light hydrocarbons', 'annotations': {'abbreviation': 'BWRS'}}, + "PREDICTIVE_SRK": {'description': 'Predictive SRK combining SRK with a UNIFAC-based mixing rule', 'annotations': {'abbreviation': 'PSRK'}}, + "PC_SAFT": {'description': 'Perturbed-chain statistical associating fluid theory equation of state', 'annotations': {'abbreviation': 'PC-SAFT'}}, + "CUBIC_PLUS_ASSOCIATION": {'description': 'Cubic-plus-association equation of state for associating fluids', 'annotations': {'abbreviation': 'CPA'}}, + "GERG_2008": {'description': 'GERG-2008 reference equation of state for natural gas mixtures'}, + "IAPWS_95": {'description': 'IAPWS-95 reference formulation for the thermodynamic properties of water', 'annotations': {'aliases': 'steam tables'}}, +} + +class ActivityCoefficientModel(RichEnum): + """ + Excess Gibbs energy / activity-coefficient models for non-ideal liquid phases (the SFF gamma method). + """ + # Enum members + IDEAL = "IDEAL" + MARGULES = "MARGULES" + VAN_LAAR = "VAN_LAAR" + REGULAR_SOLUTION = "REGULAR_SOLUTION" + WILSON = "WILSON" + NRTL = "NRTL" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + UNIFAC_DORTMUND = "UNIFAC_DORTMUND" + FLORY_HUGGINS = "FLORY_HUGGINS" + PITZER = "PITZER" + COSMO_SAC = "COSMO_SAC" + +# Set metadata after class creation to avoid it becoming an enum member +ActivityCoefficientModel._metadata = { + "IDEAL": {'description': "Ideal solution, all activity coefficients equal to one (Raoult's law)"}, + "MARGULES": {'description': 'Margules two-parameter activity-coefficient model'}, + "VAN_LAAR": {'description': 'Van Laar activity-coefficient model'}, + "REGULAR_SOLUTION": {'description': 'Scatchard-Hildebrand regular solution model based on solubility parameters'}, + "WILSON": {'description': 'Wilson local-composition activity-coefficient model'}, + "NRTL": {'description': 'Non-random two-liquid local-composition activity-coefficient model'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL model for systems containing ions', 'annotations': {'abbreviation': 'eNRTL'}}, + "UNIQUAC": {'description': 'Universal quasi-chemical activity-coefficient model'}, + "UNIFAC": {'description': 'UNIQUAC functional-group activity-coefficient (group-contribution) model'}, + "UNIFAC_DORTMUND": {'description': 'Modified UNIFAC (Dortmund) group-contribution model'}, + "FLORY_HUGGINS": {'description': 'Flory-Huggins model for polymer solutions'}, + "PITZER": {'description': 'Pitzer model for aqueous electrolyte activity coefficients'}, + "COSMO_SAC": {'description': 'COSMO-based segment activity-coefficient model from quantum chemistry', 'annotations': {'aliases': 'COSMO-RS, COSMO-SAC'}}, +} + +class ThermodynamicPropertyPackage(RichEnum): + """ + Named property methods/packages offered by process simulators, typically combining an equation of state and/or an activity-coefficient model. Used where a single package label rather than separate gamma/phi methods is recorded. + """ + # Enum members + IDEAL = "IDEAL" + NRTL = "NRTL" + NRTL_RK = "NRTL_RK" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + WILSON = "WILSON" + VAN_LAAR = "VAN_LAAR" + PENG_ROBINSON = "PENG_ROBINSON" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + PITZER = "PITZER" + CHAO_SEADER = "CHAO_SEADER" + GRAYSON_STREED = "GRAYSON_STREED" + BRAUN_K10 = "BRAUN_K10" + PC_SAFT = "PC_SAFT" + STEAM_TABLES = "STEAM_TABLES" + API_SOUR = "API_SOUR" + +# Set metadata after class creation to avoid it becoming an enum member +ThermodynamicPropertyPackage._metadata = { + "IDEAL": {'description': "Ideal (Raoult's law) property package"}, + "NRTL": {'description': 'NRTL activity model with ideal or RK vapor phase'}, + "NRTL_RK": {'description': 'NRTL activity model with Redlich-Kwong vapor phase'}, + "UNIQUAC": {'description': 'UNIQUAC activity model property package'}, + "UNIFAC": {'description': 'UNIFAC group-contribution property package'}, + "WILSON": {'description': 'Wilson activity model property package'}, + "VAN_LAAR": {'description': 'Van Laar activity model property package'}, + "PENG_ROBINSON": {'description': 'Peng-Robinson equation-of-state property package'}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave-Redlich-Kwong equation-of-state property package'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL property package for ionic systems'}, + "PITZER": {'description': 'Pitzer property package for aqueous electrolytes'}, + "CHAO_SEADER": {'description': 'Chao-Seader semi-empirical package for hydrocarbon systems'}, + "GRAYSON_STREED": {'description': 'Grayson-Streed package for hydrogen-rich hydrocarbon systems'}, + "BRAUN_K10": {'description': 'Braun K10 package for low-pressure heavy hydrocarbon systems', 'annotations': {'abbreviation': 'BK10'}}, + "PC_SAFT": {'description': 'PC-SAFT equation-of-state property package'}, + "STEAM_TABLES": {'description': 'Steam-table (IAPWS / ASME) property package for water and steam'}, + "API_SOUR": {'description': 'API sour-water package for systems with acid gases and ammonia'}, +} + +class MixingRuleModel(RichEnum): + """ + Mixing rules applied to equation-of-state parameters for mixtures (the SFF mixture method). + """ + # Enum members + IDEAL = "IDEAL" + VAN_DER_WAALS = "VAN_DER_WAALS" + HURON_VIDAL = "HURON_VIDAL" + MODIFIED_HURON_VIDAL = "MODIFIED_HURON_VIDAL" + WONG_SANDLER = "WONG_SANDLER" + PSRK_MIXING = "PSRK_MIXING" + +# Set metadata after class creation to avoid it becoming an enum member +MixingRuleModel._metadata = { + "IDEAL": {'description': 'Ideal mixing, no excess properties'}, + "VAN_DER_WAALS": {'description': 'Classical van der Waals one-fluid mixing rule with binary interaction parameters', 'annotations': {'aliases': 'classical, quadratic mixing rule'}}, + "HURON_VIDAL": {'description': 'Huron-Vidal mixing rule coupling an equation of state to an excess Gibbs energy model'}, + "MODIFIED_HURON_VIDAL": {'description': 'Modified Huron-Vidal first/second order mixing rules', 'annotations': {'aliases': 'MHV1, MHV2'}}, + "WONG_SANDLER": {'description': 'Wong-Sandler mixing rule with correct low- and high-density limits'}, + "PSRK_MIXING": {'description': 'Predictive SRK (PSRK) mixing rule based on UNIFAC'}, +} + +class PoyntingCorrectionMethod(RichEnum): + """ + Treatment of the Poynting correction factor accounting for the effect of pressure on liquid fugacity (the SFF PCF method). + """ + # Enum members + NONE = "NONE" + POYNTING = "POYNTING" + +# Set metadata after class creation to avoid it becoming an enum member +PoyntingCorrectionMethod._metadata = { + "NONE": {'description': 'No Poynting correction applied'}, + "POYNTING": {'description': 'Poynting correction factor applied to the liquid fugacity'}, +} + +class DesignSimulationMethod(RichEnum): + """ + Methods used to design or simulate unit operations, particularly separation columns - ranging from graphical and shortcut methods to rigorous stage-by-stage and rate-based models. + """ + # Enum members + MCCABE_THIELE = "MCCABE_THIELE" + PONCHON_SAVARIT = "PONCHON_SAVARIT" + FENSKE_UNDERWOOD_GILLILAND = "FENSKE_UNDERWOOD_GILLILAND" + KREMSER = "KREMSER" + MESH = "MESH" + INSIDE_OUT = "INSIDE_OUT" + RATE_BASED = "RATE_BASED" + EQUILIBRIUM_STAGE = "EQUILIBRIUM_STAGE" + SHORTCUT = "SHORTCUT" + RIGOROUS = "RIGOROUS" + PINCH_ANALYSIS = "PINCH_ANALYSIS" + +# Set metadata after class creation to avoid it becoming an enum member +DesignSimulationMethod._metadata = { + "MCCABE_THIELE": {'description': 'McCabe-Thiele graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "PONCHON_SAVARIT": {'description': 'Ponchon-Savarit enthalpy-composition graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "FENSKE_UNDERWOOD_GILLILAND": {'description': 'Fenske-Underwood-Gilliland shortcut method for multicomponent distillation', 'annotations': {'method_class': 'SHORTCUT', 'abbreviation': 'FUG'}}, + "KREMSER": {'description': 'Kremser shortcut method for absorber and stripper design', 'annotations': {'method_class': 'SHORTCUT'}}, + "MESH": {'description': 'Rigorous equilibrium-stage solution of the Material, Equilibrium, Summation and Heat (enthalpy) equations', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "INSIDE_OUT": {'description': 'Inside-out algorithm for rigorous equilibrium-stage column convergence', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "RATE_BASED": {'description': 'Rate-based (nonequilibrium) model accounting for mass and heat transfer rates', 'annotations': {'method_class': 'RATE_BASED'}}, + "EQUILIBRIUM_STAGE": {'description': 'Generic equilibrium-stage model assuming each stage reaches phase equilibrium', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "SHORTCUT": {'description': 'Generic shortcut / approximate design method', 'annotations': {'method_class': 'SHORTCUT'}}, + "RIGOROUS": {'description': 'Generic rigorous design method', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "PINCH_ANALYSIS": {'description': 'Pinch analysis for heat-exchanger network and energy integration', 'annotations': {'method_class': 'ENERGY_INTEGRATION'}}, +} + +class FlowsheetSolutionApproach(RichEnum): + """ + The overall computational strategy used to converge a process flowsheet. + """ + # Enum members + SEQUENTIAL_MODULAR = "SEQUENTIAL_MODULAR" + EQUATION_ORIENTED = "EQUATION_ORIENTED" + SIMULTANEOUS_MODULAR = "SIMULTANEOUS_MODULAR" + +# Set metadata after class creation to avoid it becoming an enum member +FlowsheetSolutionApproach._metadata = { + "SEQUENTIAL_MODULAR": {'description': 'Units solved one at a time in sequence, iterating on recycle tear streams'}, + "EQUATION_ORIENTED": {'description': 'All model equations assembled and solved simultaneously'}, + "SIMULTANEOUS_MODULAR": {'description': 'Hybrid approach combining modular unit models with a simultaneous convergence layer'}, +} + +class ProcessSimulator(RichEnum): + """ + Process simulation software packages used to model chemical and biochemical process flowsheets. + """ + # Enum members + ASPEN_PLUS = "ASPEN_PLUS" + ASPEN_HYSYS = "ASPEN_HYSYS" + ASPEN_CUSTOM_MODELER = "ASPEN_CUSTOM_MODELER" + UNISIM_DESIGN = "UNISIM_DESIGN" + PRO_II = "PRO_II" + AVEVA_PROCESS_SIMULATION = "AVEVA_PROCESS_SIMULATION" + CHEMCAD = "CHEMCAD" + DWSIM = "DWSIM" + COCO_SIMULATOR = "COCO_SIMULATOR" + GPROMS = "GPROMS" + PROSIMPLUS = "PROSIMPLUS" + PETRO_SIM = "PETRO_SIM" + BIOSTEAM = "BIOSTEAM" + SUPERPRO_DESIGNER = "SUPERPRO_DESIGNER" + IDAES = "IDAES" + CAPE_OPEN = "CAPE_OPEN" + +# Set metadata after class creation to avoid it becoming an enum member +ProcessSimulator._metadata = { + "ASPEN_PLUS": {'description': 'Aspen Plus steady-state process simulator (AspenTech)'}, + "ASPEN_HYSYS": {'description': 'Aspen HYSYS process simulator (AspenTech)'}, + "ASPEN_CUSTOM_MODELER": {'description': 'Aspen Custom Modeler for user-defined unit operation models (AspenTech)'}, + "UNISIM_DESIGN": {'description': 'Honeywell UniSim Design process simulator'}, + "PRO_II": {'description': 'AVEVA Pro/II (formerly SimSci Pro/II) process simulator'}, + "AVEVA_PROCESS_SIMULATION": {'description': 'AVEVA Process Simulation (formerly SimCentral)'}, + "CHEMCAD": {'description': 'ChemCAD process simulator (Chemstations)'}, + "DWSIM": {'description': 'DWSIM open-source CAPE-OPEN process simulator'}, + "COCO_SIMULATOR": {'description': 'COCO/COFE free CAPE-OPEN flowsheeting environment'}, + "GPROMS": {'description': 'gPROMS equation-oriented process modeling environment (Siemens / PSE)'}, + "PROSIMPLUS": {'description': 'ProSimPlus steady-state process simulator (ProSim)'}, + "PETRO_SIM": {'description': 'KBC Petro-SIM process simulator'}, + "BIOSTEAM": {'description': 'BioSTEAM open-source biorefinery simulation and techno-economic analysis package'}, + "SUPERPRO_DESIGNER": {'description': 'SuperPro Designer batch and bioprocess simulator (Intelligen)'}, + "IDAES": {'description': 'IDAES open-source equation-oriented process systems engineering platform (US DOE)'}, + "CAPE_OPEN": {'description': 'A CAPE-OPEN compliant simulator or unit (interoperability standard, simulator unspecified)'}, +} + +class ChemicalIdentifierScheme(RichEnum): + """ + Schemes used to identify chemical substances, including registry numbers, line notations, structure-derived keys, and database accessions. + """ + # Enum members + CAS_RN = "CAS_RN" + SMILES = "SMILES" + INCHI = "INCHI" + INCHIKEY = "INCHIKEY" + IUPAC_NAME = "IUPAC_NAME" + MOLECULAR_FORMULA = "MOLECULAR_FORMULA" + PUBCHEM_CID = "PUBCHEM_CID" + CHEBI_ID = "CHEBI_ID" + KEGG_COMPOUND = "KEGG_COMPOUND" + DRUGBANK_ID = "DRUGBANK_ID" + EC_NUMBER = "EC_NUMBER" + +# Set metadata after class creation to avoid it becoming an enum member +ChemicalIdentifierScheme._metadata = { + "CAS_RN": {'description': 'CAS Registry Number assigned by the Chemical Abstracts Service', 'annotations': {'example': '64-17-5'}}, + "SMILES": {'description': 'Simplified Molecular-Input Line-Entry System structure notation', 'annotations': {'example': 'CCO'}}, + "INCHI": {'description': 'IUPAC International Chemical Identifier structure string', 'annotations': {'example': 'InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3'}}, + "INCHIKEY": {'description': 'Hashed fixed-length form of an InChI', 'annotations': {'example': 'LFQSCWFLJHTTHZ-UHFFFAOYSA-N'}}, + "IUPAC_NAME": {'description': 'Systematic IUPAC chemical name'}, + "MOLECULAR_FORMULA": {'description': 'Molecular or empirical chemical formula', 'annotations': {'example': 'C2H6O'}}, + "PUBCHEM_CID": {'description': 'PubChem Compound Identifier'}, + "CHEBI_ID": {'description': 'ChEBI ontology identifier'}, + "KEGG_COMPOUND": {'description': 'KEGG COMPOUND database accession'}, + "DRUGBANK_ID": {'description': 'DrugBank accession'}, + "EC_NUMBER": {'description': 'European Community (EINECS/EC) substance number'}, +} + +class CurrencyCode(RichEnum): + """ + World currencies by ISO 4217 alpha-3 code. The numeric_code, symbol, and minor_unit (number of decimal places) annotations record the corresponding ISO 4217 attributes. + """ + # Enum members + USD = "USD" + EUR = "EUR" + JPY = "JPY" + GBP = "GBP" + CNY = "CNY" + AUD = "AUD" + CAD = "CAD" + CHF = "CHF" + HKD = "HKD" + SGD = "SGD" + SEK = "SEK" + NOK = "NOK" + DKK = "DKK" + NZD = "NZD" + KRW = "KRW" + INR = "INR" + BRL = "BRL" + ZAR = "ZAR" + RUB = "RUB" + MXN = "MXN" + TRY = "TRY" + PLN = "PLN" + THB = "THB" + IDR = "IDR" + MYR = "MYR" + PHP = "PHP" + AED = "AED" + SAR = "SAR" + ILS = "ILS" + CZK = "CZK" + HUF = "HUF" + RON = "RON" + UAH = "UAH" + CLP = "CLP" + COP = "COP" + ARS = "ARS" + EGP = "EGP" + NGN = "NGN" + KES = "KES" + PKR = "PKR" + BDT = "BDT" + VND = "VND" + TWD = "TWD" + KWD = "KWD" + BHD = "BHD" + OMR = "OMR" + QAR = "QAR" + ISK = "ISK" + +# Set metadata after class creation to avoid it becoming an enum member +CurrencyCode._metadata = { + "USD": {'description': 'United States dollar', 'annotations': {'numeric_code': '840', 'symbol': '$', 'minor_unit': 2}}, + "EUR": {'description': 'Euro', 'annotations': {'numeric_code': '978', 'symbol': '€', 'minor_unit': 2}}, + "JPY": {'description': 'Japanese yen', 'annotations': {'numeric_code': '392', 'symbol': '¥', 'minor_unit': 0}}, + "GBP": {'description': 'British pound sterling', 'annotations': {'numeric_code': '826', 'symbol': '£', 'minor_unit': 2}}, + "CNY": {'description': 'Chinese yuan renminbi', 'annotations': {'numeric_code': '156', 'symbol': '¥', 'minor_unit': 2}}, + "AUD": {'description': 'Australian dollar', 'annotations': {'numeric_code': '036', 'symbol': '$', 'minor_unit': 2}}, + "CAD": {'description': 'Canadian dollar', 'annotations': {'numeric_code': '124', 'symbol': '$', 'minor_unit': 2}}, + "CHF": {'description': 'Swiss franc', 'annotations': {'numeric_code': '756', 'symbol': 'Fr', 'minor_unit': 2}}, + "HKD": {'description': 'Hong Kong dollar', 'annotations': {'numeric_code': '344', 'symbol': '$', 'minor_unit': 2}}, + "SGD": {'description': 'Singapore dollar', 'annotations': {'numeric_code': '702', 'symbol': '$', 'minor_unit': 2}}, + "SEK": {'description': 'Swedish krona', 'annotations': {'numeric_code': '752', 'symbol': 'kr', 'minor_unit': 2}}, + "NOK": {'description': 'Norwegian krone', 'annotations': {'numeric_code': '578', 'symbol': 'kr', 'minor_unit': 2}}, + "DKK": {'description': 'Danish krone', 'annotations': {'numeric_code': '208', 'symbol': 'kr', 'minor_unit': 2}}, + "NZD": {'description': 'New Zealand dollar', 'annotations': {'numeric_code': '554', 'symbol': '$', 'minor_unit': 2}}, + "KRW": {'description': 'South Korean won', 'annotations': {'numeric_code': '410', 'symbol': '₩', 'minor_unit': 0}}, + "INR": {'description': 'Indian rupee', 'annotations': {'numeric_code': '356', 'symbol': '₹', 'minor_unit': 2}}, + "BRL": {'description': 'Brazilian real', 'annotations': {'numeric_code': '986', 'symbol': 'R$', 'minor_unit': 2}}, + "ZAR": {'description': 'South African rand', 'annotations': {'numeric_code': '710', 'symbol': 'R', 'minor_unit': 2}}, + "RUB": {'description': 'Russian ruble', 'annotations': {'numeric_code': '643', 'symbol': '₽', 'minor_unit': 2}}, + "MXN": {'description': 'Mexican peso', 'annotations': {'numeric_code': '484', 'symbol': '$', 'minor_unit': 2}}, + "TRY": {'description': 'Turkish lira', 'annotations': {'numeric_code': '949', 'symbol': '₺', 'minor_unit': 2}}, + "PLN": {'description': 'Polish zloty', 'annotations': {'numeric_code': '985', 'symbol': 'zł', 'minor_unit': 2}}, + "THB": {'description': 'Thai baht', 'annotations': {'numeric_code': '764', 'symbol': '฿', 'minor_unit': 2}}, + "IDR": {'description': 'Indonesian rupiah', 'annotations': {'numeric_code': '360', 'symbol': 'Rp', 'minor_unit': 2}}, + "MYR": {'description': 'Malaysian ringgit', 'annotations': {'numeric_code': '458', 'symbol': 'RM', 'minor_unit': 2}}, + "PHP": {'description': 'Philippine peso', 'annotations': {'numeric_code': '608', 'symbol': '₱', 'minor_unit': 2}}, + "AED": {'description': 'United Arab Emirates dirham', 'annotations': {'numeric_code': '784', 'minor_unit': 2}}, + "SAR": {'description': 'Saudi riyal', 'annotations': {'numeric_code': '682', 'minor_unit': 2}}, + "ILS": {'description': 'Israeli new shekel', 'annotations': {'numeric_code': '376', 'symbol': '₪', 'minor_unit': 2}}, + "CZK": {'description': 'Czech koruna', 'annotations': {'numeric_code': '203', 'symbol': 'Kč', 'minor_unit': 2}}, + "HUF": {'description': 'Hungarian forint', 'annotations': {'numeric_code': '348', 'symbol': 'Ft', 'minor_unit': 2}}, + "RON": {'description': 'Romanian leu', 'annotations': {'numeric_code': '946', 'symbol': 'lei', 'minor_unit': 2}}, + "UAH": {'description': 'Ukrainian hryvnia', 'annotations': {'numeric_code': '980', 'symbol': '₴', 'minor_unit': 2}}, + "CLP": {'description': 'Chilean peso', 'annotations': {'numeric_code': '152', 'symbol': '$', 'minor_unit': 0}}, + "COP": {'description': 'Colombian peso', 'annotations': {'numeric_code': '170', 'symbol': '$', 'minor_unit': 2}}, + "ARS": {'description': 'Argentine peso', 'annotations': {'numeric_code': '032', 'symbol': '$', 'minor_unit': 2}}, + "EGP": {'description': 'Egyptian pound', 'annotations': {'numeric_code': '818', 'symbol': '£', 'minor_unit': 2}}, + "NGN": {'description': 'Nigerian naira', 'annotations': {'numeric_code': '566', 'symbol': '₦', 'minor_unit': 2}}, + "KES": {'description': 'Kenyan shilling', 'annotations': {'numeric_code': '404', 'symbol': 'Sh', 'minor_unit': 2}}, + "PKR": {'description': 'Pakistani rupee', 'annotations': {'numeric_code': '586', 'symbol': '₨', 'minor_unit': 2}}, + "BDT": {'description': 'Bangladeshi taka', 'annotations': {'numeric_code': '050', 'symbol': '৳', 'minor_unit': 2}}, + "VND": {'description': 'Vietnamese dong', 'annotations': {'numeric_code': '704', 'symbol': '₫', 'minor_unit': 0}}, + "TWD": {'description': 'New Taiwan dollar', 'annotations': {'numeric_code': '901', 'symbol': '$', 'minor_unit': 2}}, + "KWD": {'description': 'Kuwaiti dinar', 'annotations': {'numeric_code': '414', 'minor_unit': 3}}, + "BHD": {'description': 'Bahraini dinar', 'annotations': {'numeric_code': '048', 'minor_unit': 3}}, + "OMR": {'description': 'Omani rial', 'annotations': {'numeric_code': '512', 'minor_unit': 3}}, + "QAR": {'description': 'Qatari riyal', 'annotations': {'numeric_code': '634', 'minor_unit': 2}}, + "ISK": {'description': 'Icelandic krona', 'annotations': {'numeric_code': '352', 'symbol': 'kr', 'minor_unit': 0}}, +} + class LengthUnitEnum(RichEnum): """ Units of length/distance measurement @@ -16813,6 +19017,68 @@ class DataSizeUnitEnum(RichEnum): "TEBIBYTE": {'description': 'Tebibyte (2^40 bytes)', 'annotations': {'symbol': 'TiB', 'conversion_to_byte': '1099511627776', 'standard': 'binary'}}, } +class MassFlowRateUnitEnum(RichEnum): + """ + Units of mass flow rate (mass per unit time) + """ + # Enum members + KILOGRAM_PER_SECOND = "KILOGRAM_PER_SECOND" + KILOGRAM_PER_HOUR = "KILOGRAM_PER_HOUR" + GRAM_PER_SECOND = "GRAM_PER_SECOND" + TONNE_PER_HOUR = "TONNE_PER_HOUR" + TONNE_PER_DAY = "TONNE_PER_DAY" + POUND_PER_HOUR = "POUND_PER_HOUR" + +# Set metadata after class creation to avoid it becoming an enum member +MassFlowRateUnitEnum._metadata = { + "KILOGRAM_PER_SECOND": {'description': 'Kilograms per second (SI)', 'annotations': {'symbol': 'kg/s', 'system': 'SI'}}, + "KILOGRAM_PER_HOUR": {'description': 'Kilograms per hour', 'annotations': {'symbol': 'kg/h', 'conversion_to_kg_per_s': '0.000277778'}}, + "GRAM_PER_SECOND": {'description': 'Grams per second', 'annotations': {'symbol': 'g/s', 'conversion_to_kg_per_s': '0.001'}}, + "TONNE_PER_HOUR": {'description': 'Metric tonnes per hour', 'annotations': {'symbol': 't/h', 'conversion_to_kg_per_s': '0.277778'}}, + "TONNE_PER_DAY": {'description': 'Metric tonnes per day', 'annotations': {'symbol': 't/d', 'conversion_to_kg_per_s': '0.0115741'}}, + "POUND_PER_HOUR": {'description': 'Pounds (mass) per hour', 'annotations': {'symbol': 'lb/h', 'conversion_to_kg_per_s': '0.000125998', 'system': 'imperial'}}, +} + +class MolarFlowRateUnitEnum(RichEnum): + """ + Units of molar flow rate (amount of substance per unit time) + """ + # Enum members + MOLE_PER_SECOND = "MOLE_PER_SECOND" + MOLE_PER_HOUR = "MOLE_PER_HOUR" + KILOMOLE_PER_HOUR = "KILOMOLE_PER_HOUR" + KILOMOLE_PER_SECOND = "KILOMOLE_PER_SECOND" + +# Set metadata after class creation to avoid it becoming an enum member +MolarFlowRateUnitEnum._metadata = { + "MOLE_PER_SECOND": {'description': 'Moles per second (SI)', 'annotations': {'symbol': 'mol/s', 'system': 'SI'}}, + "MOLE_PER_HOUR": {'description': 'Moles per hour', 'annotations': {'symbol': 'mol/h', 'conversion_to_mol_per_s': '0.000277778'}}, + "KILOMOLE_PER_HOUR": {'description': 'Kilomoles per hour', 'annotations': {'symbol': 'kmol/h', 'conversion_to_mol_per_s': '0.277778'}}, + "KILOMOLE_PER_SECOND": {'description': 'Kilomoles per second', 'annotations': {'symbol': 'kmol/s', 'conversion_to_mol_per_s': '1000'}}, +} + +class VolumetricFlowRateUnitEnum(RichEnum): + """ + Units of volumetric flow rate (volume per unit time) + """ + # Enum members + CUBIC_METER_PER_SECOND = "CUBIC_METER_PER_SECOND" + CUBIC_METER_PER_HOUR = "CUBIC_METER_PER_HOUR" + LITER_PER_SECOND = "LITER_PER_SECOND" + LITER_PER_MINUTE = "LITER_PER_MINUTE" + GALLON_PER_MINUTE = "GALLON_PER_MINUTE" + CUBIC_FOOT_PER_MINUTE = "CUBIC_FOOT_PER_MINUTE" + +# Set metadata after class creation to avoid it becoming an enum member +VolumetricFlowRateUnitEnum._metadata = { + "CUBIC_METER_PER_SECOND": {'description': 'Cubic meters per second (SI)', 'annotations': {'symbol': 'm3/s', 'system': 'SI'}}, + "CUBIC_METER_PER_HOUR": {'description': 'Cubic meters per hour', 'annotations': {'symbol': 'm3/h', 'conversion_to_m3_per_s': '0.000277778'}}, + "LITER_PER_SECOND": {'description': 'Liters per second', 'annotations': {'symbol': 'L/s', 'conversion_to_m3_per_s': '0.001'}}, + "LITER_PER_MINUTE": {'description': 'Liters per minute', 'annotations': {'symbol': 'L/min', 'conversion_to_m3_per_s': '1.66667e-5'}}, + "GALLON_PER_MINUTE": {'description': 'US gallons per minute', 'annotations': {'symbol': 'gpm', 'conversion_to_m3_per_s': '6.30902e-5', 'system': 'US'}}, + "CUBIC_FOOT_PER_MINUTE": {'description': 'Cubic feet per minute', 'annotations': {'symbol': 'cfm', 'conversion_to_m3_per_s': '0.000471947', 'system': 'imperial'}}, +} + class QuantityKindEnum(RichEnum): """ Physical quantity kinds based on QUDT. These represent abstract types of physical quantities independent of the units used to measure them. @@ -17363,6 +19629,65 @@ class OpenSourceMaturityLevel(RichEnum): "ARCHIVED": {'description': 'No longer actively maintained'}, } +class SystemLifeCycleProcess15288(RichEnum): + """ + The 30 system life cycle processes grouped by ISO/IEC/IEEE 15288:2015. + """ + # Enum members + ACQUISITION = "ACQUISITION" + SUPPLY = "SUPPLY" + LIFE_CYCLE_MODEL_MANAGEMENT = "LIFE_CYCLE_MODEL_MANAGEMENT" + INFRASTRUCTURE_MANAGEMENT = "INFRASTRUCTURE_MANAGEMENT" + PORTFOLIO_MANAGEMENT = "PORTFOLIO_MANAGEMENT" + HUMAN_RESOURCE_MANAGEMENT = "HUMAN_RESOURCE_MANAGEMENT" + QUALITY_MANAGEMENT = "QUALITY_MANAGEMENT" + PROJECT_PLANNING = "PROJECT_PLANNING" + PROJECT_ASSESSMENT_AND_CONTROL = "PROJECT_ASSESSMENT_AND_CONTROL" + DECISION_MANAGEMENT = "DECISION_MANAGEMENT" + RISK_MANAGEMENT = "RISK_MANAGEMENT" + CONFIGURATION_MANAGEMENT = "CONFIGURATION_MANAGEMENT" + INFORMATION_MANAGEMENT = "INFORMATION_MANAGEMENT" + MEASUREMENT = "MEASUREMENT" + QUALITY_ASSURANCE = "QUALITY_ASSURANCE" + KNOWLEDGE_MANAGEMENT = "KNOWLEDGE_MANAGEMENT" + BUSINESS_OR_MISSION_ANALYSIS = "BUSINESS_OR_MISSION_ANALYSIS" + STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION = "STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION" + SYSTEM_REQUIREMENTS_DEFINITION = "SYSTEM_REQUIREMENTS_DEFINITION" + ARCHITECTURE_DEFINITION = "ARCHITECTURE_DEFINITION" + DESIGN_DEFINITION = "DESIGN_DEFINITION" + SYSTEM_ANALYSIS = "SYSTEM_ANALYSIS" + IMPLEMENTATION = "IMPLEMENTATION" + INTEGRATION = "INTEGRATION" + VERIFICATION = "VERIFICATION" + TRANSITION = "TRANSITION" + VALIDATION = "VALIDATION" + OPERATION = "OPERATION" + MAINTENANCE = "MAINTENANCE" + DISPOSAL = "DISPOSAL" + +# Set metadata after class creation to avoid it becoming an enum member +SystemLifeCycleProcess15288._metadata = { +} + +class VerificationValidationProcessIEEE1012(RichEnum): + """ + Verification and validation processes applied across the system, software, and hardware life cycle. + """ + # Enum members + CONCEPT_AND_REQUIREMENTS_V_AND_V = "CONCEPT_AND_REQUIREMENTS_V_AND_V" + ARCHITECTURE_AND_DESIGN_V_AND_V = "ARCHITECTURE_AND_DESIGN_V_AND_V" + IMPLEMENTATION_V_AND_V = "IMPLEMENTATION_V_AND_V" + INTEGRATION_V_AND_V = "INTEGRATION_V_AND_V" + QUALIFICATION_TESTING = "QUALIFICATION_TESTING" + INSTALLATION_AND_CHECKOUT = "INSTALLATION_AND_CHECKOUT" + OPERATION_V_AND_V = "OPERATION_V_AND_V" + MAINTENANCE_V_AND_V = "MAINTENANCE_V_AND_V" + DISPOSAL_V_AND_V = "DISPOSAL_V_AND_V" + +# Set metadata after class creation to avoid it becoming an enum member +VerificationValidationProcessIEEE1012._metadata = { +} + class OWLProfileEnum(RichEnum): """ OWL 2 profiles that provide different tradeoffs between expressiveness and computational complexity diff --git a/src/valuesets/enums/__init__.py b/src/valuesets/enums/__init__.py index 29c32a2d..0c9007b8 100644 --- a/src/valuesets/enums/__init__.py +++ b/src/valuesets/enums/__init__.py @@ -70,6 +70,7 @@ from .bioprocessing.scale_up import ProcessScaleEnum, BioreactorTypeEnum, FermentationModeEnum, OxygenationStrategyEnum, AgitationTypeEnum, DownstreamProcessEnum, FeedstockTypeEnum, ProductTypeEnum, SterilizationMethodEnum # Business domain +from .business.currencies import CurrencyCode from .business.human_resources import EmploymentTypeEnum, JobLevelEnum, HRFunctionEnum, CompensationTypeEnum, PerformanceRatingEnum, RecruitmentSourceEnum, TrainingTypeEnum, EmployeeStatusEnum, WorkArrangementEnum, BenefitsCategoryEnum from .business.industry_classifications import NAICSSectorEnum, EconomicSectorEnum, BusinessActivityTypeEnum, IndustryMaturityEnum, MarketStructureEnum, IndustryRegulationLevelEnum from .business.management_operations import ManagementMethodologyEnum, StrategicFrameworkEnum, OperationalModelEnum, PerformanceMeasurementEnum, DecisionMakingStyleEnum, LeadershipStyleEnum, BusinessProcessTypeEnum @@ -79,10 +80,12 @@ # Chemistry domain from .chemistry.chemical_entities import SubatomicParticleEnum, BondTypeEnum, PeriodicTableBlockEnum, ElementFamilyEnum, ElementMetallicClassificationEnum, HardOrSoftEnum, BronstedAcidBaseRoleEnum, LewisAcidBaseRoleEnum, OxidationStateEnum, ChiralityEnum, NanostructureMorphologyEnum +from .chemistry.identifiers import ChemicalIdentifierScheme from .chemistry.reaction_directionality import RelativeTimeEnum, PresenceEnum, ReactionDirectionality from .chemistry.reactions import ReactionTypeEnum, ReactionMechanismEnum, CatalystTypeEnum, ReactionConditionEnum, ReactionRateOrderEnum, EnzymeClassEnum, SolventClassEnum, ThermodynamicParameterEnum # Clinical domain +from .clinical.gene2phenotype import G2PConfidenceCategory, G2PAllelicRequirement, G2PCrossCuttingModifier, G2PMolecularMechanism, G2PMolecularMechanismSynopsis, G2PMolecularMechanismSupport, G2PMechanismEvidenceCategory, G2PFunctionEvidence, G2PFunctionalAlterationEvidence, G2PModelsEvidence, G2PRescueEvidence, G2PVariantConsequence, G2PVariantTypeGroup, G2PVariantType, G2PPanel from .clinical.genetics import ModeOfInheritance from .clinical.nih_demographics import RaceOMB1997Enum, EthnicityOMB1997Enum, BiologicalSexEnum, AgeGroupEnum, ParticipantVitalStatusEnum, RecruitmentStatusEnum, StudyPhaseEnum from .clinical.phenopackets import KaryotypicSexEnum, PhenotypicSexEnum, AllelicStateEnum, LateralityEnum, OnsetTimingEnum, ACMGPathogenicityEnum, TherapeuticActionabilityEnum, InterpretationProgressEnum, RegimenStatusEnum, DrugResponseEnum @@ -99,6 +102,8 @@ from .computing.mime_types import MimeType, MimeTypeCategory, TextCharset, CompressionType from .computing.ontologies import OWLProfileEnum from .computing.quantum import QubitType, QuantumAlgorithmCategoryType +from .computing.systems_engineering import SystemLifeCycleProcess15288 +from .computing.verification_validation_ieee_1012 import VerificationValidationProcessIEEE1012 # Core domain from .confidence_levels import RelativeTimeEnum, PresenceEnum, ConfidenceLevel, CIOConfidenceLevel, OBCSCertaintyLevel, IPCCLikelihoodScale, IPCCConfidenceLevel, NCITFivePointConfidenceScale @@ -203,7 +208,10 @@ # Medical domain from .medical.clinical import BloodTypeEnum, AnatomicalSystemEnum, MedicalSpecialtyEnum, DrugRouteEnum, VitalSignEnum, DiagnosticTestTypeEnum, SymptomSeverityEnum, AllergyTypeEnum, VaccineTypeEnum, BMIClassificationEnum +from .medical.dicom import DICOMModalityEnum, DICOMValueRepresentationEnum, DICOMAttributeTypeEnum, DICOMTransferSyntaxEnum, DICOMNetworkServiceEnum, DICOMSoftwareToolEnum from .medical.family_history import FamilyRelationship, FamilyHistoryStatus, GeneticRelationship +from .medical.imaging_data_management import ImagingDataLifecycleStageEnum, ImagingDataSourceTypeEnum, DICOMValidationIssueTypeEnum, ImageQualityMetricEnum, ImagingInteroperabilityStandardEnum, Bridge2AIDataGenerationProjectEnum +from .medical.imaging_deidentification import DICOMDeidentificationMethodEnum, DICOMDeidentificationActionEnum, ImageDeidentificationTargetEnum, DeidentificationRegulatoryFrameworkEnum, DefacingMethodEnum, DefacingToolEnum from .medical.imaging_platforms import MRIPlatformEnum, MicroscopyPlatformEnum, ImagingSystemPlatformEnum from .medical.neuroimaging import MRIModalityEnum, MRISequenceTypeEnum, MRIContrastTypeEnum, FMRIParadigmTypeEnum from .medical.oncology.icdo import TumorTopography, TumorMorphology, TumorBehavior, TumorGrade @@ -221,6 +229,13 @@ from .preservation.events import PreservationEventType, PreservationEventOutcome from .preservation.fixity import CryptographicHashFunction +# Process_Engineering domain +from .process_engineering.process_industries import ProcessIndustryCategory, ProcessOperationMode +from .process_engineering.process_modeling import DesignSimulationMethod, FlowsheetSolutionApproach, ProcessSimulator +from .process_engineering.process_streams import ProcessStreamRole, ProcessStreamPhase, UtilityType +from .process_engineering.thermodynamics import EquationOfStateModel, ActivityCoefficientModel, ThermodynamicPropertyPackage, MixingRuleModel, PoyntingCorrectionMethod +from .process_engineering.unit_operations import UnitOperationType, ProcessEquipmentType + # Publishing domain from .publishing.arxiv_categories import ArxivCategory from .publishing.osti_record import OstiWorkflowStatus, OstiAccessLimitation, OstiCollectionType, OstiSensitivityFlag, OstiOrganizationIdentifierType, OstiProductType, OstiOrganizationType, OstiPersonType, OstiContributorType, OstiRelatedIdentifierType, OstiRelationType, OstiIdentifierType, OstiGeolocationType, OstiMediaLocationType @@ -234,12 +249,13 @@ # Statistics domain from .statistics.prediction_outcomes import OutcomeTypeEnum +from .statistics.statistical_tests import StatisticalTestEnum, TTestTypeEnum, NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum, MultipleTestingCorrectionEnum, CorrelationCoefficientEnum, TestTailednessEnum, DistributionalAssumptionEnum, ComparisonObjectiveEnum # Time domain from .time.temporal import DayOfWeek, Month, Quarter, Season, TimePeriod, TimeOfDay, BusinessTimeFrame, GeologicalEra, HistoricalPeriod # Units domain -from .units.measurements import LengthUnitEnum, MassUnitEnum, VolumeUnitEnum, TemperatureUnitEnum, TimeUnitEnum, PressureUnitEnum, ConcentrationUnitEnum, FrequencyUnitEnum, AngleUnitEnum, DataSizeUnitEnum +from .units.measurements import LengthUnitEnum, MassUnitEnum, VolumeUnitEnum, TemperatureUnitEnum, TimeUnitEnum, PressureUnitEnum, ConcentrationUnitEnum, FrequencyUnitEnum, AngleUnitEnum, DataSizeUnitEnum, MassFlowRateUnitEnum, MolarFlowRateUnitEnum, VolumetricFlowRateUnitEnum from .units.quantity_kinds import QuantityKindEnum # Visual domain @@ -250,6 +266,7 @@ "AcademicDegree", "AccessRights", "AcousticRadiationTypeEnum", + "ActivityCoefficientModel", "AdditiveManufacturingEnum", "AgeGroupEnum", "AgitationTypeEnum", @@ -305,6 +322,7 @@ "BloodTypeEnum", "BondTypeEnum", "BravaisLatticeEnum", + "Bridge2AIDataGenerationProjectEnum", "BronstedAcidBaseRoleEnum", "BuildingEnergyPerformanceLevel", "BuildingEnergyStandard", @@ -334,6 +352,7 @@ "CellPolarity", "CellProliferationState", "CellularityEnum", + "ChemicalIdentifierScheme", "ChipFabricationNodeType", "ChiralityEnum", "ChromatographyType", @@ -347,6 +366,7 @@ "CommonMineral", "CommonOrganismTaxaEnum", "CommunicationProtocolEnum", + "ComparisonObjectiveEnum", "CompassDirection", "CompensationTypeEnum", "ComplianceStandardEnum", @@ -365,6 +385,7 @@ "CoordinationGeometry", "CopyrightStatus", "CorporateGovernanceRoleEnum", + "CorrelationCoefficientEnum", "CountryCodeISO2Enum", "CountryCodeISO3Enum", "CriticalMineral", @@ -375,7 +396,17 @@ "CrystalSystemEnum", "CrystallizationMethod", "CurrencyChemical", + "CurrencyCode", "CurrencyCodeISO4217Enum", + "DICOMAttributeTypeEnum", + "DICOMDeidentificationActionEnum", + "DICOMDeidentificationMethodEnum", + "DICOMModalityEnum", + "DICOMNetworkServiceEnum", + "DICOMSoftwareToolEnum", + "DICOMTransferSyntaxEnum", + "DICOMValidationIssueTypeEnum", + "DICOMValueRepresentationEnum", "DNABaseEnum", "DNABaseExtendedEnum", "DNADamageResponse", @@ -399,14 +430,19 @@ "DayOfWeek", "DecisionMakingStyleEnum", "DecommissioningPhaseType", + "DefacingMethodEnum", + "DefacingToolEnum", "DefectClassificationEnum", "DefenseInDepthLevelEnum", + "DeidentificationRegulatoryFrameworkEnum", "DerivatizationMethod", + "DesignSimulationMethod", "DetectionModeEnum", "Detector", "DetectorType", "DiagnosticTestTypeEnum", "DigitalObjectCategory", + "DistributionalAssumptionEnum", "DocumentFormatEnum", "DownstreamProcessEnum", "DrugExposureProvenanceEnum", @@ -438,6 +474,7 @@ "EnvironmentalImpact", "EnzymeClassEnum", "EnzymologyAssayEnum", + "EquationOfStateModel", "EthnicityOMB1997Enum", "ExecutionModeEnum", "ExperimentalDesignMethodType", @@ -469,6 +506,7 @@ "FireSafetyColorEnum", "FissileIsotopeEnum", "FlowerColorEnum", + "FlowsheetSolutionApproach", "FoodColoringEnum", "FossilFuelTypeEnum", "FraudDetectionEnum", @@ -484,6 +522,21 @@ "FusionConfinementType", "FusionFuelType", "FusionPlasmaParameterType", + "G2PAllelicRequirement", + "G2PConfidenceCategory", + "G2PCrossCuttingModifier", + "G2PFunctionEvidence", + "G2PFunctionalAlterationEvidence", + "G2PMechanismEvidenceCategory", + "G2PModelsEvidence", + "G2PMolecularMechanism", + "G2PMolecularMechanismSupport", + "G2PMolecularMechanismSynopsis", + "G2PPanel", + "G2PRescueEvidence", + "G2PVariantConsequence", + "G2PVariantType", + "G2PVariantTypeGroup", "GOAspect", "GOElectronicMethods", "GOEvidenceCode", @@ -518,6 +571,7 @@ "HeavyMetalEnum", "HistoricalPeriod", "HistoricalStatusEnum", + "HomoscedasticityTestEnum", "HousingStatus", "HumanAgeGroupEnum", "HumanDevelopmentalStage", @@ -538,8 +592,13 @@ "IUPACAminoAcidCode", "IUPACNucleotideCode", "ImageDefinedRiskFactor", + "ImageDeidentificationTargetEnum", "ImageFileFormatEnum", + "ImageQualityMetricEnum", "ImagingAssayEnum", + "ImagingDataLifecycleStageEnum", + "ImagingDataSourceTypeEnum", + "ImagingInteroperabilityStandardEnum", "ImagingSystemPlatformEnum", "ImmunologyAssayEnum", "InSituChemistryRegime", @@ -597,6 +656,7 @@ "MaritimeSignalColorEnum", "MarketStructureEnum", "MassErrorUnit", + "MassFlowRateUnitEnum", "MassSpectrometerFileFormat", "MassSpectrometerVendor", "MassSpectrometryAssayEnum", @@ -625,11 +685,14 @@ "MiningPhase", "MiningType", "MitoticPhase", + "MixingRuleModel", "ModeOfInheritance", "ModelSystemTypeEnum", + "MolarFlowRateUnitEnum", "Month", "MouseDevelopmentalStage", "MousePostnatalAgeGroupEnum", + "MultipleTestingCorrectionEnum", "NAICSSectorEnum", "NCITFivePointConfidenceScale", "NIHInstituteCenterEnum", @@ -640,6 +703,7 @@ "NetworkProtocolEnum", "NeuroblastomaRiskGroup", "NewsTopicCategoryEnum", + "NormalityTestEnum", "NuclearFacilityTypeEnum", "NuclearForensicsMethodType", "NuclearFuelCycleStageEnum", @@ -708,8 +772,10 @@ "PlateCoatingEnum", "PlateMaterialEnum", "PolymerTypeEnum", + "PostHocTestEnum", "PowerPlantStatusEnum", "PowerUnit", + "PoyntingCorrectionMethod", "PredictionOutcomeType", "PresenceEnum", "PreservationEventOutcome", @@ -718,9 +784,15 @@ "PreservationLevelValue", "PressureUnitEnum", "PriorityLevelEnum", + "ProcessEquipmentType", "ProcessImprovementApproachEnum", + "ProcessIndustryCategory", + "ProcessOperationMode", "ProcessPerformanceMetric", "ProcessScaleEnum", + "ProcessSimulator", + "ProcessStreamPhase", + "ProcessStreamRole", "ProcessingStatus", "ProcurementTypeEnum", "ProductTypeEnum", @@ -836,6 +908,7 @@ "StandardsMaturityLevel", "StandardsOrganizationEnum", "StateOfMatterEnum", + "StatisticalTestEnum", "StatusEnum", "SterilizationMethodEnum", "StrandType", @@ -852,11 +925,14 @@ "SupplyChainStrategyEnum", "SymptomSeverityEnum", "SynthesisMethodEnum", + "SystemLifeCycleProcess15288", + "TTestTypeEnum", "TailingCharacterizationType", "TaxonomicRank", "TechnologyReadinessLevel", "TemperatureUnitEnum", "TemporalAggregationEnum", + "TestTailednessEnum", "TextCharset", "TextureEnum", "TherapeuticActionabilityEnum", @@ -865,6 +941,7 @@ "ThermalCyclerTypeEnum", "ThermalCyclingStepEnum", "ThermodynamicParameterEnum", + "ThermodynamicPropertyPackage", "TimeOfDay", "TimePeriod", "TimeUnitEnum", @@ -889,8 +966,10 @@ "USStateCodeEnum", "UnconventionalMineralResourceType", "UniProtSpeciesCode", + "UnitOperationType", "UpdateFrequency", "UraniumEnrichmentLevelEnum", + "UtilityType", "VaccinationPeriodicityEnum", "VaccinationStatusEnum", "VaccineCategoryEnum", @@ -898,6 +977,7 @@ "ValueSetStewardEnum", "VectorTypeEnum", "VendorCategoryEnum", + "VerificationValidationProcessIEEE1012", "ViabilityEnum", "VideoFormatEnum", "ViralGenomeTypeEnum", @@ -906,6 +986,7 @@ "VitalStatusEnum", "VitrificationMethod", "VolumeUnitEnum", + "VolumetricFlowRateUnitEnum", "WasteDisposalMethodEnum", "WasteFacilityTypeEnum", "WasteHalfLifeCategoryEnum", diff --git a/src/valuesets/enums/bio/expression_units.py b/src/valuesets/enums/bio/expression_units.py index 341f7556..f0fc322f 100644 --- a/src/valuesets/enums/bio/expression_units.py +++ b/src/valuesets/enums/bio/expression_units.py @@ -34,8 +34,8 @@ class ExpressionUnitEnum(RichEnum): "NORMALIZED_COUNTS": {'description': 'Counts normalized by a method such as DESeq2 or edgeR', 'annotations': {'normalization': 'library size', 'use': 'differential expression'}, 'aliases': ['Normalized Counts']}, "COUNTS": {'description': 'General read counts category', 'aliases': ['Counts']}, "TPM": {'description': 'Transcripts per million - normalized for gene length and sequencing depth', 'meaning': 'NCIT:C181327', 'annotations': {'normalization': 'length and depth', 'use': 'within and between sample comparisons', 'formula': '(reads/gene_length_kb) / sum(reads/gene_length_kb) * 1e6'}, 'aliases': ['Transcript per million']}, - "FPKM": {'description': 'Fragments per kilobase of transcript per million reads mapped', 'meaning': 'STATO:0000172', 'annotations': {'normalization': 'length and depth', 'use': 'within-sample comparisons', 'library_type': 'paired-end'}, 'aliases': ['Fragments per kilobase of transcript per million reads mapped']}, - "RPKM": {'description': 'Reads per kilobase of transcript per million reads mapped', 'meaning': 'STATO:0000206', 'annotations': {'normalization': 'length and depth', 'use': 'within-sample comparisons', 'library_type': 'single-end'}, 'aliases': ['Reads per kilobase of transcript per million reads mapped']}, + "FPKM": {'description': 'Fragments per kilobase of transcript per million reads mapped', 'meaning': 'STATO:0000172', 'annotations': {'normalization': 'length and depth', 'use': 'within-sample comparisons', 'library_type': 'paired-end'}, 'aliases': ['Fragments per kilobase of transcript per million reads mapped', 'FPKM-fragments per kilobase of transcript per million fragments mapped']}, + "RPKM": {'description': 'Reads per kilobase of transcript per million reads mapped', 'meaning': 'STATO:0000206', 'annotations': {'normalization': 'length and depth', 'use': 'within-sample comparisons', 'library_type': 'single-end'}, 'aliases': ['Reads per kilobase of transcript per million reads mapped', 'RPKM-reads per kilobase of transcript per million fragments mapped']}, "CPM": {'description': 'Counts per million reads', 'annotations': {'normalization': 'depth only'}, 'aliases': ['Counts per million']}, "RPKM_UQ": {'description': 'RPKM with upper quartile normalization', 'annotations': {'normalization': 'length, depth, and upper quartile'}}, "VST": {'description': 'Variance stabilizing transformation values', 'annotations': {'method': 'DESeq2', 'use': 'visualization, clustering'}}, diff --git a/src/valuesets/enums/bioprocessing/scale_up.py b/src/valuesets/enums/bioprocessing/scale_up.py index b604d11a..7d281ba2 100644 --- a/src/valuesets/enums/bioprocessing/scale_up.py +++ b/src/valuesets/enums/bioprocessing/scale_up.py @@ -139,6 +139,16 @@ class DownstreamProcessEnum(RichEnum): DISTILLATION = "DISTILLATION" DRYING = "DRYING" HOMOGENIZATION = "HOMOGENIZATION" + CLARIFICATION = "CLARIFICATION" + FLOCCULATION = "FLOCCULATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + DIAFILTRATION = "DIAFILTRATION" + TANGENTIAL_FLOW_FILTRATION = "TANGENTIAL_FLOW_FILTRATION" + BUFFER_EXCHANGE = "BUFFER_EXCHANGE" + ADSORPTION = "ADSORPTION" + VIRAL_INACTIVATION = "VIRAL_INACTIVATION" + POLISHING = "POLISHING" + LYOPHILIZATION = "LYOPHILIZATION" # Set metadata after class creation DownstreamProcessEnum._metadata = { @@ -151,6 +161,16 @@ class DownstreamProcessEnum(RichEnum): "DISTILLATION": {'description': 'Distillation', 'meaning': 'CHMO:0001534', 'annotations': {'principle': 'Boiling point difference'}}, "DRYING": {'description': 'Drying operations', 'meaning': 'CHMO:0001551', 'annotations': {'types': 'Spray, freeze, vacuum'}}, "HOMOGENIZATION": {'description': 'Cell disruption/homogenization', 'annotations': {'methods': 'High pressure, bead mill'}}, + "CLARIFICATION": {'description': 'Removal of cells and debris to produce a clarified harvest', 'annotations': {'methods': 'Centrifugation, depth filtration'}}, + "FLOCCULATION": {'description': 'Aggregation of cells and debris into flocs to aid clarification'}, + "ULTRAFILTRATION": {'description': 'Membrane concentration retaining macromolecules such as proteins', 'meaning': 'CHMO:0001645', 'annotations': {'mwco': 'Typically 1-1000 kDa'}}, + "DIAFILTRATION": {'description': 'Buffer exchange and desalting by ultrafiltration with continuous makeup'}, + "TANGENTIAL_FLOW_FILTRATION": {'description': 'Crossflow membrane filtration used for concentration and diafiltration', 'annotations': {'aliases': 'TFF, crossflow filtration'}}, + "BUFFER_EXCHANGE": {'description': 'Replacement of the buffer matrix of a product stream'}, + "ADSORPTION": {'description': 'Capture of product or impurities onto a solid sorbent'}, + "VIRAL_INACTIVATION": {'description': 'Treatment step that inactivates potential viral contaminants', 'annotations': {'methods': 'Low pH, solvent/detergent, heat'}}, + "POLISHING": {'description': 'Final chromatographic or filtration steps to remove trace impurities'}, + "LYOPHILIZATION": {'description': 'Freeze-drying to produce a stable solid product', 'meaning': 'CHMO:0001553', 'annotations': {'aliases': 'freeze drying'}}, } class FeedstockTypeEnum(RichEnum): diff --git a/src/valuesets/enums/business/currencies.py b/src/valuesets/enums/business/currencies.py new file mode 100644 index 00000000..2a1dd664 --- /dev/null +++ b/src/valuesets/enums/business/currencies.py @@ -0,0 +1,121 @@ +""" +Currency Value Sets + +Value set of world currencies identified by their ISO 4217 three-letter alpha codes. Permissible value names are the ISO 4217 alpha-3 codes (an existing standard) rather than upper-snake-case. Covers monetary fields such as the PISCES Standard Flowsheet Format TEA_currency and per-mass price units. This is a curated set of actively circulating currencies and is extensible to the full ISO 4217 list. + +Generated from: business/currencies.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class CurrencyCode(RichEnum): + """ + World currencies by ISO 4217 alpha-3 code. The numeric_code, symbol, and minor_unit (number of decimal places) annotations record the corresponding ISO 4217 attributes. + """ + # Enum members + USD = "USD" + EUR = "EUR" + JPY = "JPY" + GBP = "GBP" + CNY = "CNY" + AUD = "AUD" + CAD = "CAD" + CHF = "CHF" + HKD = "HKD" + SGD = "SGD" + SEK = "SEK" + NOK = "NOK" + DKK = "DKK" + NZD = "NZD" + KRW = "KRW" + INR = "INR" + BRL = "BRL" + ZAR = "ZAR" + RUB = "RUB" + MXN = "MXN" + TRY = "TRY" + PLN = "PLN" + THB = "THB" + IDR = "IDR" + MYR = "MYR" + PHP = "PHP" + AED = "AED" + SAR = "SAR" + ILS = "ILS" + CZK = "CZK" + HUF = "HUF" + RON = "RON" + UAH = "UAH" + CLP = "CLP" + COP = "COP" + ARS = "ARS" + EGP = "EGP" + NGN = "NGN" + KES = "KES" + PKR = "PKR" + BDT = "BDT" + VND = "VND" + TWD = "TWD" + KWD = "KWD" + BHD = "BHD" + OMR = "OMR" + QAR = "QAR" + ISK = "ISK" + +# Set metadata after class creation +CurrencyCode._metadata = { + "USD": {'description': 'United States dollar', 'annotations': {'numeric_code': '840', 'symbol': '$', 'minor_unit': 2}}, + "EUR": {'description': 'Euro', 'annotations': {'numeric_code': '978', 'symbol': '€', 'minor_unit': 2}}, + "JPY": {'description': 'Japanese yen', 'annotations': {'numeric_code': '392', 'symbol': '¥', 'minor_unit': 0}}, + "GBP": {'description': 'British pound sterling', 'annotations': {'numeric_code': '826', 'symbol': '£', 'minor_unit': 2}}, + "CNY": {'description': 'Chinese yuan renminbi', 'annotations': {'numeric_code': '156', 'symbol': '¥', 'minor_unit': 2}}, + "AUD": {'description': 'Australian dollar', 'annotations': {'numeric_code': '036', 'symbol': '$', 'minor_unit': 2}}, + "CAD": {'description': 'Canadian dollar', 'annotations': {'numeric_code': '124', 'symbol': '$', 'minor_unit': 2}}, + "CHF": {'description': 'Swiss franc', 'annotations': {'numeric_code': '756', 'symbol': 'Fr', 'minor_unit': 2}}, + "HKD": {'description': 'Hong Kong dollar', 'annotations': {'numeric_code': '344', 'symbol': '$', 'minor_unit': 2}}, + "SGD": {'description': 'Singapore dollar', 'annotations': {'numeric_code': '702', 'symbol': '$', 'minor_unit': 2}}, + "SEK": {'description': 'Swedish krona', 'annotations': {'numeric_code': '752', 'symbol': 'kr', 'minor_unit': 2}}, + "NOK": {'description': 'Norwegian krone', 'annotations': {'numeric_code': '578', 'symbol': 'kr', 'minor_unit': 2}}, + "DKK": {'description': 'Danish krone', 'annotations': {'numeric_code': '208', 'symbol': 'kr', 'minor_unit': 2}}, + "NZD": {'description': 'New Zealand dollar', 'annotations': {'numeric_code': '554', 'symbol': '$', 'minor_unit': 2}}, + "KRW": {'description': 'South Korean won', 'annotations': {'numeric_code': '410', 'symbol': '₩', 'minor_unit': 0}}, + "INR": {'description': 'Indian rupee', 'annotations': {'numeric_code': '356', 'symbol': '₹', 'minor_unit': 2}}, + "BRL": {'description': 'Brazilian real', 'annotations': {'numeric_code': '986', 'symbol': 'R$', 'minor_unit': 2}}, + "ZAR": {'description': 'South African rand', 'annotations': {'numeric_code': '710', 'symbol': 'R', 'minor_unit': 2}}, + "RUB": {'description': 'Russian ruble', 'annotations': {'numeric_code': '643', 'symbol': '₽', 'minor_unit': 2}}, + "MXN": {'description': 'Mexican peso', 'annotations': {'numeric_code': '484', 'symbol': '$', 'minor_unit': 2}}, + "TRY": {'description': 'Turkish lira', 'annotations': {'numeric_code': '949', 'symbol': '₺', 'minor_unit': 2}}, + "PLN": {'description': 'Polish zloty', 'annotations': {'numeric_code': '985', 'symbol': 'zł', 'minor_unit': 2}}, + "THB": {'description': 'Thai baht', 'annotations': {'numeric_code': '764', 'symbol': '฿', 'minor_unit': 2}}, + "IDR": {'description': 'Indonesian rupiah', 'annotations': {'numeric_code': '360', 'symbol': 'Rp', 'minor_unit': 2}}, + "MYR": {'description': 'Malaysian ringgit', 'annotations': {'numeric_code': '458', 'symbol': 'RM', 'minor_unit': 2}}, + "PHP": {'description': 'Philippine peso', 'annotations': {'numeric_code': '608', 'symbol': '₱', 'minor_unit': 2}}, + "AED": {'description': 'United Arab Emirates dirham', 'annotations': {'numeric_code': '784', 'minor_unit': 2}}, + "SAR": {'description': 'Saudi riyal', 'annotations': {'numeric_code': '682', 'minor_unit': 2}}, + "ILS": {'description': 'Israeli new shekel', 'annotations': {'numeric_code': '376', 'symbol': '₪', 'minor_unit': 2}}, + "CZK": {'description': 'Czech koruna', 'annotations': {'numeric_code': '203', 'symbol': 'Kč', 'minor_unit': 2}}, + "HUF": {'description': 'Hungarian forint', 'annotations': {'numeric_code': '348', 'symbol': 'Ft', 'minor_unit': 2}}, + "RON": {'description': 'Romanian leu', 'annotations': {'numeric_code': '946', 'symbol': 'lei', 'minor_unit': 2}}, + "UAH": {'description': 'Ukrainian hryvnia', 'annotations': {'numeric_code': '980', 'symbol': '₴', 'minor_unit': 2}}, + "CLP": {'description': 'Chilean peso', 'annotations': {'numeric_code': '152', 'symbol': '$', 'minor_unit': 0}}, + "COP": {'description': 'Colombian peso', 'annotations': {'numeric_code': '170', 'symbol': '$', 'minor_unit': 2}}, + "ARS": {'description': 'Argentine peso', 'annotations': {'numeric_code': '032', 'symbol': '$', 'minor_unit': 2}}, + "EGP": {'description': 'Egyptian pound', 'annotations': {'numeric_code': '818', 'symbol': '£', 'minor_unit': 2}}, + "NGN": {'description': 'Nigerian naira', 'annotations': {'numeric_code': '566', 'symbol': '₦', 'minor_unit': 2}}, + "KES": {'description': 'Kenyan shilling', 'annotations': {'numeric_code': '404', 'symbol': 'Sh', 'minor_unit': 2}}, + "PKR": {'description': 'Pakistani rupee', 'annotations': {'numeric_code': '586', 'symbol': '₨', 'minor_unit': 2}}, + "BDT": {'description': 'Bangladeshi taka', 'annotations': {'numeric_code': '050', 'symbol': '৳', 'minor_unit': 2}}, + "VND": {'description': 'Vietnamese dong', 'annotations': {'numeric_code': '704', 'symbol': '₫', 'minor_unit': 0}}, + "TWD": {'description': 'New Taiwan dollar', 'annotations': {'numeric_code': '901', 'symbol': '$', 'minor_unit': 2}}, + "KWD": {'description': 'Kuwaiti dinar', 'annotations': {'numeric_code': '414', 'minor_unit': 3}}, + "BHD": {'description': 'Bahraini dinar', 'annotations': {'numeric_code': '048', 'minor_unit': 3}}, + "OMR": {'description': 'Omani rial', 'annotations': {'numeric_code': '512', 'minor_unit': 3}}, + "QAR": {'description': 'Qatari riyal', 'annotations': {'numeric_code': '634', 'minor_unit': 2}}, + "ISK": {'description': 'Icelandic krona', 'annotations': {'numeric_code': '352', 'symbol': 'kr', 'minor_unit': 0}}, +} + +__all__ = [ + "CurrencyCode", +] \ No newline at end of file diff --git a/src/valuesets/enums/chemistry/identifiers.py b/src/valuesets/enums/chemistry/identifiers.py new file mode 100644 index 00000000..fb742f99 --- /dev/null +++ b/src/valuesets/enums/chemistry/identifiers.py @@ -0,0 +1,47 @@ +""" +Chemical Identifier Value Sets + +Value sets for the identifier schemes used to reference chemical substances. Covers fields such as the PISCES Standard Flowsheet Format chemical registry_id ("CAS number or SMILES string"). + +Generated from: chemistry/identifiers.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class ChemicalIdentifierScheme(RichEnum): + """ + Schemes used to identify chemical substances, including registry numbers, line notations, structure-derived keys, and database accessions. + """ + # Enum members + CAS_RN = "CAS_RN" + SMILES = "SMILES" + INCHI = "INCHI" + INCHIKEY = "INCHIKEY" + IUPAC_NAME = "IUPAC_NAME" + MOLECULAR_FORMULA = "MOLECULAR_FORMULA" + PUBCHEM_CID = "PUBCHEM_CID" + CHEBI_ID = "CHEBI_ID" + KEGG_COMPOUND = "KEGG_COMPOUND" + DRUGBANK_ID = "DRUGBANK_ID" + EC_NUMBER = "EC_NUMBER" + +# Set metadata after class creation +ChemicalIdentifierScheme._metadata = { + "CAS_RN": {'description': 'CAS Registry Number assigned by the Chemical Abstracts Service', 'annotations': {'example': '64-17-5'}}, + "SMILES": {'description': 'Simplified Molecular-Input Line-Entry System structure notation', 'annotations': {'example': 'CCO'}}, + "INCHI": {'description': 'IUPAC International Chemical Identifier structure string', 'annotations': {'example': 'InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3'}}, + "INCHIKEY": {'description': 'Hashed fixed-length form of an InChI', 'annotations': {'example': 'LFQSCWFLJHTTHZ-UHFFFAOYSA-N'}}, + "IUPAC_NAME": {'description': 'Systematic IUPAC chemical name'}, + "MOLECULAR_FORMULA": {'description': 'Molecular or empirical chemical formula', 'annotations': {'example': 'C2H6O'}}, + "PUBCHEM_CID": {'description': 'PubChem Compound Identifier'}, + "CHEBI_ID": {'description': 'ChEBI ontology identifier'}, + "KEGG_COMPOUND": {'description': 'KEGG COMPOUND database accession'}, + "DRUGBANK_ID": {'description': 'DrugBank accession'}, + "EC_NUMBER": {'description': 'European Community (EINECS/EC) substance number'}, +} + +__all__ = [ + "ChemicalIdentifierScheme", +] \ No newline at end of file diff --git a/src/valuesets/enums/clinical/gene2phenotype.py b/src/valuesets/enums/clinical/gene2phenotype.py new file mode 100644 index 00000000..332f400a --- /dev/null +++ b/src/valuesets/enums/clinical/gene2phenotype.py @@ -0,0 +1,391 @@ +""" +Gene2Phenotype (G2P) Terminology Value Sets + +Value sets for the controlled vocabularies used by Gene2Phenotype (G2P), the EBI resource of curated gene-disease associations. G2P records a locus-genotype-mechanism- disease-evidence (LGMDE) thread for each association, and each component of that thread draws on a controlled vocabulary. The terms and definitions here follow the G2P terminology page at https://www.ebi.ac.uk/gene2phenotype/about/terminology, which reuses community standards where they exist: GenCC classification terms for confidence, HPO mode-of-inheritance terms for allelic requirement, HPO inheritance qualifiers for cross-cutting modifiers, the Backwell and Marsh framework (PMID:35395171) for molecular mechanism, the ClinGen gene-disease validity SOP for mechanism evidence, and Sequence Ontology terms for variant consequence and variant type. +Permissible value descriptions are quoted verbatim from those sources, retaining their original spelling and grammar (for example "casual role" for causal role, and "segregration" for segregation in the GenCC confidence text) so that the text here can be diffed against the source. Where a quoted definition is itself inconsistent this is called out in the value's description rather than silently corrected. +Throughout this schema, where a permissible value is mapped to an ontology term, title is the ontology term's label and any differing G2P string is carried as an alias. Consumers wanting G2P's own display string should read aliases rather than title. + +Generated from: clinical/gene2phenotype.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class G2PConfidenceCategory(RichEnum): + """ + The level of confidence that a gene-disease association is real, as asserted by G2P curators. G2P uses the GenCC gene-disease validity classification terms. Operationally several groups use definitive, strong and moderate for clinical reporting; limited, disputed and refuted are not used for clinical reporting. GenCC classification identifiers are recorded in the gencc_classification_id annotation rather than as meaning:, because the GENCC prefix is not registered in bioregistry, OLS or the OBO PURL system and so cannot be resolved; the identifiers were taken from GenCC's own submissions export. + """ + # Enum members + DEFINITIVE = "DEFINITIVE" + STRONG = "STRONG" + MODERATE = "MODERATE" + LIMITED = "LIMITED" + DISPUTED = "DISPUTED" + REFUTED = "REFUTED" + +# Set metadata after class creation +G2PConfidenceCategory._metadata = { + "DEFINITIVE": {'description': "The role of this gene in this particular disease has been repeatedly demonstrated in both the research and clinical diagnostic settings, and has been upheld over time (at least 2 independent publication over 3 years' time). No convincing evidence has emerged that contradicts the role of the gene in the specified disease. (previously labelled as confirmed) The strength of evidence within publications as well as their number and publication dates is taken into account. In practice, this usually means at least 4 publications over 5 years. Typically this will also include convincing bioinformatic or functional evidence of causation, making it very unlikely that this gene-disease association would ever be refuted.", 'annotations': {'gencc_classification_id': 'GENCC:100001', 'clinical_reporting': 'true'}, 'aliases': ['confirmed']}, + "STRONG": {'description': "The role of this gene as a monogenic cause of disease has been repeatedly and independently demonstrated providing very strong convincing evidence in humans and no conflicting evidence for this gene's role in this disease. (previously labelled as probable).", 'annotations': {'gencc_classification_id': 'GENCC:100002', 'clinical_reporting': 'true'}, 'aliases': ['probable']}, + "MODERATE": {'description': 'There is moderate evidence in humans to support a casual role for this gene in this disease with no contradictory evidence. The body of evidence is not large (e.g possibly only one key paper) but appears convincing enough that the gene-disease pair is likely to be validated with additional evidence in the near future.', 'annotations': {'gencc_classification_id': 'GENCC:100003', 'clinical_reporting': 'true'}}, + "LIMITED": {'description': 'Little human evidence exists to support a casual role for this gene in this disease, but not all evidence has been refuted. For example, there may be a collection of rare missense variants in humans but without convincing functional impact, segregration data that could either arise by chance (e.g across one or two meioses) or does not implicate a single gene, or functional data without direct recapitulation of the phenotype. Overall, the body of evidence does not meet contemporary criteria for claiming a valid association with disease. The majority are probably false associations. (previously labelled as possible).', 'annotations': {'gencc_classification_id': 'GENCC:100004', 'clinical_reporting': 'false'}, 'aliases': ['possible']}, + "DISPUTED": {'description': 'Although evidence has been reported, other evidence of equal weight disputes the claim.', 'annotations': {'gencc_classification_id': 'GENCC:100005', 'clinical_reporting': 'false'}}, + "REFUTED": {'description': 'There has been an assertion of a gene-disease association in the literature, but new valid evidence has arisen that refutes the entire original body of evidence.', 'annotations': {'gencc_classification_id': 'GENCC:100006', 'clinical_reporting': 'false'}}, +} + +class G2PAllelicRequirement(RichEnum): + """ + The genotype required at the locus for the disease to manifest, also referred to in G2P as the genotype. HPO mode of inheritance (MOI) terminology is used; G2P uses synonyms of the MOI terms as many of the disorders described are de novo. + The nine values are G2P's published genotype list, taken verbatim from the API the terminology page itself calls (GET /gene2phenotype/api/attribs/, key "genotype"), which includes the bare monoallelic_X alongside monoallelic_X_hemizygous and monoallelic_X_heterozygous. + All nine G2P genotype strings are recorded by HPO as oio:hasExactSynonym of the term mapped below (verified against the HPO release directly; note that the OLS obo_synonym field under-reports these, listing only synonyms that carry an xref). That exact-synonym correspondence is what makes these mappings unambiguous. + By convention in this enum, title is the HPO term label and the G2P string is carried as an alias, matching the pv-mapping guidance and clinical/genetics.yaml; consumers wanting G2P's own display string should read aliases. + """ + # Enum members + MONOALLELIC_AUTOSOMAL = "MONOALLELIC_AUTOSOMAL" + BIALLELIC_AUTOSOMAL = "BIALLELIC_AUTOSOMAL" + MONOALLELIC_X = "MONOALLELIC_X" + MONOALLELIC_X_HEMIZYGOUS = "MONOALLELIC_X_HEMIZYGOUS" + MONOALLELIC_X_HETEROZYGOUS = "MONOALLELIC_X_HETEROZYGOUS" + MONOALLELIC_Y_HEMIZYGOUS = "MONOALLELIC_Y_HEMIZYGOUS" + MONOALLELIC_PAR = "MONOALLELIC_PAR" + BIALLELIC_PAR = "BIALLELIC_PAR" + MITOCHONDRIAL = "MITOCHONDRIAL" + +# Set metadata after class creation +G2PAllelicRequirement._metadata = { + "MONOALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing mutations on an autosomal chromosome identified on one allele in all or the vast majority of with specific disorder.', 'meaning': 'HP:0000006', 'aliases': ['monoallelic_autosomal']}, + "BIALLELIC_AUTOSOMAL": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles in the autosomal chromosome.', 'meaning': 'HP:0000007', 'aliases': ['biallelic_autosomal']}, + "MONOALLELIC_X": {'description': 'Plausible disease-causing mutations identified on the X chromosome.', 'meaning': 'HP:0001417', 'aliases': ['monoallelic_X']}, + "MONOALLELIC_X_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified on the X chromosome in a male as a cause of a specific disease, the disorder being predominantly recessive in female carriers.', 'meaning': 'HP:0001419', 'aliases': ['monoallelic_X_hemizygous']}, + "MONOALLELIC_X_HETEROZYGOUS": {'description': 'Plausible disease-causing mutations identified in one copy of the X chromosome in females as a cause of a specific disease, include disorders where heterozygous females and hemizygous males are similarly affected e.g SMC1A mutations.', 'meaning': 'HP:0001423', 'aliases': ['monoallelic_X_heterozygous']}, + "MONOALLELIC_Y_HEMIZYGOUS": {'description': 'Plausible disease-causing mutations identified in an allele found in the Y chromosome. The Y chromosome is passed from father to son as this mutation may affect only males.', 'meaning': 'HP:0001450', 'aliases': ['monoallelic_Y_hemizygous']}, + "MONOALLELIC_PAR": {'description': 'Plausible disease-causing mutations identified in an allele found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034340', 'aliases': ['monoallelic_PAR']}, + "BIALLELIC_PAR": {'description': 'Plausible disease-causing homozygous or compound heterozygous mutations identified on both alleles found in the pseudoautosomal regions. Inheritance is not strictly sex-linked.', 'meaning': 'HP:0034341', 'aliases': ['biallelic_PAR']}, + "MITOCHONDRIAL": {'description': 'Plausible disease-causing mutations identified on mitochondrial DNA where homoplasmy or heteroplasmy are associated with a specific disorder.', 'meaning': 'HP:0001427', 'aliases': ['mitochondrial']}, +} + +class G2PCrossCuttingModifier(RichEnum): + """ + Additional qualifiers applied to the allelic requirement of a G2P gene-disease association. HPO inheritance qualifier terms (HP:0034335) are used where available. Potential secondary finding and restricted mutation set are G2P-specific and have no HPO equivalent. + """ + # Enum members + DISPLAYS_ANTICIPATION = "DISPLAYS_ANTICIPATION" + IMPRINTED_REGION = "IMPRINTED_REGION" + TYPICALLY_DE_NOVO = "TYPICALLY_DE_NOVO" + TYPICALLY_MOSAIC = "TYPICALLY_MOSAIC" + TYPIFIED_BY_INCOMPLETE_PENETRANCE = "TYPIFIED_BY_INCOMPLETE_PENETRANCE" + POTENTIAL_SECONDARY_FINDING = "POTENTIAL_SECONDARY_FINDING" + RESTRICTED_MUTATION_SET = "RESTRICTED_MUTATION_SET" + +# Set metadata after class creation +G2PCrossCuttingModifier._metadata = { + "DISPLAYS_ANTICIPATION": {'description': 'A phenomenon in which the severity of a disorder increases, or the age of onset decreases, as the disorder is passed from one generation to the next, typically due to expansion of a repeat sequence. For example, Myotonic Dystrophy is caused by triplet repeat expansion in the DMPK gene.', 'meaning': 'HP:0003743', 'aliases': ['displays anticipation']}, + "IMPRINTED_REGION": {'description': 'Requires that the abnormal allele be paternal or maternal in origin, depending on the disease-gene relationship. Imprinting refers to a normal developmental process in which either the paternal or maternal allele is inactivated, depending on the specific locus, thus leading to expression from only one copy of the gene. Disease typically manifests when a deleterious variant is inherited from a parent whose copy of the gene would normally be expressed, but not when a deleterious variant is inherited from a parent whose copy of the gene would normally be inactivated.', 'meaning': 'HP:0034338', 'aliases': ['imprinted region']}, + "TYPICALLY_DE_NOVO": {'description': 'Plausible disease causing mutations that occur post zygotically (formation of gametes). Note that this G2P wording is internally inconsistent: post-zygotic events are somatic, which is what TYPICALLY_MOSAIC describes, whereas gametogenesis is pre-zygotic. The mapped HPO term HP:0025352 carries the intended sense, defining conditions that are exclusively or predominantly observed to display de novo variants.', 'meaning': 'HP:0025352', 'aliases': ['typically de novo']}, + "TYPICALLY_MOSAIC": {'description': 'Plausible disease causing mutations identified on one allele in a proportion of cells with the others being wild-type.', 'meaning': 'HP:0001442', 'aliases': ['typically mosaic']}, + "TYPIFIED_BY_INCOMPLETE_PENETRANCE": {'description': 'A condition in which not all individuals carrying the disease-causing genotype manifest the associated phenotype.', 'meaning': 'HP:0003829', 'aliases': ['typified by incomplete penetrance']}, + "POTENTIAL_SECONDARY_FINDING": {'description': 'This includes ACMG Secondary Findings and/or late onset conditions.'}, + "RESTRICTED_MUTATION_SET": {'description': 'This is used when a disease is associated with a single recurrent variant or a set of variants only found in a particular protein domain.'}, +} + +class G2PMolecularMechanism(RichEnum): + """ + The mechanism of disease derived from the available evidence, following the definitions of Backwell and Marsh (PMID:35395171). These mechanisms describe a gene-disease association rather than an individual variant, so the Sequence Ontology variant terms are recorded as close mappings rather than exact meanings. + """ + # Enum members + LOSS_OF_FUNCTION = "LOSS_OF_FUNCTION" + GAIN_OF_FUNCTION = "GAIN_OF_FUNCTION" + DOMINANT_NEGATIVE = "DOMINANT_NEGATIVE" + UNDETERMINED_NON_LOSS_OF_FUNCTION = "UNDETERMINED_NON_LOSS_OF_FUNCTION" + UNDETERMINED = "UNDETERMINED" + +# Set metadata after class creation +G2PMolecularMechanism._metadata = { + "LOSS_OF_FUNCTION": {'description': 'Loss-of-function variants involve a loss of the normal biological function of a protein. Often these are nonsense or frameshift mutations that introduce premature stop codons. Due to nonsense-mediated decay of the resulting mRNAs, most premature stop codons will result in no protein being produced, rather than a truncated protein. However, there are also many examples of loss-of-function variants that change the amino acid sequence and result in non-functional protein products. These mutations can cause a complete loss of function (amorphic), analogous to a protein null mutation, or only a partial loss of function (hypomorphic). May also include variants in regulatory regions.', 'aliases': ['loss_of_function_variant']}, + "GAIN_OF_FUNCTION": {'description': 'Gain-of-function variants have their phenotypic effect because the mutant protein does something different than the wild-type protein. Often, these variants cause disease by increasing protein activity (hypermorphic) or introducing a completely new function (neomorphic), but the specific molecular mechanisms underlying gain-of-function mutations can be complex. May also include variants in regulatory regions.', 'aliases': ['gain_of_function_variant']}, + "DOMINANT_NEGATIVE": {'description': 'Dominant-negative variants involve the mutant protein directly or indirectly blocking the normal biological function of the wild-type protein (antimorphic). They can thus cause a disproportionate (>50%) loss of function, even though only half of the protein is mutated eg. heterozygous variants in COL1A1 that disrupt the triple collagen helix.', 'aliases': ['antimorphic', 'dominant_negative_variant']}, + "UNDETERMINED_NON_LOSS_OF_FUNCTION": {'description': 'Very often it is difficult to distinguish between dominant negative and gain of function, but it is clearly a non-loss-of-function mechanism (e.g. from co-expression experiments showing a damaging effect from the mutant allele).', 'aliases': ['undetermined non-loss-of-function']}, + "UNDETERMINED": {'description': 'Not known.'}, +} + +class G2PMolecularMechanismSynopsis(RichEnum): + """ + A more detailed description of the molecular mechanism of a G2P gene-disease association, following the definitions of Backwell and Marsh (PMID:35395171). A synopsis refines the higher-level molecular mechanism; more than one synopsis may apply to a single gene-disease association. + """ + # Enum members + DESTABILISING_LOF = "DESTABILISING_LOF" + INTERACTION_DISRUPTING_LOF = "INTERACTION_DISRUPTING_LOF" + LOSS_OF_ACTIVITY_LOF = "LOSS_OF_ACTIVITY_LOF" + LOF_DUE_TO_PROTEIN_MISLOCALISATION = "LOF_DUE_TO_PROTEIN_MISLOCALISATION" + ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE = "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE" + COMPETITIVE_DOMINANT_NEGATIVE = "COMPETITIVE_DOMINANT_NEGATIVE" + ASSEMBLY_MEDIATED_GOF = "ASSEMBLY_MEDIATED_GOF" + LOCAL_LOF_LEADING_TO_OVERALL_GOF = "LOCAL_LOF_LEADING_TO_OVERALL_GOF" + AGGREGATION = "AGGREGATION" + OTHER_GOF = "OTHER_GOF" + +# Set metadata after class creation +G2PMolecularMechanismSynopsis._metadata = { + "DESTABILISING_LOF": {'description': 'A process whereby a missense change destabilises the protein structure resulting in loss of function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "INTERACTION_DISRUPTING_LOF": {'description': 'A process whereby a variant allele disrupts interaction resulting in loss of function, for example a change in an interaction site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOSS_OF_ACTIVITY_LOF": {'description': 'A process whereby a variant allele disrupts activity resulting in loss of function, for example a change in an active site.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "LOF_DUE_TO_PROTEIN_MISLOCALISATION": {'description': 'A loss of function caused by mislocalisation of a protein, rather than direct disruption of its structure or function.', 'annotations': {'parent_mechanism': 'LOSS_OF_FUNCTION'}}, + "ASSEMBLY_MEDIATED_DOMINANT_NEGATIVE": {'description': 'A protein change which does not prevent coassembly into a complex with wild-type subunits but results in poisoning the activity of the hybrid complex, causing a disproportionate loss of function.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "COMPETITIVE_DOMINANT_NEGATIVE": {'description': 'A process whereby the novel protein disrupts specific interactions by competing with wild-type protein, thus having a dominant-negative effect.', 'annotations': {'parent_mechanism': 'DOMINANT_NEGATIVE'}}, + "ASSEMBLY_MEDIATED_GOF": {'description': 'A process whereby incorporation of a mutant subunit into a protein complex leads to a gain of function, for example through constitutive activation of a channel.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "LOCAL_LOF_LEADING_TO_OVERALL_GOF": {'description': 'A gain of function caused by the localised loss of a specific function within a protein, for example binding of a regulatory domain is disrupted but enzymatic activity is retained.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "AGGREGATION": {'description': 'A process by which the variant allele causes aggregation usually causing toxic gain of function, for example misfolded proteins self-assembling into large aggregates or RNA binding protein gelation.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, + "OTHER_GOF": {'description': 'A gain of function process other than local loss of function or assembly mediated, for example a mutation in an active site which changes histone binding causing a novel function.', 'annotations': {'parent_mechanism': 'GAIN_OF_FUNCTION'}}, +} + +class G2PMolecularMechanismSupport(RichEnum): + """ + Whether the molecular mechanism recorded for a G2P gene-disease association is directly supported by reported evidence, or inferred by the curator. + """ + # Enum members + EVIDENCE = "EVIDENCE" + INFERRED = "INFERRED" + +# Set metadata after class creation +G2PMolecularMechanismSupport._metadata = { + "EVIDENCE": {'description': 'The molecular mechanism is directly supported by experimental evidence reported in a publication attached to the record.'}, + "INFERRED": {'description': 'The molecular mechanism is inferred by the curator rather than directly evidenced in the attached publications.'}, +} + +class G2PMechanismEvidenceCategory(RichEnum): + """ + The broad category of experimental evidence supporting a molecular mechanism in G2P. G2P evidence classifications reuse terms from the ClinGen gene-disease validity SOP Experimental Evidence Summary Matrix. + """ + # Enum members + FUNCTION = "FUNCTION" + FUNCTIONAL_ALTERATION = "FUNCTIONAL_ALTERATION" + MODELS = "MODELS" + RESCUE = "RESCUE" + +# Set metadata after class creation +G2PMechanismEvidenceCategory._metadata = { + "FUNCTION": {'description': 'Evidence about the biochemical function, expression or interactions of the gene product.'}, + "FUNCTIONAL_ALTERATION": {'description': 'Evidence from cells in which the function of the gene has been disrupted, showing a phenotype consistent with the human disease process.'}, + "MODELS": {'description': 'Evidence from a cell culture model or non-human model organism with a disrupted copy of the gene.'}, + "RESCUE": {'description': 'Evidence that the phenotype can be rescued by restoring the wild-type gene or gene product.'}, +} + +class G2PFunctionEvidence(RichEnum): + """ + Types of evidence in the function category of the G2P molecular mechanism evidence classification. + """ + # Enum members + BIOCHEMICAL = "BIOCHEMICAL" + PROTEIN_INTERACTION = "PROTEIN_INTERACTION" + PROTEIN_EXPRESSION = "PROTEIN_EXPRESSION" + IN_SILICO_MODELLING = "IN_SILICO_MODELLING" + +# Set metadata after class creation +G2PFunctionEvidence._metadata = { + "BIOCHEMICAL": {'description': 'Evidence showing the gene product performs a biochemical function: (A) shared with other known genes in the disease of interest, or (B) consistent with the phenotype.'}, + "PROTEIN_INTERACTION": {'description': 'Evidence showing the gene product interacts with proteins previously implicated in the disease of interest.'}, + "PROTEIN_EXPRESSION": {'description': 'Evidence showing the gene is expressed in tissues relevant to the disease of interest and/or is altered in expression in patients who have the disease.'}, + "IN_SILICO_MODELLING": {'description': 'Evidence generated using computer simulations and models predicting the functional impact of relevant gene-specific variants. These models can predict protein structure changes, disruption of protein interactions, or changes in gene and/or protein expression.'}, +} + +class G2PFunctionalAlterationEvidence(RichEnum): + """ + Types of evidence in the functional alteration category of the G2P molecular mechanism evidence classification, distinguished by whether the cells came from an affected individual. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + NON_PATIENT_CELLS = "NON_PATIENT_CELLS" + +# Set metadata after class creation +G2PFunctionalAlterationEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that cultured patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, + "NON_PATIENT_CELLS": {'description': 'Evidence showing that cultured non-patient cells, in which the function of the gene has been disrupted, have a phenotype that is consistent with the human disease process.'}, +} + +class G2PModelsEvidence(RichEnum): + """ + Types of evidence in the models category of the G2P molecular mechanism evidence classification. + """ + # Enum members + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation +G2PModelsEvidence._metadata = { + "CELL_CULTURE_MODEL": {'description': 'A cell culture model with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'A non-human model organism with a disrupted copy of the gene shows a phenotype consistent with the human disease state.'}, +} + +class G2PRescueEvidence(RichEnum): + """ + Types of evidence in the rescue category of the G2P molecular mechanism evidence classification, distinguished by the system in which rescue was demonstrated. + """ + # Enum members + PATIENT_CELLS = "PATIENT_CELLS" + CELL_CULTURE_MODEL = "CELL_CULTURE_MODEL" + NON_HUMAN_MODEL_ORGANISM = "NON_HUMAN_MODEL_ORGANISM" + +# Set metadata after class creation +G2PRescueEvidence._metadata = { + "PATIENT_CELLS": {'description': 'Evidence showing that the phenotype can be rescued in patient cells.'}, + "CELL_CULTURE_MODEL": {'description': 'Evidence showing that the phenotype can be rescued in cell culture models.'}, + "NON_HUMAN_MODEL_ORGANISM": {'description': 'Evidence showing that the phenotype can be rescued in non-human model organisms.'}, +} + +class G2PVariantConsequence(RichEnum): + """ + The consequence of the reported variants at the protein (for protein-coding genes) or the RNA (for non-protein coding genes), per allele. These are Sequence Ontology terms developed for G2P and described in PMID:37982373; the descriptions below are the G2P-authored usage notes rather than the SO text definitions. As in the other SO-backed enums here, title is uniformly the SO term label and any differing G2P label is carried as an alias; for four of the six values the SO and G2P labels coincide, which is why only altered_gene_product_sequence and function_uncertain_variant carry an alias. + """ + # Enum members + ALTERED_GENE_PRODUCT_LEVEL = "ALTERED_GENE_PRODUCT_LEVEL" + DECREASED_GENE_PRODUCT_LEVEL = "DECREASED_GENE_PRODUCT_LEVEL" + ABSENT_GENE_PRODUCT = "ABSENT_GENE_PRODUCT" + INCREASED_GENE_PRODUCT_LEVEL = "INCREASED_GENE_PRODUCT_LEVEL" + ALTERED_GENE_PRODUCT_STRUCTURE = "ALTERED_GENE_PRODUCT_STRUCTURE" + UNCERTAIN = "UNCERTAIN" + +# Set metadata after class creation +G2PVariantConsequence._metadata = { + "ALTERED_GENE_PRODUCT_LEVEL": {'description': 'A sequence variant that alters the level or amount of gene product produced. This high-level term can be applied where the direction of level change (increased vs decreased gene product level) is unknown or not confirmed, e.g., promoter or enhancer variants, some splice variants.', 'meaning': 'SO:0002314'}, + "DECREASED_GENE_PRODUCT_LEVEL": {'description': "A sequence variant that decreases the level or amount of gene product produced, e.g., a 5' UTR variant that reduced protein levels by disrupting translation, a 3' UTR variant that affects RNA stability, splice variants that decrease but do not stop expression, variants leading to nonsense-mediated-decay (NMD)-competent premature termination codon (PTCs), or gene-disrupting structural variants.", 'meaning': 'SO:0002316'}, + "ABSENT_GENE_PRODUCT": {'description': 'A sequence variant that results in no gene product. e.g., whole gene or other large scale disruptive structural variant, variants producing NMD-competent PTCs.', 'meaning': 'SO:0002317'}, + "INCREASED_GENE_PRODUCT_LEVEL": {'description': 'A variant that increases the level or amount of gene product produced, e.g., non-disruptive gene duplications, some promoter or enhancer variants.', 'meaning': 'SO:0002315'}, + "ALTERED_GENE_PRODUCT_STRUCTURE": {'description': 'A sequence variant that alters the sequence of a gene product. e.g., missense variants, NMD-incompetent PTCs, and other length-changing variants (in-frame indels, stop loss).', 'meaning': 'SO:0002318', 'aliases': ['altered gene product structure']}, + "UNCERTAIN": {'description': 'A sequence variant in which the function of a gene product is unknown with respect to a reference. Used by G2P where the consequence of the reported variants could not be determined.', 'meaning': 'SO:0002220', 'aliases': ['uncertain']}, +} + +class G2PVariantTypeGroup(RichEnum): + """ + The primary type grouping under which G2P organises the variant types associated with a curated gene-disease pair. + """ + # Enum members + NMD_VARIANTS = "NMD_VARIANTS" + SPLICE_VARIANTS = "SPLICE_VARIANTS" + REGULATORY_VARIANTS = "REGULATORY_VARIANTS" + PROTEIN_CHANGING_VARIANTS = "PROTEIN_CHANGING_VARIANTS" + OTHER_VARIANTS = "OTHER_VARIANTS" + +# Set metadata after class creation +G2PVariantTypeGroup._metadata = { + "NMD_VARIANTS": {'description': 'Variant types qualified by whether the resulting transcript is predicted to trigger or escape nonsense-mediated decay.'}, + "SPLICE_VARIANTS": {'description': 'Variant types affecting splice sites or splice regions.'}, + "REGULATORY_VARIANTS": {'description': 'Variant types in untranslated or regulatory regions.'}, + "PROTEIN_CHANGING_VARIANTS": {'description': 'Variant types that change the coding sequence of the gene product.'}, + "OTHER_VARIANTS": {'description': 'Variant types not covered by the NMD, splice, regulatory or protein changing groups, including structural and repeat changes.'}, +} + +class G2PVariantType(RichEnum): + """ + The types of variants associated with the curated gene-disease pair reported in the publication. All terms are Sequence Ontology terms. Where G2P uses a label that differs from the current SO label, the G2P label is recorded as an alias. Descriptions are the SO text definitions where SO provides one. + The NMD-qualified types have two parents in SO, so they are modelled with the base variant as is_a and the NMD qualifier as a mixin. LinkML preserves both, but as of linkml 1.9.5 the OWL generator emits only the is_a parent as rdfs:subClassOf and drops the mixin, so the NMD axis is additionally recorded in the nmd_status annotation to keep it available in every generated artifact. If a later linkml emits permissible-value mixins, that annotation is redundant and can go. + """ + # Enum members + NMD_TRIGGERING = "NMD_TRIGGERING" + NMD_ESCAPING = "NMD_ESCAPING" + STOP_GAINED_NMD_TRIGGERING = "STOP_GAINED_NMD_TRIGGERING" + STOP_GAINED_NMD_ESCAPING = "STOP_GAINED_NMD_ESCAPING" + FRAMESHIFT_VARIANT_NMD_TRIGGERING = "FRAMESHIFT_VARIANT_NMD_TRIGGERING" + FRAMESHIFT_VARIANT_NMD_ESCAPING = "FRAMESHIFT_VARIANT_NMD_ESCAPING" + SPLICE_DONOR_VARIANT_NMD_TRIGGERING = "SPLICE_DONOR_VARIANT_NMD_TRIGGERING" + SPLICE_DONOR_VARIANT_NMD_ESCAPING = "SPLICE_DONOR_VARIANT_NMD_ESCAPING" + SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING = "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING" + SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING = "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING" + SPLICE_REGION_VARIANT = "SPLICE_REGION_VARIANT" + SPLICE_ACCEPTOR_VARIANT = "SPLICE_ACCEPTOR_VARIANT" + SPLICE_DONOR_VARIANT = "SPLICE_DONOR_VARIANT" + FIVE_PRIME_UTR_VARIANT = "FIVE_PRIME_UTR_VARIANT" + THREE_PRIME_UTR_VARIANT = "THREE_PRIME_UTR_VARIANT" + REGULATORY_REGION_VARIANT = "REGULATORY_REGION_VARIANT" + START_LOST = "START_LOST" + STOP_GAINED = "STOP_GAINED" + STOP_LOST = "STOP_LOST" + FRAMESHIFT_VARIANT = "FRAMESHIFT_VARIANT" + MISSENSE_VARIANT = "MISSENSE_VARIANT" + INFRAME_INSERTION = "INFRAME_INSERTION" + INFRAME_DELETION = "INFRAME_DELETION" + SYNONYMOUS_VARIANT = "SYNONYMOUS_VARIANT" + INTRON_VARIANT = "INTRON_VARIANT" + INTERGENIC_VARIANT = "INTERGENIC_VARIANT" + NON_CODING_TRANSCRIPT_VARIANT = "NON_CODING_TRANSCRIPT_VARIANT" + SHORT_TANDEM_REPEAT_CHANGE = "SHORT_TANDEM_REPEAT_CHANGE" + COPY_NUMBER_VARIATION = "COPY_NUMBER_VARIATION" + WHOLE_PARTIAL_GENE_DELETION = "WHOLE_PARTIAL_GENE_DELETION" + WHOLE_PARTIAL_GENE_DUPLICATION = "WHOLE_PARTIAL_GENE_DUPLICATION" + +# Set metadata after class creation +G2PVariantType._metadata = { + "NMD_TRIGGERING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript that leads to nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002319', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_triggering']}, + "NMD_ESCAPING": {'description': 'A sequence variant that leads to a change in the location of a termination codon in a transcript but allows the transcript to escape nonsense-mediated decay (NMD). The change in location of a termination codon can be caused by several different types of sequence variants, including stop_gained (SO:0001587), frameshift_variant (SO:0001589), splice_donor_variant (SO:0001575), and splice_acceptor_variant (SO:0001574) types of variants.', 'meaning': 'SO:0002320', 'annotations': {'variant_type_group': 'NMD_VARIANTS'}, 'aliases': ['NMD_escaping']}, + "STOP_GAINED_NMD_TRIGGERING": {'description': 'A stop_gained (SO:0001587) variant that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002321', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "STOP_GAINED_NMD_ESCAPING": {'description': 'A stop_gained (SO:0001587) variant that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002322', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "FRAMESHIFT_VARIANT_NMD_TRIGGERING": {'description': 'A frameshift_variant (SO:0001589) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002323', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "FRAMESHIFT_VARIANT_NMD_ESCAPING": {'description': 'A frameshift_variant (SO:0001589) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002324', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_DONOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_donor_variant (SO:0001575) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002325', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_DONOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_donor_variant (SO:0001575) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002326', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_TRIGGERING": {'description': 'A splice_acceptor_variant (SO:0001574) that is degraded by nonsense-mediated decay (NMD).', 'meaning': 'SO:0002327', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_TRIGGERING'}}, + "SPLICE_ACCEPTOR_VARIANT_NMD_ESCAPING": {'description': 'A splice_acceptor_variant (SO:0001574) that allows the transcript to escape nonsense-mediated decay (NMD).', 'meaning': 'SO:0002328', 'annotations': {'variant_type_group': 'NMD_VARIANTS', 'nmd_status': 'NMD_ESCAPING'}}, + "SPLICE_REGION_VARIANT": {'description': 'A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron.', 'meaning': 'SO:0001630', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_ACCEPTOR_VARIANT": {'description': "A splice variant that changes the 2 base region at the 3' end of an intron.", 'meaning': 'SO:0001574', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "SPLICE_DONOR_VARIANT": {'description': "A splice variant that changes the 2 base pair region at the 5' end of an intron.", 'meaning': 'SO:0001575', 'annotations': {'variant_type_group': 'SPLICE_VARIANTS'}}, + "FIVE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 5' UTR.", 'meaning': 'SO:0001623', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "THREE_PRIME_UTR_VARIANT": {'description': "A UTR variant of the 3' UTR.", 'meaning': 'SO:0001624', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "REGULATORY_REGION_VARIANT": {'description': 'A sequence variant located within a regulatory region.', 'meaning': 'SO:0001566', 'annotations': {'variant_type_group': 'REGULATORY_VARIANTS'}}, + "START_LOST": {'description': 'A codon variant that changes at least one base of the canonical start codon.', 'meaning': 'SO:0002012', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_GAINED": {'description': 'A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened polypeptide.', 'meaning': 'SO:0001587', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "STOP_LOST": {'description': 'A sequence variant where at least one base of the terminator codon (stop) is changed, resulting in an elongated transcript.', 'meaning': 'SO:0001578', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "FRAMESHIFT_VARIANT": {'description': 'A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three.', 'meaning': 'SO:0001589', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "MISSENSE_VARIANT": {'description': 'A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved.', 'meaning': 'SO:0001583', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_INSERTION": {'description': 'An inframe non synonymous variant that inserts bases into in the coding sequence.', 'meaning': 'SO:0001821', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "INFRAME_DELETION": {'description': 'An inframe non synonymous variant that deletes bases from the coding sequence.', 'meaning': 'SO:0001822', 'annotations': {'variant_type_group': 'PROTEIN_CHANGING_VARIANTS'}}, + "SYNONYMOUS_VARIANT": {'description': 'A sequence variant where there is no resulting change to the encoded amino acid.', 'meaning': 'SO:0001819', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTRON_VARIANT": {'description': 'A transcript variant occurring within an intron.', 'meaning': 'SO:0001627', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "INTERGENIC_VARIANT": {'description': 'A sequence variant located in the intergenic region, between genes.', 'meaning': 'SO:0001628', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "NON_CODING_TRANSCRIPT_VARIANT": {'description': 'A transcript variant of a non coding RNA gene.', 'meaning': 'SO:0001619', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "SHORT_TANDEM_REPEAT_CHANGE": {'description': 'A sequence variant where the copies of a short tandem repeat (STR) feature are either contracted or expanded. SO:0002161 carries no text definition; this description is taken from the SO term comment.', 'meaning': 'SO:0002161', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "COPY_NUMBER_VARIATION": {'description': 'A variation that increases or decreases the copy number of a given region.', 'meaning': 'SO:0001019', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}}, + "WHOLE_PARTIAL_GENE_DELETION": {'description': 'A feature ablation whereby the deleted region includes a transcript feature. Used by G2P to record whole or partial gene deletions.', 'meaning': 'SO:0001893', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_deletion']}, + "WHOLE_PARTIAL_GENE_DUPLICATION": {'description': 'A feature amplification of a region containing a transcript. Used by G2P to record whole or partial gene duplications.', 'meaning': 'SO:0001889', 'annotations': {'variant_type_group': 'OTHER_VARIANTS'}, 'aliases': ['whole_partial_gene_duplication']}, +} + +class G2PPanel(RichEnum): + """ + The disease-area panels into which G2P organises its curated gene-disease associations. A gene-disease association may appear on more than one panel. + """ + # Enum members + CANCER = "CANCER" + CARDIAC = "CARDIAC" + DD = "DD" + EAR = "EAR" + EYE = "EYE" + SKELETAL = "SKELETAL" + SKIN = "SKIN" + +# Set metadata after class creation +G2PPanel._metadata = { + "CANCER": {'description': 'Cancer disorders.'}, + "CARDIAC": {'description': 'Cardiac disorders.'}, + "DD": {'description': 'Developmental disorders.', 'aliases': ['Developmental disorders']}, + "EAR": {'description': 'Ear disorders.'}, + "EYE": {'description': 'Eye disorders.'}, + "SKELETAL": {'description': 'Skeletal disorders.'}, + "SKIN": {'description': 'Skin disorders.'}, +} + +__all__ = [ + "G2PConfidenceCategory", + "G2PAllelicRequirement", + "G2PCrossCuttingModifier", + "G2PMolecularMechanism", + "G2PMolecularMechanismSynopsis", + "G2PMolecularMechanismSupport", + "G2PMechanismEvidenceCategory", + "G2PFunctionEvidence", + "G2PFunctionalAlterationEvidence", + "G2PModelsEvidence", + "G2PRescueEvidence", + "G2PVariantConsequence", + "G2PVariantTypeGroup", + "G2PVariantType", + "G2PPanel", +] \ No newline at end of file diff --git a/src/valuesets/enums/computing/systems_engineering.py b/src/valuesets/enums/computing/systems_engineering.py new file mode 100644 index 00000000..e85598e6 --- /dev/null +++ b/src/valuesets/enums/computing/systems_engineering.py @@ -0,0 +1,55 @@ +""" +Systems and Software Engineering Life Cycle Processes + +Value sets for the system life cycle processes defined by ISO/IEC/IEEE 15288. + +Generated from: computing/systems_engineering.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class SystemLifeCycleProcess15288(RichEnum): + """ + The 30 system life cycle processes grouped by ISO/IEC/IEEE 15288:2015. + """ + # Enum members + ACQUISITION = "ACQUISITION" + SUPPLY = "SUPPLY" + LIFE_CYCLE_MODEL_MANAGEMENT = "LIFE_CYCLE_MODEL_MANAGEMENT" + INFRASTRUCTURE_MANAGEMENT = "INFRASTRUCTURE_MANAGEMENT" + PORTFOLIO_MANAGEMENT = "PORTFOLIO_MANAGEMENT" + HUMAN_RESOURCE_MANAGEMENT = "HUMAN_RESOURCE_MANAGEMENT" + QUALITY_MANAGEMENT = "QUALITY_MANAGEMENT" + PROJECT_PLANNING = "PROJECT_PLANNING" + PROJECT_ASSESSMENT_AND_CONTROL = "PROJECT_ASSESSMENT_AND_CONTROL" + DECISION_MANAGEMENT = "DECISION_MANAGEMENT" + RISK_MANAGEMENT = "RISK_MANAGEMENT" + CONFIGURATION_MANAGEMENT = "CONFIGURATION_MANAGEMENT" + INFORMATION_MANAGEMENT = "INFORMATION_MANAGEMENT" + MEASUREMENT = "MEASUREMENT" + QUALITY_ASSURANCE = "QUALITY_ASSURANCE" + KNOWLEDGE_MANAGEMENT = "KNOWLEDGE_MANAGEMENT" + BUSINESS_OR_MISSION_ANALYSIS = "BUSINESS_OR_MISSION_ANALYSIS" + STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION = "STAKEHOLDER_NEEDS_AND_REQUIREMENTS_DEFINITION" + SYSTEM_REQUIREMENTS_DEFINITION = "SYSTEM_REQUIREMENTS_DEFINITION" + ARCHITECTURE_DEFINITION = "ARCHITECTURE_DEFINITION" + DESIGN_DEFINITION = "DESIGN_DEFINITION" + SYSTEM_ANALYSIS = "SYSTEM_ANALYSIS" + IMPLEMENTATION = "IMPLEMENTATION" + INTEGRATION = "INTEGRATION" + VERIFICATION = "VERIFICATION" + TRANSITION = "TRANSITION" + VALIDATION = "VALIDATION" + OPERATION = "OPERATION" + MAINTENANCE = "MAINTENANCE" + DISPOSAL = "DISPOSAL" + +# Set metadata after class creation +SystemLifeCycleProcess15288._metadata = { +} + +__all__ = [ + "SystemLifeCycleProcess15288", +] \ No newline at end of file diff --git a/src/valuesets/enums/computing/verification_validation_ieee_1012.py b/src/valuesets/enums/computing/verification_validation_ieee_1012.py new file mode 100644 index 00000000..4e461d9f --- /dev/null +++ b/src/valuesets/enums/computing/verification_validation_ieee_1012.py @@ -0,0 +1,34 @@ +""" +IEEE 1012 Verification and Validation Processes + +Value sets for system, software, and hardware verification and validation activities defined by IEEE 1012. + +Generated from: computing/verification_validation_ieee_1012.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class VerificationValidationProcessIEEE1012(RichEnum): + """ + Verification and validation processes applied across the system, software, and hardware life cycle. + """ + # Enum members + CONCEPT_AND_REQUIREMENTS_V_AND_V = "CONCEPT_AND_REQUIREMENTS_V_AND_V" + ARCHITECTURE_AND_DESIGN_V_AND_V = "ARCHITECTURE_AND_DESIGN_V_AND_V" + IMPLEMENTATION_V_AND_V = "IMPLEMENTATION_V_AND_V" + INTEGRATION_V_AND_V = "INTEGRATION_V_AND_V" + QUALIFICATION_TESTING = "QUALIFICATION_TESTING" + INSTALLATION_AND_CHECKOUT = "INSTALLATION_AND_CHECKOUT" + OPERATION_V_AND_V = "OPERATION_V_AND_V" + MAINTENANCE_V_AND_V = "MAINTENANCE_V_AND_V" + DISPOSAL_V_AND_V = "DISPOSAL_V_AND_V" + +# Set metadata after class creation +VerificationValidationProcessIEEE1012._metadata = { +} + +__all__ = [ + "VerificationValidationProcessIEEE1012", +] \ No newline at end of file diff --git a/src/valuesets/enums/medical/dicom.py b/src/valuesets/enums/medical/dicom.py new file mode 100644 index 00000000..5c6b9022 --- /dev/null +++ b/src/valuesets/enums/medical/dicom.py @@ -0,0 +1,390 @@ +""" +DICOM Standard Value Sets + +Value sets drawn from the Digital Imaging and Communications in Medicine (DICOM) standard (ISO 12052), the internationally recognized format for storing, transmitting and managing medical imaging data. Covers the acquisition modality codes used in the Modality (0008,0060) attribute, the Value Representations (VRs) that govern attribute encoding, the attribute requirement types (1, 1C, 2, 2C, 3) used in Information Object Definitions, the registered transfer syntaxes that define byte ordering and pixel data compression, the DIMSE and DICOMweb network services used to query and retrieve images from PACS, and the open-source toolkits commonly used to read, validate and serve DICOM files. +These value sets support DICOM data extraction, conformance checking and metadata tag validation, where VR, VM and attribute type rules are checked with tools such as dciodvfy, dcentvfy, DVTk and pydicom. +Codes that come from the DICOM standard itself (modality codes, VRs, action codes) are kept in their standard form rather than being upper-cased or expanded. + +Generated from: medical/dicom.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class DICOMModalityEnum(RichEnum): + """ + Acquisition modality codes from DICOM PS3.16 Context ID 29 (Acquisition Modality), the defined terms for the Modality (0008,0060) attribute. The permissible value is the DICOM code itself; the title is the NCI Thesaurus label where a mapping exists and the DICOM code meaning is carried as an alias when it differs. Where an NCI Thesaurus term exists it is the meaning and the DCM code is an exact mapping; otherwise the DCM code is the meaning, so every value carries its DCM code in one of the two fields. Waveform modalities (ECG, EEG, etc.) are defined in CID 34 and are not included here, nor are the non-acquisition values that also appear in Modality (0008,0060) such as SR, PR, SEG, KO, DOC, OT and the RT objects. + """ + # Enum members + AR = "AR" + BI = "BI" + BMD = "BMD" + CR = "CR" + CT = "CT" + CFM = "CFM" + DMS = "DMS" + DG = "DG" + DX = "DX" + ES = "ES" + XC = "XC" + GM = "GM" + IO = "IO" + IVOCT = "IVOCT" + IVUS = "IVUS" + KER = "KER" + LS = "LS" + LEN = "LEN" + MR = "MR" + MG = "MG" + NM = "NM" + OAM = "OAM" + OPM = "OPM" + OP = "OP" + OPT = "OPT" + OPTBSV = "OPTBSV" + OPTENF = "OPTENF" + OPV = "OPV" + OCT = "OCT" + OSS = "OSS" + PX = "PX" + PA = "PA" + PT = "PT" + RF = "RF" + RG = "RG" + RTIMAGE = "RTIMAGE" + SM = "SM" + SRF = "SRF" + TG = "TG" + US = "US" + BDUS = "BDUS" + VA = "VA" + XA = "XA" + +# Set metadata after class creation +DICOMModalityEnum._metadata = { + "AR": {'description': 'Automated measurement of refractive error of the eye', 'meaning': 'NCIT:C176330'}, + "BI": {'description': 'Imaging based on magnetic fields produced by the body, such as magnetoencephalography', 'meaning': 'DCM:BI'}, + "BMD": {'description': 'Measurement of bone mineral content and density, such as DXA', 'meaning': 'NCIT:C190514'}, + "CR": {'description': 'X-ray imaging using a phosphor imaging plate read out to a digital image', 'meaning': 'NCIT:C190521'}, + "CT": {'description': 'Cross-sectional X-ray imaging reconstructed by computer', 'meaning': 'NCIT:C17204'}, + "CFM": {'description': 'Laser-scanning microscopy that rejects out-of-focus light', 'meaning': 'NCIT:C17753'}, + "DMS": {'description': 'Non-invasive microscopic examination of the skin surface', 'meaning': 'NCIT:C116478'}, + "DG": {'description': 'Transillumination imaging of tissue, historically used for the breast', 'meaning': 'DCM:DG'}, + "DX": {'description': 'Projection X-ray imaging acquired directly with a digital detector', 'meaning': 'NCIT:C18001'}, + "ES": {'description': 'Imaging from an endoscope inserted into a body cavity or organ, including laryngoscopy and video endoscopy', 'meaning': 'NCIT:C16546', 'aliases': ['Endoscopy']}, + "XC": {'description': 'Visible-light photography of the patient with an external camera', 'meaning': 'DCM:XC'}, + "GM": {'description': 'General microscopy not otherwise classified', 'meaning': 'NCIT:C16853', 'aliases': ['General Microscopy']}, + "IO": {'description': 'Dental X-ray imaging with the detector inside the mouth', 'meaning': 'NCIT:C190548', 'aliases': ['Intra-oral Radiography']}, + "IVOCT": {'description': 'Catheter-based optical coherence tomography of blood vessels', 'meaning': 'NCIT:C190550'}, + "IVUS": {'description': 'Catheter-based ultrasound imaging of blood vessels', 'meaning': 'NCIT:C99535'}, + "KER": {'description': 'Measurement of the curvature of the anterior corneal surface', 'meaning': 'NCIT:C190551'}, + "LS": {'description': 'Surface geometry acquired with a laser scanner', 'meaning': 'DCM:LS'}, + "LEN": {'description': 'Measurement of the optical properties of spectacle lenses', 'meaning': 'DCM:LEN'}, + "MR": {'description': 'Imaging using radiofrequency pulses in a strong magnetic field', 'meaning': 'NCIT:C16809', 'aliases': ['Magnetic Resonance']}, + "MG": {'description': 'Low-dose X-ray imaging of the breast', 'meaning': 'NCIT:C16818'}, + "NM": {'description': 'Gamma camera imaging of an administered radiotracer, including planar and SPECT', 'meaning': 'NCIT:C62667', 'aliases': ['Nuclear Medicine']}, + "OAM": {'description': 'Measurement of axial dimensions of the eye, such as axial length', 'meaning': 'DCM:OAM'}, + "OPM": {'description': 'Topographic or thickness maps of ocular structures', 'meaning': 'DCM:OPM'}, + "OP": {'description': 'Photography of the eye, including fundus and slit lamp photography', 'meaning': 'NCIT:C190559'}, + "OPT": {'description': 'Optical coherence tomography of the eye, including retinal OCT B-scans', 'meaning': 'NCIT:C190561'}, + "OPTBSV": {'description': 'Volume analysis derived from ophthalmic OCT B-scans', 'meaning': 'DCM:OPTBSV'}, + "OPTENF": {'description': 'Transverse (en face) images derived from ophthalmic OCT volumes', 'meaning': 'NCIT:C190563', 'aliases': ['Ophthalmic Tomography En Face']}, + "OPV": {'description': 'Perimetry results describing the visual field', 'meaning': 'DCM:OPV'}, + "OCT": {'description': 'Interferometric imaging using near-infrared light, used outside ophthalmology', 'meaning': 'NCIT:C20828'}, + "OSS": {'description': 'Surface geometry acquired with an optical (non-laser) scanner', 'meaning': 'DCM:OSS'}, + "PX": {'description': 'Dental panoramic radiography of the jaws', 'meaning': 'DCM:PX'}, + "PA": {'description': 'Imaging of ultrasonic waves generated by optical absorption of pulsed light', 'meaning': 'NCIT:C116749', 'aliases': ['Photoacoustic']}, + "PT": {'description': 'Tomographic imaging of a positron-emitting radiotracer', 'meaning': 'NCIT:C17007'}, + "RF": {'description': 'Real-time X-ray imaging, including radiofluoroscopy', 'meaning': 'NCIT:C16588', 'aliases': ['Radiofluoroscopy']}, + "RG": {'description': 'Conventional film or screen radiographic imaging', 'meaning': 'NCIT:C38101', 'aliases': ['Radiographic imaging']}, + "RTIMAGE": {'description': 'Radiotherapy portal or setup image', 'meaning': 'DCM:RTIMAGE'}, + "SM": {'description': 'Whole slide imaging of microscope slides', 'meaning': 'DCM:SM'}, + "SRF": {'description': 'Refraction measured with patient feedback', 'meaning': 'DCM:SRF'}, + "TG": {'description': 'Imaging of body surface temperature', 'meaning': 'NCIT:C17194'}, + "US": {'description': 'Imaging using high-frequency sound waves, including static images and cine loops', 'meaning': 'NCIT:C17230', 'aliases': ['Ultrasound']}, + "BDUS": {'description': 'Quantitative ultrasound estimation of bone mineral density', 'meaning': 'NCIT:C190516'}, + "VA": {'description': 'Measurement of the sharpness of vision', 'meaning': 'NCIT:C87149'}, + "XA": {'description': 'X-ray imaging of blood vessels with contrast, including digital subtraction angiography', 'meaning': 'NCIT:C20080'}, +} + +class DICOMValueRepresentationEnum(RichEnum): + """ + The Value Representations (VRs) defined in DICOM PS3.5 Section 6.2, which specify the data type and format of the value of a data element. Tag validation tools check that each attribute is encoded with the VR required by the data dictionary. Permissible values are the two-letter DICOM VR codes. + """ + # Enum members + AE = "AE" + AS = "AS" + AT = "AT" + CS = "CS" + DA = "DA" + DS = "DS" + DT = "DT" + FL = "FL" + FD = "FD" + IS = "IS" + LO = "LO" + LT = "LT" + OB = "OB" + OD = "OD" + OF = "OF" + OL = "OL" + OV = "OV" + OW = "OW" + PN = "PN" + SH = "SH" + SL = "SL" + SQ = "SQ" + SS = "SS" + ST = "ST" + SV = "SV" + TM = "TM" + UC = "UC" + UI = "UI" + UL = "UL" + UN = "UN" + UR = "UR" + US = "US" + UT = "UT" + UV = "UV" + +# Set metadata after class creation +DICOMValueRepresentationEnum._metadata = { + "AE": {'description': 'A string identifying an Application Entity; 16 bytes maximum', 'annotations': {'category': 'string'}}, + "AS": {'description': 'Age in the format nnnD, nnnW, nnnM or nnnY (days, weeks, months, years)', 'annotations': {'category': 'string'}}, + "AT": {'description': 'An ordered pair of 16-bit unsigned integers that is the value of a data element tag', 'annotations': {'category': 'binary'}}, + "CS": {'description': 'A string identifying a controlled concept; uppercase letters, digits, space and underscore, 16 bytes maximum', 'annotations': {'category': 'string'}}, + "DA": {'description': 'A date in the format YYYYMMDD', 'annotations': {'category': 'date_time'}}, + "DS": {'description': 'A string representing a fixed point or floating point number', 'annotations': {'category': 'string'}}, + "DT": {'description': 'A concatenated date-time string of the form YYYYMMDDHHMMSS.FFFFFF&ZZXX', 'annotations': {'category': 'date_time'}}, + "FL": {'description': 'Single precision IEEE 754 binary32 floating point value', 'annotations': {'category': 'binary'}}, + "FD": {'description': 'Double precision IEEE 754 binary64 floating point value', 'annotations': {'category': 'binary'}}, + "IS": {'description': 'A string representing a base-10 integer', 'annotations': {'category': 'string'}}, + "LO": {'description': 'A character string of up to 64 characters', 'annotations': {'category': 'string'}}, + "LT": {'description': 'A character string that may contain one or more paragraphs, up to 10240 characters', 'annotations': {'category': 'text'}}, + "OB": {'description': 'An octet stream whose encoding is specified by the negotiated transfer syntax', 'annotations': {'category': 'binary'}}, + "OD": {'description': 'A stream of IEEE 754 binary64 values', 'annotations': {'category': 'binary'}}, + "OF": {'description': 'A stream of IEEE 754 binary32 values', 'annotations': {'category': 'binary'}}, + "OL": {'description': 'A stream of 32-bit words', 'annotations': {'category': 'binary'}}, + "OV": {'description': 'A stream of 64-bit words', 'annotations': {'category': 'binary'}}, + "OW": {'description': 'A stream of 16-bit words; commonly used for Pixel Data', 'annotations': {'category': 'binary'}}, + "PN": {'description': 'A character string encoded using a five-component convention (family, given, middle, prefix, suffix)', 'annotations': {'category': 'string'}}, + "SH": {'description': 'A character string of up to 16 characters', 'annotations': {'category': 'string'}}, + "SL": {'description': "Signed 32-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "SQ": {'description': 'A sequence of zero or more items, each of which is a nested data set', 'annotations': {'category': 'sequence'}}, + "SS": {'description': "Signed 16-bit two's complement integer", 'annotations': {'category': 'binary'}}, + "ST": {'description': 'A character string that may contain one or more paragraphs, up to 1024 characters', 'annotations': {'category': 'text'}}, + "SV": {'description': 'Signed 64-bit integer', 'annotations': {'category': 'binary'}}, + "TM": {'description': 'A time in the format HHMMSS.FFFFFF', 'annotations': {'category': 'date_time'}}, + "UC": {'description': 'A character string of unlimited length', 'annotations': {'category': 'string'}}, + "UI": {'description': 'A string of numeric components separated by periods, up to 64 characters, used for UIDs such as SOP Instance UIDs and transfer syntax UIDs', 'annotations': {'category': 'string'}}, + "UL": {'description': 'Unsigned 32-bit integer', 'annotations': {'category': 'binary'}}, + "UN": {'description': 'An octet stream whose encoding of the contents is unknown', 'annotations': {'category': 'binary'}}, + "UR": {'description': 'A string identifying a URI or URL as defined in RFC 3986', 'annotations': {'category': 'string'}}, + "US": {'description': 'Unsigned 16-bit integer', 'annotations': {'category': 'binary'}}, + "UT": {'description': 'A character string that may contain one or more paragraphs, of unlimited length', 'annotations': {'category': 'text'}}, + "UV": {'description': 'Unsigned 64-bit integer', 'annotations': {'category': 'binary'}}, +} + +class DICOMAttributeTypeEnum(RichEnum): + """ + Attribute requirement types defined in DICOM PS3.5 Section 7.4, which state whether an attribute must be present in a data set and whether it may have a zero-length value. Conformance checkers report missing Type 1 and Type 2 attributes as errors. These types also determine which de-identification action (D, Z or X) may be applied to an attribute. + """ + # Enum members + TYPE_1 = "TYPE_1" + TYPE_1C = "TYPE_1C" + TYPE_2 = "TYPE_2" + TYPE_2C = "TYPE_2C" + TYPE_3 = "TYPE_3" + +# Set metadata after class creation +DICOMAttributeTypeEnum._metadata = { + "TYPE_1": {'description': 'The attribute shall be present with a valid non-zero-length value', 'aliases': ['1']}, + "TYPE_1C": {'description': 'The attribute shall be present with a valid value when a specified condition is met, and shall not be present otherwise', 'aliases': ['1C']}, + "TYPE_2": {'description': 'The attribute shall be present but may have a zero-length value if the value is unknown', 'aliases': ['2']}, + "TYPE_2C": {'description': 'The attribute shall be present, possibly with zero length, when a specified condition is met', 'aliases': ['2C']}, + "TYPE_3": {'description': 'The attribute is optional and may be absent or present with or without a value', 'aliases': ['3']}, +} + +class DICOMTransferSyntaxEnum(RichEnum): + """ + Transfer syntaxes registered in DICOM PS3.6 Annex A that define the byte ordering, VR encoding and pixel data compression of a DICOM data set. Pixel data validation includes confirming that decompression from a lossy or lossless transfer syntax yields the expected bit depth and that no unintended data loss occurred. Video transfer syntaxes (MPEG-2, H.264, HEVC) are used for endoscopy and ultrasound cine acquisitions. Fragmentable variants of the MPEG transfer syntaxes and retired JPEG processes are omitted; the full registry is at the see_also link. + """ + # Enum members + IMPLICIT_VR_LITTLE_ENDIAN = "IMPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_LITTLE_ENDIAN = "EXPLICIT_VR_LITTLE_ENDIAN" + ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN = "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN" + DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN = "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN" + EXPLICIT_VR_BIG_ENDIAN = "EXPLICIT_VR_BIG_ENDIAN" + JPEG_BASELINE_PROCESS_1 = "JPEG_BASELINE_PROCESS_1" + JPEG_EXTENDED_PROCESS_2_4 = "JPEG_EXTENDED_PROCESS_2_4" + JPEG_LOSSLESS_PROCESS_14 = "JPEG_LOSSLESS_PROCESS_14" + JPEG_LOSSLESS_PROCESS_14_SV1 = "JPEG_LOSSLESS_PROCESS_14_SV1" + JPEG_LS_LOSSLESS = "JPEG_LS_LOSSLESS" + JPEG_LS_NEAR_LOSSLESS = "JPEG_LS_NEAR_LOSSLESS" + JPEG_2000_LOSSLESS_ONLY = "JPEG_2000_LOSSLESS_ONLY" + JPEG_2000 = "JPEG_2000" + JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY = "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY" + JPEG_2000_MULTICOMPONENT = "JPEG_2000_MULTICOMPONENT" + JPIP_REFERENCED = "JPIP_REFERENCED" + JPIP_REFERENCED_DEFLATE = "JPIP_REFERENCED_DEFLATE" + MPEG2_MAIN_PROFILE_MAIN_LEVEL = "MPEG2_MAIN_PROFILE_MAIN_LEVEL" + MPEG2_MAIN_PROFILE_HIGH_LEVEL = "MPEG2_MAIN_PROFILE_HIGH_LEVEL" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1 = "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D" + MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D = "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D" + MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2 = "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2" + HEVC_H265_MAIN_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_PROFILE_LEVEL_5_1" + HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1 = "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1" + JPEG_XL_LOSSLESS = "JPEG_XL_LOSSLESS" + JPEG_XL_JPEG_RECOMPRESSION = "JPEG_XL_JPEG_RECOMPRESSION" + JPEG_XL = "JPEG_XL" + HTJ2K_LOSSLESS_ONLY = "HTJ2K_LOSSLESS_ONLY" + HTJ2K_RPCL_LOSSLESS_ONLY = "HTJ2K_RPCL_LOSSLESS_ONLY" + HTJ2K = "HTJ2K" + RLE_LOSSLESS = "RLE_LOSSLESS" + SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO" + SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO = "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO" + +# Set metadata after class creation +DICOMTransferSyntaxEnum._metadata = { + "IMPLICIT_VR_LITTLE_ENDIAN": {'description': 'Default transfer syntax for DICOM; VRs are looked up from the data dictionary rather than encoded', 'annotations': {'uid': '1.2.840.10008.1.2', 'compression': 'none'}}, + "EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed encoding with VRs explicitly encoded in each data element', 'annotations': {'uid': '1.2.840.10008.1.2.1', 'compression': 'none'}}, + "ENCAPSULATED_UNCOMPRESSED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Uncompressed pixel data encapsulated in fragments, one per frame', 'annotations': {'uid': '1.2.840.10008.1.2.1.98', 'compression': 'none'}}, + "DEFLATED_EXPLICIT_VR_LITTLE_ENDIAN": {'description': 'Explicit VR Little Endian data set compressed as a whole with the deflate algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.1.99', 'compression': 'lossless'}}, + "EXPLICIT_VR_BIG_ENDIAN": {'description': 'Big endian byte ordering with explicit VRs; retired but still encountered in legacy archives', 'annotations': {'uid': '1.2.840.10008.1.2.2', 'compression': 'none', 'retired': 'true'}}, + "JPEG_BASELINE_PROCESS_1": {'description': 'Default transfer syntax for lossy JPEG 8-bit image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.50', 'compression': 'lossy'}}, + "JPEG_EXTENDED_PROCESS_2_4": {'description': 'Default transfer syntax for lossy JPEG 12-bit image compression (Process 4 only)', 'annotations': {'uid': '1.2.840.10008.1.2.4.51', 'compression': 'lossy'}}, + "JPEG_LOSSLESS_PROCESS_14": {'description': 'Lossless JPEG compression using any predictor', 'annotations': {'uid': '1.2.840.10008.1.2.4.57', 'compression': 'lossless'}}, + "JPEG_LOSSLESS_PROCESS_14_SV1": {'description': 'Default transfer syntax for lossless JPEG image compression', 'annotations': {'uid': '1.2.840.10008.1.2.4.70', 'compression': 'lossless'}}, + "JPEG_LS_LOSSLESS": {'description': 'Lossless compression using the JPEG-LS (ISO 14495) algorithm', 'annotations': {'uid': '1.2.840.10008.1.2.4.80', 'compression': 'lossless'}}, + "JPEG_LS_NEAR_LOSSLESS": {'description': 'Near-lossless JPEG-LS compression with a bounded per-pixel error', 'annotations': {'uid': '1.2.840.10008.1.2.4.81', 'compression': 'lossy'}}, + "JPEG_2000_LOSSLESS_ONLY": {'description': 'JPEG 2000 wavelet compression restricted to reversible (lossless) mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.90', 'compression': 'lossless'}}, + "JPEG_2000": {'description': 'JPEG 2000 wavelet compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.91', 'compression': 'lossy or lossless'}}, + "JPEG_2000_MULTICOMPONENT_LOSSLESS_ONLY": {'description': 'JPEG 2000 Part 2 multi-component transform, reversible mode only', 'annotations': {'uid': '1.2.840.10008.1.2.4.92', 'compression': 'lossless'}}, + "JPEG_2000_MULTICOMPONENT": {'description': 'JPEG 2000 Part 2 multi-component transform, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.93', 'compression': 'lossy or lossless'}}, + "JPIP_REFERENCED": {'description': 'Pixel data referenced via a JPEG 2000 Interactive Protocol URL rather than encoded in the data set', 'annotations': {'uid': '1.2.840.10008.1.2.4.94', 'compression': 'referenced'}}, + "JPIP_REFERENCED_DEFLATE": {'description': 'JPIP referenced pixel data with the remaining data set deflated', 'annotations': {'uid': '1.2.840.10008.1.2.4.95', 'compression': 'referenced'}}, + "MPEG2_MAIN_PROFILE_MAIN_LEVEL": {'description': 'MPEG-2 video compression for standard definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.100', 'compression': 'lossy', 'media': 'video'}}, + "MPEG2_MAIN_PROFILE_HIGH_LEVEL": {'description': 'MPEG-2 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.101', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression for high definition video', 'annotations': {'uid': '1.2.840.10008.1.2.4.102', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_BD_COMPATIBLE_HIGH_PROFILE_LEVEL_4_1": {'description': 'H.264 video compression constrained for Blu-ray Disc compatibility', 'annotations': {'uid': '1.2.840.10008.1.2.4.103', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_2D": {'description': 'H.264 video compression for 2D video at higher frame rates and resolutions', 'annotations': {'uid': '1.2.840.10008.1.2.4.104', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_HIGH_PROFILE_LEVEL_4_2_3D": {'description': 'H.264 video compression for 3D (stereoscopic) video', 'annotations': {'uid': '1.2.840.10008.1.2.4.105', 'compression': 'lossy', 'media': 'video'}}, + "MPEG4_AVC_H264_STEREO_HIGH_PROFILE_LEVEL_4_2": {'description': 'H.264 stereo high profile for stereoscopic video', 'annotations': {'uid': '1.2.840.10008.1.2.4.106', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 8-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.107', 'compression': 'lossy', 'media': 'video'}}, + "HEVC_H265_MAIN_10_PROFILE_LEVEL_5_1": {'description': 'HEVC video compression with 10-bit samples', 'annotations': {'uid': '1.2.840.10008.1.2.4.108', 'compression': 'lossy', 'media': 'video'}}, + "JPEG_XL_LOSSLESS": {'description': 'JPEG XL compression restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.110', 'compression': 'lossless'}}, + "JPEG_XL_JPEG_RECOMPRESSION": {'description': 'Lossless recompression of existing JPEG codestreams using JPEG XL', 'annotations': {'uid': '1.2.840.10008.1.2.4.111', 'compression': 'lossless'}}, + "JPEG_XL": {'description': 'JPEG XL compression, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.112', 'compression': 'lossy or lossless'}}, + "HTJ2K_LOSSLESS_ONLY": {'description': 'High-throughput JPEG 2000 (Part 15) restricted to lossless mode', 'annotations': {'uid': '1.2.840.10008.1.2.4.201', 'compression': 'lossless'}}, + "HTJ2K_RPCL_LOSSLESS_ONLY": {'description': 'Lossless high-throughput JPEG 2000 with resolution-position-component-layer progression for progressive decoding', 'annotations': {'uid': '1.2.840.10008.1.2.4.202', 'compression': 'lossless'}}, + "HTJ2K": {'description': 'High-throughput JPEG 2000, lossy or lossless', 'annotations': {'uid': '1.2.840.10008.1.2.4.203', 'compression': 'lossy or lossless'}}, + "RLE_LOSSLESS": {'description': 'Run-length encoded lossless compression, widely used for ultrasound', 'annotations': {'uid': '1.2.840.10008.1.2.5', 'compression': 'lossless'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_PROGRESSIVE_VIDEO": {'description': 'Uncompressed progressive video streamed per SMPTE ST 2110-20, used in real-time video communication', 'annotations': {'uid': '1.2.840.10008.1.2.7.1', 'compression': 'none', 'media': 'video'}}, + "SMPTE_ST_2110_20_UNCOMPRESSED_INTERLACED_VIDEO": {'description': 'Uncompressed interlaced video streamed per SMPTE ST 2110-20', 'annotations': {'uid': '1.2.840.10008.1.2.7.2', 'compression': 'none', 'media': 'video'}}, +} + +class DICOMNetworkServiceEnum(RichEnum): + """ + Network services used to query, retrieve and store DICOM instances between imaging systems such as PACS, modalities and research archives. Includes the classic DIMSE (DICOM Message Service Element) services of PS3.7 and the RESTful DICOMweb services of PS3.18. Cataloguing which services a source repository supports is part of the data landscape assessment that precedes extraction. + """ + # Enum members + C_ECHO = "C_ECHO" + C_STORE = "C_STORE" + C_FIND = "C_FIND" + C_MOVE = "C_MOVE" + C_GET = "C_GET" + N_EVENT_REPORT = "N_EVENT_REPORT" + N_GET = "N_GET" + N_SET = "N_SET" + N_ACTION = "N_ACTION" + N_CREATE = "N_CREATE" + N_DELETE = "N_DELETE" + QIDO_RS = "QIDO_RS" + WADO_RS = "WADO_RS" + STOW_RS = "STOW_RS" + WADO_URI = "WADO_URI" + UPS_RS = "UPS_RS" + CUSTOM_API = "CUSTOM_API" + +# Set metadata after class creation +DICOMNetworkServiceEnum._metadata = { + "C_ECHO": {'description': 'DIMSE verification service used to test connectivity between two application entities', 'annotations': {'protocol': 'DIMSE'}}, + "C_STORE": {'description': 'DIMSE storage service that pushes a composite instance to a peer', 'annotations': {'protocol': 'DIMSE'}}, + "C_FIND": {'description': "DIMSE query service that matches attributes against a peer's database at patient, study, series or instance level", 'annotations': {'protocol': 'DIMSE'}}, + "C_MOVE": {'description': 'DIMSE retrieve service that instructs a peer to send matching instances to a named destination via C-STORE', 'annotations': {'protocol': 'DIMSE'}}, + "C_GET": {'description': 'DIMSE retrieve service that returns matching instances on the same association', 'annotations': {'protocol': 'DIMSE'}}, + "N_EVENT_REPORT": {'description': 'DIMSE-N notification service used to report events on a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_GET": {'description': 'DIMSE-N service that retrieves attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_SET": {'description': 'DIMSE-N service that modifies attribute values of a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_ACTION": {'description': 'DIMSE-N service that requests an action on a normalized SOP instance, such as storage commitment', 'annotations': {'protocol': 'DIMSE'}}, + "N_CREATE": {'description': 'DIMSE-N service that creates a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "N_DELETE": {'description': 'DIMSE-N service that deletes a normalized SOP instance', 'annotations': {'protocol': 'DIMSE'}}, + "QIDO_RS": {'description': 'DICOMweb RESTful query service (Query based on ID for DICOM Objects) for searching studies, series and instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_RS": {'description': 'DICOMweb RESTful retrieve service (Web Access to DICOM Objects) for retrieving studies, series, instances, frames, metadata and rendered images', 'annotations': {'protocol': 'DICOMweb'}}, + "STOW_RS": {'description': 'DICOMweb RESTful store service (Store Over the Web) for uploading instances', 'annotations': {'protocol': 'DICOMweb'}}, + "WADO_URI": {'description': 'Legacy DICOMweb URI-based retrieve service for single instances', 'annotations': {'protocol': 'DICOMweb'}}, + "UPS_RS": {'description': 'DICOMweb RESTful worklist service for Unified Procedure Step management', 'annotations': {'protocol': 'DICOMweb'}}, + "CUSTOM_API": {'description': 'A vendor- or institution-specific interface that is not a standard DICOM network service'}, +} + +class DICOMSoftwareToolEnum(RichEnum): + """ + Software toolkits, libraries, validators, servers and platforms commonly used to read, write, validate, anonymize and serve DICOM data in research data management pipelines. The category annotation distinguishes general-purpose toolkits from conformance validators, archive servers and metadata anonymizers. + """ + # Enum members + DCMTK = "DCMTK" + PYDICOM = "PYDICOM" + GDCM = "GDCM" + DCM4CHE = "DCM4CHE" + ITK = "ITK" + DVTK = "DVTK" + DICOM3TOOLS = "DICOM3TOOLS" + DCIODVFY = "DCIODVFY" + DCENTVFY = "DCENTVFY" + PIXELMED = "PIXELMED" + RSNA_CTP = "RSNA_CTP" + ORTHANC = "ORTHANC" + DCM4CHEE = "DCM4CHEE" + XNAT = "XNAT" + TCIA_UTILS = "TCIA_UTILS" + DICOM_CLEANER = "DICOM_CLEANER" + HOROS = "HOROS" + OSIRIX = "OSIRIX" + SLICER_3D = "SLICER_3D" + ITK_SNAP = "ITK_SNAP" + +# Set metadata after class creation +DICOMSoftwareToolEnum._metadata = { + "DCMTK": {'description': 'OFFIS DICOM Toolkit; C/C++ libraries and command-line utilities implementing DICOM network services and file handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://dicom.offis.de/en/dcmtk/'}}, + "PYDICOM": {'description': 'Pure Python library for reading, modifying and writing DICOM files, including pixel data access', 'annotations': {'category': 'toolkit', 'language': 'Python', 'license': 'MIT', 'url': 'https://github.com/pydicom/pydicom'}}, + "GDCM": {'description': 'Grassroots DICOM; C++ library with Python and other bindings for DICOM file and image codec handling', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'BSD', 'url': 'https://sourceforge.net/projects/gdcm/'}}, + "DCM4CHE": {'description': 'Java DICOM toolkit and the basis of the dcm4chee archive', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'MPL/GPL/LGPL', 'url': 'https://www.dcm4che.org/'}}, + "ITK": {'description': 'Insight Toolkit; C++ image processing library with DICOM readers built on GDCM', 'annotations': {'category': 'toolkit', 'language': 'C++', 'license': 'Apache-2.0', 'url': 'https://itk.org/'}}, + "DVTK": {'description': 'DICOM Validation Toolkit; validates object conformance and network behaviour against the standard', 'annotations': {'category': 'validator', 'language': 'C#', 'license': 'LGPL', 'url': 'https://www.dvtk.org/'}}, + "DICOM3TOOLS": {'description': "David Clunie's command-line utilities for creating, modifying, dumping and validating DICOM files", 'annotations': {'category': 'validator', 'language': 'C++', 'license': 'BSD', 'url': 'http://www.dclunie.com/dicom3tools.html'}}, + "DCIODVFY": {'description': 'dicom3tools utility that verifies a file against the Information Object Definition for its modality, reporting missing required attributes, incorrect VRs and values outside allowed ranges', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "DCENTVFY": {'description': 'dicom3tools utility that checks consistency of entity-level attributes across multiple files, such as all instances in a series sharing the same Series Instance UID', 'annotations': {'category': 'validator', 'part_of': 'dicom3tools'}}, + "PIXELMED": {'description': 'PixelMed Java DICOM toolkit, including the DicomCleaner metadata anonymizer', 'annotations': {'category': 'toolkit', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.pixelmed.com/'}}, + "RSNA_CTP": {'description': 'RSNA Clinical Trial Processor; pipeline application with a configurable DICOM anonymizer', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'url': 'https://mircwiki.rsna.org/index.php?title=CTP-The_RSNA_Clinical_Trial_Processor'}}, + "ORTHANC": {'description': 'Lightweight open-source DICOM server with a REST API and DICOMweb plugin', 'annotations': {'category': 'server', 'language': 'C++', 'license': 'GPL-3.0', 'url': 'https://www.orthanc-server.com/'}}, + "DCM4CHEE": {'description': 'Open-source DICOM archive and image manager built on dcm4che', 'annotations': {'category': 'server', 'language': 'Java', 'url': 'https://www.dcm4che.org/'}}, + "XNAT": {'description': 'Extensible Neuroimaging Archive Toolkit; open-source imaging informatics platform for managing, storing and sharing imaging data', 'annotations': {'category': 'platform', 'language': 'Java', 'license': 'BSD', 'url': 'https://www.xnat.org/'}}, + "TCIA_UTILS": {'description': 'Python utilities from The Cancer Imaging Archive for querying, downloading and inventorying DICOM metadata', 'annotations': {'category': 'toolkit', 'language': 'Python', 'url': 'https://github.com/kirbyju/tcia_utils'}}, + "DICOM_CLEANER": {'description': 'PixelMed graphical tool for metadata de-identification and blackout of burned-in text', 'annotations': {'category': 'anonymizer', 'language': 'Java', 'part_of': 'PixelMed'}}, + "HOROS": {'description': 'Open-source macOS DICOM viewer forked from OsiriX with built-in anonymization', 'annotations': {'category': 'viewer', 'license': 'LGPL-3.0', 'url': 'https://horosproject.org/'}}, + "OSIRIX": {'description': 'Commercial macOS DICOM viewer and workstation', 'annotations': {'category': 'viewer', 'license': 'commercial', 'url': 'https://www.osirix-viewer.com/'}}, + "SLICER_3D": {'description': 'Open-source platform for medical image visualization, segmentation and analysis with DICOM import', 'annotations': {'category': 'viewer', 'license': 'BSD-style', 'url': 'https://www.slicer.org/'}}, + "ITK_SNAP": {'description': 'Open-source tool for manual and semi-automatic segmentation of 3D medical images', 'annotations': {'category': 'viewer', 'license': 'GPL', 'url': 'http://www.itksnap.org/'}}, +} + +__all__ = [ + "DICOMModalityEnum", + "DICOMValueRepresentationEnum", + "DICOMAttributeTypeEnum", + "DICOMTransferSyntaxEnum", + "DICOMNetworkServiceEnum", + "DICOMSoftwareToolEnum", +] \ No newline at end of file diff --git a/src/valuesets/enums/medical/imaging_data_management.py b/src/valuesets/enums/medical/imaging_data_management.py new file mode 100644 index 00000000..2d70de86 --- /dev/null +++ b/src/valuesets/enums/medical/imaging_data_management.py @@ -0,0 +1,182 @@ +""" +Medical Imaging Data Management Value Sets + +Value sets for managing medical imaging data through its research lifecycle, from extraction out of clinical repositories through validation, quality assessment and de-identification to AI-ready datasets. Covers the lifecycle stages, the types of source systems that hold imaging data, the categories of structural and semantic problems found by DICOM validation tools, the image quality metrics computed during pixel data validation, the interoperability standards used to link images to clinical records, and the NIH Bridge2AI data generation projects that produce AI-ready imaging datasets. + +Generated from: medical/imaging_data_management.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class ImagingDataLifecycleStageEnum(RichEnum): + """ + Sequential stages of DICOM data management for preparing FAIR, AI-ready medical imaging datasets. Stages after extraction form the data reliability workflow that checks that imaging data is complete, standardized and biologically plausible before sharing. + """ + # Enum members + DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION = "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION" + FILE_INTEGRITY_VERIFICATION = "FILE_INTEGRITY_VERIFICATION" + DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS = "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS" + METADATA_TAG_VALIDATION = "METADATA_TAG_VALIDATION" + IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION = "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION" + DEIDENTIFICATION = "DEIDENTIFICATION" + +# Set metadata after class creation +ImagingDataLifecycleStageEnum._metadata = { + "DATA_EXTRACTION_AND_METADATA_CHARACTERIZATION": {'description': 'Extraction of imaging data from clinical repositories such as PACS, preceded by a landscape assessment of source locations, database systems, modalities and acquisition devices', 'annotations': {'stage_number': 1}}, + "FILE_INTEGRITY_VERIFICATION": {'description': 'Computation and periodic re-verification of cryptographic checksums such as SHA-256 to detect silent corruption from network errors, media decay or system failure', 'annotations': {'stage_number': 2}}, + "DATA_COMPLETENESS_AND_CONFORMANCE_CHECKS": {'description': 'Detection of structurally invalid DICOM files (truncated, wrong VR encoding, missing required tags) and checks of internal coherence such as identifier uniqueness and demographic consistency across sites', 'annotations': {'stage_number': 3}}, + "METADATA_TAG_VALIDATION": {'description': "Validation of DICOM attributes against the standard's VR, VM and type rules and against biological plausibility, and inventory of private tags", 'annotations': {'stage_number': 4}}, + "IMAGE_QUALITY_AND_PIXEL_DATA_VALIDATION": {'description': 'Verification that pixel data is readable and plausible, that decompression preserves bit depth, and computation of image quality metrics', 'annotations': {'stage_number': 5}}, + "DEIDENTIFICATION": {'description': 'Removal of protected health information from headers and of facial features from pixel data before sharing and reuse', 'meaning': 'NCIT:C45970', 'annotations': {'stage_number': 6}}, +} + +class ImagingDataSourceTypeEnum(RichEnum): + """ + Types of systems in a hospital or research network that hold medical imaging data and from which it may be extracted. A landscape assessment records, for each source, the platform vendor, software version, supported query mechanisms, patient identifier handling, retention policy and anonymization capabilities. + """ + # Enum members + PACS = "PACS" + VENDOR_NEUTRAL_ARCHIVE = "VENDOR_NEUTRAL_ARCHIVE" + DEPARTMENTAL_IMAGING_ARCHIVE = "DEPARTMENTAL_IMAGING_ARCHIVE" + RESEARCH_IMAGING_PLATFORM = "RESEARCH_IMAGING_PLATFORM" + MODALITY_WORKSTATION = "MODALITY_WORKSTATION" + ELECTRONIC_HEALTH_RECORD = "ELECTRONIC_HEALTH_RECORD" + PUBLIC_IMAGING_REPOSITORY = "PUBLIC_IMAGING_REPOSITORY" + CLOUD_IMAGING_ARCHIVE = "CLOUD_IMAGING_ARCHIVE" + +# Set metadata after class creation +ImagingDataSourceTypeEnum._metadata = { + "PACS": {'description': 'Clinical system for storing, retrieving and distributing medical images, typically the central radiology archive', 'meaning': 'NCIT:C17624'}, + "VENDOR_NEUTRAL_ARCHIVE": {'description': 'Enterprise archive that stores images from multiple departments and PACS vendors in a standard format', 'aliases': ['VNA']}, + "DEPARTMENTAL_IMAGING_ARCHIVE": {'description': 'Local archive maintained by a clinical department such as cardiology, ophthalmology or endoscopy outside the central PACS'}, + "RESEARCH_IMAGING_PLATFORM": {'description': 'Research-specific imaging informatics database such as XNAT used to manage, store and share imaging data'}, + "MODALITY_WORKSTATION": {'description': 'Acquisition device or attached workstation that exports images through vendor-specific software'}, + "ELECTRONIC_HEALTH_RECORD": {'description': 'Clinical record system that references or embeds imaging studies and provides encounter linkage', 'meaning': 'NCIT:C142529'}, + "PUBLIC_IMAGING_REPOSITORY": {'description': 'Openly accessible imaging data resource such as The Cancer Imaging Archive or OpenNeuro'}, + "CLOUD_IMAGING_ARCHIVE": {'description': 'Cloud-hosted object storage or managed imaging service holding DICOM data'}, +} + +class DICOMValidationIssueTypeEnum(RichEnum): + """ + Categories of problems detected when validating DICOM files and collections for completeness, conformance, metadata consistency, pixel data integrity and plausibility. Used to classify findings from tools such as dciodvfy, dcentvfy, DVTk and pydicom during data reliability workflows. + """ + # Enum members + TRUNCATED_FILE = "TRUNCATED_FILE" + INVALID_VR_ENCODING = "INVALID_VR_ENCODING" + MISSING_REQUIRED_ATTRIBUTE = "MISSING_REQUIRED_ATTRIBUTE" + VALUE_MULTIPLICITY_VIOLATION = "VALUE_MULTIPLICITY_VIOLATION" + VALUE_OUT_OF_RANGE = "VALUE_OUT_OF_RANGE" + INVALID_UID_SYNTAX = "INVALID_UID_SYNTAX" + DUPLICATE_UID = "DUPLICATE_UID" + INCONSISTENT_ENTITY_ATTRIBUTES = "INCONSISTENT_ENTITY_ATTRIBUTES" + DATE_INCONSISTENCY = "DATE_INCONSISTENCY" + IMPLAUSIBLE_VALUE = "IMPLAUSIBLE_VALUE" + NONSTANDARD_PRIVATE_ATTRIBUTE = "NONSTANDARD_PRIVATE_ATTRIBUTE" + IDENTIFIER_LINKAGE_ERROR = "IDENTIFIER_LINKAGE_ERROR" + UNREADABLE_PIXEL_DATA = "UNREADABLE_PIXEL_DATA" + DECOMPRESSION_MISMATCH = "DECOMPRESSION_MISMATCH" + CHECKSUM_MISMATCH = "CHECKSUM_MISMATCH" + PROTECTED_HEALTH_INFORMATION_PRESENT = "PROTECTED_HEALTH_INFORMATION_PRESENT" + +# Set metadata after class creation +DICOMValidationIssueTypeEnum._metadata = { + "TRUNCATED_FILE": {'description': 'The file is incomplete, for example a truncated transfer syntax or missing pixel data at the end of the file', 'annotations': {'category': 'structural'}}, + "INVALID_VR_ENCODING": {'description': 'An attribute is encoded with a Value Representation that does not match the data dictionary or the transfer syntax', 'annotations': {'category': 'structural'}}, + "MISSING_REQUIRED_ATTRIBUTE": {'description': 'A Type 1 or Type 2 attribute required by the IOD, such as StudyInstanceUID or PixelData, is absent', 'annotations': {'category': 'conformance'}}, + "VALUE_MULTIPLICITY_VIOLATION": {'description': 'An attribute has more or fewer values than permitted by its Value Multiplicity', 'annotations': {'category': 'conformance'}}, + "VALUE_OUT_OF_RANGE": {'description': 'An attribute value is outside the enumerated or defined range allowed by the standard', 'annotations': {'category': 'conformance'}}, + "INVALID_UID_SYNTAX": {'description': 'A UID does not conform to DICOM UID syntax, for example non-numeric components or excess length', 'annotations': {'category': 'conformance'}}, + "DUPLICATE_UID": {'description': 'The same SOP Instance UID or other UID is reused across instances that should be distinct', 'annotations': {'category': 'consistency'}}, + "INCONSISTENT_ENTITY_ATTRIBUTES": {'description': 'Attributes that should be identical across instances of the same entity differ, such as instances in one series carrying different Series Instance UIDs', 'annotations': {'category': 'consistency'}}, + "DATE_INCONSISTENCY": {'description': "Dates are mutually inconsistent, such as a study date after the patient's death date or a series date before the study date", 'annotations': {'category': 'plausibility'}}, + "IMPLAUSIBLE_VALUE": {'description': 'A syntactically valid value that is biologically implausible, such as a patient age of 150 years', 'annotations': {'category': 'plausibility'}}, + "NONSTANDARD_PRIVATE_ATTRIBUTE": {'description': "A private tag is present that is not documented in the site's private tag dictionary", 'annotations': {'category': 'documentation'}}, + "IDENTIFIER_LINKAGE_ERROR": {'description': 'Patient or study identifiers do not link correctly to clinical records, or demographics disagree across linked records', 'annotations': {'category': 'consistency'}}, + "UNREADABLE_PIXEL_DATA": {'description': 'The pixel data cannot be decoded, typically due to acquisition or packaging problems', 'annotations': {'category': 'pixel data'}}, + "DECOMPRESSION_MISMATCH": {'description': 'Decompressed pixel data has an unexpected bit depth or differs from the uncompressed original beyond the expected loss', 'annotations': {'category': 'pixel data'}}, + "CHECKSUM_MISMATCH": {'description': "The file's cryptographic hash no longer matches the value recorded at ingest, indicating corruption or alteration", 'annotations': {'category': 'integrity'}}, + "PROTECTED_HEALTH_INFORMATION_PRESENT": {'description': 'Identifying information remains in the header, private tags or pixel data after de-identification', 'annotations': {'category': 'privacy'}}, +} + +class ImageQualityMetricEnum(RichEnum): + """ + Metrics computed during image quality and pixel data validation to document that images are readable and of adequate fidelity for AI applications. Simple metrics can be extended to check conformance with FDA technical performance guidance for quantitative imaging devices where applicable. + """ + # Enum members + PIXEL_READABILITY = "PIXEL_READABILITY" + INTENSITY_HISTOGRAM = "INTENSITY_HISTOGRAM" + SIGNAL_TO_NOISE_RATIO = "SIGNAL_TO_NOISE_RATIO" + CONTRAST_TO_NOISE_RATIO = "CONTRAST_TO_NOISE_RATIO" + SHARPNESS = "SHARPNESS" + BIT_DEPTH = "BIT_DEPTH" + PIXEL_SPACING = "PIXEL_SPACING" + SLICE_THICKNESS = "SLICE_THICKNESS" + COMPRESSION_FIDELITY = "COMPRESSION_FIDELITY" + ARTIFACT_PRESENCE = "ARTIFACT_PRESENCE" + +# Set metadata after class creation +ImageQualityMetricEnum._metadata = { + "PIXEL_READABILITY": {'description': 'Whether the pixel array can be decoded without error'}, + "INTENSITY_HISTOGRAM": {'description': 'Distribution of pixel intensities, checked for extreme outliers, clipping or empty images'}, + "SIGNAL_TO_NOISE_RATIO": {'description': 'Ratio of signal in a region of interest to the standard deviation of background noise', 'meaning': 'NCIT:C94983', 'aliases': ['SNR']}, + "CONTRAST_TO_NOISE_RATIO": {'description': 'Difference in signal between two regions relative to background noise', 'aliases': ['CNR']}, + "SHARPNESS": {'description': 'Measure of edge definition or high-frequency content, such as Laplacian variance'}, + "BIT_DEPTH": {'description': 'Number of bits per pixel stored and allocated, checked for consistency after decompression'}, + "PIXEL_SPACING": {'description': 'Physical distance between pixel centres, checked for presence and plausibility'}, + "SLICE_THICKNESS": {'description': 'Nominal thickness of each slice in a volumetric acquisition, checked for presence and plausibility'}, + "COMPRESSION_FIDELITY": {'description': 'Agreement between compressed and original pixel data, for example comparing a JPEG-compressed instance with its uncompressed source'}, + "ARTIFACT_PRESENCE": {'description': 'Detection of motion, metal, aliasing or other acquisition artifacts'}, +} + +class ImagingInteroperabilityStandardEnum(RichEnum): + """ + Standards and data models used to represent medical imaging metadata and to link images with clinical records, electronic health records and multimodal research datasets. + """ + # Enum members + DICOM = "DICOM" + DICOMWEB = "DICOMWEB" + HL7_FHIR_IMAGINGSTUDY = "HL7_FHIR_IMAGINGSTUDY" + OMOP_CDM_IMAGING_EXTENSION = "OMOP_CDM_IMAGING_EXTENSION" + IHE_PROFILES = "IHE_PROFILES" + BIDS = "BIDS" + NIFTI = "NIFTI" + +# Set metadata after class creation +ImagingInteroperabilityStandardEnum._metadata = { + "DICOM": {'description': 'Digital Imaging and Communications in Medicine (ISO 12052), the standard for storing, transmitting and managing medical imaging data', 'annotations': {'url': 'https://www.dicomstandard.org/'}}, + "DICOMWEB": {'description': 'RESTful web services for DICOM (QIDO-RS, WADO-RS, STOW-RS) defined in DICOM PS3.18', 'annotations': {'url': 'https://www.dicomstandard.org/using/dicomweb'}}, + "HL7_FHIR_IMAGINGSTUDY": {'description': 'FHIR resource representing a DICOM study and its series and instances, used to integrate imaging metadata into FHIR-based systems', 'annotations': {'url': 'https://www.hl7.org/fhir/imagingstudy.html'}}, + "OMOP_CDM_IMAGING_EXTENSION": {'description': 'OHDSI Observational Medical Outcomes Partnership Common Data Model extension for imaging-based observational research, used to link DICOM studies to clinical encounters', 'annotations': {'url': 'https://github.com/OHDSI/OmopImaging'}}, + "IHE_PROFILES": {'description': 'Integrating the Healthcare Enterprise profiles for image sharing and identifier management, such as XDS-I and PIX', 'annotations': {'url': 'https://www.ihe.net/'}}, + "BIDS": {'description': 'Community standard for organizing and describing neuroimaging datasets, commonly used after conversion from DICOM', 'annotations': {'url': 'https://bids.neuroimaging.io/'}}, + "NIFTI": {'description': 'Neuroimaging Informatics Technology Initiative file format for volumetric images, the usual target of DICOM conversion in neuroimaging pipelines', 'annotations': {'url': 'https://nifti.nimh.nih.gov/'}}, +} + +class Bridge2AIDataGenerationProjectEnum(RichEnum): + """ + Data generation projects (Grand Challenges) of the NIH Bridge to Artificial Intelligence (Bridge2AI) program, which creates standardized, annotated, ethically sourced AI-ready datasets across a diverse set of modalities. + """ + # Enum members + CHORUS = "CHORUS" + AI_READI = "AI_READI" + VOICE = "VOICE" + CM4AI = "CM4AI" + +# Set metadata after class creation +Bridge2AIDataGenerationProjectEnum._metadata = { + "CHORUS": {'description': 'Collaborative Hospital Repository Uniting Standards; the AI/ML for Clinical Care Grand Challenge, linking ICU imaging (MRI, CT, ultrasound, X-ray) with physiologic and clinical data', 'annotations': {'url': 'https://bridge2ai.org/data-chorus/'}, 'aliases': ['Clinical Care']}, + "AI_READI": {'description': 'Artificial Intelligence Ready and Equitable Atlas for Diabetes Insights; the Salutogenesis Grand Challenge, including ophthalmology retinal imaging', 'annotations': {'url': 'https://bridge2ai.org/people-ai-readi/'}, 'aliases': ['Salutogenesis']}, + "VOICE": {'description': 'The Precision Public Health Grand Challenge, connecting voice recordings with laryngoscopy video, brain MRI and CT, and omics data', 'annotations': {'url': 'https://bridge2ai.org/people-voice/'}, 'aliases': ['Precision Public Health']}, + "CM4AI": {'description': 'Cell Maps for Artificial Intelligence; the Functional Genomics Grand Challenge, mapping cellular architecture with imaging and proteomics', 'annotations': {'url': 'https://cm4ai.org/'}, 'aliases': ['Functional Genomics']}, +} + +__all__ = [ + "ImagingDataLifecycleStageEnum", + "ImagingDataSourceTypeEnum", + "DICOMValidationIssueTypeEnum", + "ImageQualityMetricEnum", + "ImagingInteroperabilityStandardEnum", + "Bridge2AIDataGenerationProjectEnum", +] \ No newline at end of file diff --git a/src/valuesets/enums/medical/imaging_deidentification.py b/src/valuesets/enums/medical/imaging_deidentification.py new file mode 100644 index 00000000..c7eebbe3 --- /dev/null +++ b/src/valuesets/enums/medical/imaging_deidentification.py @@ -0,0 +1,205 @@ +""" +Medical Image De-identification Value Sets + +Value sets for de-identifying medical imaging data before sharing and reuse. Covers the DICOM PS3.15 Annex E de-identification profile and options (with their DCM codes from Context ID 7050), the action codes that specify how each attribute is treated, the parts of an image object that can carry identifying information, the regulatory frameworks that define what must be removed, and the pixel-level "de-facing" methods and tools used to remove reconstructable facial features from head CT and MRI volumes. +Defacing only addresses pixel data. A complete de-identification pipeline also strips or pseudonymizes protected health information in the DICOM header, and anticipates adversarial re-identification such as face-recognition matching of surface renderings of head scans. + +Generated from: medical/imaging_deidentification.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class DICOMDeidentificationMethodEnum(RichEnum): + """ + The Basic Application Level Confidentiality Profile and its options defined in DICOM PS3.15 Annex E, as coded in PS3.16 Context ID 7050 (De-identification Method). These codes are recorded in the De-identification Method Code Sequence (0012,0064) to document what was done to an instance. The "Clean" options remove additional identifying content; the "Retain" options preserve information that the basic profile would otherwise remove. + """ + # Enum members + BASIC_APPLICATION_CONFIDENTIALITY_PROFILE = "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE" + CLEAN_PIXEL_DATA_OPTION = "CLEAN_PIXEL_DATA_OPTION" + CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION = "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION" + CLEAN_GRAPHICS_OPTION = "CLEAN_GRAPHICS_OPTION" + CLEAN_STRUCTURED_CONTENT_OPTION = "CLEAN_STRUCTURED_CONTENT_OPTION" + CLEAN_DESCRIPTORS_OPTION = "CLEAN_DESCRIPTORS_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION" + RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION = "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION" + RETAIN_PATIENT_CHARACTERISTICS_OPTION = "RETAIN_PATIENT_CHARACTERISTICS_OPTION" + RETAIN_DEVICE_IDENTITY_OPTION = "RETAIN_DEVICE_IDENTITY_OPTION" + RETAIN_UIDS_OPTION = "RETAIN_UIDS_OPTION" + RETAIN_SAFE_PRIVATE_OPTION = "RETAIN_SAFE_PRIVATE_OPTION" + RETAIN_INSTITUTION_IDENTITY_OPTION = "RETAIN_INSTITUTION_IDENTITY_OPTION" + +# Set metadata after class creation +DICOMDeidentificationMethodEnum._metadata = { + "BASIC_APPLICATION_CONFIDENTIALITY_PROFILE": {'description': 'The baseline profile that removes or replaces all attributes known to carry identifying information, including UIDs, dates and descriptive text', 'meaning': 'DCM:113100', 'annotations': {'kind': 'profile'}}, + "CLEAN_PIXEL_DATA_OPTION": {'description': 'Burned-in identifying text and annotations in the pixel data are removed', 'meaning': 'DCM:113101', 'annotations': {'kind': 'clean option'}}, + "CLEAN_RECOGNIZABLE_VISUAL_FEATURES_OPTION": {'description': 'Recognizable visual features such as the face are removed from pixel data; this is the option under which de-facing is recorded', 'meaning': 'DCM:113102', 'annotations': {'kind': 'clean option'}}, + "CLEAN_GRAPHICS_OPTION": {'description': 'Identifying information in graphic annotations, overlays and presentation states is removed', 'meaning': 'DCM:113103', 'annotations': {'kind': 'clean option'}}, + "CLEAN_STRUCTURED_CONTENT_OPTION": {'description': 'Identifying information in structured report content items is removed', 'meaning': 'DCM:113104', 'annotations': {'kind': 'clean option'}}, + "CLEAN_DESCRIPTORS_OPTION": {'description': 'Free-text descriptors such as Study Description are cleaned of identifying content rather than removed', 'meaning': 'DCM:113105', 'annotations': {'kind': 'clean option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_FULL_DATES_OPTION": {'description': 'Dates and times are retained unmodified to preserve the temporal relationship between studies', 'meaning': 'DCM:113106', 'annotations': {'kind': 'retain option'}}, + "RETAIN_LONGITUDINAL_TEMPORAL_INFORMATION_MODIFIED_DATES_OPTION": {'description': 'Dates and times are shifted consistently so that intervals between studies are preserved', 'meaning': 'DCM:113107', 'annotations': {'kind': 'retain option'}}, + "RETAIN_PATIENT_CHARACTERISTICS_OPTION": {'description': 'Physical characteristics such as age, sex, height and weight are retained', 'meaning': 'DCM:113108', 'annotations': {'kind': 'retain option'}}, + "RETAIN_DEVICE_IDENTITY_OPTION": {'description': 'Device identifying attributes such as manufacturer, model and serial number are retained', 'meaning': 'DCM:113109', 'annotations': {'kind': 'retain option'}}, + "RETAIN_UIDS_OPTION": {'description': 'Original UIDs are retained rather than replaced', 'meaning': 'DCM:113110', 'annotations': {'kind': 'retain option'}}, + "RETAIN_SAFE_PRIVATE_OPTION": {'description': 'Private attributes known not to contain identifying information are retained', 'meaning': 'DCM:113111', 'annotations': {'kind': 'retain option'}}, + "RETAIN_INSTITUTION_IDENTITY_OPTION": {'description': 'Institution identifying attributes such as institution name and address are retained', 'meaning': 'DCM:113112', 'annotations': {'kind': 'retain option'}}, +} + +class DICOMDeidentificationActionEnum(RichEnum): + """ + Action codes from DICOM PS3.15 Table E.1-1a that specify how a de-identifier treats each attribute under the Basic Application Level Confidentiality Profile. Compound codes (for example Z/D) indicate that the first action applies unless the attribute's type requires the second to maintain IOD conformance. Permissible values use the DICOM code letters, with slashes replaced by underscores in compound codes. + """ + # Enum members + D = "D" + Z = "Z" + X = "X" + K = "K" + C = "C" + U = "U" + Z_D = "Z_D" + X_Z = "X_Z" + X_D = "X_D" + X_Z_D = "X_Z_D" + X_Z_U = "X_Z_U" + +# Set metadata after class creation +DICOMDeidentificationActionEnum._metadata = { + "D": {'description': 'Replace with a non-zero length value that may be a dummy value and consistent with the VR'}, + "Z": {'description': 'Replace with a zero length value, or a non-zero length value that may be a dummy value and consistent with the VR'}, + "X": {'description': 'Remove the attribute, and if the attribute is a sequence, remove all sequence items and their contained attributes'}, + "K": {'description': 'Keep unchanged for non-sequence attributes; cleaned for sequences'}, + "C": {'description': 'Replace with values of similar meaning known not to contain identifying information and consistent with the VR'}, + "U": {'description': 'Replace with a non-zero length UID that is internally consistent within a set of instances'}, + "Z_D": {'description': 'Z unless D is required to maintain IOD conformance (Type 2 versus Type 1)', 'aliases': ['Z/D']}, + "X_Z": {'description': 'X unless Z is required to maintain IOD conformance (Type 3 versus Type 2)', 'aliases': ['X/Z']}, + "X_D": {'description': 'X unless D is required to maintain IOD conformance (Type 3 versus Type 1)', 'aliases': ['X/D']}, + "X_Z_D": {'description': 'X unless Z or D is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1)', 'aliases': ['X/Z/D']}, + "X_Z_U": {'description': 'X unless Z or replacement of contained instance UIDs (U) is required to maintain IOD conformance (Type 3 versus Type 2 versus Type 1 sequences containing UID references)', 'aliases': ['X/Z/U*']}, +} + +class ImageDeidentificationTargetEnum(RichEnum): + """ + The components of a medical imaging object that can carry identifying information and therefore need to be addressed by a de-identification workflow. A workflow first assesses whether an image requires pixel-level (face or head) de-identification or only metadata de-identification. + """ + # Enum members + HEADER_METADATA = "HEADER_METADATA" + PRIVATE_ATTRIBUTES = "PRIVATE_ATTRIBUTES" + BURNED_IN_ANNOTATION = "BURNED_IN_ANNOTATION" + FACIAL_FEATURES = "FACIAL_FEATURES" + UNIQUE_IDENTIFIERS = "UNIQUE_IDENTIFIERS" + STRUCTURED_CONTENT = "STRUCTURED_CONTENT" + +# Set metadata after class creation +ImageDeidentificationTargetEnum._metadata = { + "HEADER_METADATA": {'description': 'Standard DICOM attributes such as patient name, identifiers, birth date and study dates'}, + "PRIVATE_ATTRIBUTES": {'description': 'Vendor-specific private tags that may contain identifying information and are not covered by the standard attribute list'}, + "BURNED_IN_ANNOTATION": {'description': 'Text or graphics rendered into the pixel data, common in ultrasound, secondary capture and screenshots'}, + "FACIAL_FEATURES": {'description': 'Facial surface anatomy reconstructable from volumetric head CT or MRI pixel data, or visible in photographs and video'}, + "UNIQUE_IDENTIFIERS": {'description': 'Study, series and instance UIDs and accession numbers that can link an instance back to the source system'}, + "STRUCTURED_CONTENT": {'description': 'Identifying content in structured reports, overlays, presentation states and embedded documents'}, +} + +class DeidentificationRegulatoryFrameworkEnum(RichEnum): + """ + Regulations and standards that define when medical imaging data is considered de-identified. Under HIPAA, full-face photographs and comparable images are direct identifiers; under the GDPR, facial images are biometric personal data requiring special handling. + """ + # Enum members + HIPAA_SAFE_HARBOR = "HIPAA_SAFE_HARBOR" + HIPAA_EXPERT_DETERMINATION = "HIPAA_EXPERT_DETERMINATION" + GDPR_ANONYMISATION = "GDPR_ANONYMISATION" + GDPR_PSEUDONYMISATION = "GDPR_PSEUDONYMISATION" + DICOM_PS3_15_CONFIDENTIALITY_PROFILE = "DICOM_PS3_15_CONFIDENTIALITY_PROFILE" + MIDI_TASK_GROUP_RECOMMENDATIONS = "MIDI_TASK_GROUP_RECOMMENDATIONS" + +# Set metadata after class creation +DeidentificationRegulatoryFrameworkEnum._metadata = { + "HIPAA_SAFE_HARBOR": {'description': 'US HIPAA Privacy Rule method requiring removal of 18 specified identifier types, including full-face photographs and comparable images', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(2)'}}, + "HIPAA_EXPERT_DETERMINATION": {'description': 'US HIPAA Privacy Rule method in which a qualified expert determines that the risk of re-identification is very small', 'annotations': {'jurisdiction': 'United States', 'citation': '45 CFR 164.514(b)(1)'}}, + "GDPR_ANONYMISATION": {'description': 'Irreversible processing such that the data subject is no longer identifiable, taking the data outside the scope of the EU General Data Protection Regulation', 'meaning': 'NCIT:C142392', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR anonymisation']}, + "GDPR_PSEUDONYMISATION": {'description': 'Processing so that data can no longer be attributed to a subject without additional information kept separately, as defined in GDPR Article 4(5)', 'meaning': 'NCIT:C142654', 'annotations': {'jurisdiction': 'European Union'}, 'aliases': ['GDPR pseudonymisation']}, + "DICOM_PS3_15_CONFIDENTIALITY_PROFILE": {'description': "The DICOM standard's own de-identification profile and options, designed to satisfy known regulations", 'annotations': {'jurisdiction': 'international'}}, + "MIDI_TASK_GROUP_RECOMMENDATIONS": {'description': 'Best practices and recommendations of the Medical Image De-Identification (MIDI) Task Group (Clunie et al.)', 'annotations': {'jurisdiction': 'international'}}, +} + +class DefacingMethodEnum(RichEnum): + """ + Approaches to pixel-level de-identification that remove or obscure facial features in head imaging. Skull-stripping removes all non-brain tissue and may discard useful anatomy; face-specific methods aim to remove only facial features while preserving as much of the head volume as possible. + """ + # Enum members + SKULL_STRIPPING = "SKULL_STRIPPING" + TEMPLATE_BASED_MASKING = "TEMPLATE_BASED_MASKING" + SURFACE_BLURRING = "SURFACE_BLURRING" + SHEARING_PLANE = "SHEARING_PLANE" + DEEP_LEARNING_SEGMENTATION = "DEEP_LEARNING_SEGMENTATION" + REFACING = "REFACING" + MANUAL_MASKING = "MANUAL_MASKING" + FACE_DETECTION_AND_BLURRING = "FACE_DETECTION_AND_BLURRING" + MANUAL_CROP_OR_BLUR = "MANUAL_CROP_OR_BLUR" + +# Set metadata after class creation +DefacingMethodEnum._metadata = { + "SKULL_STRIPPING": {'description': 'Removal of all non-brain tissue including scalp, skull and face, for example with FSL BET or AFNI 3dSkullStrip', 'annotations': {'preserves_skull': 'false'}, 'aliases': ['brain extraction']}, + "TEMPLATE_BASED_MASKING": {'description': 'Registration of the image to a standard brain template such as MNI152 followed by application of a predefined binary face mask that zeros out facial voxels', 'annotations': {'preserves_skull': 'true', 'example_tools': 'PyDeface, FreeSurfer mri_deface, mydeface'}}, + "SURFACE_BLURRING": {'description': 'Diffusion or blurring of face surface voxels to obscure identity while preserving head shape, as in Milchenko and Marcus (2013)', 'annotations': {'preserves_skull': 'true'}}, + "SHEARING_PLANE": {'description': 'Removal of the front of the head by computing a plane through the head and discarding voxels in front of it, as in QuickShear', 'annotations': {'preserves_skull': 'partial'}, 'aliases': ['cropping plane']}, + "DEEP_LEARNING_SEGMENTATION": {'description': 'Use of a trained neural network such as a 3D U-Net to segment facial features (eyes, ears, nose) and mask or blur them', 'annotations': {'preserves_skull': 'true', 'example_tools': 'DeepDefacer, Asan Defacer'}}, + "REFACING": {'description': "Replacement of the subject's face with an average or synthetic face so that images retain a realistic head surface", 'annotations': {'preserves_skull': 'true', 'example_tools': 'AFNI refacer'}}, + "MANUAL_MASKING": {'description': 'Interactive painting or erosion of a face mask in an image editor such as 3D Slicer or ITK-SNAP, followed by zeroing or blurring of masked voxels', 'annotations': {'preserves_skull': 'true'}}, + "FACE_DETECTION_AND_BLURRING": {'description': 'Frame-by-frame detection of faces in 2D images or video followed by blurring, pixelation or masking, for example with OpenCV Haar cascades', 'annotations': {'applicable_to': 'photographs, video'}}, + "MANUAL_CROP_OR_BLUR": {'description': 'Manual cropping or blurring of the face region in photographs or video with an image or video editor', 'annotations': {'applicable_to': 'photographs, video'}}, +} + +class DefacingToolEnum(RichEnum): + """ + Software tools and pipelines used for pixel-level de-identification of head imaging and photographs, with their supported modalities, method and licensing. Metadata-only anonymizers are included for completeness because they are commonly paired with defacing tools, but they do not remove facial features. + """ + # Enum members + PYDEFACE = "PYDEFACE" + FREESURFER_MRI_DEFACE = "FREESURFER_MRI_DEFACE" + AFNI_REFACER = "AFNI_REFACER" + QUICKSHEAR = "QUICKSHEAR" + DEEPDEFACER = "DEEPDEFACER" + ASAN_DEFACER = "ASAN_DEFACER" + MYDEFACE = "MYDEFACE" + MASK_FACE = "MASK_FACE" + FSL_BET = "FSL_BET" + AFNI_3DSKULLSTRIP = "AFNI_3DSKULLSTRIP" + ITK_SNAP = "ITK_SNAP" + SLICER_3D = "SLICER_3D" + IMAGEJ_FIJI = "IMAGEJ_FIJI" + OPENCV = "OPENCV" + OSIRIX_HOROS_PLUGIN = "OSIRIX_HOROS_PLUGIN" + PIXELMED_DICOM_ANONYMIZER = "PIXELMED_DICOM_ANONYMIZER" + MANUAL_PHOTO_VIDEO_EDITING = "MANUAL_PHOTO_VIDEO_EDITING" + +# Set metadata after class creation +DefacingToolEnum._metadata = { + "PYDEFACE": {'description': 'Aligns a T1-weighted MRI to a template with FSL FLIRT and zeros out voxels in a predefined facial mask', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/poldracklab/pydeface'}}, + "FREESURFER_MRI_DEFACE": {'description': 'Template mask defacing using affine registration to fit a generic face mask, distributed with FreeSurfer', 'annotations': {'modality': 'MRI (T1w)', 'method': 'template-based masking', 'license': 'FreeSurfer'}}, + "AFNI_REFACER": {'description': 'AFNI template-based defacing and refacing tool, often combined with skull stripping', 'annotations': {'modality': 'MRI (T1w)', 'method': 'refacing', 'license': 'AFNI (open source)'}}, + "QUICKSHEAR": {'description': 'Computes a shearing plane through the head and removes the front of the head', 'annotations': {'modality': 'MRI (T1w)', 'method': 'shearing plane', 'license': 'open source'}}, + "DEEPDEFACER": {'description': '3D U-Net trained to generate a facial mask from T1 MRI scans', 'annotations': {'modality': 'MRI (T1w, T2w)', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "ASAN_DEFACER": {'description': '3D U-Net that segments eyes, ears and nose and masks them, applicable to MRI and CT', 'annotations': {'modality': 'MRI, CT', 'method': 'deep learning segmentation', 'license': 'open source'}}, + "MYDEFACE": {'description': 'Defacing utility similar to PyDeface using an FSL FLIRT-registered mask', 'annotations': {'modality': 'MRI (T1w, FLAIR)', 'method': 'template-based masking', 'license': 'BSD', 'url': 'https://github.com/neurolabusc/mydeface'}}, + "MASK_FACE": {'description': 'Surface blurring tool from Milchenko and Marcus that obscures surface anatomy in volumetric data', 'annotations': {'modality': 'MRI, CT', 'method': 'surface blurring', 'license': 'open source'}}, + "FSL_BET": {'description': 'FMRIB Software Library Brain Extraction Tool; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'FSL (open source)'}}, + "AFNI_3DSKULLSTRIP": {'description': 'AFNI brain extraction program; removes all non-brain tissue', 'annotations': {'modality': 'MRI, CT, PET', 'method': 'skull stripping', 'license': 'AFNI (open source)'}}, + "ITK_SNAP": {'description': 'Interactive segmentation tool used to manually paint or erode a face mask in any 3D volume', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'GPL'}}, + "SLICER_3D": {'description': 'Image computing platform used to manually paint a face mask over a region of interest', 'annotations': {'modality': 'any 3D volume', 'method': 'manual masking', 'license': 'BSD-style'}}, + "IMAGEJ_FIJI": {'description': 'General image analysis tools used to manually blur or crop the face region in 2D or 3D images', 'annotations': {'modality': '2D and 3D images', 'method': 'manual crop or blur', 'license': 'open source'}}, + "OPENCV": {'description': 'Computer vision library used for face detection (for example Haar cascades) followed by blurring or pixelation in video and 2D images', 'annotations': {'modality': 'video, 2D images', 'method': 'face detection and blurring', 'license': 'Apache-2.0'}}, + "OSIRIX_HOROS_PLUGIN": {'description': 'Viewer plugins offering built-in anonymization with face removal options for multi-modality DICOM', 'annotations': {'modality': 'DICOM (multi-modality)', 'method': 'template-based masking', 'license': 'commercial / free'}}, + "PIXELMED_DICOM_ANONYMIZER": {'description': 'Metadata anonymization only; does not mask faces', 'annotations': {'modality': 'DICOM files', 'method': 'metadata anonymization', 'license': 'BSD'}}, + "MANUAL_PHOTO_VIDEO_EDITING": {'description': 'Cropping or blurring faces in photographs and videos with general-purpose editors', 'annotations': {'modality': 'photographs, video', 'method': 'manual crop or blur'}}, +} + +__all__ = [ + "DICOMDeidentificationMethodEnum", + "DICOMDeidentificationActionEnum", + "ImageDeidentificationTargetEnum", + "DeidentificationRegulatoryFrameworkEnum", + "DefacingMethodEnum", + "DefacingToolEnum", +] \ No newline at end of file diff --git a/src/valuesets/enums/process_engineering/__init__.py b/src/valuesets/enums/process_engineering/__init__.py new file mode 100644 index 00000000..633c553c --- /dev/null +++ b/src/valuesets/enums/process_engineering/__init__.py @@ -0,0 +1 @@ +"""Auto-generated package.""" diff --git a/src/valuesets/enums/process_engineering/process_industries.py b/src/valuesets/enums/process_engineering/process_industries.py new file mode 100644 index 00000000..386eb9b4 --- /dev/null +++ b/src/valuesets/enums/process_engineering/process_industries.py @@ -0,0 +1,86 @@ +""" +Process Industry Value Sets + +Value sets categorizing process industries and process operation modes. The process industry categories generalize the top-level process categories used by the PISCES Standard Flowsheet Format (Biofuel, Chemical, Energy, Pharmaceutical, Food Product) into a more comprehensive set of process manufacturing sectors. + +Generated from: process_engineering/process_industries.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class ProcessIndustryCategory(RichEnum): + """ + Sectors of the process (continuous and batch) manufacturing industries. The pisces_category annotation records the corresponding top-level category in the PISCES Standard Flowsheet Format where one exists. + """ + # Enum members + PETROLEUM_REFINING = "PETROLEUM_REFINING" + PETROCHEMICAL = "PETROCHEMICAL" + BULK_CHEMICAL = "BULK_CHEMICAL" + SPECIALTY_CHEMICAL = "SPECIALTY_CHEMICAL" + AGROCHEMICAL = "AGROCHEMICAL" + POLYMER_AND_PLASTICS = "POLYMER_AND_PLASTICS" + PHARMACEUTICAL = "PHARMACEUTICAL" + BIOTECHNOLOGY = "BIOTECHNOLOGY" + BIOFUEL = "BIOFUEL" + FOOD_AND_BEVERAGE = "FOOD_AND_BEVERAGE" + PULP_AND_PAPER = "PULP_AND_PAPER" + METALS_AND_MINING = "METALS_AND_MINING" + WATER_AND_WASTEWATER_TREATMENT = "WATER_AND_WASTEWATER_TREATMENT" + POWER_GENERATION = "POWER_GENERATION" + GAS_PROCESSING = "GAS_PROCESSING" + CEMENT_AND_CONSTRUCTION_MATERIALS = "CEMENT_AND_CONSTRUCTION_MATERIALS" + GLASS_AND_CERAMICS = "GLASS_AND_CERAMICS" + TEXTILE = "TEXTILE" + COSMETICS_AND_PERSONAL_CARE = "COSMETICS_AND_PERSONAL_CARE" + NUCLEAR_FUEL = "NUCLEAR_FUEL" + SEMICONDUCTOR = "SEMICONDUCTOR" + +# Set metadata after class creation +ProcessIndustryCategory._metadata = { + "PETROLEUM_REFINING": {'description': 'Refining of crude oil into fuels and feedstocks', 'annotations': {'pisces_category': 'Energy'}}, + "PETROCHEMICAL": {'description': 'Production of chemicals derived from petroleum and natural gas', 'annotations': {'pisces_category': 'Chemical'}}, + "BULK_CHEMICAL": {'description': 'Large-volume production of commodity chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "SPECIALTY_CHEMICAL": {'description': 'Production of lower-volume, high-value performance chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "AGROCHEMICAL": {'description': 'Production of fertilizers, pesticides, and other agricultural chemicals', 'annotations': {'pisces_category': 'Chemical'}}, + "POLYMER_AND_PLASTICS": {'description': 'Production of polymers, resins, and plastic materials', 'annotations': {'pisces_category': 'Chemical'}}, + "PHARMACEUTICAL": {'description': 'Manufacture of active pharmaceutical ingredients and drug products', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOTECHNOLOGY": {'description': 'Manufacture of products using biological systems and fermentation', 'annotations': {'pisces_category': 'Pharmaceutical'}}, + "BIOFUEL": {'description': 'Production of biologically derived fuels such as ethanol and biodiesel', 'annotations': {'pisces_category': 'Biofuel'}}, + "FOOD_AND_BEVERAGE": {'description': 'Processing and manufacture of food and beverage products', 'annotations': {'pisces_category': 'Food Product'}}, + "PULP_AND_PAPER": {'description': 'Production of pulp, paper, and board from fiber'}, + "METALS_AND_MINING": {'description': 'Extraction and processing of metals and minerals'}, + "WATER_AND_WASTEWATER_TREATMENT": {'description': 'Treatment of water and wastewater streams'}, + "POWER_GENERATION": {'description': 'Generation of electrical power and process heat', 'annotations': {'pisces_category': 'Energy'}}, + "GAS_PROCESSING": {'description': 'Processing and separation of natural gas and industrial gases', 'annotations': {'pisces_category': 'Energy'}}, + "CEMENT_AND_CONSTRUCTION_MATERIALS": {'description': 'Production of cement, lime, and construction materials'}, + "GLASS_AND_CERAMICS": {'description': 'Manufacture of glass and ceramic products'}, + "TEXTILE": {'description': 'Production and finishing of textile fibers and fabrics'}, + "COSMETICS_AND_PERSONAL_CARE": {'description': 'Manufacture of cosmetics and personal care products'}, + "NUCLEAR_FUEL": {'description': 'Processing of nuclear fuel materials', 'annotations': {'pisces_category': 'Energy'}}, + "SEMICONDUCTOR": {'description': 'Fabrication of semiconductor and microelectronic materials'}, +} + +class ProcessOperationMode(RichEnum): + """ + The temporal mode in which a process or unit operation is run. + """ + # Enum members + BATCH = "BATCH" + CONTINUOUS = "CONTINUOUS" + SEMI_BATCH = "SEMI_BATCH" + SEMI_CONTINUOUS = "SEMI_CONTINUOUS" + +# Set metadata after class creation +ProcessOperationMode._metadata = { + "BATCH": {'description': 'Material is charged, processed, and discharged in discrete batches'}, + "CONTINUOUS": {'description': 'Material flows through the process steadily without interruption'}, + "SEMI_BATCH": {'description': 'A hybrid mode where some streams are continuous while others are batch-wise'}, + "SEMI_CONTINUOUS": {'description': 'Process alternates between continuous operation and periodic interruptions'}, +} + +__all__ = [ + "ProcessIndustryCategory", + "ProcessOperationMode", +] \ No newline at end of file diff --git a/src/valuesets/enums/process_engineering/process_modeling.py b/src/valuesets/enums/process_engineering/process_modeling.py new file mode 100644 index 00000000..47302a93 --- /dev/null +++ b/src/valuesets/enums/process_engineering/process_modeling.py @@ -0,0 +1,107 @@ +""" +Process Modeling Value Sets + +Value sets describing how process flowsheets and unit operations are modeled and solved - unit-operation design/simulation methods, flowsheet solution approaches, and process simulator software. These cover the design_simulation_method and process_simulator fields of the PISCES Standard Flowsheet Format, which are otherwise free strings. + +Generated from: process_engineering/process_modeling.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class DesignSimulationMethod(RichEnum): + """ + Methods used to design or simulate unit operations, particularly separation columns - ranging from graphical and shortcut methods to rigorous stage-by-stage and rate-based models. + """ + # Enum members + MCCABE_THIELE = "MCCABE_THIELE" + PONCHON_SAVARIT = "PONCHON_SAVARIT" + FENSKE_UNDERWOOD_GILLILAND = "FENSKE_UNDERWOOD_GILLILAND" + KREMSER = "KREMSER" + MESH = "MESH" + INSIDE_OUT = "INSIDE_OUT" + RATE_BASED = "RATE_BASED" + EQUILIBRIUM_STAGE = "EQUILIBRIUM_STAGE" + SHORTCUT = "SHORTCUT" + RIGOROUS = "RIGOROUS" + PINCH_ANALYSIS = "PINCH_ANALYSIS" + +# Set metadata after class creation +DesignSimulationMethod._metadata = { + "MCCABE_THIELE": {'description': 'McCabe-Thiele graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "PONCHON_SAVARIT": {'description': 'Ponchon-Savarit enthalpy-composition graphical method for binary distillation', 'annotations': {'method_class': 'GRAPHICAL'}}, + "FENSKE_UNDERWOOD_GILLILAND": {'description': 'Fenske-Underwood-Gilliland shortcut method for multicomponent distillation', 'annotations': {'method_class': 'SHORTCUT', 'abbreviation': 'FUG'}}, + "KREMSER": {'description': 'Kremser shortcut method for absorber and stripper design', 'annotations': {'method_class': 'SHORTCUT'}}, + "MESH": {'description': 'Rigorous equilibrium-stage solution of the Material, Equilibrium, Summation and Heat (enthalpy) equations', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "INSIDE_OUT": {'description': 'Inside-out algorithm for rigorous equilibrium-stage column convergence', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "RATE_BASED": {'description': 'Rate-based (nonequilibrium) model accounting for mass and heat transfer rates', 'annotations': {'method_class': 'RATE_BASED'}}, + "EQUILIBRIUM_STAGE": {'description': 'Generic equilibrium-stage model assuming each stage reaches phase equilibrium', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "SHORTCUT": {'description': 'Generic shortcut / approximate design method', 'annotations': {'method_class': 'SHORTCUT'}}, + "RIGOROUS": {'description': 'Generic rigorous design method', 'annotations': {'method_class': 'RIGOROUS_EQUILIBRIUM'}}, + "PINCH_ANALYSIS": {'description': 'Pinch analysis for heat-exchanger network and energy integration', 'annotations': {'method_class': 'ENERGY_INTEGRATION'}}, +} + +class FlowsheetSolutionApproach(RichEnum): + """ + The overall computational strategy used to converge a process flowsheet. + """ + # Enum members + SEQUENTIAL_MODULAR = "SEQUENTIAL_MODULAR" + EQUATION_ORIENTED = "EQUATION_ORIENTED" + SIMULTANEOUS_MODULAR = "SIMULTANEOUS_MODULAR" + +# Set metadata after class creation +FlowsheetSolutionApproach._metadata = { + "SEQUENTIAL_MODULAR": {'description': 'Units solved one at a time in sequence, iterating on recycle tear streams'}, + "EQUATION_ORIENTED": {'description': 'All model equations assembled and solved simultaneously'}, + "SIMULTANEOUS_MODULAR": {'description': 'Hybrid approach combining modular unit models with a simultaneous convergence layer'}, +} + +class ProcessSimulator(RichEnum): + """ + Process simulation software packages used to model chemical and biochemical process flowsheets. + """ + # Enum members + ASPEN_PLUS = "ASPEN_PLUS" + ASPEN_HYSYS = "ASPEN_HYSYS" + ASPEN_CUSTOM_MODELER = "ASPEN_CUSTOM_MODELER" + UNISIM_DESIGN = "UNISIM_DESIGN" + PRO_II = "PRO_II" + AVEVA_PROCESS_SIMULATION = "AVEVA_PROCESS_SIMULATION" + CHEMCAD = "CHEMCAD" + DWSIM = "DWSIM" + COCO_SIMULATOR = "COCO_SIMULATOR" + GPROMS = "GPROMS" + PROSIMPLUS = "PROSIMPLUS" + PETRO_SIM = "PETRO_SIM" + BIOSTEAM = "BIOSTEAM" + SUPERPRO_DESIGNER = "SUPERPRO_DESIGNER" + IDAES = "IDAES" + CAPE_OPEN = "CAPE_OPEN" + +# Set metadata after class creation +ProcessSimulator._metadata = { + "ASPEN_PLUS": {'description': 'Aspen Plus steady-state process simulator (AspenTech)'}, + "ASPEN_HYSYS": {'description': 'Aspen HYSYS process simulator (AspenTech)'}, + "ASPEN_CUSTOM_MODELER": {'description': 'Aspen Custom Modeler for user-defined unit operation models (AspenTech)'}, + "UNISIM_DESIGN": {'description': 'Honeywell UniSim Design process simulator'}, + "PRO_II": {'description': 'AVEVA Pro/II (formerly SimSci Pro/II) process simulator'}, + "AVEVA_PROCESS_SIMULATION": {'description': 'AVEVA Process Simulation (formerly SimCentral)'}, + "CHEMCAD": {'description': 'ChemCAD process simulator (Chemstations)'}, + "DWSIM": {'description': 'DWSIM open-source CAPE-OPEN process simulator'}, + "COCO_SIMULATOR": {'description': 'COCO/COFE free CAPE-OPEN flowsheeting environment'}, + "GPROMS": {'description': 'gPROMS equation-oriented process modeling environment (Siemens / PSE)'}, + "PROSIMPLUS": {'description': 'ProSimPlus steady-state process simulator (ProSim)'}, + "PETRO_SIM": {'description': 'KBC Petro-SIM process simulator'}, + "BIOSTEAM": {'description': 'BioSTEAM open-source biorefinery simulation and techno-economic analysis package'}, + "SUPERPRO_DESIGNER": {'description': 'SuperPro Designer batch and bioprocess simulator (Intelligen)'}, + "IDAES": {'description': 'IDAES open-source equation-oriented process systems engineering platform (US DOE)'}, + "CAPE_OPEN": {'description': 'A CAPE-OPEN compliant simulator or unit (interoperability standard, simulator unspecified)'}, +} + +__all__ = [ + "DesignSimulationMethod", + "FlowsheetSolutionApproach", + "ProcessSimulator", +] \ No newline at end of file diff --git a/src/valuesets/enums/process_engineering/process_streams.py b/src/valuesets/enums/process_engineering/process_streams.py new file mode 100644 index 00000000..0f3eb5b4 --- /dev/null +++ b/src/valuesets/enums/process_engineering/process_streams.py @@ -0,0 +1,129 @@ +""" +Process Engineering Stream Value Sets + +Value sets describing process streams - the material and energy flows that connect unit operations in a process flowsheet (the edges of a process graph, e.g. in the PISCES Standard Flowsheet Format). Covers the role a stream plays in the process, its physical (phase) state, and common plant utility types. + +Generated from: process_engineering/process_streams.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class ProcessStreamRole(RichEnum): + """ + The functional role of a stream within a process flowsheet, independent of its chemical composition. + """ + # Enum members + FEED = "FEED" + RAW_MATERIAL = "RAW_MATERIAL" + PRODUCT = "PRODUCT" + BYPRODUCT = "BYPRODUCT" + INTERMEDIATE = "INTERMEDIATE" + RECYCLE = "RECYCLE" + PURGE = "PURGE" + BLEED = "BLEED" + MAKEUP = "MAKEUP" + WASTE = "WASTE" + EFFLUENT = "EFFLUENT" + EMISSION = "EMISSION" + UTILITY = "UTILITY" + +# Set metadata after class creation +ProcessStreamRole._metadata = { + "FEED": {'description': 'A stream entering the process or a unit operation as input'}, + "RAW_MATERIAL": {'description': 'A fresh raw material or reactant stream entering the process battery limits'}, + "PRODUCT": {'description': 'A primary product stream of commercial value leaving the process'}, + "BYPRODUCT": {'description': 'A secondary saleable or usable product produced alongside the main product'}, + "INTERMEDIATE": {'description': 'A stream flowing between unit operations within the process'}, + "RECYCLE": {'description': 'A stream returned to an upstream point for reprocessing'}, + "PURGE": {'description': 'A stream withdrawn from a recycle loop to prevent accumulation of inerts or impurities'}, + "BLEED": {'description': 'A small continuous stream withdrawn to control composition or level'}, + "MAKEUP": {'description': 'A stream added to replenish material lost from a circulating loop'}, + "WASTE": {'description': 'A stream with no further use that must be treated or disposed of'}, + "EFFLUENT": {'description': 'A liquid waste stream discharged from the process'}, + "EMISSION": {'description': 'A gaseous stream released to the atmosphere'}, + "UTILITY": {'description': 'A service stream (e.g. steam, cooling water) supplied to a unit operation'}, +} + +class ProcessStreamPhase(RichEnum): + """ + The physical phase or phase combination of a process stream. For single-phase fundamental states see also StateOfMatterEnum in the physics module; this enum adds the multiphase combinations common in process engineering. + """ + # Enum members + GAS = "GAS" + LIQUID = "LIQUID" + SOLID = "SOLID" + SUPERCRITICAL = "SUPERCRITICAL" + VAPOR_LIQUID = "VAPOR_LIQUID" + LIQUID_LIQUID = "LIQUID_LIQUID" + VAPOR_LIQUID_LIQUID = "VAPOR_LIQUID_LIQUID" + SLURRY = "SLURRY" + GAS_SOLID = "GAS_SOLID" + MULTIPHASE = "MULTIPHASE" + +# Set metadata after class creation +ProcessStreamPhase._metadata = { + "GAS": {'description': 'A single gas or vapor phase', 'annotations': {'sff_phase_code': 'g'}}, + "LIQUID": {'description': 'A single liquid phase', 'annotations': {'sff_phase_code': 'l'}}, + "SOLID": {'description': 'A single solid phase', 'annotations': {'sff_phase_code': 's'}}, + "SUPERCRITICAL": {'description': 'A supercritical fluid above its critical temperature and pressure'}, + "VAPOR_LIQUID": {'description': 'A two-phase mixture of vapor and liquid'}, + "LIQUID_LIQUID": {'description': 'A two-phase mixture of two immiscible liquids'}, + "VAPOR_LIQUID_LIQUID": {'description': 'A three-phase mixture of a vapor and two immiscible liquids'}, + "SLURRY": {'description': 'A suspension of solids in a liquid'}, + "GAS_SOLID": {'description': 'A two-phase mixture of gas and entrained or fluidized solids'}, + "MULTIPHASE": {'description': 'A stream containing more than one phase, of mixed or unspecified composition'}, +} + +class UtilityType(RichEnum): + """ + Common plant utilities consumed or produced by process unit operations, used for energy and mass balance accounting on a flowsheet. + """ + # Enum members + STEAM = "STEAM" + LOW_PRESSURE_STEAM = "LOW_PRESSURE_STEAM" + MEDIUM_PRESSURE_STEAM = "MEDIUM_PRESSURE_STEAM" + HIGH_PRESSURE_STEAM = "HIGH_PRESSURE_STEAM" + COOLING_WATER = "COOLING_WATER" + CHILLED_WATER = "CHILLED_WATER" + REFRIGERANT = "REFRIGERANT" + HOT_OIL = "HOT_OIL" + BRINE = "BRINE" + ELECTRICITY = "ELECTRICITY" + PROCESS_WATER = "PROCESS_WATER" + DEMINERALIZED_WATER = "DEMINERALIZED_WATER" + NATURAL_GAS = "NATURAL_GAS" + FUEL_GAS = "FUEL_GAS" + COMPRESSED_AIR = "COMPRESSED_AIR" + INSTRUMENT_AIR = "INSTRUMENT_AIR" + NITROGEN = "NITROGEN" + FLARE = "FLARE" + +# Set metadata after class creation +UtilityType._metadata = { + "STEAM": {'description': 'Process steam used for heating or stripping', 'annotations': {'utility_category': 'HEAT'}}, + "LOW_PRESSURE_STEAM": {'description': 'Low-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '<3 barg'}}, + "MEDIUM_PRESSURE_STEAM": {'description': 'Medium-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '3-20 barg'}}, + "HIGH_PRESSURE_STEAM": {'description': 'High-pressure steam utility', 'annotations': {'utility_category': 'HEAT', 'typical_range': '>20 barg'}}, + "COOLING_WATER": {'description': 'Recirculated cooling water for heat rejection', 'annotations': {'utility_category': 'HEAT'}}, + "CHILLED_WATER": {'description': 'Refrigerated water for below-ambient cooling', 'annotations': {'utility_category': 'HEAT'}}, + "REFRIGERANT": {'description': 'Refrigerant fluid for low-temperature cooling duty', 'annotations': {'utility_category': 'HEAT'}}, + "HOT_OIL": {'description': 'Thermal oil heat-transfer fluid for high-temperature heating', 'annotations': {'utility_category': 'HEAT'}}, + "BRINE": {'description': 'Chilled brine used as a low-temperature coolant', 'annotations': {'utility_category': 'HEAT'}}, + "ELECTRICITY": {'description': 'Electrical power supplied to drivers and equipment', 'annotations': {'utility_category': 'POWER'}}, + "PROCESS_WATER": {'description': 'Treated water used as a process input', 'annotations': {'utility_category': 'OTHER'}}, + "DEMINERALIZED_WATER": {'description': 'High-purity demineralized water utility', 'annotations': {'utility_category': 'OTHER'}}, + "NATURAL_GAS": {'description': 'Natural gas supplied as fuel or feedstock', 'annotations': {'utility_category': 'OTHER'}}, + "FUEL_GAS": {'description': 'Fuel gas burned in fired heaters and boilers', 'annotations': {'utility_category': 'OTHER'}}, + "COMPRESSED_AIR": {'description': 'Compressed air utility for process or actuation use', 'annotations': {'utility_category': 'OTHER'}}, + "INSTRUMENT_AIR": {'description': 'Clean dry compressed air for instrumentation', 'annotations': {'utility_category': 'OTHER'}}, + "NITROGEN": {'description': 'Nitrogen used for inerting, blanketing, or purging', 'annotations': {'utility_category': 'OTHER'}}, + "FLARE": {'description': 'Flare system for safe combustion of relieved gases', 'annotations': {'utility_category': 'OTHER'}}, +} + +__all__ = [ + "ProcessStreamRole", + "ProcessStreamPhase", + "UtilityType", +] \ No newline at end of file diff --git a/src/valuesets/enums/process_engineering/thermodynamics.py b/src/valuesets/enums/process_engineering/thermodynamics.py new file mode 100644 index 00000000..d4fcf7fa --- /dev/null +++ b/src/valuesets/enums/process_engineering/thermodynamics.py @@ -0,0 +1,173 @@ +""" +Process Thermodynamics Value Sets + +Value sets for the thermodynamic models used in process simulation - equations of state, activity-coefficient (excess Gibbs energy) models, mixing rules, Poynting corrections, and the named property packages that combine them. These cover the thermo_property_package fields (mixture, gamma, phi, PCF) of the PISCES Standard Flowsheet Format, which are otherwise free strings. + +Generated from: process_engineering/thermodynamics.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class EquationOfStateModel(RichEnum): + """ + Equations of state used to compute fugacity coefficients and PVT behavior of fluids in process simulation (the SFF phi method). + """ + # Enum members + IDEAL_GAS = "IDEAL_GAS" + VIRIAL = "VIRIAL" + REDLICH_KWONG = "REDLICH_KWONG" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + PENG_ROBINSON = "PENG_ROBINSON" + PENG_ROBINSON_BOSTON_MATHIAS = "PENG_ROBINSON_BOSTON_MATHIAS" + SRK_BOSTON_MATHIAS = "SRK_BOSTON_MATHIAS" + LEE_KESLER_PLOCKER = "LEE_KESLER_PLOCKER" + BENEDICT_WEBB_RUBIN_STARLING = "BENEDICT_WEBB_RUBIN_STARLING" + PREDICTIVE_SRK = "PREDICTIVE_SRK" + PC_SAFT = "PC_SAFT" + CUBIC_PLUS_ASSOCIATION = "CUBIC_PLUS_ASSOCIATION" + GERG_2008 = "GERG_2008" + IAPWS_95 = "IAPWS_95" + +# Set metadata after class creation +EquationOfStateModel._metadata = { + "IDEAL_GAS": {'description': 'Ideal gas law, assuming no intermolecular interactions'}, + "VIRIAL": {'description': 'Virial equation of state expressed as a power series in density or pressure'}, + "REDLICH_KWONG": {'description': 'Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'RK'}}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave modification of the Redlich-Kwong cubic equation of state', 'annotations': {'abbreviation': 'SRK'}}, + "PENG_ROBINSON": {'description': 'Peng-Robinson cubic equation of state', 'annotations': {'abbreviation': 'PR'}}, + "PENG_ROBINSON_BOSTON_MATHIAS": {'description': 'Peng-Robinson with Boston-Mathias alpha function for supercritical extrapolation', 'annotations': {'abbreviation': 'PR-BM'}}, + "SRK_BOSTON_MATHIAS": {'description': 'Soave-Redlich-Kwong with Boston-Mathias alpha function', 'annotations': {'abbreviation': 'SRK-BM'}}, + "LEE_KESLER_PLOCKER": {'description': 'Lee-Kesler-Plocker corresponding-states equation of state', 'annotations': {'abbreviation': 'LKP'}}, + "BENEDICT_WEBB_RUBIN_STARLING": {'description': 'Benedict-Webb-Rubin-Starling equation of state for light hydrocarbons', 'annotations': {'abbreviation': 'BWRS'}}, + "PREDICTIVE_SRK": {'description': 'Predictive SRK combining SRK with a UNIFAC-based mixing rule', 'annotations': {'abbreviation': 'PSRK'}}, + "PC_SAFT": {'description': 'Perturbed-chain statistical associating fluid theory equation of state', 'annotations': {'abbreviation': 'PC-SAFT'}}, + "CUBIC_PLUS_ASSOCIATION": {'description': 'Cubic-plus-association equation of state for associating fluids', 'annotations': {'abbreviation': 'CPA'}}, + "GERG_2008": {'description': 'GERG-2008 reference equation of state for natural gas mixtures'}, + "IAPWS_95": {'description': 'IAPWS-95 reference formulation for the thermodynamic properties of water', 'annotations': {'aliases': 'steam tables'}}, +} + +class ActivityCoefficientModel(RichEnum): + """ + Excess Gibbs energy / activity-coefficient models for non-ideal liquid phases (the SFF gamma method). + """ + # Enum members + IDEAL = "IDEAL" + MARGULES = "MARGULES" + VAN_LAAR = "VAN_LAAR" + REGULAR_SOLUTION = "REGULAR_SOLUTION" + WILSON = "WILSON" + NRTL = "NRTL" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + UNIFAC_DORTMUND = "UNIFAC_DORTMUND" + FLORY_HUGGINS = "FLORY_HUGGINS" + PITZER = "PITZER" + COSMO_SAC = "COSMO_SAC" + +# Set metadata after class creation +ActivityCoefficientModel._metadata = { + "IDEAL": {'description': "Ideal solution, all activity coefficients equal to one (Raoult's law)"}, + "MARGULES": {'description': 'Margules two-parameter activity-coefficient model'}, + "VAN_LAAR": {'description': 'Van Laar activity-coefficient model'}, + "REGULAR_SOLUTION": {'description': 'Scatchard-Hildebrand regular solution model based on solubility parameters'}, + "WILSON": {'description': 'Wilson local-composition activity-coefficient model'}, + "NRTL": {'description': 'Non-random two-liquid local-composition activity-coefficient model'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL model for systems containing ions', 'annotations': {'abbreviation': 'eNRTL'}}, + "UNIQUAC": {'description': 'Universal quasi-chemical activity-coefficient model'}, + "UNIFAC": {'description': 'UNIQUAC functional-group activity-coefficient (group-contribution) model'}, + "UNIFAC_DORTMUND": {'description': 'Modified UNIFAC (Dortmund) group-contribution model'}, + "FLORY_HUGGINS": {'description': 'Flory-Huggins model for polymer solutions'}, + "PITZER": {'description': 'Pitzer model for aqueous electrolyte activity coefficients'}, + "COSMO_SAC": {'description': 'COSMO-based segment activity-coefficient model from quantum chemistry', 'annotations': {'aliases': 'COSMO-RS, COSMO-SAC'}}, +} + +class ThermodynamicPropertyPackage(RichEnum): + """ + Named property methods/packages offered by process simulators, typically combining an equation of state and/or an activity-coefficient model. Used where a single package label rather than separate gamma/phi methods is recorded. + """ + # Enum members + IDEAL = "IDEAL" + NRTL = "NRTL" + NRTL_RK = "NRTL_RK" + UNIQUAC = "UNIQUAC" + UNIFAC = "UNIFAC" + WILSON = "WILSON" + VAN_LAAR = "VAN_LAAR" + PENG_ROBINSON = "PENG_ROBINSON" + SOAVE_REDLICH_KWONG = "SOAVE_REDLICH_KWONG" + ELECTROLYTE_NRTL = "ELECTROLYTE_NRTL" + PITZER = "PITZER" + CHAO_SEADER = "CHAO_SEADER" + GRAYSON_STREED = "GRAYSON_STREED" + BRAUN_K10 = "BRAUN_K10" + PC_SAFT = "PC_SAFT" + STEAM_TABLES = "STEAM_TABLES" + API_SOUR = "API_SOUR" + +# Set metadata after class creation +ThermodynamicPropertyPackage._metadata = { + "IDEAL": {'description': "Ideal (Raoult's law) property package"}, + "NRTL": {'description': 'NRTL activity model with ideal or RK vapor phase'}, + "NRTL_RK": {'description': 'NRTL activity model with Redlich-Kwong vapor phase'}, + "UNIQUAC": {'description': 'UNIQUAC activity model property package'}, + "UNIFAC": {'description': 'UNIFAC group-contribution property package'}, + "WILSON": {'description': 'Wilson activity model property package'}, + "VAN_LAAR": {'description': 'Van Laar activity model property package'}, + "PENG_ROBINSON": {'description': 'Peng-Robinson equation-of-state property package'}, + "SOAVE_REDLICH_KWONG": {'description': 'Soave-Redlich-Kwong equation-of-state property package'}, + "ELECTROLYTE_NRTL": {'description': 'Electrolyte NRTL property package for ionic systems'}, + "PITZER": {'description': 'Pitzer property package for aqueous electrolytes'}, + "CHAO_SEADER": {'description': 'Chao-Seader semi-empirical package for hydrocarbon systems'}, + "GRAYSON_STREED": {'description': 'Grayson-Streed package for hydrogen-rich hydrocarbon systems'}, + "BRAUN_K10": {'description': 'Braun K10 package for low-pressure heavy hydrocarbon systems', 'annotations': {'abbreviation': 'BK10'}}, + "PC_SAFT": {'description': 'PC-SAFT equation-of-state property package'}, + "STEAM_TABLES": {'description': 'Steam-table (IAPWS / ASME) property package for water and steam'}, + "API_SOUR": {'description': 'API sour-water package for systems with acid gases and ammonia'}, +} + +class MixingRuleModel(RichEnum): + """ + Mixing rules applied to equation-of-state parameters for mixtures (the SFF mixture method). + """ + # Enum members + IDEAL = "IDEAL" + VAN_DER_WAALS = "VAN_DER_WAALS" + HURON_VIDAL = "HURON_VIDAL" + MODIFIED_HURON_VIDAL = "MODIFIED_HURON_VIDAL" + WONG_SANDLER = "WONG_SANDLER" + PSRK_MIXING = "PSRK_MIXING" + +# Set metadata after class creation +MixingRuleModel._metadata = { + "IDEAL": {'description': 'Ideal mixing, no excess properties'}, + "VAN_DER_WAALS": {'description': 'Classical van der Waals one-fluid mixing rule with binary interaction parameters', 'annotations': {'aliases': 'classical, quadratic mixing rule'}}, + "HURON_VIDAL": {'description': 'Huron-Vidal mixing rule coupling an equation of state to an excess Gibbs energy model'}, + "MODIFIED_HURON_VIDAL": {'description': 'Modified Huron-Vidal first/second order mixing rules', 'annotations': {'aliases': 'MHV1, MHV2'}}, + "WONG_SANDLER": {'description': 'Wong-Sandler mixing rule with correct low- and high-density limits'}, + "PSRK_MIXING": {'description': 'Predictive SRK (PSRK) mixing rule based on UNIFAC'}, +} + +class PoyntingCorrectionMethod(RichEnum): + """ + Treatment of the Poynting correction factor accounting for the effect of pressure on liquid fugacity (the SFF PCF method). + """ + # Enum members + NONE = "NONE" + POYNTING = "POYNTING" + +# Set metadata after class creation +PoyntingCorrectionMethod._metadata = { + "NONE": {'description': 'No Poynting correction applied'}, + "POYNTING": {'description': 'Poynting correction factor applied to the liquid fugacity'}, +} + +__all__ = [ + "EquationOfStateModel", + "ActivityCoefficientModel", + "ThermodynamicPropertyPackage", + "MixingRuleModel", + "PoyntingCorrectionMethod", +] \ No newline at end of file diff --git a/src/valuesets/enums/process_engineering/unit_operations.py b/src/valuesets/enums/process_engineering/unit_operations.py new file mode 100644 index 00000000..a1e28104 --- /dev/null +++ b/src/valuesets/enums/process_engineering/unit_operations.py @@ -0,0 +1,226 @@ +""" +Process Engineering Unit Operations Value Sets + +Value sets for chemical and process engineering unit operations and process equipment. Unit operations are the fundamental processing steps (separation, reaction, heat/mass transfer, solids handling) that compose a process flowsheet, while process equipment types are the physical assets that implement them. These value sets are intended to support flowsheet data models such as the PISCES Standard Flowsheet Format (SFF), where unit operations / equipment are the nodes of a process graph. + +Generated from: process_engineering/unit_operations.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class UnitOperationType(RichEnum): + """ + Fundamental chemical and process engineering unit operations - the discrete processing steps that transform, separate, combine, or move process material. Grouped (via the unit_operation_class annotation) into momentum transfer, heat transfer, mass-transfer separations, mechanical separations, solids processing, reaction, and storage. + """ + # Enum members + PUMPING = "PUMPING" + COMPRESSION = "COMPRESSION" + GAS_MOVING = "GAS_MOVING" + FLOW_SPLITTING = "FLOW_SPLITTING" + STREAM_MIXING = "STREAM_MIXING" + HEAT_EXCHANGE = "HEAT_EXCHANGE" + HEATING = "HEATING" + COOLING = "COOLING" + CONDENSATION = "CONDENSATION" + EVAPORATION = "EVAPORATION" + DISTILLATION = "DISTILLATION" + ABSORPTION = "ABSORPTION" + STRIPPING = "STRIPPING" + LIQUID_LIQUID_EXTRACTION = "LIQUID_LIQUID_EXTRACTION" + LEACHING = "LEACHING" + ADSORPTION = "ADSORPTION" + ION_EXCHANGE = "ION_EXCHANGE" + CHROMATOGRAPHY = "CHROMATOGRAPHY" + CRYSTALLIZATION = "CRYSTALLIZATION" + PRECIPITATION = "PRECIPITATION" + DRYING = "DRYING" + FREEZE_DRYING = "FREEZE_DRYING" + HUMIDIFICATION = "HUMIDIFICATION" + MEMBRANE_SEPARATION = "MEMBRANE_SEPARATION" + MICROFILTRATION = "MICROFILTRATION" + ULTRAFILTRATION = "ULTRAFILTRATION" + NANOFILTRATION = "NANOFILTRATION" + REVERSE_OSMOSIS = "REVERSE_OSMOSIS" + DIALYSIS = "DIALYSIS" + ELECTRODIALYSIS = "ELECTRODIALYSIS" + PERVAPORATION = "PERVAPORATION" + FILTRATION = "FILTRATION" + CENTRIFUGATION = "CENTRIFUGATION" + SEDIMENTATION = "SEDIMENTATION" + CLARIFICATION = "CLARIFICATION" + FLOTATION = "FLOTATION" + FLOCCULATION = "FLOCCULATION" + CYCLONE_SEPARATION = "CYCLONE_SEPARATION" + SCREENING = "SCREENING" + GAS_LIQUID_SEPARATION = "GAS_LIQUID_SEPARATION" + SIZE_REDUCTION = "SIZE_REDUCTION" + SIZE_ENLARGEMENT = "SIZE_ENLARGEMENT" + MIXING = "MIXING" + SOLIDS_CONVEYING = "SOLIDS_CONVEYING" + CHEMICAL_REACTION = "CHEMICAL_REACTION" + FERMENTATION = "FERMENTATION" + COMBUSTION = "COMBUSTION" + GASIFICATION = "GASIFICATION" + PYROLYSIS = "PYROLYSIS" + ELECTROLYSIS = "ELECTROLYSIS" + NEUTRALIZATION = "NEUTRALIZATION" + PURIFICATION = "PURIFICATION" + STORAGE = "STORAGE" + +# Set metadata after class creation +UnitOperationType._metadata = { + "PUMPING": {'description': 'Raising the pressure or moving of a liquid stream using a pump', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "COMPRESSION": {'description': 'Raising the pressure of a gas or vapor stream using a compressor', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "GAS_MOVING": {'description': 'Moving a gas stream at low pressure rise using a fan or blower', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "FLOW_SPLITTING": {'description': 'Dividing a single stream into two or more streams of identical composition', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "STREAM_MIXING": {'description': 'Combining two or more streams into a single stream', 'annotations': {'unit_operation_class': 'MOMENTUM_TRANSFER'}}, + "HEAT_EXCHANGE": {'description': 'Transfer of thermal energy between two streams without phase-change intent', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "HEATING": {'description': 'Raising the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "COOLING": {'description': 'Lowering the temperature of a process stream', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "CONDENSATION": {'description': 'Converting a vapor to a liquid by removing heat', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "EVAPORATION": {'description': 'Concentrating a solution by vaporizing solvent, typically water', 'meaning': 'CHMO:0001574', 'annotations': {'unit_operation_class': 'HEAT_TRANSFER'}}, + "DISTILLATION": {'description': 'Separation of components by differences in volatility (boiling point)', 'meaning': 'CHMO:0001532', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ABSORPTION": {'description': 'Selective transfer of one or more gas-phase components into a liquid solvent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "STRIPPING": {'description': 'Selective transfer of dissolved components from a liquid into a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LIQUID_LIQUID_EXTRACTION": {'description': 'Separation by partitioning of solutes between two immiscible liquid phases', 'meaning': 'CHMO:0001577', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "LEACHING": {'description': 'Solid-liquid extraction of soluble components from a solid using a solvent', 'meaning': 'CHMO:0001681', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ADSORPTION": {'description': 'Selective uptake of components onto the surface of a solid sorbent', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "ION_EXCHANGE": {'description': 'Reversible exchange of ions between a solution and a solid ion-exchange resin', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CHROMATOGRAPHY": {'description': 'Separation by differential partitioning of solutes between a mobile and stationary phase', 'meaning': 'CHMO:0001000', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "CRYSTALLIZATION": {'description': 'Formation of a solid crystalline phase from a solution or melt', 'meaning': 'PROCO:0000052', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "PRECIPITATION": {'description': 'Formation of an insoluble solid from solution by chemical or physical means', 'meaning': 'CHMO:0001688', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "DRYING": {'description': 'Removal of a liquid (usually water) from a solid or surface by vaporization', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "FREEZE_DRYING": {'description': 'Removal of solvent by sublimation from the frozen state (lyophilization)', 'meaning': 'CHMO:0001553', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION', 'aliases': 'lyophilization'}}, + "HUMIDIFICATION": {'description': 'Addition of water vapor to a gas stream', 'annotations': {'unit_operation_class': 'MASS_TRANSFER_SEPARATION'}}, + "MEMBRANE_SEPARATION": {'description': 'Separation of stream components using a semipermeable membrane', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "MICROFILTRATION": {'description': 'Membrane separation retaining particles roughly 0.1-10 micrometers', 'meaning': 'CHMO:0001641', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ULTRAFILTRATION": {'description': 'Membrane separation retaining macromolecules and colloids', 'meaning': 'CHMO:0001645', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "NANOFILTRATION": {'description': 'Membrane separation retaining small molecules and multivalent ions', 'meaning': 'CHMO:0001642', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "REVERSE_OSMOSIS": {'description': 'Pressure-driven membrane separation rejecting dissolved salts and small solutes', 'meaning': 'CHMO:0001643', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "DIALYSIS": {'description': 'Diffusive membrane separation of solutes across a concentration gradient', 'meaning': 'CHMO:0001522', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "ELECTRODIALYSIS": {'description': 'Membrane separation of ions driven by an applied electric field', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "PERVAPORATION": {'description': 'Membrane separation combining permeation and partial vaporization of the permeate', 'annotations': {'unit_operation_class': 'MEMBRANE_SEPARATION'}}, + "FILTRATION": {'description': 'Separation of solids from a fluid by passage through a porous medium', 'meaning': 'CHMO:0001640', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CENTRIFUGATION": {'description': 'Separation of phases by density difference under centrifugal force', 'meaning': 'OBI:0302886', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SEDIMENTATION": {'description': 'Gravity separation of suspended solids or immiscible liquids by settling', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CLARIFICATION": {'description': 'Removal of suspended solids from a liquid to produce a clarified stream', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOTATION": {'description': 'Separation of solids or droplets by attachment to rising gas bubbles', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "FLOCCULATION": {'description': 'Aggregation of fine suspended particles into larger flocs to aid separation', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "CYCLONE_SEPARATION": {'description': 'Separation of particles from a fluid using centrifugal force in a cyclone', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SCREENING": {'description': 'Separation of particulate solids by size using a screen or sieve', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "GAS_LIQUID_SEPARATION": {'description': 'Disengagement of vapor and liquid phases, e.g. in a flash or knockout drum', 'annotations': {'unit_operation_class': 'MECHANICAL_SEPARATION'}}, + "SIZE_REDUCTION": {'description': 'Reduction of particle size by crushing, grinding, or milling (comminution)', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SIZE_ENLARGEMENT": {'description': 'Increase of particle size by granulation, agglomeration, or pelletizing', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "MIXING": {'description': 'Blending of materials to achieve compositional or thermal uniformity', 'meaning': 'CHMO:0001685', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "SOLIDS_CONVEYING": {'description': 'Transport of bulk particulate solids between process steps', 'annotations': {'unit_operation_class': 'SOLIDS_PROCESSING'}}, + "CHEMICAL_REACTION": {'description': 'Chemical conversion of reactants to products in a reactor', 'annotations': {'unit_operation_class': 'REACTION'}}, + "FERMENTATION": {'description': 'Microbial or enzymatic conversion of substrate to product in a bioreactor', 'meaning': 'CHMO:0001624', 'annotations': {'unit_operation_class': 'REACTION'}}, + "COMBUSTION": {'description': 'Exothermic oxidation of a fuel, typically to generate heat or power', 'meaning': 'CHMO:0001473', 'annotations': {'unit_operation_class': 'REACTION'}}, + "GASIFICATION": {'description': 'Conversion of carbonaceous feedstock to synthesis gas under limited oxygen', 'meaning': 'CHMO:0001501', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PYROLYSIS": {'description': 'Thermal decomposition of material in the absence of oxygen', 'meaning': 'CHMO:0001502', 'annotations': {'unit_operation_class': 'REACTION'}}, + "ELECTROLYSIS": {'description': 'Driving a non-spontaneous chemical reaction using electrical energy', 'annotations': {'unit_operation_class': 'REACTION'}}, + "NEUTRALIZATION": {'description': 'Adjustment of pH by reaction of acid and base', 'annotations': {'unit_operation_class': 'REACTION'}}, + "PURIFICATION": {'description': 'Removal of impurities to increase the purity of a product stream', 'meaning': 'CHMO:0002231', 'annotations': {'unit_operation_class': 'SEPARATION'}}, + "STORAGE": {'description': 'Holding of material in a vessel or tank between process steps', 'annotations': {'unit_operation_class': 'STORAGE'}}, +} + +class ProcessEquipmentType(RichEnum): + """ + Physical equipment / asset types used in process plants. These correspond to the nodes of a process flowsheet and complement UnitOperationType (which describes the function performed). Grouped via the equipment_class annotation. + """ + # Enum members + STORAGE_TANK = "STORAGE_TANK" + PRESSURE_VESSEL = "PRESSURE_VESSEL" + HOPPER = "HOPPER" + FLASH_DRUM = "FLASH_DRUM" + KNOCKOUT_DRUM = "KNOCKOUT_DRUM" + REACTOR = "REACTOR" + BIOREACTOR = "BIOREACTOR" + FERMENTER = "FERMENTER" + DISTILLATION_COLUMN = "DISTILLATION_COLUMN" + ABSORPTION_COLUMN = "ABSORPTION_COLUMN" + STRIPPING_COLUMN = "STRIPPING_COLUMN" + EXTRACTION_COLUMN = "EXTRACTION_COLUMN" + CHROMATOGRAPHY_COLUMN = "CHROMATOGRAPHY_COLUMN" + SCRUBBER = "SCRUBBER" + HEAT_EXCHANGER = "HEAT_EXCHANGER" + CONDENSER = "CONDENSER" + REBOILER = "REBOILER" + EVAPORATOR = "EVAPORATOR" + FURNACE = "FURNACE" + BOILER = "BOILER" + COOLING_TOWER = "COOLING_TOWER" + DRYER = "DRYER" + CRYSTALLIZER = "CRYSTALLIZER" + PUMP = "PUMP" + COMPRESSOR = "COMPRESSOR" + BLOWER = "BLOWER" + FAN = "FAN" + VALVE = "VALVE" + CENTRIFUGE = "CENTRIFUGE" + FILTER = "FILTER" + DECANTER = "DECANTER" + CLARIFIER = "CLARIFIER" + CYCLONE = "CYCLONE" + HYDROCYCLONE = "HYDROCYCLONE" + MEMBRANE_MODULE = "MEMBRANE_MODULE" + SETTLER = "SETTLER" + MIXER = "MIXER" + AGITATOR = "AGITATOR" + MILL = "MILL" + CRUSHER = "CRUSHER" + SCREEN = "SCREEN" + CONVEYOR = "CONVEYOR" + +# Set metadata after class creation +ProcessEquipmentType._metadata = { + "STORAGE_TANK": {'description': 'Atmospheric or low-pressure vessel for holding liquids or solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "PRESSURE_VESSEL": {'description': 'Vessel designed to hold contents at elevated pressure', 'annotations': {'equipment_class': 'VESSEL'}}, + "HOPPER": {'description': 'Funnel-shaped vessel for storing and discharging bulk solids', 'annotations': {'equipment_class': 'VESSEL'}}, + "FLASH_DRUM": {'description': 'Vessel for separating vapor and liquid produced by a pressure let-down', 'annotations': {'equipment_class': 'VESSEL'}}, + "KNOCKOUT_DRUM": {'description': 'Vessel that removes entrained liquid from a gas stream', 'annotations': {'equipment_class': 'VESSEL'}}, + "REACTOR": {'description': 'Vessel in which chemical reactions are carried out', 'annotations': {'equipment_class': 'REACTOR', 'subtypes': 'CSTR, plug-flow, batch, fixed-bed, fluidized-bed'}}, + "BIOREACTOR": {'description': 'Vessel for culturing cells or carrying out enzymatic reactions', 'meaning': 'OBI:0001046', 'annotations': {'equipment_class': 'REACTOR'}}, + "FERMENTER": {'description': 'Bioreactor configured for microbial fermentation', 'annotations': {'equipment_class': 'REACTOR'}}, + "DISTILLATION_COLUMN": {'description': 'Column with trays or packing for vapor-liquid separation by distillation', 'annotations': {'equipment_class': 'COLUMN'}}, + "ABSORPTION_COLUMN": {'description': 'Column for gas absorption into a liquid solvent', 'annotations': {'equipment_class': 'COLUMN'}}, + "STRIPPING_COLUMN": {'description': 'Column for stripping volatile components from a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "EXTRACTION_COLUMN": {'description': 'Column for liquid-liquid extraction', 'annotations': {'equipment_class': 'COLUMN'}}, + "CHROMATOGRAPHY_COLUMN": {'description': 'Column packed with a stationary phase for chromatographic separation', 'meaning': 'OBI:0000038', 'annotations': {'equipment_class': 'COLUMN'}}, + "SCRUBBER": {'description': 'Contactor for removing pollutants or particulates from a gas using a liquid', 'annotations': {'equipment_class': 'COLUMN'}}, + "HEAT_EXCHANGER": {'description': 'Equipment that transfers heat between two fluid streams', 'annotations': {'equipment_class': 'HEAT_TRANSFER', 'subtypes': 'shell-and-tube, plate, air-cooled'}}, + "CONDENSER": {'description': 'Heat exchanger that condenses a vapor to liquid', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "REBOILER": {'description': 'Heat exchanger that supplies boilup at the base of a distillation column', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "EVAPORATOR": {'description': 'Equipment that concentrates a solution by vaporizing solvent', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "FURNACE": {'description': 'Fired heater that raises stream temperature by combustion', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "BOILER": {'description': 'Equipment that generates steam by transferring combustion heat to water', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "COOLING_TOWER": {'description': 'Equipment that rejects process heat to the atmosphere by evaporative cooling', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "DRYER": {'description': 'Equipment for removing liquid from solids by vaporization', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "CRYSTALLIZER": {'description': 'Equipment for producing crystalline solids from solution or melt', 'annotations': {'equipment_class': 'HEAT_TRANSFER'}}, + "PUMP": {'description': 'Machine that moves or pressurizes a liquid', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "COMPRESSOR": {'description': 'Machine that raises the pressure of a gas', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "BLOWER": {'description': 'Machine that moves gas at a low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "FAN": {'description': 'Machine that moves large gas volumes at very low pressure rise', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "VALVE": {'description': 'Device that regulates, directs, or controls stream flow', 'annotations': {'equipment_class': 'FLUID_MOVER'}}, + "CENTRIFUGE": {'description': 'Equipment that separates phases by density under centrifugal force', 'meaning': 'OBI:0400106', 'annotations': {'equipment_class': 'SEPARATION'}}, + "FILTER": {'description': 'Equipment that separates solids from a fluid using a porous medium', 'annotations': {'equipment_class': 'SEPARATION'}}, + "DECANTER": {'description': 'Equipment that separates immiscible liquids or settled solids by gravity', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CLARIFIER": {'description': 'Settling tank that removes suspended solids from a liquid', 'annotations': {'equipment_class': 'SEPARATION'}}, + "CYCLONE": {'description': 'Device that separates particles from a fluid by centrifugal action', 'annotations': {'equipment_class': 'SEPARATION'}}, + "HYDROCYCLONE": {'description': 'Cyclone that separates solids or immiscible liquids from a liquid stream', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MEMBRANE_MODULE": {'description': 'Housing containing membrane elements for a membrane separation', 'annotations': {'equipment_class': 'SEPARATION'}}, + "SETTLER": {'description': 'Vessel allowing phases to separate by gravity settling', 'annotations': {'equipment_class': 'SEPARATION'}}, + "MIXER": {'description': 'Equipment for blending streams or materials', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "AGITATOR": {'description': 'Impeller-driven device that mixes vessel contents', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "MILL": {'description': 'Equipment that reduces particle size by grinding or crushing', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CRUSHER": {'description': 'Equipment that reduces large solids by mechanical force', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "SCREEN": {'description': 'Equipment that classifies particulate solids by size', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, + "CONVEYOR": {'description': 'Equipment that transports bulk solids between locations', 'annotations': {'equipment_class': 'SOLIDS_HANDLING'}}, +} + +__all__ = [ + "UnitOperationType", + "ProcessEquipmentType", +] \ No newline at end of file diff --git a/src/valuesets/enums/statistics/statistical_tests.py b/src/valuesets/enums/statistics/statistical_tests.py new file mode 100644 index 00000000..686a20af --- /dev/null +++ b/src/valuesets/enums/statistics/statistical_tests.py @@ -0,0 +1,360 @@ +""" +Statistical Test Value Sets + +Value sets for statistical hypothesis tests and closely related concepts, including t-tests, ANOVA, non-parametric tests, normality and homoscedasticity tests, post-hoc multiple comparison procedures, multiple testing correction methods, correlation coefficients, and test tailedness. Terms are mapped to STATO (the Statistical Methods Ontology) where possible, falling back to OBI and NCIT. + +Generated from: statistics/statistical_tests.yaml +""" + +from __future__ import annotations + +from valuesets.generators.rich_enum import RichEnum + +class StatisticalTestEnum(RichEnum): + """ + Statistical hypothesis tests, drawn primarily from the descendants of 'statistical hypothesis test' (OBI:0000673) in STATO. + This enum deliberately mixes abstraction levels: alongside concrete tests it retains STATO's grouping classes (GOODNESS_OF_FIT_TEST, HOMOSKEDASTICITY_TEST, SPHERICITY_TEST, POST_HOC_ANALYSIS, NON_PARAMETRIC_TEST and similar) so that a source reporting only "a test of normality was applied" can still be annotated. Prefer the most specific value that the source supports, and use a grouping value only when the specific test is genuinely not stated. + Several values are also repeated in the narrower enums below (TTestTypeEnum, NormalityTestEnum, HomoscedasticityTestEnum, PostHocTestEnum), which exist to constrain slot ranges. The duplicated meanings are intentional; from_meaning() resolves per enum class. + """ + # Enum members + STUDENTS_T_TEST = "STUDENTS_T_TEST" + ONE_SAMPLE_T_TEST = "ONE_SAMPLE_T_TEST" + PAIRED_T_TEST = "PAIRED_T_TEST" + TWO_SAMPLE_T_TEST_EQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE" + TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE = "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE" + YUEN_T_TEST = "YUEN_T_TEST" + Z_TEST = "Z_TEST" + ONE_SAMPLE_HOTELLING_T2_TEST = "ONE_SAMPLE_HOTELLING_T2_TEST" + TWO_SAMPLE_HOTELLING_T2_TEST = "TWO_SAMPLE_HOTELLING_T2_TEST" + ANOVA = "ANOVA" + ONE_WAY_ANOVA = "ONE_WAY_ANOVA" + TWO_WAY_ANOVA = "TWO_WAY_ANOVA" + MULTIWAY_ANOVA = "MULTIWAY_ANOVA" + REPEATED_MEASURES_ANOVA = "REPEATED_MEASURES_ANOVA" + MANOVA = "MANOVA" + ANCOVA = "ANCOVA" + F_TEST = "F_TEST" + MANN_WHITNEY_U_TEST = "MANN_WHITNEY_U_TEST" + WILCOXON_SIGNED_RANK_TEST = "WILCOXON_SIGNED_RANK_TEST" + KRUSKAL_WALLIS_TEST = "KRUSKAL_WALLIS_TEST" + FRIEDMAN_TEST = "FRIEDMAN_TEST" + SIGN_TEST = "SIGN_TEST" + CHI_SQUARE_TEST = "CHI_SQUARE_TEST" + PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE = "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE" + PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST = "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST" + YATES_CORRECTED_CHI_SQUARE_TEST = "YATES_CORRECTED_CHI_SQUARE_TEST" + CHI_SQUARE_TEST_FOR_HOMOGENEITY = "CHI_SQUARE_TEST_FOR_HOMOGENEITY" + FISHERS_EXACT_TEST = "FISHERS_EXACT_TEST" + BARNARDS_TEST = "BARNARDS_TEST" + MCNEMAR_TEST = "MCNEMAR_TEST" + COCHRANS_Q_TEST = "COCHRANS_Q_TEST" + COCHRAN_ARMITAGE_TEST_FOR_TREND = "COCHRAN_ARMITAGE_TEST_FOR_TREND" + COCHRAN_MANTEL_HAENSZEL_TEST = "COCHRAN_MANTEL_HAENSZEL_TEST" + EXACT_BINOMIAL_TEST = "EXACT_BINOMIAL_TEST" + HYPERGEOMETRIC_TEST = "HYPERGEOMETRIC_TEST" + TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES = "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES" + GOODNESS_OF_FIT_TEST = "GOODNESS_OF_FIT_TEST" + SHAPIRO_WILK_TEST = "SHAPIRO_WILK_TEST" + KOLMOGOROV_SMIRNOV_TEST = "KOLMOGOROV_SMIRNOV_TEST" + ANDERSON_DARLING_TEST = "ANDERSON_DARLING_TEST" + HOSMER_LEMESHOW_TEST = "HOSMER_LEMESHOW_TEST" + LEVENES_TEST = "LEVENES_TEST" + BARTLETTS_TEST = "BARTLETTS_TEST" + BROWN_FORSYTHE_TEST = "BROWN_FORSYTHE_TEST" + BREUSCH_PAGAN_TEST = "BREUSCH_PAGAN_TEST" + HOMOSKEDASTICITY_TEST = "HOMOSKEDASTICITY_TEST" + HOMOGENEITY_TEST = "HOMOGENEITY_TEST" + SPHERICITY_TEST = "SPHERICITY_TEST" + MAUCHLYS_TEST = "MAUCHLYS_TEST" + ODDS_RATIO_HOMOGENEITY_TEST = "ODDS_RATIO_HOMOGENEITY_TEST" + BRESLOW_DAY_TEST = "BRESLOW_DAY_TEST" + TARONES_TEST = "TARONES_TEST" + WOOLFS_TEST = "WOOLFS_TEST" + POST_HOC_ANALYSIS = "POST_HOC_ANALYSIS" + TUKEY_HSD_TEST = "TUKEY_HSD_TEST" + NEWMAN_KEULS_TEST = "NEWMAN_KEULS_TEST" + SCHEFFE_TEST = "SCHEFFE_TEST" + LEAST_SIGNIFICANT_DIFFERENCE_TEST = "LEAST_SIGNIFICANT_DIFFERENCE_TEST" + DUNNS_TEST = "DUNNS_TEST" + CONOVER_IMAN_TEST = "CONOVER_IMAN_TEST" + GRUBBS_TEST = "GRUBBS_TEST" + DIXON_Q_TEST = "DIXON_Q_TEST" + TIETJEN_MOORE_TEST = "TIETJEN_MOORE_TEST" + GENERALIZED_ESD_TEST = "GENERALIZED_ESD_TEST" + LIKELIHOOD_RATIO_TEST = "LIKELIHOOD_RATIO_TEST" + WALD_TEST = "WALD_TEST" + LOG_RANK_TEST = "LOG_RANK_TEST" + HARDY_WEINBERG_EQUILIBRIUM_TEST = "HARDY_WEINBERG_EQUILIBRIUM_TEST" + TRANSMISSION_DISEQUILIBRIUM_TEST = "TRANSMISSION_DISEQUILIBRIUM_TEST" + PEARSON_CORRELATION_TEST = "PEARSON_CORRELATION_TEST" + SPEARMAN_CORRELATION_TEST = "SPEARMAN_CORRELATION_TEST" + AB_TEST = "AB_TEST" + BETWEEN_GROUP_COMPARISON_TEST = "BETWEEN_GROUP_COMPARISON_TEST" + WITHIN_SUBJECT_COMPARISON_TEST = "WITHIN_SUBJECT_COMPARISON_TEST" + NON_PARAMETRIC_TEST = "NON_PARAMETRIC_TEST" + +# Set metadata after class creation +StatisticalTestEnum._metadata = { + "STUDENTS_T_TEST": {'description': "Test in which the test statistic follows a Student's t distribution under the null hypothesis; used when the population is assumed normal but the sample is small", 'meaning': 'OBI:0000739', 'aliases': ['t-test', 't-Test']}, + "ONE_SAMPLE_T_TEST": {'description': "Student's t-test comparing a sample mean against a specified population mean", 'meaning': 'STATO:0000302'}, + "PAIRED_T_TEST": {'description': "Student's t-test for differences between paired observations, as in a repeated measures design with two measurements per subject", 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_T_TEST_EQUAL_VARIANCE": {'description': 'Two-sample t-test comparing the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303', 'annotations': {'note': 'The bare terms "unpaired t-test" and "independent samples t-test" are ambiguous: they are attached here because this is the classical equal-variance form, but common software defaults to the Welch variant (R\'s t.test, scipy.stats.ttest_ind with equal_var=False). Choose TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE when the source did not assume equal variances.'}, 'aliases': ['independent samples t-test', 'unpaired t-test']}, + "TWO_SAMPLE_T_TEST_UNEQUAL_VARIANCE": {'description': 'Two-sample t-test used when the variances of the two populations are not assumed equal', 'meaning': 'STATO:0000304', 'annotations': {'note': 'This is the default two-sample t-test in R and SciPy, so an unqualified "unpaired t-test" in a methods section often means this rather than TWO_SAMPLE_T_TEST_EQUAL_VARIANCE.'}, 'aliases': ["Welch's t-test"]}, + "YUEN_T_TEST": {'description': 'Robust two-sample t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, + "Z_TEST": {'description': 'Test evaluating the null hypothesis that the means of two populations are equal using a normal reference distribution', 'meaning': 'STATO:0000052'}, + "ONE_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate extension of the one-sample t-test comparing a vector of means against a reference vector', 'meaning': 'STATO:0000153'}, + "TWO_SAMPLE_HOTELLING_T2_TEST": {'description': 'Multivariate generalization of the two-sample t-test comparing mean vectors of two populations', 'meaning': 'STATO:0000098'}, + "ANOVA": {'description': 'Analysis of variance testing whether the means of several groups are equal', 'meaning': 'OBI:0200201', 'aliases': ['analysis of variance']}, + "ONE_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of a single independent variable', 'meaning': 'STATO:0000044'}, + "TWO_WAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of exactly two independent variables', 'meaning': 'STATO:0000045'}, + "MULTIWAY_ANOVA": {'description': 'Analysis of variance in which the groups compared correspond to the levels of more than two independent variables', 'meaning': 'STATO:0000048'}, + "REPEATED_MEASURES_ANOVA": {'description': 'Analysis of variance developed for non-independent observations arising from repeated measurements on the same experimental unit', 'meaning': 'STATO:0000260'}, + "MANOVA": {'description': 'Procedure for comparing multivariate sample means when there are two or more dependent variables', 'meaning': 'STATO:0000454'}, + "ANCOVA": {'description': 'Analysis of covariance evaluating whether population means of a dependent variable are equal across levels of a categorical independent variable while controlling for covariates', 'meaning': 'STATO:0000179', 'aliases': ['analysis of covariance']}, + "F_TEST": {'description': 'Test in which the test statistic follows an F-distribution under the null hypothesis', 'meaning': 'STATO:0000086'}, + "MANN_WHITNEY_U_TEST": {'description': 'Non-parametric test comparing two independent groups without assuming normally distributed values', 'meaning': 'STATO:0000076', 'aliases': ['Wilcoxon rank sum test', 'Mann-Whitney Test']}, + "WILCOXON_SIGNED_RANK_TEST": {'description': 'Non-parametric test of the null hypothesis that the median difference between paired observations is zero', 'meaning': 'STATO:0000092'}, + "KRUSKAL_WALLIS_TEST": {'description': 'Non-parametric test comparing two or more groups without assuming normally distributed values', 'meaning': 'STATO:0000094', 'aliases': ['Kruskal-Wallis Test']}, + "FRIEDMAN_TEST": {'description': 'Non-parametric test for differences among multiple related groups; extension of the Wilcoxon signed-rank test to more than two conditions', 'meaning': 'STATO:0000641'}, + "SIGN_TEST": {'description': 'Non-parametric test assessing whether the median of a population equals a specified value', 'meaning': 'STATO:0000644'}, + "CHI_SQUARE_TEST": {'description': 'Test in which the sampling distribution of the test statistic is a chi-square distribution under the null hypothesis', 'meaning': 'OBI:0200200'}, + "PEARSON_CHI_SQUARE_TEST_OF_INDEPENDENCE": {'description': 'Chi-square test of the independence of two categorical variables in a contingency table', 'meaning': 'STATO:0000081'}, + "PEARSON_CHI_SQUARE_GOODNESS_OF_FIT_TEST": {'description': 'Chi-square test evaluating the goodness of fit of observed counts to an expected distribution', 'meaning': 'STATO:0000309'}, + "YATES_CORRECTED_CHI_SQUARE_TEST": {'description': 'Chi-square test of association between two dichotomous variables with a continuity correction', 'meaning': 'STATO:0000070', 'aliases': ["Yates' chi-squared test"]}, + "CHI_SQUARE_TEST_FOR_HOMOGENEITY": {'description': 'Test comparing proportions observed across multiple groups using contingency table frequencies', 'meaning': 'STATO:0000701'}, + "FISHERS_EXACT_TEST": {'description': 'Exact test for non-random association between two categorical variables', 'meaning': 'STATO:0000073'}, + "BARNARDS_TEST": {'description': "Exact unconditional test of association between two categorical variables, often more powerful than Fisher's exact test", 'meaning': 'STATO:0000310'}, + "MCNEMAR_TEST": {'description': 'Test applied to 2 x 2 contingency tables of paired nominal data to compare marginal frequencies', 'meaning': 'STATO:0000433'}, + "COCHRANS_Q_TEST": {'description': 'Test for unreplicated randomized block designs with a binary response and paired data', 'meaning': 'STATO:0000434'}, + "COCHRAN_ARMITAGE_TEST_FOR_TREND": {'description': 'Test for association between a dichotomous variable and an ordered categorical variable', 'meaning': 'STATO:0000148'}, + "COCHRAN_MANTEL_HAENSZEL_TEST": {'description': 'Test of independence between two categorical variables stratified by a third variable', 'meaning': 'STATO:0000074', 'aliases': ['Cochran-Mantel-Haenszel test']}, + "EXACT_BINOMIAL_TEST": {'description': 'Test of the statistical significance of deviations from a theoretically expected distribution of observations into two categories', 'meaning': 'STATO:0000298', 'aliases': ['binomial test']}, + "HYPERGEOMETRIC_TEST": {'description': 'Test evaluating whether a random variable follows a hypergeometric distribution; widely used for over-representation analysis', 'meaning': 'STATO:0000285', 'aliases': ['over-representation test']}, + "TEST_OF_ASSOCIATION_BETWEEN_CATEGORICAL_VARIABLES": {'description': 'Test evaluating whether a discrete predictor variable is associated with a discrete response variable', 'meaning': 'STATO:0000027'}, + "GOODNESS_OF_FIT_TEST": {'description': 'Test evaluating whether a sample distribution can be considered equivalent to a theoretical distribution', 'meaning': 'STATO:0000191'}, + "SHAPIRO_WILK_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a normally distributed population', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV_TEST": {'description': 'Goodness of fit test of the null hypothesis that a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING_TEST": {'description': 'Goodness of fit test of whether a sample is drawn from a given probability distribution, weighting the tails more heavily', 'meaning': 'STATO:0000042'}, + "HOSMER_LEMESHOW_TEST": {'description': 'Goodness of fit test for logistic regression models comparing predicted probabilities against observed outcomes', 'meaning': 'STATO:0000653'}, + "LEVENES_TEST": {'description': 'Test of the null hypothesis of equality of variance across several populations', 'meaning': 'STATO:0000078'}, + "BARTLETTS_TEST": {'description': 'Test of whether k samples are drawn from populations with equal variances; sensitive to departures from normality', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE_TEST": {'description': 'Test of equality of group variances based on deviations from the group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN_TEST": {'description': 'Score test of the hypothesis of constant error variance against the alternative that error variance depends on the fitted values', 'meaning': 'STATO:0000284'}, + "HOMOSKEDASTICITY_TEST": {'description': 'Test evaluating whether variances from several random samples are similar', 'meaning': 'STATO:0000137', 'aliases': ['homoscedasticity test']}, + "HOMOGENEITY_TEST": {'description': 'Test evaluating whether a statistical measure computed from several random samples is similar', 'meaning': 'STATO:0000697'}, + "SPHERICITY_TEST": {'description': 'Test of the null hypothesis of equality of the variances of differences between levels of a repeated measures factor', 'meaning': 'STATO:0000131'}, + "MAUCHLYS_TEST": {'description': 'Test of sphericity in the context of repeated measures analysis of variance', 'meaning': 'STATO:0000199'}, + "ODDS_RATIO_HOMOGENEITY_TEST": {'description': 'Test of the null hypothesis that odds ratios are consistent across strata of a population', 'meaning': 'STATO:0000247'}, + "BRESLOW_DAY_TEST": {'description': 'Test of whether odds ratios are homogeneous across several 2x2 contingency tables', 'meaning': 'STATO:0000130'}, + "TARONES_TEST": {'description': 'Test of the null hypothesis that odds ratios are homogeneous across strata', 'meaning': 'STATO:0000136'}, + "WOOLFS_TEST": {'description': 'Test of the null hypothesis that odds ratios are the same across all strata of the population under investigation', 'meaning': 'STATO:0000246'}, + "POST_HOC_ANALYSIS": {'description': 'Test carried out following an analysis of variance that rejected the null hypothesis, to identify which groups differ', 'meaning': 'STATO:0000133'}, + "TUKEY_HSD_TEST": {'description': 'Post-hoc test following a significant ANOVA that determines which means differ, controlling the family-wise error rate', 'meaning': 'STATO:0000187', 'aliases': ['Tukey honestly significant difference test']}, + "NEWMAN_KEULS_TEST": {'description': 'Stepwise multiple comparison procedure identifying sample means that differ significantly, based on the studentized range statistic', 'meaning': 'STATO:0000261', 'aliases': ['Student-Newman-Keuls test']}, + "SCHEFFE_TEST": {'description': 'Conservative post-hoc procedure evaluating all possible contrasts while adjusting significance levels for multiple comparisons', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE_TEST": {'description': 'Post-hoc test for multiple comparisons of treatments by means of the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNNS_TEST": {'description': 'Non-parametric post-hoc test run after a Kruskal-Wallis test to identify which groups differ', 'meaning': 'STATO:0000490', 'aliases': ["Dunn's multiple comparison test"]}, + "CONOVER_IMAN_TEST": {'description': 'Post-hoc test for pairwise multiple comparisons using rank sums following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, + "GRUBBS_TEST": {'description': 'Test detecting a single outlier in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000441'}, + "DIXON_Q_TEST": {'description': 'Test detecting outliers in a univariate data set assumed to come from a normally distributed population', 'meaning': 'STATO:0000440'}, + "TIETJEN_MOORE_TEST": {'description': "Generalization of Grubbs' test allowing detection of more than one outlier", 'meaning': 'STATO:0000442'}, + "GENERALIZED_ESD_TEST": {'description': 'Outlier detection test with a built-in correction for multiple testing', 'meaning': 'STATO:0000443', 'aliases': ['generalized ESD test']}, + "LIKELIHOOD_RATIO_TEST": {'description': 'Test of whether there is evidence for moving from a simple model to a more complex model in which the simple model is nested', 'meaning': 'OBI:0000861'}, + "WALD_TEST": {'description': 'Test evaluating whether one or more model coefficients differ from zero, given their variance-covariance matrix', 'meaning': 'STATO:0000559', 'aliases': ['Wald chi-squared test']}, + "LOG_RANK_TEST": {'description': 'Test comparing the survival distributions of two or more groups', 'meaning': 'STATO:0000640', 'aliases': ['logrank test']}, + "HARDY_WEINBERG_EQUILIBRIUM_TEST": {'description': "Test of whether a population's allele proportions are in Hardy-Weinberg equilibrium, often used as a genotyping quality control", 'meaning': 'STATO:0000181'}, + "TRANSMISSION_DISEQUILIBRIUM_TEST": {'description': 'Test for genetic linkage between a genetic marker and a trait in families, robust to population structure', 'meaning': 'STATO:0000275'}, + "PEARSON_CORRELATION_TEST": {'description': "Test of whether two continuous variables are linearly associated, based on Pearson's correlation coefficient", 'meaning': 'NCIT:C53244'}, + "SPEARMAN_CORRELATION_TEST": {'description': "Non-parametric test of whether two variables are monotonically associated, based on Spearman's rank correlation coefficient", 'meaning': 'NCIT:C53249'}, + "AB_TEST": {'description': 'Statistical testing comparing two types of treatments or interventions', 'meaning': 'STATO:0000715'}, + "BETWEEN_GROUP_COMPARISON_TEST": {'description': 'Test detecting differences between the means computed for each study group population', 'meaning': 'STATO:0000279'}, + "WITHIN_SUBJECT_COMPARISON_TEST": {'description': 'Test evaluating whether a change occurs within one experimental unit over time following a treatment or event', 'meaning': 'STATO:0000202'}, + "NON_PARAMETRIC_TEST": {'description': 'Test making no assumption about the underlying data distribution', 'meaning': 'STATO:0000198'}, +} + +class TTestTypeEnum(RichEnum): + """ + Variants of Student's t-test + """ + # Enum members + ONE_SAMPLE = "ONE_SAMPLE" + PAIRED = "PAIRED" + TWO_SAMPLE_EQUAL_VARIANCE = "TWO_SAMPLE_EQUAL_VARIANCE" + TWO_SAMPLE_UNEQUAL_VARIANCE = "TWO_SAMPLE_UNEQUAL_VARIANCE" + TRIMMED_MEANS = "TRIMMED_MEANS" + +# Set metadata after class creation +TTestTypeEnum._metadata = { + "ONE_SAMPLE": {'description': 'Compares a sample mean against a specified population mean', 'meaning': 'STATO:0000302'}, + "PAIRED": {'description': 'Compares paired observations from the same experimental units', 'meaning': 'STATO:0000095'}, + "TWO_SAMPLE_EQUAL_VARIANCE": {'description': 'Compares the means of two independent samples assumed to have equal variances', 'meaning': 'STATO:0000303'}, + "TWO_SAMPLE_UNEQUAL_VARIANCE": {'description': "Compares the means of two independent samples with unequal variances (Welch's t-test)", 'meaning': 'STATO:0000304'}, + "TRIMMED_MEANS": {'description': 'Robust t-test computed on trimmed means and winsorized variances', 'meaning': 'STATO:0000406'}, +} + +class NormalityTestEnum(RichEnum): + """ + Goodness of fit tests commonly used to assess whether a sample is drawn from a normally distributed population + """ + # Enum members + SHAPIRO_WILK = "SHAPIRO_WILK" + KOLMOGOROV_SMIRNOV = "KOLMOGOROV_SMIRNOV" + ANDERSON_DARLING = "ANDERSON_DARLING" + +# Set metadata after class creation +NormalityTestEnum._metadata = { + "SHAPIRO_WILK": {'description': 'Tests the null hypothesis that a sample comes from a normal distribution', 'meaning': 'STATO:0000077'}, + "KOLMOGOROV_SMIRNOV": {'description': 'Tests whether a sample is drawn from a specified continuous probability distribution', 'meaning': 'STATO:0000083'}, + "ANDERSON_DARLING": {'description': 'Tests whether a sample is drawn from a given probability distribution, with added sensitivity in the tails', 'meaning': 'STATO:0000042'}, +} + +class HomoscedasticityTestEnum(RichEnum): + """ + Tests evaluating equality of variances across groups or samples + """ + # Enum members + LEVENE = "LEVENE" + BARTLETT = "BARTLETT" + BROWN_FORSYTHE = "BROWN_FORSYTHE" + BREUSCH_PAGAN = "BREUSCH_PAGAN" + +# Set metadata after class creation +HomoscedasticityTestEnum._metadata = { + "LEVENE": {'description': 'Tests the null hypothesis of equality of variance in several populations', 'meaning': 'STATO:0000078'}, + "BARTLETT": {'description': 'Tests whether k samples come from populations with equal variances', 'meaning': 'STATO:0000079', 'aliases': ["Bartlett's test"]}, + "BROWN_FORSYTHE": {'description': 'Tests equality of group variances using deviations from group medians', 'meaning': 'STATO:0000080'}, + "BREUSCH_PAGAN": {'description': 'Tests for heteroscedasticity of regression residuals', 'meaning': 'STATO:0000284'}, +} + +class PostHocTestEnum(RichEnum): + """ + Multiple comparison procedures carried out after a significant omnibus test such as an ANOVA or Kruskal-Wallis test + """ + # Enum members + TUKEY_HSD = "TUKEY_HSD" + NEWMAN_KEULS = "NEWMAN_KEULS" + SCHEFFE = "SCHEFFE" + LEAST_SIGNIFICANT_DIFFERENCE = "LEAST_SIGNIFICANT_DIFFERENCE" + DUNN = "DUNN" + CONOVER_IMAN = "CONOVER_IMAN" + +# Set metadata after class creation +PostHocTestEnum._metadata = { + "TUKEY_HSD": {'description': 'Determines which means differ after a significant ANOVA while controlling the family-wise error rate', 'meaning': 'STATO:0000187'}, + "NEWMAN_KEULS": {'description': 'Stepwise multiple comparison procedure based on the studentized range', 'meaning': 'STATO:0000261'}, + "SCHEFFE": {'description': 'Conservative procedure evaluating all possible contrasts', 'meaning': 'STATO:0000156', 'aliases': ['Scheffé test']}, + "LEAST_SIGNIFICANT_DIFFERENCE": {'description': 'Pairwise comparisons using the least significant difference following an ANOVA', 'meaning': 'STATO:0000157', 'aliases': ["Fisher's LSD test", 'Least significant difference test']}, + "DUNN": {'description': 'Non-parametric post-hoc test following a Kruskal-Wallis test', 'meaning': 'STATO:0000490'}, + "CONOVER_IMAN": {'description': 'Pairwise rank-sum comparisons following a Kruskal-Wallis test', 'meaning': 'STATO:0000491'}, +} + +class MultipleTestingCorrectionEnum(RichEnum): + """ + Methods for adjusting p-values or significance thresholds when many hypotheses are tested simultaneously. + As with StatisticalTestEnum, concrete methods (BONFERRONI, HOLM_BONFERRONI, BENJAMINI_HOCHBERG) sit alongside the error-rate classes they belong to (FAMILY_WISE_ERROR_RATE, FALSE_DISCOVERY_RATE) and procedural classes (SIMULTANEOUS, SEQUENTIAL). The classes are intended for sources that report only "FDR-corrected" without naming a procedure. + """ + # Enum members + BONFERRONI = "BONFERRONI" + HOLM_BONFERRONI = "HOLM_BONFERRONI" + BENJAMINI_HOCHBERG = "BENJAMINI_HOCHBERG" + BENJAMINI_YEKUTIELI = "BENJAMINI_YEKUTIELI" + HOLM_FDR = "HOLM_FDR" + HOMMEL_FDR = "HOMMEL_FDR" + FAMILY_WISE_ERROR_RATE = "FAMILY_WISE_ERROR_RATE" + FALSE_DISCOVERY_RATE = "FALSE_DISCOVERY_RATE" + SIMULTANEOUS = "SIMULTANEOUS" + SEQUENTIAL = "SEQUENTIAL" + ALPHA_SPENDING = "ALPHA_SPENDING" + ALPHA_INVESTING = "ALPHA_INVESTING" + NONE = "NONE" + +# Set metadata after class creation +MultipleTestingCorrectionEnum._metadata = { + "BONFERRONI": {'description': 'Divides the desired family-wise significance level by the number of comparisons made', 'meaning': 'NCIT:C61594', 'aliases': ['Bonferroni correction']}, + "HOLM_BONFERRONI": {'description': 'Sequentially rejective closed-test procedure controlling the family-wise error rate', 'meaning': 'OBI:0200066', 'aliases': ['Holm correction']}, + "BENJAMINI_HOCHBERG": {'description': 'Sequential p-value procedure controlling the false discovery rate under independence or positive dependence', 'meaning': 'OBI:0200036', 'aliases': ['BH', 'BH-FDR']}, + "BENJAMINI_YEKUTIELI": {'description': 'False discovery rate procedure valid under arbitrary dependence between tests', 'meaning': 'OBI:0200049', 'aliases': ['BY']}, + "HOLM_FDR": {'description': 'Application of the Holm p-value procedure to correct false discovery rate. Note that Holm\'s step-down procedure controls the family-wise error rate, not the false discovery rate; the "false discovery rate" wording is STATO\'s own label for this term. Prefer HOLM_BONFERRONI unless you specifically need the STATO term.', 'meaning': 'STATO:0000551'}, + "HOMMEL_FDR": {'description': 'Application of the Hommel p-value procedure to correct false discovery rate', 'meaning': 'STATO:0000552'}, + "FAMILY_WISE_ERROR_RATE": {'description': 'Procedure controlling the probability of making at least one false positive across a family of tests', 'meaning': 'OBI:0200073', 'aliases': ['FWER correction']}, + "FALSE_DISCOVERY_RATE": {'description': 'Procedure controlling the expected proportion of false positives among rejected hypotheses', 'meaning': 'OBI:0200163'}, + "SIMULTANEOUS": {'description': 'Correction method applying a single adjustment across all tests simultaneously', 'meaning': 'STATO:0000601'}, + "SEQUENTIAL": {'description': 'Correction method applying adjustments in a stepwise, ordered fashion', 'meaning': 'STATO:0000602'}, + "ALPHA_SPENDING": {'description': 'Sequential procedure allocating portions of the overall type I error rate across interim analyses', 'meaning': 'STATO:0000605'}, + "ALPHA_INVESTING": {'description': 'Sequential procedure that earns and spends alpha as hypotheses are tested', 'meaning': 'STATO:0000604'}, + "NONE": {'description': 'No adjustment made for multiple testing', 'annotations': {'note': 'No appropriate ontology term found for absence of correction'}}, +} + +class CorrelationCoefficientEnum(RichEnum): + """ + Coefficients quantifying the strength of association between two variables + """ + # Enum members + PEARSON = "PEARSON" + SPEARMAN = "SPEARMAN" + KENDALL = "KENDALL" + +# Set metadata after class creation +CorrelationCoefficientEnum._metadata = { + "PEARSON": {'description': 'Evaluates the strength of linear association between two continuous variables', 'meaning': 'STATO:0000280', 'aliases': ["Pearson's r"]}, + "SPEARMAN": {'description': 'Non-parametric measure of statistical dependence between two ranked variables', 'meaning': 'STATO:0000201', 'aliases': ["Spearman's rho"]}, + "KENDALL": {'description': 'Correlation coefficient between two ordinal or ranked variables', 'meaning': 'STATO:0000240', 'aliases': ["Kendall's tau"]}, +} + +class TestTailednessEnum(RichEnum): + """ + Whether a statistical test allocates the significance level to one or both tails of the reference distribution + """ + # Enum members + ONE_TAILED = "ONE_TAILED" + TWO_TAILED = "TWO_TAILED" + +# Set metadata after class creation +TestTailednessEnum._metadata = { + "ONE_TAILED": {'description': 'Allocates all of the significance level to one tail, evaluating a directional alternative hypothesis', 'meaning': 'STATO:0000286', 'aliases': ['one-sided test']}, + "TWO_TAILED": {'description': 'Allocates half of the significance level to each tail, evaluating a non-directional alternative hypothesis', 'meaning': 'STATO:0000287', 'aliases': ['two-sided test']}, +} + +class DistributionalAssumptionEnum(RichEnum): + """ + Whether an inference procedure assumes a parametric form for the underlying population distribution. + Note the deliberate type approximation: the values denote a property of a procedure, but the available ontology terms (NCIT:C53230, STATO:0000198) denote classes of test. Neither PATO nor OBI currently has a quality or characteristic term for "parametric", so the test classes are used as the closest available referent. + """ + # Enum members + PARAMETRIC = "PARAMETRIC" + NON_PARAMETRIC = "NON_PARAMETRIC" + +# Set metadata after class creation +DistributionalAssumptionEnum._metadata = { + "PARAMETRIC": {'description': 'Procedure that incorporates assumptions about the population probability distribution', 'meaning': 'NCIT:C53230'}, + "NON_PARAMETRIC": {'description': 'Procedure that makes no assumption about the underlying data distribution', 'meaning': 'STATO:0000198', 'aliases': ['Non-Parametric Test']}, +} + +class ComparisonObjectiveEnum(RichEnum): + """ + The objective of a between-group comparison, particularly in the design of controlled trials + """ + # Enum members + SUPERIORITY = "SUPERIORITY" + NON_INFERIORITY = "NON_INFERIORITY" + EQUIVALENCE = "EQUIVALENCE" + +# Set metadata after class creation +ComparisonObjectiveEnum._metadata = { + "SUPERIORITY": {'description': 'Comparison intended to show that the difference in effects exceeds a prespecified threshold of meaningful benefit', 'meaning': 'STATO:0000718'}, + "NON_INFERIORITY": {'description': 'Comparison intended to show that any difference in effects lies below a prespecified threshold of meaningful harm', 'meaning': 'STATO:0000716'}, + "EQUIVALENCE": {'description': 'Comparison intended to show that the absolute difference in effects is smaller than a prespecified threshold', 'meaning': 'STATO:0000717'}, +} + +__all__ = [ + "StatisticalTestEnum", + "TTestTypeEnum", + "NormalityTestEnum", + "HomoscedasticityTestEnum", + "PostHocTestEnum", + "MultipleTestingCorrectionEnum", + "CorrelationCoefficientEnum", + "TestTailednessEnum", + "DistributionalAssumptionEnum", + "ComparisonObjectiveEnum", +] \ No newline at end of file diff --git a/src/valuesets/enums/units/measurements.py b/src/valuesets/enums/units/measurements.py index 441e4fd4..a28fac2e 100644 --- a/src/valuesets/enums/units/measurements.py +++ b/src/valuesets/enums/units/measurements.py @@ -295,6 +295,68 @@ class DataSizeUnitEnum(RichEnum): "TEBIBYTE": {'description': 'Tebibyte (2^40 bytes)', 'annotations': {'symbol': 'TiB', 'conversion_to_byte': '1099511627776', 'standard': 'binary'}}, } +class MassFlowRateUnitEnum(RichEnum): + """ + Units of mass flow rate (mass per unit time) + """ + # Enum members + KILOGRAM_PER_SECOND = "KILOGRAM_PER_SECOND" + KILOGRAM_PER_HOUR = "KILOGRAM_PER_HOUR" + GRAM_PER_SECOND = "GRAM_PER_SECOND" + TONNE_PER_HOUR = "TONNE_PER_HOUR" + TONNE_PER_DAY = "TONNE_PER_DAY" + POUND_PER_HOUR = "POUND_PER_HOUR" + +# Set metadata after class creation +MassFlowRateUnitEnum._metadata = { + "KILOGRAM_PER_SECOND": {'description': 'Kilograms per second (SI)', 'annotations': {'symbol': 'kg/s', 'system': 'SI'}}, + "KILOGRAM_PER_HOUR": {'description': 'Kilograms per hour', 'annotations': {'symbol': 'kg/h', 'conversion_to_kg_per_s': '0.000277778'}}, + "GRAM_PER_SECOND": {'description': 'Grams per second', 'annotations': {'symbol': 'g/s', 'conversion_to_kg_per_s': '0.001'}}, + "TONNE_PER_HOUR": {'description': 'Metric tonnes per hour', 'annotations': {'symbol': 't/h', 'conversion_to_kg_per_s': '0.277778'}}, + "TONNE_PER_DAY": {'description': 'Metric tonnes per day', 'annotations': {'symbol': 't/d', 'conversion_to_kg_per_s': '0.0115741'}}, + "POUND_PER_HOUR": {'description': 'Pounds (mass) per hour', 'annotations': {'symbol': 'lb/h', 'conversion_to_kg_per_s': '0.000125998', 'system': 'imperial'}}, +} + +class MolarFlowRateUnitEnum(RichEnum): + """ + Units of molar flow rate (amount of substance per unit time) + """ + # Enum members + MOLE_PER_SECOND = "MOLE_PER_SECOND" + MOLE_PER_HOUR = "MOLE_PER_HOUR" + KILOMOLE_PER_HOUR = "KILOMOLE_PER_HOUR" + KILOMOLE_PER_SECOND = "KILOMOLE_PER_SECOND" + +# Set metadata after class creation +MolarFlowRateUnitEnum._metadata = { + "MOLE_PER_SECOND": {'description': 'Moles per second (SI)', 'annotations': {'symbol': 'mol/s', 'system': 'SI'}}, + "MOLE_PER_HOUR": {'description': 'Moles per hour', 'annotations': {'symbol': 'mol/h', 'conversion_to_mol_per_s': '0.000277778'}}, + "KILOMOLE_PER_HOUR": {'description': 'Kilomoles per hour', 'annotations': {'symbol': 'kmol/h', 'conversion_to_mol_per_s': '0.277778'}}, + "KILOMOLE_PER_SECOND": {'description': 'Kilomoles per second', 'annotations': {'symbol': 'kmol/s', 'conversion_to_mol_per_s': '1000'}}, +} + +class VolumetricFlowRateUnitEnum(RichEnum): + """ + Units of volumetric flow rate (volume per unit time) + """ + # Enum members + CUBIC_METER_PER_SECOND = "CUBIC_METER_PER_SECOND" + CUBIC_METER_PER_HOUR = "CUBIC_METER_PER_HOUR" + LITER_PER_SECOND = "LITER_PER_SECOND" + LITER_PER_MINUTE = "LITER_PER_MINUTE" + GALLON_PER_MINUTE = "GALLON_PER_MINUTE" + CUBIC_FOOT_PER_MINUTE = "CUBIC_FOOT_PER_MINUTE" + +# Set metadata after class creation +VolumetricFlowRateUnitEnum._metadata = { + "CUBIC_METER_PER_SECOND": {'description': 'Cubic meters per second (SI)', 'annotations': {'symbol': 'm3/s', 'system': 'SI'}}, + "CUBIC_METER_PER_HOUR": {'description': 'Cubic meters per hour', 'annotations': {'symbol': 'm3/h', 'conversion_to_m3_per_s': '0.000277778'}}, + "LITER_PER_SECOND": {'description': 'Liters per second', 'annotations': {'symbol': 'L/s', 'conversion_to_m3_per_s': '0.001'}}, + "LITER_PER_MINUTE": {'description': 'Liters per minute', 'annotations': {'symbol': 'L/min', 'conversion_to_m3_per_s': '1.66667e-5'}}, + "GALLON_PER_MINUTE": {'description': 'US gallons per minute', 'annotations': {'symbol': 'gpm', 'conversion_to_m3_per_s': '6.30902e-5', 'system': 'US'}}, + "CUBIC_FOOT_PER_MINUTE": {'description': 'Cubic feet per minute', 'annotations': {'symbol': 'cfm', 'conversion_to_m3_per_s': '0.000471947', 'system': 'imperial'}}, +} + __all__ = [ "LengthUnitEnum", "MassUnitEnum", @@ -306,4 +368,7 @@ class DataSizeUnitEnum(RichEnum): "FrequencyUnitEnum", "AngleUnitEnum", "DataSizeUnitEnum", + "MassFlowRateUnitEnum", + "MolarFlowRateUnitEnum", + "VolumetricFlowRateUnitEnum", ] \ No newline at end of file