diff --git a/docs/schema/valuesets.yaml b/docs/schema/valuesets.yaml index 0265c911..ddce74d1 100644 --- a/docs/schema/valuesets.yaml +++ b/docs/schema/valuesets.yaml @@ -55,6 +55,7 @@ imports: - industry/construction - industry/manufacturing - statistics/prediction_outcomes +- statistics/statistical_tests - social/person_status - social/sdoh - bio/specimen_processing @@ -123,10 +124,19 @@ imports: - clinical/phenopackets - 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 @@ -22289,6 +22299,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 @@ -53837,6 +54817,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 @@ -54352,6 +55387,2455 @@ enums: 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: 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: + 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: + method_class: + tag: method_class + value: GRAPHICAL + PONCHON_SAVARIT: + text: PONCHON_SAVARIT + description: Ponchon-Savarit enthalpy-composition graphical method for binary + distillation + annotations: + method_class: + tag: method_class + value: GRAPHICAL + FENSKE_UNDERWOOD_GILLILAND: + text: FENSKE_UNDERWOOD_GILLILAND + description: Fenske-Underwood-Gilliland shortcut method for multicomponent + distillation + annotations: + 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: + example: + tag: example + value: 64-17-5 + SMILES: + text: SMILES + description: Simplified Molecular-Input Line-Entry System structure notation + annotations: + example: + tag: example + value: CCO + INCHI: + text: INCHI + description: IUPAC International Chemical Identifier structure string + annotations: + 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 + 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: + USD: + text: USD + description: United States dollar + annotations: + 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: + 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: + 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: + 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 +59081,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 +61420,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 @@ -74339,6 +78173,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 @@ -76283,6 +80190,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 +80380,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 +81203,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-08-01T21:24:54' +source_file_size: 4652 +generation_date: '2026-08-01T21:26:25' diff --git a/project/jsonschema/valuesets.schema.json b/project/jsonschema/valuesets.schema.json index 08ddb4d6..36230853 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": [ @@ -1606,6 +1626,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 +2095,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": [ @@ -2303,6 +2351,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 +2623,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": [ @@ -3056,6 +3169,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 +3263,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 +3301,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 +3734,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 +4235,16 @@ "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" + }, "FoodColoringEnum": { "description": "Food coloring and natural food dyes", "enum": [ @@ -4904,6 +5085,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": [ @@ -6537,6 +6729,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": [ @@ -7047,6 +7252,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 +7338,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 +7485,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 +8547,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 +8589,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 +8736,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 +8800,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 +8865,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": [ @@ -10282,6 +10711,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 +11072,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 +11182,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 +11300,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": [ @@ -11426,6 +12019,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 +12114,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 +12215,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 +12364,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..f78aa849 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) @@ -16357,6 +16693,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 +16715,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 +16885,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 +17943,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 +18555,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..f78aa849 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) @@ -16357,6 +16693,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 +16715,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 +16885,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 +17943,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 +18555,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..7c2318c9 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,6 +80,7 @@ # 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 @@ -99,6 +101,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 @@ -221,6 +225,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 +245,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 +262,7 @@ "AcademicDegree", "AccessRights", "AcousticRadiationTypeEnum", + "ActivityCoefficientModel", "AdditiveManufacturingEnum", "AgeGroupEnum", "AgitationTypeEnum", @@ -334,6 +347,7 @@ "CellPolarity", "CellProliferationState", "CellularityEnum", + "ChemicalIdentifierScheme", "ChipFabricationNodeType", "ChiralityEnum", "ChromatographyType", @@ -347,6 +361,7 @@ "CommonMineral", "CommonOrganismTaxaEnum", "CommunicationProtocolEnum", + "ComparisonObjectiveEnum", "CompassDirection", "CompensationTypeEnum", "ComplianceStandardEnum", @@ -365,6 +380,7 @@ "CoordinationGeometry", "CopyrightStatus", "CorporateGovernanceRoleEnum", + "CorrelationCoefficientEnum", "CountryCodeISO2Enum", "CountryCodeISO3Enum", "CriticalMineral", @@ -375,6 +391,7 @@ "CrystalSystemEnum", "CrystallizationMethod", "CurrencyChemical", + "CurrencyCode", "CurrencyCodeISO4217Enum", "DNABaseEnum", "DNABaseExtendedEnum", @@ -402,11 +419,13 @@ "DefectClassificationEnum", "DefenseInDepthLevelEnum", "DerivatizationMethod", + "DesignSimulationMethod", "DetectionModeEnum", "Detector", "DetectorType", "DiagnosticTestTypeEnum", "DigitalObjectCategory", + "DistributionalAssumptionEnum", "DocumentFormatEnum", "DownstreamProcessEnum", "DrugExposureProvenanceEnum", @@ -438,6 +457,7 @@ "EnvironmentalImpact", "EnzymeClassEnum", "EnzymologyAssayEnum", + "EquationOfStateModel", "EthnicityOMB1997Enum", "ExecutionModeEnum", "ExperimentalDesignMethodType", @@ -469,6 +489,7 @@ "FireSafetyColorEnum", "FissileIsotopeEnum", "FlowerColorEnum", + "FlowsheetSolutionApproach", "FoodColoringEnum", "FossilFuelTypeEnum", "FraudDetectionEnum", @@ -518,6 +539,7 @@ "HeavyMetalEnum", "HistoricalPeriod", "HistoricalStatusEnum", + "HomoscedasticityTestEnum", "HousingStatus", "HumanAgeGroupEnum", "HumanDevelopmentalStage", @@ -597,6 +619,7 @@ "MaritimeSignalColorEnum", "MarketStructureEnum", "MassErrorUnit", + "MassFlowRateUnitEnum", "MassSpectrometerFileFormat", "MassSpectrometerVendor", "MassSpectrometryAssayEnum", @@ -625,11 +648,14 @@ "MiningPhase", "MiningType", "MitoticPhase", + "MixingRuleModel", "ModeOfInheritance", "ModelSystemTypeEnum", + "MolarFlowRateUnitEnum", "Month", "MouseDevelopmentalStage", "MousePostnatalAgeGroupEnum", + "MultipleTestingCorrectionEnum", "NAICSSectorEnum", "NCITFivePointConfidenceScale", "NIHInstituteCenterEnum", @@ -640,6 +666,7 @@ "NetworkProtocolEnum", "NeuroblastomaRiskGroup", "NewsTopicCategoryEnum", + "NormalityTestEnum", "NuclearFacilityTypeEnum", "NuclearForensicsMethodType", "NuclearFuelCycleStageEnum", @@ -708,8 +735,10 @@ "PlateCoatingEnum", "PlateMaterialEnum", "PolymerTypeEnum", + "PostHocTestEnum", "PowerPlantStatusEnum", "PowerUnit", + "PoyntingCorrectionMethod", "PredictionOutcomeType", "PresenceEnum", "PreservationEventOutcome", @@ -718,9 +747,15 @@ "PreservationLevelValue", "PressureUnitEnum", "PriorityLevelEnum", + "ProcessEquipmentType", "ProcessImprovementApproachEnum", + "ProcessIndustryCategory", + "ProcessOperationMode", "ProcessPerformanceMetric", "ProcessScaleEnum", + "ProcessSimulator", + "ProcessStreamPhase", + "ProcessStreamRole", "ProcessingStatus", "ProcurementTypeEnum", "ProductTypeEnum", @@ -836,6 +871,7 @@ "StandardsMaturityLevel", "StandardsOrganizationEnum", "StateOfMatterEnum", + "StatisticalTestEnum", "StatusEnum", "SterilizationMethodEnum", "StrandType", @@ -852,11 +888,14 @@ "SupplyChainStrategyEnum", "SymptomSeverityEnum", "SynthesisMethodEnum", + "SystemLifeCycleProcess15288", + "TTestTypeEnum", "TailingCharacterizationType", "TaxonomicRank", "TechnologyReadinessLevel", "TemperatureUnitEnum", "TemporalAggregationEnum", + "TestTailednessEnum", "TextCharset", "TextureEnum", "TherapeuticActionabilityEnum", @@ -865,6 +904,7 @@ "ThermalCyclerTypeEnum", "ThermalCyclingStepEnum", "ThermodynamicParameterEnum", + "ThermodynamicPropertyPackage", "TimeOfDay", "TimePeriod", "TimeUnitEnum", @@ -889,8 +929,10 @@ "USStateCodeEnum", "UnconventionalMineralResourceType", "UniProtSpeciesCode", + "UnitOperationType", "UpdateFrequency", "UraniumEnrichmentLevelEnum", + "UtilityType", "VaccinationPeriodicityEnum", "VaccinationStatusEnum", "VaccineCategoryEnum", @@ -898,6 +940,7 @@ "ValueSetStewardEnum", "VectorTypeEnum", "VendorCategoryEnum", + "VerificationValidationProcessIEEE1012", "ViabilityEnum", "VideoFormatEnum", "ViralGenomeTypeEnum", @@ -906,6 +949,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/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/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