app.model.orm#
- app.model.orm.bioreplicate
- app.model.orm.community
- app.model.orm.community_strain
- app.model.orm.compartment
- app.model.orm.custom_model
- app.model.orm.excel_file
- app.model.orm.experiment
- app.model.orm.experiment_compartment
- app.model.orm.measurement
- app.model.orm.measurement_context
- app.model.orm.measurement_technique
- app.model.orm.metabolite
- app.model.orm.modeling_result
- app.model.orm.orm_base
- app.model.orm.page_error
- app.model.orm.page_visit
- app.model.orm.page_visit_counter
- app.model.orm.perturbation
- app.model.orm.project
- app.model.orm.project_user
- app.model.orm.study
- app.model.orm.study_metabolite
- app.model.orm.study_strain
- app.model.orm.study_technique
- app.model.orm.study_user
- app.model.orm.submission
- app.model.orm.submission_backup
- app.model.orm.taxon
- app.model.orm.user
- app.model.orm.workspace
- app.model.orm.workspace_entry
Classes#
A specific physical implementation of a particular experiment. |
|
A collection of strains measured in a particular study |
|
Join table between Communities and StudyStrains |
|
The environment of a particular bioreplicate. |
|
The description of a user-created model type. |
|
An uploaded excel file with measurement data |
|
An entity that describes the design of a particular experiment. |
|
Join table between Experiments and Compartments |
|
A single observed measurement at a particular time point. |
|
A collection of measurements of a particular subject with a particular technique. |
|
The technique used for a particular set of measurements. |
|
A metabolite record imported from ChEBI. |
|
The results of fitting a model onto a set of measurements. |
|
A record of an error that occurred on a particular page, used for tracking |
|
A record of a single visit of a page in the app, intended to be aggregated |
|
A record of a single visit of a page in the app, intended to be aggregated |
|
The description of a change over time in a particular experiment's environment. |
|
A collection of studies. |
|
Join table between Projects and Users. |
|
The main container for a particular scientific study. |
|
Join table between Studies and Metabolites |
|
A microbial strain used in a particular study |
|
A technique used within a study, parent to one or more MeasurementTechnique records |
|
Join table between Studies and Users. |
|
A temporary container for the data of a |
|
A backup recording of a particular past submission |
|
A taxon record imported from NCBI. |
|
A visitor to the site that is identified by ORCID. |
|
A space where users can upload data that is not linked to a study. |
|
Data uploaded by a user that is not linked to a study. |
Package Contents#
- class app.model.orm.Bioreplicate[source]#
Bases:
app.model.orm.orm_base.OrmBaseA specific physical implementation of a particular experiment.
This would usually be a specific vessel or a connected combination of vessels (
Compartmentrecords). All bioreplicates of one particular experiment have the same experimental design. All measurements are made within the context of a bioreplicate.- __tablename__ = 'Bioreplicates'#
- experiment: sqlalchemy.orm.Mapped[Experiment]#
- measurementContexts: sqlalchemy.orm.Mapped[List[MeasurementContext]]#
- measurements: sqlalchemy.orm.Mapped[List[Measurement]]#
- property externalId#
For compatibility with other subjects of measurements. Always
None, since a bioreplicate is not an external record.
- class app.model.orm.Community[source]#
Bases:
app.model.orm.orm_base.OrmBaseA collection of strains measured in a particular study
- __tablename__ = 'Communities'#
- experiments: sqlalchemy.orm.Mapped[List[Experiment]]#
- communityStrains: sqlalchemy.orm.Mapped[List[CommunityStrain]]#
- strains: sqlalchemy.orm.Mapped[List[StudyStrain]]#
- class app.model.orm.CommunityStrain[source]#
Bases:
app.model.orm.orm_base.OrmBaseJoin table between Communities and StudyStrains
- __tablename__ = 'CommunityStrains'#
- strain: sqlalchemy.orm.Mapped[StudyStrain]#
- class app.model.orm.Compartment[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe environment of a particular bioreplicate.
There could be multiple of these within the same bioreplicate that form a single biological system, but can be measured separately.
One compartment may change to a different compartment due to a
Perturbation.In the future, this entity may be broken down into a separate “compartment” and “environment”.
- __tablename__ = 'Compartments'#
- volume: sqlalchemy.orm.Mapped[decimal.Decimal]#
- pressure: sqlalchemy.orm.Mapped[decimal.Decimal]#
- stirringSpeed: sqlalchemy.orm.Mapped[decimal.Decimal]#
- O2: sqlalchemy.orm.Mapped[decimal.Decimal]#
- CO2: sqlalchemy.orm.Mapped[decimal.Decimal]#
- H2: sqlalchemy.orm.Mapped[decimal.Decimal]#
- N2: sqlalchemy.orm.Mapped[decimal.Decimal]#
- inoculumConcentration: sqlalchemy.orm.Mapped[decimal.Decimal]#
- inoculumVolume: sqlalchemy.orm.Mapped[decimal.Decimal]#
- initialPh: sqlalchemy.orm.Mapped[decimal.Decimal]#
- initialTemperature: sqlalchemy.orm.Mapped[decimal.Decimal]#
- dilutionRate: sqlalchemy.orm.Mapped[decimal.Decimal]#
- experimentCompartments: sqlalchemy.orm.Mapped[List[ExperimentCompartment]]#
- experiments: sqlalchemy.orm.Mapped[List[Experiment]]#
- measurementContexts: sqlalchemy.orm.Mapped[List[MeasurementContext]]#
- measurements: sqlalchemy.orm.Mapped[List[Measurement]]#
- property properties_description#
- class app.model.orm.CustomModel[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe description of a user-created model type.
- __tablename__ = 'CustomModels'#
- coefficientNames: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- fitNames: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- property coefficientInfo#
- property fitInfo#
- class app.model.orm.ExcelFile[source]#
Bases:
app.model.orm.orm_base.OrmBaseAn uploaded excel file with measurement data
- __tablename__ = 'ExcelFiles'#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- property humanized_size#
- class app.model.orm.Experiment[source]#
Bases:
app.model.orm.orm_base.OrmBaseAn entity that describes the design of a particular experiment.
The specific measurements of an experiment are connected to its biological replicates (
Bioreplicate), which are the concrete implementations of the experimental design.A published study contains experiments with fixed
publicIdidentifiers starting with the prefix “EMGDB”.- __tablename__ = 'Experiments'#
- bioreplicates: sqlalchemy.orm.Mapped[List[Bioreplicate]]#
- experimentCompartments: sqlalchemy.orm.Mapped[List[ExperimentCompartment]]#
- compartments: sqlalchemy.orm.Mapped[List[Compartment]]#
- perturbations: sqlalchemy.orm.Mapped[List[Perturbation]]#
- measurementContexts: sqlalchemy.orm.Mapped[List[MeasurementContext]]#
- class app.model.orm.ExperimentCompartment[source]#
Bases:
app.model.orm.orm_base.OrmBaseJoin table between Experiments and Compartments
- __tablename__ = 'ExperimentCompartments'#
- experiment: sqlalchemy.orm.Mapped[Experiment]#
- compartment: sqlalchemy.orm.Mapped[Compartment]#
- class app.model.orm.Measurement[source]#
Bases:
app.model.orm.orm_base.OrmBaseA single observed measurement at a particular time point.
A measurement may be an average of multiple technical replicates with a standard deviation. It may also be a “calculated” measurement from an average of multiple biological replicates. This information is encapsulated in a
MeasurementContext, while this record mostly contains the time and recorded value.- __tablename__ = 'Measurements'#
- context_relationship#
- context: sqlalchemy.orm.Mapped[MeasurementContext]#
- bioreplicate: sqlalchemy.orm.Mapped[Bioreplicate]#
- compartment: sqlalchemy.orm.Mapped[Compartment]#
- technique: sqlalchemy.orm.Mapped[MeasurementTechnique]#
- value: sqlalchemy.orm.Mapped[decimal.Decimal]#
- std: sqlalchemy.orm.Mapped[decimal.Decimal]#
- class app.model.orm.MeasurementContext[source]#
Bases:
app.model.orm.orm_base.OrmBaseA collection of measurements of a particular subject with a particular technique.
All connections between measurements and other entities are encapsulated here, so the individual
Measurementobjects can be packages of time and value alone.- __tablename__ = 'MeasurementContexts'#
- bioreplicate: sqlalchemy.orm.Mapped[Bioreplicate]#
- experiment: sqlalchemy.orm.Mapped[Experiment]#
- compartment: sqlalchemy.orm.Mapped[Compartment]#
- technique: sqlalchemy.orm.Mapped[MeasurementTechnique]#
- measurements: sqlalchemy.orm.Mapped[List[Measurement]]#
- modelingResults: sqlalchemy.orm.Mapped[List[ModelingResult]]#
- subjectTypeOrdering#
- property readyModelingResults#
- property publishedModelingResults#
- property units#
- class app.model.orm.MeasurementTechnique[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe technique used for a particular set of measurements.
- __tablename__ = 'MeasurementTechniques'#
- metaboliteIds: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- studyTechnique: sqlalchemy.orm.Mapped[StudyTechnique]#
- measurementContexts: sqlalchemy.orm.Mapped[List[MeasurementContext]]#
- measurements: sqlalchemy.orm.Mapped[List[Measurement]]#
- connectedBioreplicates: sqlalchemy.orm.Mapped[List[Bioreplicate]]#
- typeOrdering#
- subjectTypeOrdering#
- property units#
- property short_name#
- property long_name#
- property long_name_with_subject_type#
- property is_growth#
- property connectedExperimentIds#
- class app.model.orm.Metabolite[source]#
Bases:
app.model.orm.orm_base.OrmBaseA metabolite record imported from ChEBI.
This entity is independent from any particular study and it represents the general information about a metabolite.
- __tablename__ = 'Metabolites'#
- averageMass: sqlalchemy.orm.Mapped[decimal.Decimal]#
- studyMetabolites: sqlalchemy.orm.Mapped[List[StudyMetabolite]]#
- property externalId#
For compatibility with other subjects of measurements. The metabolite’s ChEBI id, e.g. “CHEBI:1234”
- class app.model.orm.ModelingResult[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe results of fitting a model onto a set of measurements.
The measurements are represented by a
ModelingContextand the results of the calculation are stored in theparamsfield. Thestateof the record describes the status of the job that runs the calculations.- __tablename__ = 'ModelingResults'#
- measurementContext: sqlalchemy.orm.Mapped[MeasurementContext]#
- workspaceEntry: sqlalchemy.orm.Mapped[WorkspaceEntry]#
- customModel: sqlalchemy.orm.Mapped[CustomModel]#
- params: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- calculatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- publishedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- xValues: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- yValues: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- yErrors: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- property info#
- property model_name#
- property short_model_name#
- property model_url#
- property model_description#
- property model_params#
- property target#
- property units#
- class app.model.orm.PageError[source]#
Bases:
app.model.orm.orm_base.OrmBaseA record of an error that occurred on a particular page, used for tracking unseen problems in the application in production.
- __tablename__ = 'PageErrors'#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- class app.model.orm.PageVisit[source]#
Bases:
app.model.orm.orm_base.OrmBaseA record of a single visit of a page in the app, intended to be aggregated into counts and deleted on a regular basis.
- __tablename__ = 'PageVisits'#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- property parsedQuery#
- class app.model.orm.PageVisitCounter[source]#
Bases:
app.model.orm.orm_base.OrmBaseA record of a single visit of a page in the app, intended to be aggregated into counts and deleted on a regular basis.
- __tablename__ = 'PageVisitCounters'#
- paths: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- countries: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- startTimestamp: sqlalchemy.orm.Mapped[datetime.datetime]#
- endTimestamp: sqlalchemy.orm.Mapped[datetime.datetime]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- class app.model.orm.Perturbation[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe description of a change over time in a particular experiment’s environment.
A perturbation is described by the addition or removal of a
Compartmentto the experiment or by the change from oneCommunityto another.This may be changed in the future as we collect more studies with perturbations.
- __tablename__ = 'Perturbations'#
- experiment: sqlalchemy.orm.Mapped[Experiment]#
- removedCompartment: sqlalchemy.orm.Mapped[Compartment | None]#
- addedCompartment: sqlalchemy.orm.Mapped[Compartment | None]#
- class app.model.orm.Project[source]#
Bases:
app.model.orm.orm_base.OrmBaseA collection of studies.
It has a fixed
publicIdidentifier starting with the prefix “PMGDB”.- __tablename__ = 'Projects'#
- projectUsers: sqlalchemy.orm.Mapped[List[ProjectUser]]#
- property studyUuids#
- property managerUuids#
- class app.model.orm.ProjectUser[source]#
Bases:
app.model.orm.orm_base.OrmBaseJoin table between Projects and Users.
The users recorded in this table have the ability to manage a particular project, add studies to it.
- __tablename__ = 'ProjectUsers'#
- class app.model.orm.Study[source]#
Bases:
app.model.orm.orm_base.OrmBaseThe main container for a particular scientific study.
Updates to experiments and measurements can only be done by issuing a
Submissionto update a particular study. Access control over the individual experiments is also done at the study level.It has a fixed
publicIdidentifier starting with the prefix “SMGDB”.- __tablename__ = 'Studies'#
- owner_relationship#
- authors: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- publishableAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- publishedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- embargoExpiresAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- experiments: sqlalchemy.orm.Mapped[List[Experiment]]#
- strains: sqlalchemy.orm.Mapped[List[StudyStrain]]#
- compartments: sqlalchemy.orm.Mapped[List[Compartment]]#
- studyTechniques: sqlalchemy.orm.Mapped[List[StudyTechnique]]#
- measurementContexts: sqlalchemy.orm.Mapped[List[MeasurementContext]]#
- customModels: sqlalchemy.orm.Mapped[List[CustomModel]]#
- bioreplicates: sqlalchemy.orm.Mapped[List[Bioreplicate]]#
- measurementTechniques: sqlalchemy.orm.Mapped[List[MeasurementTechnique]]#
- measurements: sqlalchemy.orm.Mapped[List[Measurement]]#
- modelingResults: sqlalchemy.orm.Mapped[List[ModelingResult]]#
- studyMetabolites: sqlalchemy.orm.Mapped[List[StudyMetabolite]]#
- metabolites: sqlalchemy.orm.Mapped[List[Metabolite]]#
- lastSubmission: sqlalchemy.orm.Mapped[Submission]#
- property nameWithId#
- property isPublishable#
- property managerUuids#
- class app.model.orm.StudyMetabolite[source]#
Bases:
app.model.orm.orm_base.OrmBaseJoin table between Studies and Metabolites
- __tablename__ = 'StudyMetabolites'#
- metabolite: sqlalchemy.orm.Mapped[Metabolite]#
- class app.model.orm.StudyStrain[source]#
Bases:
app.model.orm.orm_base.OrmBaseA microbial strain used in a particular study
- __tablename__ = 'StudyStrains'#
- communityStrains: sqlalchemy.orm.Mapped[List[CommunityStrain]]#
- property externalId#
For compatibility with other subjects of measurements. The strain’s (or parent strain’s) NCBI id, e.g. “NCBI:1234”
- class app.model.orm.StudyTechnique[source]#
Bases:
app.model.orm.orm_base.OrmBaseA technique used within a study, parent to one or more MeasurementTechnique records
- __tablename__ = 'StudyTechniques'#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- measurementTechniques: sqlalchemy.orm.Mapped[List[MeasurementTechnique]]#
- typeOrdering#
- subjectTypeOrdering#
- property is_growth#
- property short_name#
- property short_name_with_units#
- property short_name_with_subject_type#
- property long_name#
- property long_name_with_subject_type#
- class app.model.orm.StudyUser[source]#
Bases:
app.model.orm.orm_base.OrmBaseJoin table between Studies and Users.
The users recorded in this table have the ability to manage a particular study, to update it, or to reuse its components in other uploads.
- __tablename__ = 'StudyUsers'#
- class app.model.orm.Submission[source]#
Bases:
app.model.orm.orm_base.OrmBaseA temporary container for the data of a
Study, uploaded by a particularUser.The study design is stored in a JSON field, built up over several steps in a frontend form. The study measurements are stored in an uploaded excel file. Both of these are processed to create individual entities that are accessible to the public.
- __tablename__ = 'Submissions'#
- studyDesign: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- publishedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- changelogText: sqlalchemy.orm.Mapped[sqlalchemy.String]#
- property completedStepCount#
- class app.model.orm.SubmissionBackup[source]#
Bases:
app.model.orm.orm_base.OrmBaseA backup recording of a particular past submission
- __tablename__ = 'SubmissionBackups'#
- studyDesign: sqlalchemy.orm.Mapped[sqlalchemy.JSON]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- class app.model.orm.Taxon[source]#
Bases:
app.model.orm.orm_base.OrmBaseA taxon record imported from NCBI.
This entity is independent from any particular study and it represents the general information about a specific taxon.
- __tablename__ = 'Taxa'#
- studyStrains: sqlalchemy.orm.Mapped[List[StudyStrain]]#
- property short_name#
- class app.model.orm.User[source]#
Bases:
app.model.orm.orm_base.OrmBaseA visitor to the site that is identified by ORCID.
Every project and study need to be owned by a specific user and may be editable by other users. This ensures a trace for who uploaded a particular study in case moderation or editing is needed.
- __tablename__ = 'Users'#
- owner_relationship#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- lastLoginAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- submissions: sqlalchemy.orm.Mapped[List[Submission]]#
- projectUsers: sqlalchemy.orm.Mapped[List[ProjectUser]]#
- property orcidUrl#
- class app.model.orm.Workspace[source]#
Bases:
app.model.orm.orm_base.OrmBaseA space where users can upload data that is not linked to a study.
The actual data instances are in `WorkspaceEntry` records. This is a container for them that is linked to a specific user with a specific name. It can be made public or kept private (the default).
- __tablename__ = 'Workspaces'#
- entries: sqlalchemy.orm.Mapped[List[WorkspaceEntry]]#
- modelingResults: sqlalchemy.orm.Mapped[List[ModelingResult]]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- publishedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- property uploadedEntries#
- property apiEntries#
- class app.model.orm.WorkspaceEntry[source]#
Bases:
app.model.orm.orm_base.OrmBaseData uploaded by a user that is not linked to a study.
This data is meant to be shown on a user’s dashboard, or attached to a study post-upload. It could be observational measurements, or it could be modeling results.
- __tablename__ = 'WorkspaceEntries'#
- sourceType: sqlalchemy.orm.Mapped[Literal['upload', 'api']]#
- dataType: sqlalchemy.orm.Mapped[Literal['measurement', 'model', 'other']]#
- subjectType: sqlalchemy.orm.Mapped[Literal['community', 'strain', 'metabolite']]#
- createdAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- updatedAt: sqlalchemy.orm.Mapped[datetime.datetime]#
- modelingResults: sqlalchemy.orm.Mapped[List[ModelingResult]]#
- classmethod from_upload(df, workspace, metadata={}, include_error=False)[source]#
Construct workspace entry records from the data in a CSV file.
The first column will be parsed as time values, every other column will be considered to represent measurements. If `include_error` is truthy, columns will be parsed as pairs of value and error measurements.
- property isGrowth#
- property canBeModeled#
- property readyModelingResults#