From def0f8202655433ba4509993a61751505d2887b7 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Thu, 29 Aug 2024 17:05:35 -0400 Subject: [PATCH 01/18] Early support for apiv2 --- client/python/cryoet_data_portal/Makefile | 2 +- .../src/cryoet_data_portal/__init__.py | 32 +- .../src/cryoet_data_portal/_client.py | 15 +- .../src/cryoet_data_portal/_codegen.py | 61 +- .../src/cryoet_data_portal/_gql_base.py | 21 +- .../src/cryoet_data_portal/_models.py | 1369 +- .../cryoet_data_portal/data/schema.graphql | 14523 +++++----------- .../cryoet_data_portal/templates/Model.jinja2 | 3 +- 8 files changed, 5267 insertions(+), 10759 deletions(-) diff --git a/client/python/cryoet_data_portal/Makefile b/client/python/cryoet_data_portal/Makefile index 480a7c2eb..ba2ac330d 100644 --- a/client/python/cryoet_data_portal/Makefile +++ b/client/python/cryoet_data_portal/Makefile @@ -26,7 +26,7 @@ test: .PHONY: codegen codegen: - python -m cryoet_data_portal._codegen + cd src && python3 -m cryoet_data_portal._codegen # Need to run pre-commit twice because black and ruff fight with each other. # Ignore the return code because that is non-zero when pre-commit applies a fix. -pre-commit run --files src/cryoet_data_portal/_models.py src/cryoet_data_portal/data/schema.graphql diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py index 409d7b4e2..4ac0100e1 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py @@ -6,36 +6,46 @@ from ._client import Client from ._models import ( - Annotation, + Alignment, AnnotationAuthor, AnnotationFile, - Dataset, + AnnotationShape, + Annotation, DatasetAuthor, DatasetFunding, - Deposition, + Dataset, DepositionAuthor, + Deposition, + Frame, + PerSectionAlignmentParameters, + PerSectionParameters, Run, - TiltSeries, - Tomogram, + Tiltseries, TomogramAuthor, TomogramVoxelSpacing, + Tomogram, ) __version__ = "3.1.0" __all__ = [ "Client", - "Annotation", - "AnnotationFile", + "Alignment", "AnnotationAuthor", - "Dataset", + "AnnotationFile", + "AnnotationShape", + "Annotation", "DatasetAuthor", "DatasetFunding", - "Deposition", + "Dataset", "DepositionAuthor", + "Deposition", + "Frame", + "PerSectionAlignmentParameters", + "PerSectionParameters", "Run", - "TiltSeries", - "Tomogram", + "Tiltseries", "TomogramAuthor", "TomogramVoxelSpacing", + "Tomogram", ] diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py index 0fda834e8..6c2d1cd33 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py @@ -8,7 +8,7 @@ from cryoet_data_portal._constants import USER_AGENT -DEFAULT_URL = "https://graphql.cryoetdataportal.cziscience.com/v1/graphql" +DEFAULT_URL = "http://localhost:9009/graphql" class Client: @@ -46,7 +46,9 @@ def __init__(self, url: Optional[str] = None): self.client = GQLClient(transport=transport, schema=schema_str) self.ds = DSLSchema(self.client.schema) - def build_query(self, cls, gql_class_name: str, query_filters=None): + def build_query( + self, cls, root_field: str, gql_class_name: str, query_filters=None + ): ds = self.ds query_filters = {} if not query_filters else {"where": query_filters} gql_type = getattr(ds, gql_class_name) @@ -55,7 +57,7 @@ def build_query(self, cls, gql_class_name: str, query_filters=None): ] query = dsl_gql( DSLQuery( - getattr(ds.query_root, gql_class_name)(**query_filters).select( + getattr(ds.Query, root_field)(**query_filters).select( *scalar_fields, ), ), @@ -64,8 +66,11 @@ def build_query(self, cls, gql_class_name: str, query_filters=None): def find(self, cls, query_filters=None): gql_type = cls._get_gql_type() - response = self.client.execute(self.build_query(cls, gql_type, query_filters)) - return [cls(self, **item) for item in response[gql_type]] + gql_root = cls._get_gql_root_field() + response = self.client.execute( + self.build_query(cls, gql_root, gql_type, query_filters) + ) + return [cls(self, **item) for item in response[gql_root]] def find_one(self, *args, **kwargs): for result in self.find(*args, **kwargs): diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index 85d9f8b41..61bf64fd2 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -20,6 +20,7 @@ GraphQLType, build_schema, print_schema, + get_named_type, ) from jinja2 import Environment, FileSystemLoader @@ -31,7 +32,7 @@ "Float": ("FloatField()", "float"), "Int": ("IntField()", "int"), "String": ("StringField()", "str"), - "date": ("DateField()", "date"), + "DateTime": ("DateField()", "date"), "numeric": ("FloatField()", "float"), "_numeric": ("StringField()", "str"), "tomogram_type_enum": ("StringField()", "str"), @@ -40,19 +41,24 @@ """Maps GraphQL type names to model class names.""" GQL_TO_MODEL_TYPE = { - "datasets": "Dataset", - "dataset_authors": "DatasetAuthor", - "dataset_funding": "DatasetFunding", - "runs": "Run", - "tomogram_voxel_spacings": "TomogramVoxelSpacing", - "tomograms": "Tomogram", - "tomogram_authors": "TomogramAuthor", - "annotations": "Annotation", - "annotation_files": "AnnotationFile", - "annotation_authors": "AnnotationAuthor", - "tiltseries": "TiltSeries", - "depositions": "Deposition", - "deposition_authors": "DepositionAuthor", + "Alignment": "Alignment", + "AnnotationAuthor": "AnnotationAuthor", + "AnnotationFile": "AnnotationFile", + "AnnotationShape": "AnnotationShape", + "Annotation": "Annotation", + "DatasetAuthor": "DatasetAuthor", + "DatasetFunding": "DatasetFunding", + "Dataset": "Dataset", + "DepositionAuthor": "DepositionAuthor", + "Deposition": "Deposition", + "Frame": "Frame", + "PerSectionAlignmentParameters": "PerSectionAlignmentParameters", + "PerSectionParameters": "PerSectionParameters", + "Run": "Run", + "Tiltseries": "Tiltseries", + "TomogramAuthor": "TomogramAuthor", + "TomogramVoxelSpacing": "TomogramVoxelSpacing", + "Tomogram": "Tomogram", } @@ -81,7 +87,8 @@ class ModelInfo: """The information about a parsed model.""" name: str - gql_name: str + gql_type: str + root_field: str fields: Tuple[FieldInfo, ...] description: Optional[str] = None @@ -127,7 +134,8 @@ def get_models(schema: GraphQLSchema) -> Tuple[ModelInfo, ...]: models.append( ModelInfo( name=model, - gql_name=gql_type.name, + gql_type=gql_type.name, + root_field=get_root_field_name(schema, gql_type), description=gql_type.description, fields=fields, ), @@ -156,6 +164,17 @@ def load_schema(path: Path) -> GraphQLSchema: return build_schema(schema_str) +def get_root_field_name(schema, gql_type: GraphQLObjectType) -> str: + """Look up the root field name that represents the given GQL Type""" + """NOTE that this assumes all queried types are present at the query root!""" + root = schema.get_type("Query") + for name, field in root.fields.items(): + field_type = get_named_type(field.type) + if field_type.name == gql_type.name: + return name + raise RuntimeError(f"Could not root field for {gql_type.name}") + + def parse_fields(gql_type: GraphQLObjectType) -> Tuple[FieldInfo, ...]: """Returns the field information parsed from a GraphQL object type.""" fields = [] @@ -181,7 +200,7 @@ def _parse_field( ) -> Optional[FieldInfo]: logging.debug("_parse_field: %s, %s", name, field) field_type = _maybe_unwrap_non_null(field.type) - if isinstance(field_type, GraphQLList): + if field_type.name.endswith("Connection"): # TODO can we clean this up? return _parse_model_list_field(gql_type, name, field_type) if isinstance(field_type, GraphQLObjectType) and ( field_type.name in GQL_TO_MODEL_TYPE @@ -225,7 +244,7 @@ def _parse_model_field( name=name, description=f"The {model_name} this {source_model_name} is a part of", annotation_type=model, - default_value=f'ItemRelationship("{model}", "{model_field}_id", "id")', + default_value=f'ItemRelationship("{model}", "{model_field}Id", "id")', ) return None @@ -236,7 +255,9 @@ def _parse_model_list_field( field_type: GraphQLList[GraphQLType], ) -> Optional[FieldInfo]: logging.debug("_parse_model_list_field: %s", field_type) - of_type = _maybe_unwrap_non_null(field_type.of_type) + of_type = get_named_type( + get_named_type(field_type.fields["edges"].type).fields["node"].type + ) if not isinstance(of_type, GraphQLNamedType): return None of_model = GQL_TO_MODEL_TYPE.get(of_type.name) @@ -249,7 +270,7 @@ def _parse_model_list_field( name=name, description=f"The {of_model_name} of this {source_model_name}", annotation_type=f"List[{of_model}]", - default_value=f'ListRelationship("{of_model}", "id", "{source_field}_id")', + default_value=f'ListRelationship("{of_model}", "id", "{source_field}Id")', ) return None diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py index 944ca749c..cbf16227a 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py @@ -92,28 +92,22 @@ def convert(self, value): return value -class StringField(BaseField): - ... +class StringField(BaseField): ... -class IntField(BaseField): - ... +class IntField(BaseField): ... class DateField(BaseField): def convert(self, value): if value: - return datetime.date( - datetime.strptime(value, "%Y-%m-%d").astimezone(timezone.utc), - ) + return datetime.fromisoformat(value) -class BooleanField(BaseField): - ... +class BooleanField(BaseField): ... -class FloatField(BaseField): - ... +class FloatField(BaseField): ... class QueryChain(GQLField): @@ -200,6 +194,7 @@ class Model: """The base class that all CryoET Portal Domain Object classes descend from. Documented methods apply to all domain objects.""" _gql_type: str + _gql_root_field: str def __init__(self, client: Client, **kwargs): self._client = client @@ -233,6 +228,10 @@ def _get_relationship_fields(cls): def _get_gql_type(cls): return cls._gql_type + @classmethod + def _get_gql_root_field(cls): + return cls._gql_root_field + @classmethod def find( cls, diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 39b9c70c7..99c77e87f 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -21,648 +21,658 @@ Model, StringField, ) - - -class Dataset(Model): - """Metadata for a dataset +class Alignment(Model): + """Tiltseries Alignment Attributes: - authors (List[DatasetAuthor]): The dataset authors of this dataset - cell_component_id (str): If the dataset focuses on a specific part of a cell, the subset is included here - cell_component_name (str): Name of the cellular component - cell_name (str): Name of the cell from which a biological sample used in a CryoET study is derived from. - cell_strain_id (str): Link to more information about the cell strain - cell_strain_name (str): Cell line or strain for the sample. - cell_type_id (str): Cell Ontology identifier for the cell type - dataset_citations (str): DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - dataset_publications (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - deposition (Deposition): The deposition this dataset is a part of - deposition_date (date): Date when a dataset is initially received by the Data Portal. - deposition_id (int): Reference to the deposition this dataset is associated with - description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - funding_sources (List[DatasetFunding]): The dataset fundings of this dataset - grid_preparation (str): Describe Cryo-ET grid preparation. - https_prefix (str): The https directory path where this dataset is contained - id (int): An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - key_photo_thumbnail_url (str): URL for the thumbnail of preview image. - key_photo_url (str): URL for the dataset preview image. - last_modified_date (date): Date when a released dataset is last modified. - organism_name (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - organism_taxid (str): NCBI taxonomy identifier for the organism, e.g. 9606 - other_setup (str): Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - related_database_links (str): If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - release_date (date): Date when a dataset is made available on the Data Portal. - runs (List[Run]): The runs of this dataset - s3_prefix (str): The S3 public bucket path where this dataset is contained - sample_preparation (str): Describe how the sample was prepared. - sample_type (str): Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - tissue_id (str): UBERON identifier for the tissue - tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. - title (str): Title of a CryoET dataset + id (int): An identifier to refer to a specific instance of this type + annotationFiles (List[AnnotationFile]): The annotation files of this alignment + perSectionAlignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment + deposition (Deposition): The deposition this alignment is a part of + depositionId (int): None + tiltseries (Tiltseries): The tiltseries this alignment is a part of + tiltseriesId (int): None + tomograms (List[Tomogram]): The tomograms of this alignment + run (Run): The run this alignment is a part of + runId (int): None + volumeXDimension (float): X dimension of the reconstruction volume in angstrom + volumeYDimension (float): Y dimension of the reconstruction volume in angstrom + volumeZDimension (float): Z dimension of the reconstruction volume in angstrom + volumeXOffset (float): X shift of the reconstruction volume in angstrom + volumeYOffset (float): Y shift of the reconstruction volume in angstrom + volumeZOffset (float): Z shift of the reconstruction volume in angstrom + xRotationOffset (float): Additional X rotation of the reconstruction volume in degrees + tiltOffset (float): Additional tilt offset in degrees + localAlignmentFile (str): Path to the local alignment file + affineTransformationMatrix (str): A placeholder for the affine transformation matrix. """ - _gql_type: str = "datasets" - - authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "dataset_id") - cell_component_id: str = StringField() - cell_component_name: str = StringField() - cell_name: str = StringField() - cell_strain_id: str = StringField() - cell_strain_name: str = StringField() - cell_type_id: str = StringField() - dataset_citations: str = StringField() - dataset_publications: str = StringField() - deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") - deposition_date: date = DateField() - deposition_id: int = IntField() - description: str = StringField() - funding_sources: List[DatasetFunding] = ListRelationship( - "DatasetFunding", - "id", - "dataset_id", - ) - grid_preparation: str = StringField() - https_prefix: str = StringField() - id: int = IntField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() - last_modified_date: date = DateField() - organism_name: str = StringField() - organism_taxid: str = StringField() - other_setup: str = StringField() - related_database_entries: str = StringField() - related_database_links: str = StringField() - release_date: date = DateField() - runs: List[Run] = ListRelationship("Run", "id", "dataset_id") - s3_prefix: str = StringField() - sample_preparation: str = StringField() - sample_type: str = StringField() - tissue_id: str = StringField() - tissue_name: str = StringField() - title: str = StringField() - - def download_everything(self, dest_path: Optional[str] = None): - """Download all of the data for this dataset. - - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - recursive_prefix = "/".join(self.s3_prefix.strip("/").split("/")[:-1]) + "/" - download_directory(self.s3_prefix, recursive_prefix, dest_path) - + _gql_type: str = "Alignment" + _gql_root_field: str = "alignments" -class DatasetAuthor(Model): - """Metadata for authors of a dataset + id: int = IntField() + annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") + perSectionAlignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + tiltseries: Tiltseries = ItemRelationship("Tiltseries", "tiltseriesId", "id") + tiltseriesId: int = IntField() + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignmentId") + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + volumeXDimension: float = FloatField() + volumeYDimension: float = FloatField() + volumeZDimension: float = FloatField() + volumeXOffset: float = FloatField() + volumeYOffset: float = FloatField() + volumeZOffset: float = FloatField() + xRotationOffset: float = FloatField() + tiltOffset: float = FloatField() + localAlignmentFile: str = StringField() + affineTransformationMatrix: str = StringField() +class AnnotationAuthor(Model): + """Author of an annotation Attributes: - affiliation_address (str): Address of the institution an author is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicating whether an author is the corresponding author - dataset (Dataset): The dataset this dataset author is a part of - dataset_id (int): Numeric identifier for the dataset this author corresponds to - email (str): Email address for each author - id (int): A numeric identifier for this author (May change!) - name (str): Full name of a dataset author (e.g. Jane Doe). - orcid (str): A unique, persistent identifier for researchers, provided by ORCID. - primary_author_status (bool): Indicating whether an author is the main person associated with the corresponding dataset + id (int): An identifier to refer to a specific instance of this type + annotation (Annotation): The annotation this annotation author is a part of + annotationId (int): None + authorListOrder (int): The order that the author is listed as in the associated publication + orcid (str): The ORCID identifier for the author. + name (str): The full name of the author. + email (str): The email address of the author. + affiliationName (str): The name of the author's affiliation. + affiliationAddress (str): The address of the author's affiliation. + affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. + correspondingAuthorStatus (bool): Whether the author is a corresponding author. + primaryAuthorStatus (bool): Whether the author is a primary author. """ - _gql_type: str = "dataset_authors" + _gql_type: str = "AnnotationAuthor" + _gql_root_field: str = "annotationAuthors" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() - dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") - dataset_id: int = IntField() - email: str = StringField() id: int = IntField() - name: str = StringField() + annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") + annotationId: int = IntField() + authorListOrder: int = IntField() orcid: str = StringField() - primary_author_status: bool = BooleanField() - - -class DatasetFunding(Model): - """Metadata for a dataset's funding sources + name: str = StringField() + email: str = StringField() + affiliationName: str = StringField() + affiliationAddress: str = StringField() + affiliationIdentifier: str = StringField() + correspondingAuthorStatus: bool = BooleanField() + primaryAuthorStatus: bool = BooleanField() +class AnnotationFile(Model): + """Files associated with an annotation Attributes: - dataset (Dataset): The dataset this dataset funding is a part of - dataset_id (int): Numeric identifier for the dataset this funding source corresponds to - funding_agency_name (str): Name of the funding agency. - grant_id (str): Grant identifier provided by the funding agency. - id (int): A numeric identifier for this funding record (May change!) + id (int): An identifier to refer to a specific instance of this type + alignment (Alignment): The alignment this annotation file is a part of + alignmentId (int): None + annotationShape (AnnotationShape): The annotation shape this annotation file is a part of + annotationShapeId (int): None + tomogramVoxelSpacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of + tomogramVoxelSpacingId (int): None + format (str): File format label + s3Path (str): Path to the file in s3 + httpsPath (str): Path to the file as an https url + isVisualizationDefault (bool): This annotation will be rendered in neuroglancer by default. """ - _gql_type: str = "dataset_funding" + _gql_type: str = "AnnotationFile" + _gql_root_field: str = "annotationFiles" - dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") - dataset_id: int = IntField() - funding_agency_name: str = StringField() - grant_id: str = StringField() id: int = IntField() + alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignmentId: int = IntField() + annotationShape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") + annotationShapeId: int = IntField() + tomogramVoxelSpacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogramVoxelSpacingId: int = IntField() + format: str = StringField() + s3Path: str = StringField() + httpsPath: str = StringField() + isVisualizationDefault: bool = BooleanField() - -class Run(Model): - """Metadata for an experiment run + def download(self, dest_path: Optional[str] = None): + if self.format == "zarr": + recursive_prefix = "/".join(self.s3_path.split("/")[:-1]) + "/" + download_directory(self.s3_path, recursive_prefix, dest_path) + else: + download_https(self.https_path, dest_path) +class AnnotationShape(Model): + """Shapes associated with an annotation Attributes: - dataset (Dataset): The dataset this run is a part of - dataset_id (int): Reference to the dataset this run is a part of - https_prefix (str): The HTTPS directory path where this dataset is contained - id (int): Numeric identifier (May change!) - name (str): Short name for this experiment run - s3_prefix (str): The S3 public bucket path where this dataset is contained - tiltseries (List[TiltSeries]): The tilt series of this run - tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run + id (int): An identifier to refer to a specific instance of this type + annotation (Annotation): The annotation this annotation shape is a part of + annotationId (int): None + annotationFiles (List[AnnotationFile]): The annotation files of this annotation shape """ - _gql_type: str = "runs" + _gql_type: str = "AnnotationShape" + _gql_root_field: str = "annotationShapes" - dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") - dataset_id: int = IntField() - https_prefix: str = StringField() id: int = IntField() - name: str = StringField() - s3_prefix: str = StringField() - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "run_id") - tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship( - "TomogramVoxelSpacing", - "id", - "run_id", - ) - - def download_everything(self, dest_path: Optional[str] = None): - """Download all of the data for this run. - - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - download_directory(self.s3_prefix, self.dataset.s3_prefix, dest_path) - - def download_frames(self, dest_path: Optional[str] = None): - download_directory( - os.path.join(self.s3_prefix, "Frames"), - self.s3_prefix, - dest_path, - ) - - -class TomogramVoxelSpacing(Model): - """Metadata for a given voxel spacing related to tomograms and annotations + annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") + annotationId: int = IntField() + annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") +class Annotation(Model): + """Metadata about an annotation for a run Attributes: - annotations (List[Annotation]): The annotations of this tomogram voxel spacing - https_prefix (str): The HTTPS directory path where this tomogram voxel spacing is contained - id (int): Numeric identifier (May change!) - run (Run): The run this tomogram voxel spacing is a part of - run_id (int): The ID of the run this tomogram voxel spacing is a part of - s3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained - tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing - voxel_spacing (float): The voxel spacing for the tomograms in this set in angstroms + id (int): An identifier to refer to a specific instance of this type + run (Run): The run this annotation is a part of + runId (int): None + annotationShapes (List[AnnotationShape]): The annotation shapes of this annotation + authors (List[AnnotationAuthor]): The annotation authors of this annotation + deposition (Deposition): The deposition this annotation is a part of + depositionId (int): None + s3MetadataPath (str): Path to the file in s3 + httpsMetadataPath (str): Path to the file as an https url + annotationPublication (str): List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + annotationMethod (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + groundTruthStatus (bool): Whether an annotation is considered ground truth, as determined by the annotator. + objectId (str): Gene Ontology Cellular Component identifier for the annotation object + objectName (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + objectDescription (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + objectState (str): Molecule state annotated (e.g. open, closed) + objectCount (int): Number of objects identified + confidencePrecision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + confidenceRecall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + groundTruthUsed (str): Annotation filename used as ground truth for precision and recall + annotationSoftware (str): Software used for generating this annotation + isCuratorRecommended (bool): This annotation is recommended by the curator to be preferred for this object type. + depositionDate (date): The date a data item was received by the cryoET data portal. + releaseDate (date): The date a data item was received by the cryoET data portal. + lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. """ - _gql_type: str = "tomogram_voxel_spacings" + _gql_type: str = "Annotation" + _gql_root_field: str = "annotations" - annotations: List[Annotation] = ListRelationship( - "Annotation", - "id", - "tomogram_voxel_spacing_id", - ) - https_prefix: str = StringField() id: int = IntField() - run: Run = ItemRelationship("Run", "run_id", "id") - run_id: int = IntField() - s3_prefix: str = StringField() - tomograms: List[Tomogram] = ListRelationship( - "Tomogram", - "id", - "tomogram_voxel_spacing_id", - ) - voxel_spacing: float = FloatField() + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + annotationShapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") + authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + s3MetadataPath: str = StringField() + httpsMetadataPath: str = StringField() + annotationPublication: str = StringField() + annotationMethod: str = StringField() + groundTruthStatus: bool = BooleanField() + objectId: str = StringField() + objectName: str = StringField() + objectDescription: str = StringField() + objectState: str = StringField() + objectCount: int = IntField() + confidencePrecision: float = FloatField() + confidenceRecall: float = FloatField() + groundTruthUsed: str = StringField() + annotationSoftware: str = StringField() + isCuratorRecommended: bool = BooleanField() + depositionDate: date = DateField() + releaseDate: date = DateField() + lastModifiedDate: date = DateField() - def download_everything(self, dest_path: Optional[str] = None): - """Download all of the data for this tomogram voxel spacing. + def download( + self, + dest_path: Optional[str] = None, + format: Optional[str] = None, + shape: Optional[str] = None, + ): + """Download annotation files for a given format and/or shape Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) + format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - download_directory(self.s3_prefix, self.run.s3_prefix, dest_path) - - -class Tomogram(Model): - """Metadata for a tomogram + download_metadata = False + for file in self.files: + if format and file.format != format: + continue + if shape and file.shape_type != shape: + continue + file.download(dest_path) + download_metadata = True + if download_metadata: + download_https(self.https_metadata_path, dest_path) +class DatasetAuthor(Model): + """An author of a dataset Attributes: - affine_transformation_matrix (str): The flip or rotation transformation of this author submitted tomogram is indicated here - authors (List[TomogramAuthor]): The tomogram authors of this tomogram - ctf_corrected (bool): Whether this tomogram is CTF corrected - deposition (Deposition): The deposition this tomogram is a part of - deposition_id (int): If the tomogram is part of a deposition, the related deposition's id - fiducial_alignment_status (str): Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial - https_mrc_scale0 (str): HTTPS path to this tomogram in MRC format (no scaling) - https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format - id (int): Numeric identifier for this tomogram (this may change!) - is_canonical (bool): Is this tomogram considered the canonical tomogram for the run experiment? True=Yes - key_photo_thumbnail_url (str): URL for the thumbnail of key photo - key_photo_url (str): URL for the key photo - name (str): Short name for this tomogram - neuroglancer_config (str): the compact json of neuroglancer config - offset_x (int): x offset data relative to the canonical tomogram in pixels - offset_y (int): y offset data relative to the canonical tomogram in pixels - offset_z (int): z offset data relative to the canonical tomogram in pixels - processing (str): Describe additional processing used to derive the tomogram - processing_software (str): Processing software used to derive the tomogram - reconstruction_method (str): Describe reconstruction method (Weighted back-projection, SART, SIRT) - reconstruction_software (str): Name of software used for reconstruction - s3_mrc_scale0 (str): S3 path to this tomogram in MRC format (no scaling) - s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format - scale0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram - scale1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram - scale2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram - size_x (int): Number of pixels in the 3D data fast axis - size_y (int): Number of pixels in the 3D data medium axis - size_z (int): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - tomogram_version (str): Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of - tomogram_voxel_spacing_id (int): The ID of the tomogram voxel spacing this tomogram is part of - type (str): Tomogram purpose (ex: CANONICAL) - voxel_spacing (float): Voxel spacing equal in all three axes in angstroms + id (int): An identifier to refer to a specific instance of this type + dataset (Dataset): The dataset this dataset author is a part of + datasetId (int): None + authorListOrder (int): The order that the author is listed as in the associated publication + orcid (str): The ORCID identifier for the author. + name (str): The full name of the author. + email (str): The email address of the author. + affiliationName (str): The name of the author's affiliation. + affiliationAddress (str): The address of the author's affiliation. + affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. + correspondingAuthorStatus (bool): Whether the author is a corresponding author. + primaryAuthorStatus (bool): Whether the author is a primary author. """ - _gql_type: str = "tomograms" - - affine_transformation_matrix: str = StringField() - authors: List[TomogramAuthor] = ListRelationship( - "TomogramAuthor", - "id", - "tomogram_id", - ) - ctf_corrected: bool = BooleanField() - deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") - deposition_id: int = IntField() - fiducial_alignment_status: str = StringField() - https_mrc_scale0: str = StringField() - https_omezarr_dir: str = StringField() + _gql_type: str = "DatasetAuthor" + _gql_root_field: str = "datasetAuthors" + id: int = IntField() - is_canonical: bool = BooleanField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() + dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + datasetId: int = IntField() + authorListOrder: int = IntField() + orcid: str = StringField() name: str = StringField() - neuroglancer_config: str = StringField() - offset_x: int = IntField() - offset_y: int = IntField() - offset_z: int = IntField() - processing: str = StringField() - processing_software: str = StringField() - reconstruction_method: str = StringField() - reconstruction_software: str = StringField() - s3_mrc_scale0: str = StringField() - s3_omezarr_dir: str = StringField() - scale0_dimensions: str = StringField() - scale1_dimensions: str = StringField() - scale2_dimensions: str = StringField() - size_x: int = IntField() - size_y: int = IntField() - size_z: int = IntField() - tomogram_version: str = StringField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship( - "TomogramVoxelSpacing", - "tomogram_voxel_spacing_id", - "id", - ) - tomogram_voxel_spacing_id: int = IntField() - type: str = StringField() - voxel_spacing: float = FloatField() + email: str = StringField() + affiliationName: str = StringField() + affiliationAddress: str = StringField() + affiliationIdentifier: str = StringField() + correspondingAuthorStatus: bool = BooleanField() + primaryAuthorStatus: bool = BooleanField() +class DatasetFunding(Model): + """Information about how a dataset was funded - def download_omezarr(self, dest_path: Optional[str] = None): - """Download the OME-Zarr version of this tomogram + Attributes: + id (int): An identifier to refer to a specific instance of this type + dataset (Dataset): The dataset this dataset funding is a part of + datasetId (int): None + fundingAgencyName (str): The name of the funding source. + grantId (str): Grant identifier provided by the funding agency + """ - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - recursive_prefix = "/".join(self.s3_omezarr_dir.split("/")[:-1]) + "/" - download_directory(self.s3_omezarr_dir, recursive_prefix, dest_path) + _gql_type: str = "DatasetFunding" + _gql_root_field: str = "datasetFunding" - def download_mrcfile(self, dest_path: Optional[str] = None): - """Download an MRC file of this tomogram + id: int = IntField() + dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + datasetId: int = IntField() + fundingAgencyName: str = StringField() + grantId: str = StringField() +class Dataset(Model): + """An author of a dataset - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - url = self.https_mrc_scale0 - download_https(url, dest_path) + Attributes: + id (int): An identifier to refer to a specific instance of this type + deposition (Deposition): The deposition this dataset is a part of + depositionId (int): None + fundingSources (List[DatasetFunding]): The dataset fundings of this dataset + authors (List[DatasetAuthor]): The dataset authors of this dataset + runs (List[Run]): The runs of this dataset + title (str): Title of a CryoET dataset. + description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. + organismName (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + organismTaxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 + tissueName (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. + tissueId (str): The UBERON identifier for the tissue. + cellName (str): Name of the cell type from which a biological sample used in a CryoET study is derived from. + cellTypeId (str): Cell Ontology identifier for the cell type + cellStrainName (str): Cell line or strain for the sample. + cellStrainId (str): Link to more information about the cell strain. + samplePreparation (str): Describes how the sample was prepared. + gridPreparation (str): Describes Cryo-ET grid preparation. + otherSetup (str): Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + keyPhotoUrl (str): URL for the dataset preview image. + keyPhotoThumbnailUrl (str): URL for the thumbnail of preview image. + cellComponentName (str): Name of the cellular component. + cellComponentId (str): The GO identifier for the cellular component. + depositionDate (date): The date a data item was received by the cryoET data portal. + releaseDate (date): The date a data item was received by the cryoET data portal. + lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. + publications (str): Comma-separated list of DOIs for publications associated with the dataset. + relatedDatabaseEntries (str): Comma-separated list of related database entries for the dataset. + s3Prefix (str): Path to a directory containing data for this entity as an S3 url + httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + """ - def download_all_annotations( - self, - dest_path: Optional[str] = None, - format: Optional[str] = None, - shape: Optional[str] = None, - ): - """Download all annotation files for this tomogram + _gql_type: str = "Dataset" + _gql_root_field: str = "datasets" + + id: int = IntField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + fundingSources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") + authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") + runs: List[Run] = ListRelationship("Run", "id", "datasetId") + title: str = StringField() + description: str = StringField() + organismName: str = StringField() + organismTaxid: int = IntField() + tissueName: str = StringField() + tissueId: str = StringField() + cellName: str = StringField() + cellTypeId: str = StringField() + cellStrainName: str = StringField() + cellStrainId: str = StringField() + samplePreparation: str = StringField() + gridPreparation: str = StringField() + otherSetup: str = StringField() + keyPhotoUrl: str = StringField() + keyPhotoThumbnailUrl: str = StringField() + cellComponentName: str = StringField() + cellComponentId: str = StringField() + depositionDate: date = DateField() + releaseDate: date = DateField() + lastModifiedDate: date = DateField() + publications: str = StringField() + relatedDatabaseEntries: str = StringField() + s3Prefix: str = StringField() + httpsPrefix: str = StringField() + + def download_everything(self, dest_path: Optional[str] = None): + """Download all of the data for this dataset. Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) - format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - vs = self.tomogram_voxel_spacing - for anno in vs.annotations: - anno.download(dest_path, format, shape) - - -class TomogramAuthor(Model): - """Metadata for a tomogram's authors + recursive_prefix = "/".join(self.s3_prefix.strip("/").split("/")[:-1]) + "/" + download_directory(self.s3_prefix, recursive_prefix, dest_path) +class DepositionAuthor(Model): + """Author of a deposition Attributes: - affiliation_address (str): Address of the institution an author is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicating whether an author is the corresponding author (YES or NO) - email (str): Email address for this author - id (int): Numeric identifier for this tomogram author (this may change!) - name (str): Full name of an author (e.g. Jane Doe). - orcid (str): A unique, persistent identifier for researchers, provided by ORCID. - primary_author_status (bool): Indicating whether an author is the main person creating the tomogram (YES or NO) - tomogram (Tomogram): The tomogram this tomogram author is a part of - tomogram_id (int): Reference to the tomogram this author contributed to + id (int): An identifier to refer to a specific instance of this type + deposition (Deposition): The deposition this deposition author is a part of + depositionId (int): None + authorListOrder (int): The order that the author is listed as in the associated publication + orcid (str): The ORCID identifier for the author. + name (str): The full name of the author. + email (str): The email address of the author. + affiliationName (str): The name of the author's affiliation. + affiliationAddress (str): The address of the author's affiliation. + affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. + correspondingAuthorStatus (bool): Whether the author is a corresponding author. + primaryAuthorStatus (bool): Whether the author is a primary author. """ - _gql_type: str = "tomogram_authors" + _gql_type: str = "DepositionAuthor" + _gql_root_field: str = "depositionAuthors" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() - email: str = StringField() id: int = IntField() - name: str = StringField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + authorListOrder: int = IntField() orcid: str = StringField() - primary_author_status: bool = BooleanField() - tomogram: Tomogram = ItemRelationship("Tomogram", "tomogram_id", "id") - tomogram_id: int = IntField() - - -class Annotation(Model): - """Metadata for an annotation + name: str = StringField() + email: str = StringField() + affiliationName: str = StringField() + affiliationAddress: str = StringField() + affiliationIdentifier: str = StringField() + correspondingAuthorStatus: bool = BooleanField() + primaryAuthorStatus: bool = BooleanField() +class Deposition(Model): + """None Attributes: - annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - annotation_software (str): Software used for generating this annotation - authors (List[AnnotationAuthor]): The annotation authors of this annotation - confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - deposition (Deposition): The deposition this annotation is a part of - deposition_date (date): Date when an annotation set is initially received by the Data Portal. - deposition_id (int): If the annotation is part of a deposition, the related deposition's id - files (List[AnnotationFile]): The annotation files of this annotation - ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. - ground_truth_used (str): Annotation filename used as ground truth for precision and recall - https_metadata_path (str): HTTPS path for the metadata json file for this annotation - id (int): Numeric identifier (May change!) - is_curator_recommended (bool): Data curator’s subjective choice as the best annotation of the same annotation object ID - last_modified_date (date): Date when an annotation was last modified in the Data Portal - method_type (str): The method type for generating the annotation (e.g. manual, hybrid, automated) - object_count (int): Number of objects identified - object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - object_id (str): Gene Ontology Cellular Component identifier for the annotation object - object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - object_state (str): Molecule state annotated (e.g. open, closed) - release_date (date): Date when annotation data is made public by the Data Portal. - s3_metadata_path (str): S3 path for the metadata json file for this annotation - tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation is a part of - tomogram_voxel_spacing_id (int): The ID of the tomogram voxel spacing this annotation is part of + id (int): An identifier to refer to a specific instance of this type + authors (List[DepositionAuthor]): The deposition authors of this deposition + alignments (List[Alignment]): The alignments of this deposition + annotations (List[Annotation]): The annotations of this deposition + datasets (List[Dataset]): The datasets of this deposition + frames (List[Frame]): The frames of this deposition + tiltseries (List[Tiltseries]): The tiltseries of this deposition + tomograms (List[Tomogram]): The tomograms of this deposition + depositionTitle (str): Title of a CryoET deposition. + depositionDescription (str): A short description of the deposition, similar to an abstract for a journal article or dataset. + publications (str): Comma-separated list of DOIs for publications associated with the dataset. + relatedDatabaseEntries (str): Comma-separated list of related database entries for the dataset. + depositionDate (date): The date a data item was received by the cryoET data portal. + releaseDate (date): The date a data item was received by the cryoET data portal. + lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. """ - _gql_type: str = "annotations" - - annotation_method: str = StringField() - annotation_publication: str = StringField() - annotation_software: str = StringField() - authors: List[AnnotationAuthor] = ListRelationship( - "AnnotationAuthor", - "id", - "annotation_id", - ) - confidence_precision: float = FloatField() - confidence_recall: float = FloatField() - deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") - deposition_date: date = DateField() - deposition_id: int = IntField() - files: List[AnnotationFile] = ListRelationship( - "AnnotationFile", - "id", - "annotation_id", - ) - ground_truth_status: bool = BooleanField() - ground_truth_used: str = StringField() - https_metadata_path: str = StringField() - id: int = IntField() - is_curator_recommended: bool = BooleanField() - last_modified_date: date = DateField() - method_type: str = StringField() - object_count: int = IntField() - object_description: str = StringField() - object_id: str = StringField() - object_name: str = StringField() - object_state: str = StringField() - release_date: date = DateField() - s3_metadata_path: str = StringField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship( - "TomogramVoxelSpacing", - "tomogram_voxel_spacing_id", - "id", - ) - tomogram_voxel_spacing_id: int = IntField() + _gql_type: str = "Deposition" + _gql_root_field: str = "depositions" - def download( - self, - dest_path: Optional[str] = None, - format: Optional[str] = None, - shape: Optional[str] = None, - ): - """Download annotation files for a given format and/or shape + id: int = IntField() + authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") + alignments: List[Alignment] = ListRelationship("Alignment", "id", "depositionId") + annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") + datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") + frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") + tiltseries: List[Tiltseries] = ListRelationship("Tiltseries", "id", "depositionId") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") + depositionTitle: str = StringField() + depositionDescription: str = StringField() + publications: str = StringField() + relatedDatabaseEntries: str = StringField() + depositionDate: date = DateField() + releaseDate: date = DateField() + lastModifiedDate: date = DateField() +class Frame(Model): + """None - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) - format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) - """ - download_metadata = False - for file in self.files: - if format and file.format != format: - continue - if shape and file.shape_type != shape: - continue - file.download(dest_path) - download_metadata = True - if download_metadata: - download_https(self.https_metadata_path, dest_path) + Attributes: + id (int): An identifier to refer to a specific instance of this type + deposition (Deposition): The deposition this frame is a part of + depositionId (int): None + perSectionParameters (List[PerSectionParameters]): The per section parameters of this frame + run (Run): The run this frame is a part of + runId (int): None + rawAngle (float): Camera angle for a frame + acquisitionOrder (int): Frame's acquistion order within a tilt experiment + dose (float): The raw camera angle for a frame + isGainCorrected (bool): Whether this frame has been gain corrected + s3GainFile (str): S3 path to the gain file for this frame + httpsGainFile (str): HTTPS path to the gain file for this frame + s3Prefix (str): Path to a directory containing data for this entity as an S3 url + httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + """ + _gql_type: str = "Frame" + _gql_root_field: str = "frames" -class AnnotationFile(Model): - """Metadata for an annotation file + id: int = IntField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + perSectionParameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + rawAngle: float = FloatField() + acquisitionOrder: int = IntField() + dose: float = FloatField() + isGainCorrected: bool = BooleanField() + s3GainFile: str = StringField() + httpsGainFile: str = StringField() + s3Prefix: str = StringField() + httpsPrefix: str = StringField() +class PerSectionAlignmentParameters(Model): + """Map alignment parameters to tilt series frames Attributes: - annotation (Annotation): The annotation this annotation file is a part of - annotation_id (int): The ID of the annotation this file applies to - format (str): File format for this file - https_path (str): HTTPS path for this annotation file - id (int): Numeric identifier (May change!) - is_visualization_default (bool): Data curator’s subjective choice of default annotation to display in visualization for an object - s3_path (str): s3 path of the annotation file - shape_type (str): The type of the annotation + id (int): An identifier to refer to a specific instance of this type + alignment (Alignment): The alignment this per section alignment parameters is a part of + alignmentId (int): None + zIndex (int): z-index of the frame in the tiltseries + xOffset (float): In-plane X-shift of the projection in angstrom + yOffset (float): In-plane Y-shift of the projection in angstrom + inPlaneRotation (float): In-plane rotation of the projection in degrees + beamTilt (float): Beam tilt during projection in degrees + tiltAngle (float): Tilt angle of the projection in degrees """ - _gql_type: str = "annotation_files" + _gql_type: str = "PerSectionAlignmentParameters" + _gql_root_field: str = "perSectionAlignmentParameters" - annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") - annotation_id: int = IntField() - format: str = StringField() - https_path: str = StringField() id: int = IntField() - is_visualization_default: bool = BooleanField() - s3_path: str = StringField() - shape_type: str = StringField() + alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignmentId: int = IntField() + zIndex: int = IntField() + xOffset: float = FloatField() + yOffset: float = FloatField() + inPlaneRotation: float = FloatField() + beamTilt: float = FloatField() + tiltAngle: float = FloatField() +class PerSectionParameters(Model): + """Record how frames get mapped to TiltSeries - def download(self, dest_path: Optional[str] = None): - if self.format == "zarr": - recursive_prefix = "/".join(self.s3_path.split("/")[:-1]) + "/" - download_directory(self.s3_path, recursive_prefix, dest_path) - else: - download_https(self.https_path, dest_path) + Attributes: + id (int): An identifier to refer to a specific instance of this type + frame (Frame): The frame this per section parameters is a part of + frameId (int): None + tiltseries (Tiltseries): The tiltseries this per section parameters is a part of + tiltseriesId (int): None + zIndex (int): z-index of the frame in the tiltseries + defocus (float): defocus amount + astigmatism (float): Astigmatism amount for this frame + astigmaticAngle (float): Angle of ast + """ + _gql_type: str = "PerSectionParameters" + _gql_root_field: str = "perSectionParameters" -class AnnotationAuthor(Model): - """Metadata for an annotation's authors + id: int = IntField() + frame: Frame = ItemRelationship("Frame", "frameId", "id") + frameId: int = IntField() + tiltseries: Tiltseries = ItemRelationship("Tiltseries", "tiltseriesId", "id") + tiltseriesId: int = IntField() + zIndex: int = IntField() + defocus: float = FloatField() + astigmatism: float = FloatField() + astigmaticAngle: float = FloatField() +class Run(Model): + """None Attributes: - affiliation_address (str): Address of the institution an annotator is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - annotation (Annotation): The annotation this annotation author is a part of - annotation_id (int): Reference to the annotation this author contributed to - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicating whether an annotator is the corresponding author (YES or NO) - email (str): Email address for this author - id (int): Numeric identifier for this annotation author (this may change!) - name (str): Full name of an annotation author (e.g. Jane Doe). - orcid (str): A unique, persistent identifier for researchers, provided by ORCID. - primary_annotator_status (bool): Indicating whether an annotator is the main person executing the annotation, especially on manual annotation (YES or NO) - primary_author_status (bool): Indicating whether an author is the main person executing the annotation, especially on manual annotation (YES or NO) + id (int): An identifier to refer to a specific instance of this type + alignments (List[Alignment]): The alignments of this run + annotations (List[Annotation]): The annotations of this run + dataset (Dataset): The dataset this run is a part of + datasetId (int): None + frames (List[Frame]): The frames of this run + tiltseries (List[Tiltseries]): The tiltseries of this run + tomogramVoxelSpacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run + tomograms (List[Tomogram]): The tomograms of this run + name (str): Name of a run + s3Prefix (str): Path to a directory containing data for this entity as an S3 url + httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url """ - _gql_type: str = "annotation_authors" + _gql_type: str = "Run" + _gql_root_field: str = "runs" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") - annotation_id: int = IntField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() - email: str = StringField() id: int = IntField() + alignments: List[Alignment] = ListRelationship("Alignment", "id", "runId") + annotations: List[Annotation] = ListRelationship("Annotation", "id", "runId") + dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + datasetId: int = IntField() + frames: List[Frame] = ListRelationship("Frame", "id", "runId") + tiltseries: List[Tiltseries] = ListRelationship("Tiltseries", "id", "runId") + tomogramVoxelSpacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") name: str = StringField() - orcid: str = StringField() - primary_annotator_status: bool = BooleanField() - primary_author_status: bool = BooleanField() + s3Prefix: str = StringField() + httpsPrefix: str = StringField() + def download_everything(self, dest_path: Optional[str] = None): + """Download all of the data for this run. -class TiltSeries(Model): - """Metadata about how a tilt series was generated, and locations of output files + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + download_directory(self.s3_prefix, self.dataset.s3_prefix, dest_path) + + def download_frames(self, dest_path: Optional[str] = None): + download_directory( + os.path.join(self.s3_prefix, "Frames"), + self.s3_prefix, + dest_path, + ) +class Tiltseries(Model): + """None Attributes: - acceleration_voltage (int): Electron Microscope Accelerator voltage in volts - aligned_tiltseries_binning (int): Binning factor of the aligned tilt series - binning_from_frames (float): Describes the binning factor from frames to tilt series file - camera_manufacturer (str): Name of the camera manufacturer - camera_model (str): Camera model name - data_acquisition_software (str): Software used to collect data - deposition (Deposition): The deposition this tilt series is a part of - deposition_id (int): Reference to the deposition this tiltseries is associated with - frames_count (int): Number of frames associated to the tilt series - https_alignment_file (str): HTTPS path to the alignment file for this tiltseries - https_angle_list (str): HTTPS path to the angle list file for this tiltseries - https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries - https_mrc_bin1 (str): HTTPS path to this tiltseries in MRC format (no scaling) - https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format - id (int): Numeric identifier for this tilt series (this may change!) - is_aligned (bool): Tilt series is aligned - microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - microscope_energy_filter (str): Energy filter setup used - microscope_image_corrector (str): Image corrector setup - microscope_manufacturer (str): Name of the microscope manufacturer - microscope_model (str): Microscope model name - microscope_phase_plate (str): Phase plate configuration - pixel_spacing (float): Pixel spacing equal in both axes in angstroms - related_empiar_entry (str): If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - run (Run): The run this tilt series is a part of - run_id (int): The ID of the experimental run this tilt series is part of - s3_alignment_file (str): S3 path to the alignment file for this tilt series - s3_angle_list (str): S3 path to the angle list file for this tilt series - s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries - s3_mrc_bin1 (str): S3 path to this tiltseries in MRC format (no scaling) - s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format - spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters - tilt_axis (float): Rotation angle in degrees - tilt_max (float): Maximal tilt angle in degrees - tilt_min (float): Minimal tilt angle in degrees - tilt_range (float): Total tilt range in degrees - tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) - tilt_step (float): Tilt step in degrees - tilting_scheme (str): The order of stage tilting during acquisition of the data - total_flux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + id (int): An identifier to refer to a specific instance of this type + alignments (List[Alignment]): The alignments of this tiltseries + perSectionParameters (List[PerSectionParameters]): The per section parameters of this tiltseries + run (Run): The run this tiltseries is a part of + runId (int): None + deposition (Deposition): The deposition this tiltseries is a part of + depositionId (int): None + s3OmezarrDir (str): S3 path to this tiltseries in multiscale OME-Zarr format + s3MrcFile (str): S3 path to this tiltseries in MRC format (no scaling) + httpsOmezarrDir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format + httpsMrcFile (str): HTTPS path to this tiltseries in MRC format (no scaling) + s3CollectionMetadata (str): S3 path to the collection metadata file for this tiltseries + httpsCollectionMetadata (str): HTTPS path to the collection metadata file for this tiltseries + s3AngleList (str): S3 path to the angle list file for this tiltseries + httpsAngleList (str): HTTPS path to the angle list file for this tiltseries + s3GainFile (str): S3 path to the gain file for this tiltseries + httpsGainFile (str): HTTPS path to the gain file for this tiltseries + accelerationVoltage (float): Electron Microscope Accelerator voltage in volts + sphericalAberrationConstant (float): Spherical Aberration Constant of the objective lens in millimeters + microscopeModel (str): Microscope model name + microscopeEnergyFilter (str): Energy filter setup used + microscopePhasePlate (str): Phase plate configuration + microscopeImageCorrector (str): Image corrector setup + microscopeAdditionalInfo (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector + cameraManufacturer (str): Name of the camera manufacturer + cameraModel (str): Camera model name + tiltMin (float): Minimal tilt angle in degrees + tiltMax (float): Maximal tilt angle in degrees + tiltRange (float): Total tilt range from min to max in degrees + tiltStep (float): Tilt step in degrees + tiltingScheme (str): The order of stage tilting during acquisition of the data + tiltAxis (float): Rotation angle in degrees + totalFlux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + dataAcquisitionSoftware (str): Software used to collect data + relatedEmpiarEntry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + binningFromFrames (float): Describes the binning factor from frames to tilt series file + tiltSeriesQuality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) + isAligned (bool): Whether this tilt series is aligned + pixelSpacing (float): Pixel spacing for the tilt series + alignedTiltseriesBinning (float): Binning factor of the aligned tilt series + tiltseriesFramesCount (int): Number of frames associated with this tiltseries """ - _gql_type: str = "tiltseries" - - acceleration_voltage: int = IntField() - aligned_tiltseries_binning: int = IntField() - binning_from_frames: float = FloatField() - camera_manufacturer: str = StringField() - camera_model: str = StringField() - data_acquisition_software: str = StringField() - deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") - deposition_id: int = IntField() - frames_count: int = IntField() - https_alignment_file: str = StringField() - https_angle_list: str = StringField() - https_collection_metadata: str = StringField() - https_mrc_bin1: str = StringField() - https_omezarr_dir: str = StringField() + _gql_type: str = "Tiltseries" + _gql_root_field: str = "tiltseries" + id: int = IntField() - is_aligned: bool = BooleanField() - microscope_additional_info: str = StringField() - microscope_energy_filter: str = StringField() - microscope_image_corrector: str = StringField() - microscope_manufacturer: str = StringField() - microscope_model: str = StringField() - microscope_phase_plate: str = StringField() - pixel_spacing: float = FloatField() - related_empiar_entry: str = StringField() - run: Run = ItemRelationship("Run", "run_id", "id") - run_id: int = IntField() - s3_alignment_file: str = StringField() - s3_angle_list: str = StringField() - s3_collection_metadata: str = StringField() - s3_mrc_bin1: str = StringField() - s3_omezarr_dir: str = StringField() - spherical_aberration_constant: float = FloatField() - tilt_axis: float = FloatField() - tilt_max: float = FloatField() - tilt_min: float = FloatField() - tilt_range: float = FloatField() - tilt_series_quality: int = IntField() - tilt_step: float = FloatField() - tilting_scheme: str = StringField() - total_flux: float = FloatField() + alignments: List[Alignment] = ListRelationship("Alignment", "id", "tiltseriesId") + perSectionParameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tiltseriesId") + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + s3OmezarrDir: str = StringField() + s3MrcFile: str = StringField() + httpsOmezarrDir: str = StringField() + httpsMrcFile: str = StringField() + s3CollectionMetadata: str = StringField() + httpsCollectionMetadata: str = StringField() + s3AngleList: str = StringField() + httpsAngleList: str = StringField() + s3GainFile: str = StringField() + httpsGainFile: str = StringField() + accelerationVoltage: float = FloatField() + sphericalAberrationConstant: float = FloatField() + microscopeModel: str = StringField() + microscopeEnergyFilter: str = StringField() + microscopePhasePlate: str = StringField() + microscopeImageCorrector: str = StringField() + microscopeAdditionalInfo: str = StringField() + cameraManufacturer: str = StringField() + cameraModel: str = StringField() + tiltMin: float = FloatField() + tiltMax: float = FloatField() + tiltRange: float = FloatField() + tiltStep: float = FloatField() + tiltingScheme: str = StringField() + tiltAxis: float = FloatField() + totalFlux: float = FloatField() + dataAcquisitionSoftware: str = StringField() + relatedEmpiarEntry: str = StringField() + binningFromFrames: float = FloatField() + tiltSeriesQuality: int = IntField() + isAligned: bool = BooleanField() + pixelSpacing: float = FloatField() + alignedTiltseriesBinning: float = FloatField() + tiltseriesFramesCount: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries @@ -708,106 +718,199 @@ def download_mrcfile( """ url = self.https_mrc_bin1 download_https(url, dest_path) +class TomogramAuthor(Model): + """Author of a tomogram + + Attributes: + id (int): An identifier to refer to a specific instance of this type + tomogram (Tomogram): The tomogram this tomogram author is a part of + tomogramId (int): None + authorListOrder (int): The order that the author is listed as in the associated publication + orcid (str): The ORCID identifier for the author. + name (str): The full name of the author. + email (str): The email address of the author. + affiliationName (str): The name of the author's affiliation. + affiliationAddress (str): The address of the author's affiliation. + affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. + correspondingAuthorStatus (bool): Whether the author is a corresponding author. + primaryAuthorStatus (bool): Whether the author is a primary author. + """ + _gql_type: str = "TomogramAuthor" + _gql_root_field: str = "tomogramAuthors" -class Deposition(Model): - """Deposition metadata + id: int = IntField() + tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") + tomogramId: int = IntField() + authorListOrder: int = IntField() + orcid: str = StringField() + name: str = StringField() + email: str = StringField() + affiliationName: str = StringField() + affiliationAddress: str = StringField() + affiliationIdentifier: str = StringField() + correspondingAuthorStatus: bool = BooleanField() + primaryAuthorStatus: bool = BooleanField() +class TomogramVoxelSpacing(Model): + """Voxel spacings for a run Attributes: - annotations (List[Annotation]): The annotations of this deposition - authors (List[DepositionAuthor]): The deposition authors of this deposition - dataset (List[Dataset]): The datasets of this deposition - deposition_date (date): The date the deposition was deposited - deposition_publications (str): The publications related to this deposition - deposition_types (str): The types of data submitted as a part of this deposition - description (str): Description for the deposition - https_prefix (str): The https directory path where data about this deposition is contained - id (int): Numeric identifier for this depositions - key_photo_thumbnail_url (str): URL for the deposition thumbnail image. - key_photo_url (str): URL for the deposition preview image. - last_modified_date (date): The date the deposition was last modified - related_database_entries (str): The related database entries to this deposition - release_date (date): The date the deposition was released - s3_prefix (str): The S3 public bucket path where data about this deposition is contained - tiltseries (List[TiltSeries]): The tilt series of this deposition - title (str): Title for the deposition - tomograms (List[Tomogram]): The tomograms of this deposition + id (int): An identifier to refer to a specific instance of this type + annotationFiles (List[AnnotationFile]): The annotation files of this tomogram voxel spacing + run (Run): The run this tomogram voxel spacing is a part of + runId (int): None + tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing + voxelSpacing (float): Voxel spacing equal in all three axes in angstroms + s3Prefix (str): Path to a directory containing data for this entity as an S3 url + httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url """ - _gql_type: str = "depositions" - - annotations: List[Annotation] = ListRelationship( - "Annotation", - "id", - "deposition_id", - ) - authors: List[DepositionAuthor] = ListRelationship( - "DepositionAuthor", - "id", - "deposition_id", - ) - dataset: List[Dataset] = ListRelationship("Dataset", "id", "deposition_id") - deposition_date: date = DateField() - deposition_publications: str = StringField() - deposition_types: str = StringField() - description: str = StringField() - https_prefix: str = StringField() + _gql_type: str = "TomogramVoxelSpacing" + _gql_root_field: str = "tomogramVoxelSpacings" + id: int = IntField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() - last_modified_date: date = DateField() - related_database_entries: str = StringField() - release_date: date = DateField() - s3_prefix: str = StringField() - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "deposition_id") - title: str = StringField() - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "deposition_id") + annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") + voxelSpacing: float = FloatField() + s3Prefix: str = StringField() + httpsPrefix: str = StringField() + def download_everything(self, dest_path: Optional[str] = None): + """Download all of the data for this tomogram voxel spacing. -class DepositionAuthor(Model): - """Authors for a deposition + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + download_directory(self.s3_prefix, self.run.s3_prefix, dest_path) +class Tomogram(Model): + """Metadata describing a tomogram. Attributes: - affiliation_address (str): Address of the institution an author is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institution an author is affiliated with. - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicates whether an author is the corresponding author - deposition (Deposition): The deposition this deposition author is a part of - deposition_id (int): Reference to the deposition this author contributed to - email (str): Email address for this author - id (int): Numeric identifier for this deposition author (this may change!) - name (str): Full name of a deposition author (e.g. Jane Doe). - orcid (str): A unique, persistent identifier for researchers, provided by ORCID. - primary_author_status (bool): Indicates whether an author is the main person creating the deposition + id (int): An identifier to refer to a specific instance of this type + alignment (Alignment): The alignment this tomogram is a part of + alignmentId (int): None + authors (List[TomogramAuthor]): The tomogram authors of this tomogram + deposition (Deposition): The deposition this tomogram is a part of + depositionId (int): None + run (Run): The run this tomogram is a part of + runId (int): None + tomogramVoxelSpacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of + tomogramVoxelSpacingId (int): None + name (str): Short name for this tomogram + sizeX (float): Tomogram voxels in the x dimension + sizeY (float): Tomogram voxels in the y dimension + sizeZ (float): Tomogram voxels in the z dimension + voxelSpacing (float): Voxel spacing equal in all three axes in angstroms + tomogramVersion (float): Version of tomogram + processingSoftware (str): Processing software used to derive the tomogram + reconstructionSoftware (str): Name of software used for reconstruction + isCanonical (bool): whether this tomogram is canonical for the run + s3OmezarrDir (str): S3 path to this tomogram in multiscale OME-Zarr format + httpsOmezarrDir (str): HTTPS path to this tomogram in multiscale OME-Zarr format + s3MrcFile (str): S3 path to this tomogram in MRC format (no scaling) + httpsMrcFile (str): HTTPS path to this tomogram in MRC format (no scaling) + scale0Dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram + scale1Dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram + scale2Dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram + ctfCorrected (bool): Whether this tomogram is CTF corrected + offsetX (int): x offset data relative to the canonical tomogram in pixels + offsetY (int): y offset data relative to the canonical tomogram in pixels + offsetZ (int): z offset data relative to the canonical tomogram in pixels + keyPhotoUrl (str): URL for the key photo + keyPhotoThumbnailUrl (str): URL for the thumbnail of key photo + neuroglancerConfig (str): the compact json of neuroglancer config + isStandardized (bool): Whether this tomogram was generated per the portal's standards """ - _gql_type: str = "deposition_authors" + _gql_type: str = "Tomogram" + _gql_root_field: str = "tomograms" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() - deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") - deposition_id: int = IntField() - email: str = StringField() id: int = IntField() + alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignmentId: int = IntField() + authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogramId") + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + depositionId: int = IntField() + run: Run = ItemRelationship("Run", "runId", "id") + runId: int = IntField() + tomogramVoxelSpacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogramVoxelSpacingId: int = IntField() name: str = StringField() - orcid: str = StringField() - primary_author_status: bool = BooleanField() + sizeX: float = FloatField() + sizeY: float = FloatField() + sizeZ: float = FloatField() + voxelSpacing: float = FloatField() + tomogramVersion: float = FloatField() + processingSoftware: str = StringField() + reconstructionSoftware: str = StringField() + isCanonical: bool = BooleanField() + s3OmezarrDir: str = StringField() + httpsOmezarrDir: str = StringField() + s3MrcFile: str = StringField() + httpsMrcFile: str = StringField() + scale0Dimensions: str = StringField() + scale1Dimensions: str = StringField() + scale2Dimensions: str = StringField() + ctfCorrected: bool = BooleanField() + offsetX: int = IntField() + offsetY: int = IntField() + offsetZ: int = IntField() + keyPhotoUrl: str = StringField() + keyPhotoThumbnailUrl: str = StringField() + neuroglancerConfig: str = StringField() + isStandardized: bool = BooleanField() + def download_omezarr(self, dest_path: Optional[str] = None): + """Download the OME-Zarr version of this tomogram -Dataset.setup() + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + recursive_prefix = "/".join(self.s3_omezarr_dir.split("/")[:-1]) + "/" + download_directory(self.s3_omezarr_dir, recursive_prefix, dest_path) + + def download_mrcfile(self, dest_path: Optional[str] = None): + """Download an MRC file of this tomogram + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + url = self.https_mrc_scale0 + download_https(url, dest_path) + + def download_all_annotations( + self, + dest_path: Optional[str] = None, + format: Optional[str] = None, + shape: Optional[str] = None, + ): + """Download all annotation files for this tomogram + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) + format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) + """ + vs = self.tomogram_voxel_spacing + for anno in vs.annotations: + anno.download(dest_path, format, shape) +Alignment.setup() +AnnotationAuthor.setup() +AnnotationFile.setup() +AnnotationShape.setup() +Annotation.setup() DatasetAuthor.setup() DatasetFunding.setup() +Dataset.setup() +DepositionAuthor.setup() +Deposition.setup() +Frame.setup() +PerSectionAlignmentParameters.setup() +PerSectionParameters.setup() Run.setup() +Tiltseries.setup() +TomogramAuthor.setup() TomogramVoxelSpacing.setup() Tomogram.setup() -TomogramAuthor.setup() -Annotation.setup() -AnnotationFile.setup() -AnnotationAuthor.setup() -TiltSeries.setup() -Deposition.setup() -DepositionAuthor.setup() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index a5b84c647..918f065ec 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -1,11221 +1,5590 @@ -schema { - query: query_root - subscription: subscription_root -} +type Query { + alignments(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Alignment!]! + annotationAuthors(where: AnnotationAuthorWhereClause = null, orderBy: [AnnotationAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationAuthor!]! + annotationFiles(where: AnnotationFileWhereClause = null, orderBy: [AnnotationFileOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationFile!]! + annotationShapes(where: AnnotationShapeWhereClause = null, orderBy: [AnnotationShapeOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationShape!]! + annotations(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Annotation!]! + datasetAuthors(where: DatasetAuthorWhereClause = null, orderBy: [DatasetAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetAuthor!]! + datasetFunding(where: DatasetFundingWhereClause = null, orderBy: [DatasetFundingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetFunding!]! + datasets(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Dataset!]! + depositionAuthors(where: DepositionAuthorWhereClause = null, orderBy: [DepositionAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DepositionAuthor!]! + depositions(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Deposition!]! + depositionTypes(where: DepositionTypeWhereClause = null, orderBy: [DepositionTypeOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DepositionType!]! + frames(where: FrameWhereClause = null, orderBy: [FrameOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Frame!]! + perSectionParameters(where: PerSectionParametersWhereClause = null, orderBy: [PerSectionParametersOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [PerSectionParameters!]! + perSectionAlignmentParameters(where: PerSectionAlignmentParametersWhereClause = null, orderBy: [PerSectionAlignmentParametersOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [PerSectionAlignmentParameters!]! + runs(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Run!]! + tiltseries(where: TiltseriesWhereClause = null, orderBy: [TiltseriesOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Tiltseries!]! + tomogramAuthors(where: TomogramAuthorWhereClause = null, orderBy: [TomogramAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [TomogramAuthor!]! + tomogramVoxelSpacings(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [TomogramVoxelSpacing!]! + tomograms(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Tomogram!]! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate! + annotationAuthorsAggregate(where: AnnotationAuthorWhereClause = null): AnnotationAuthorAggregate! + annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate! + annotationShapesAggregate(where: AnnotationShapeWhereClause = null): AnnotationShapeAggregate! + annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate! + datasetAuthorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate! + datasetFundingAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate! + datasetsAggregate(where: DatasetWhereClause = null): DatasetAggregate! + depositionAuthorsAggregate(where: DepositionAuthorWhereClause = null): DepositionAuthorAggregate! + depositionsAggregate(where: DepositionWhereClause = null): DepositionAggregate! + depositionTypesAggregate(where: DepositionTypeWhereClause = null): DepositionTypeAggregate! + framesAggregate(where: FrameWhereClause = null): FrameAggregate! + perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate! + perSectionAlignmentParametersAggregate(where: PerSectionAlignmentParametersWhereClause = null): PerSectionAlignmentParametersAggregate! + runsAggregate(where: RunWhereClause = null): RunAggregate! + tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate! + tomogramAuthorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate! + tomogramVoxelSpacingsAggregate(where: TomogramVoxelSpacingWhereClause = null): TomogramVoxelSpacingAggregate! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate! +} + +"""Tiltseries Alignment""" +type Alignment implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """An identifier to refer to a specific instance of this type""" + id: Int! + annotationFiles( + where: AnnotationFileWhereClause = null + orderBy: [AnnotationFileOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationFileConnection! + annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate + perSectionAlignments( + where: PerSectionAlignmentParametersWhereClause = null + orderBy: [PerSectionAlignmentParametersOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): PerSectionAlignmentParametersConnection! + perSectionAlignmentsAggregate(where: PerSectionAlignmentParametersWhereClause = null): PerSectionAlignmentParametersAggregate + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int + tiltseries(where: TiltseriesWhereClause = null, orderBy: [TiltseriesOrderByClause!] = []): Tiltseries + tiltseriesId: Int + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] -"""whether this query should be cached (Hasura Cloud only)""" -directive @cached( - """measured in seconds""" - ttl: Int! = 60 + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """refresh the cache entry""" - refresh: Boolean! = false -) on QUERY + """Returns the items in the list that come after the specified cursor.""" + after: String = null -""" -Boolean expression to compare columns of type "Boolean". All fields are combined with logical 'AND'. -""" -input Boolean_comparison_exp { - _eq: Boolean - _gt: Boolean - _gte: Boolean - _in: [Boolean!] - _is_null: Boolean - _lt: Boolean - _lte: Boolean - _neq: Boolean - _nin: [Boolean!] -} + """Returns the first n items from the list.""" + first: Int = null -""" -Boolean expression to compare columns of type "Int". All fields are combined with logical 'AND'. -""" -input Int_comparison_exp { - _eq: Int - _gt: Int - _gte: Int - _in: [Int!] - _is_null: Boolean - _lt: Int - _lte: Int - _neq: Int - _nin: [Int!] -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int -""" -Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. -""" -input String_comparison_exp { - _eq: String - _gt: String - _gte: String + """Type of alignment included, i.e. is a non-rigid alignment included?""" + alignmentType: alignment_type_enum - """does the column match the given case-insensitive pattern""" - _ilike: String - _in: [String!] + """X dimension of the reconstruction volume in angstrom""" + volumeXDimension: Float - """ - does the column match the given POSIX regular expression, case insensitive - """ - _iregex: String - _is_null: Boolean + """Y dimension of the reconstruction volume in angstrom""" + volumeYDimension: Float - """does the column match the given pattern""" - _like: String - _lt: String - _lte: String - _neq: String + """Z dimension of the reconstruction volume in angstrom""" + volumeZDimension: Float - """does the column NOT match the given case-insensitive pattern""" - _nilike: String - _nin: [String!] + """X shift of the reconstruction volume in angstrom""" + volumeXOffset: Float - """ - does the column NOT match the given POSIX regular expression, case insensitive - """ - _niregex: String + """Y shift of the reconstruction volume in angstrom""" + volumeYOffset: Float - """does the column NOT match the given pattern""" - _nlike: String + """Z shift of the reconstruction volume in angstrom""" + volumeZOffset: Float - """ - does the column NOT match the given POSIX regular expression, case sensitive - """ - _nregex: String + """Additional X rotation of the reconstruction volume in degrees""" + xRotationOffset: Float - """does the column NOT match the given SQL regular expression""" - _nsimilar: String + """Additional tilt offset in degrees""" + tiltOffset: Float - """ - does the column match the given POSIX regular expression, case sensitive - """ - _regex: String + """Path to the local alignment file""" + localAlignmentFile: String + + """A placeholder for the affine transformation matrix.""" + affineTransformationMatrix: String +} - """does the column match the given SQL regular expression""" - _similar: String +interface EntityInterface implements Node { + """The Globally Unique ID of this object""" + _id: GlobalID! } -scalar _numeric +"""An object with a Globally Unique ID""" +interface Node { + """The Globally Unique ID of this object""" + _id: GlobalID! +} """ -Boolean expression to compare columns of type "_numeric". All fields are combined with logical 'AND'. +The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. """ -input _numeric_comparison_exp { - _eq: _numeric - _gt: _numeric - _gte: _numeric - _in: [_numeric!] - _is_null: Boolean - _lt: _numeric - _lte: _numeric - _neq: _numeric - _nin: [_numeric!] -} +scalar GlobalID -"""Metadata for an annotation's authors""" -type annotation_authors { - """Address of the institution an annotator is affiliated with.""" - affiliation_address: String +"""A connection to a list of items.""" +type AnnotationFileConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String + """Contains the nodes in this connection""" + edges: [AnnotationFileEdge!]! +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String +"""Information to aid in pagination.""" +type PageInfo { + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! - """An object relationship""" - annotation: annotations! + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! - """Reference to the annotation this author contributed to""" - annotation_id: Int! + """When paginating backwards, the cursor to continue.""" + startCursor: String - """The order in which the author appears in the publication""" - author_list_order: Int + """When paginating forwards, the cursor to continue.""" + endCursor: String +} - """ - Indicating whether an annotator is the corresponding author (YES or NO) - """ - corresponding_author_status: Boolean +"""An edge in a connection.""" +type AnnotationFileEdge { + """A cursor for use in pagination""" + cursor: String! - """Email address for this author""" - email: String + """The item at the end of the edge""" + node: AnnotationFile! +} + +"""Files associated with an annotation""" +type AnnotationFile implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this annotation author (this may change!)""" + """An identifier to refer to a specific instance of this type""" id: Int! + alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment + alignmentId: Int + annotationShape(where: AnnotationShapeWhereClause = null, orderBy: [AnnotationShapeOrderByClause!] = []): AnnotationShape + annotationShapeId: Int + tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing + tomogramVoxelSpacingId: Int + + """File format label""" + format: String! - """Full name of an annotation author (e.g. Jane Doe).""" - name: String! + """Path to the file in s3""" + s3Path: String! + + """Path to the file as an https url""" + httpsPath: String! + + """This annotation will be rendered in neuroglancer by default.""" + isVisualizationDefault: Boolean + + """The source type for the annotation file""" + source: annotation_file_source_enum +} + +input AlignmentWhereClause { + annotationFiles: AnnotationFileWhereClause + perSectionAlignments: PerSectionAlignmentParametersWhereClause + deposition: DepositionWhereClause + tiltseries: TiltseriesWhereClause + tomograms: TomogramWhereClause + run: RunWhereClause + alignmentType: Alignment_type_enumEnumComparators + volumeXDimension: FloatComparators + volumeYDimension: FloatComparators + volumeZDimension: FloatComparators + volumeXOffset: FloatComparators + volumeYOffset: FloatComparators + volumeZOffset: FloatComparators + xRotationOffset: FloatComparators + tiltOffset: FloatComparators + localAlignmentFile: StrComparators + affineTransformationMatrix: StrComparators + id: IntComparators +} + +input AnnotationFileWhereClause { + alignment: AlignmentWhereClause + annotationShape: AnnotationShapeWhereClause + tomogramVoxelSpacing: TomogramVoxelSpacingWhereClause + format: StrComparators + s3Path: StrComparators + httpsPath: StrComparators + isVisualizationDefault: BoolComparators + source: Annotation_file_source_enumEnumComparators + id: IntComparators +} + +input AnnotationShapeWhereClause { + annotation: AnnotationWhereClause + annotationFiles: AnnotationFileWhereClause + shapeType: Annotation_file_shape_type_enumEnumComparators + id: IntComparators +} + +input AnnotationWhereClause { + run: RunWhereClause + annotationShapes: AnnotationShapeWhereClause + authors: AnnotationAuthorWhereClause + deposition: DepositionWhereClause + s3MetadataPath: StrComparators + httpsMetadataPath: StrComparators + annotationPublication: StrComparators + annotationMethod: StrComparators + groundTruthStatus: BoolComparators + objectId: StrComparators + objectName: StrComparators + objectDescription: StrComparators + objectState: StrComparators + objectCount: IntComparators + confidencePrecision: FloatComparators + confidenceRecall: FloatComparators + groundTruthUsed: StrComparators + annotationSoftware: StrComparators + isCuratorRecommended: BoolComparators + methodType: Annotation_method_type_enumEnumComparators + depositionDate: DatetimeComparators + releaseDate: DatetimeComparators + lastModifiedDate: DatetimeComparators + id: IntComparators +} + +input RunWhereClause { + alignments: AlignmentWhereClause + annotations: AnnotationWhereClause + dataset: DatasetWhereClause + frames: FrameWhereClause + tiltseries: TiltseriesWhereClause + tomogramVoxelSpacings: TomogramVoxelSpacingWhereClause + tomograms: TomogramWhereClause + name: StrComparators + s3Prefix: StrComparators + httpsPrefix: StrComparators + id: IntComparators +} + +input DatasetWhereClause { + deposition: DepositionWhereClause + fundingSources: DatasetFundingWhereClause + authors: DatasetAuthorWhereClause + runs: RunWhereClause + title: StrComparators + description: StrComparators + organismName: StrComparators + organismTaxid: IntComparators + tissueName: StrComparators + tissueId: StrComparators + cellName: StrComparators + cellTypeId: StrComparators + cellStrainName: StrComparators + cellStrainId: StrComparators + sampleType: Sample_type_enumEnumComparators + samplePreparation: StrComparators + gridPreparation: StrComparators + otherSetup: StrComparators + keyPhotoUrl: StrComparators + keyPhotoThumbnailUrl: StrComparators + cellComponentName: StrComparators + cellComponentId: StrComparators + depositionDate: DatetimeComparators + releaseDate: DatetimeComparators + lastModifiedDate: DatetimeComparators + publications: StrComparators + relatedDatabaseEntries: StrComparators + s3Prefix: StrComparators + httpsPrefix: StrComparators + id: IntComparators +} + +input DepositionWhereClause { + authors: DepositionAuthorWhereClause + alignments: AlignmentWhereClause + annotations: AnnotationWhereClause + datasets: DatasetWhereClause + frames: FrameWhereClause + tiltseries: TiltseriesWhereClause + tomograms: TomogramWhereClause + depositionTitle: StrComparators + depositionDescription: StrComparators + depositionTypes: DepositionTypeWhereClause + publications: StrComparators + relatedDatabaseEntries: StrComparators + depositionDate: DatetimeComparators + releaseDate: DatetimeComparators + lastModifiedDate: DatetimeComparators + id: IntComparators +} + +input DepositionAuthorWhereClause { + deposition: DepositionWhereClause + id: IntComparators + authorListOrder: IntComparators + orcid: StrComparators + name: StrComparators + email: StrComparators + affiliationName: StrComparators + affiliationAddress: StrComparators + affiliationIdentifier: StrComparators + correspondingAuthorStatus: BoolComparators + primaryAuthorStatus: BoolComparators +} + +input IntComparators { + _eq: Int + _neq: Int + _in: [Int!] + _nin: [Int!] + _gt: Int + _gte: Int + _lt: Int + _lte: Int + _is_null: Boolean +} - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String +input StrComparators { + _eq: String + _neq: String + _in: [String!] + _nin: [String!] + _is_null: Boolean + _gt: String + _gte: String + _lt: String + _lte: String + _like: String + _nlike: String + _ilike: String + _nilike: String + _regex: String + _nregex: String + _iregex: String + _niregex: String +} - """ - Indicating whether an annotator is the main person executing the annotation, especially on manual annotation (YES or NO) - """ - primary_annotator_status: Boolean +input BoolComparators { + _eq: Int + _neq: Int + _in: [Int!] + _nin: [Int!] + _gt: Int + _gte: Int + _lt: Int + _lte: Int + _is_null: Boolean +} - """ - Indicating whether an author is the main person executing the annotation, especially on manual annotation (YES or NO) - """ - primary_author_status: Boolean +input FrameWhereClause { + deposition: DepositionWhereClause + perSectionParameters: PerSectionParametersWhereClause + run: RunWhereClause + rawAngle: FloatComparators + acquisitionOrder: IntComparators + dose: FloatComparators + isGainCorrected: BoolComparators + s3GainFile: StrComparators + httpsGainFile: StrComparators + s3Prefix: StrComparators + httpsPrefix: StrComparators + id: IntComparators +} + +input PerSectionParametersWhereClause { + frame: FrameWhereClause + tiltseries: TiltseriesWhereClause + zIndex: IntComparators + defocus: FloatComparators + astigmatism: FloatComparators + astigmaticAngle: FloatComparators + id: IntComparators +} + +input TiltseriesWhereClause { + alignments: AlignmentWhereClause + perSectionParameters: PerSectionParametersWhereClause + run: RunWhereClause + deposition: DepositionWhereClause + s3OmezarrDir: StrComparators + s3MrcFile: StrComparators + httpsOmezarrDir: StrComparators + httpsMrcFile: StrComparators + s3CollectionMetadata: StrComparators + httpsCollectionMetadata: StrComparators + s3AngleList: StrComparators + httpsAngleList: StrComparators + s3GainFile: StrComparators + httpsGainFile: StrComparators + accelerationVoltage: FloatComparators + sphericalAberrationConstant: FloatComparators + microscopeManufacturer: Tiltseries_microscope_manufacturer_enumEnumComparators + microscopeModel: StrComparators + microscopeEnergyFilter: StrComparators + microscopePhasePlate: StrComparators + microscopeImageCorrector: StrComparators + microscopeAdditionalInfo: StrComparators + cameraManufacturer: StrComparators + cameraModel: StrComparators + tiltMin: FloatComparators + tiltMax: FloatComparators + tiltRange: FloatComparators + tiltStep: FloatComparators + tiltingScheme: StrComparators + tiltAxis: FloatComparators + totalFlux: FloatComparators + dataAcquisitionSoftware: StrComparators + relatedEmpiarEntry: StrComparators + binningFromFrames: FloatComparators + tiltSeriesQuality: IntComparators + isAligned: BoolComparators + pixelSpacing: FloatComparators + alignedTiltseriesBinning: FloatComparators + tiltseriesFramesCount: IntComparators + id: IntComparators +} + +input FloatComparators { + _eq: Float + _neq: Float + _in: [Float!] + _nin: [Float!] + _gt: Float + _gte: Float + _lt: Float + _lte: Float + _is_null: Boolean } -""" -aggregated selection of "annotation_authors" -""" -type annotation_authors_aggregate { - aggregate: annotation_authors_aggregate_fields - nodes: [annotation_authors!]! +input Tiltseries_microscope_manufacturer_enumEnumComparators { + _eq: tiltseries_microscope_manufacturer_enum + _neq: tiltseries_microscope_manufacturer_enum + _in: [tiltseries_microscope_manufacturer_enum!] + _nin: [tiltseries_microscope_manufacturer_enum!] + _gt: tiltseries_microscope_manufacturer_enum + _gte: tiltseries_microscope_manufacturer_enum + _lt: tiltseries_microscope_manufacturer_enum + _lte: tiltseries_microscope_manufacturer_enum + _is_null: Boolean +} + +enum tiltseries_microscope_manufacturer_enum { + FEI + TFS + JEOL +} + +input TomogramWhereClause { + alignment: AlignmentWhereClause + authors: TomogramAuthorWhereClause + deposition: DepositionWhereClause + run: RunWhereClause + tomogramVoxelSpacing: TomogramVoxelSpacingWhereClause + name: StrComparators + sizeX: FloatComparators + sizeY: FloatComparators + sizeZ: FloatComparators + voxelSpacing: FloatComparators + fiducialAlignmentStatus: Fiducial_alignment_status_enumEnumComparators + reconstructionMethod: Tomogram_reconstruction_method_enumEnumComparators + processing: Tomogram_processing_enumEnumComparators + tomogramVersion: FloatComparators + processingSoftware: StrComparators + reconstructionSoftware: StrComparators + isCanonical: BoolComparators + s3OmezarrDir: StrComparators + httpsOmezarrDir: StrComparators + s3MrcFile: StrComparators + httpsMrcFile: StrComparators + scale0Dimensions: StrComparators + scale1Dimensions: StrComparators + scale2Dimensions: StrComparators + ctfCorrected: BoolComparators + offsetX: IntComparators + offsetY: IntComparators + offsetZ: IntComparators + keyPhotoUrl: StrComparators + keyPhotoThumbnailUrl: StrComparators + neuroglancerConfig: StrComparators + isStandardized: BoolComparators + id: IntComparators +} + +input TomogramAuthorWhereClause { + tomogram: TomogramWhereClause + id: IntComparators + authorListOrder: IntComparators + orcid: StrComparators + name: StrComparators + email: StrComparators + affiliationName: StrComparators + affiliationAddress: StrComparators + affiliationIdentifier: StrComparators + correspondingAuthorStatus: BoolComparators + primaryAuthorStatus: BoolComparators +} + +input TomogramVoxelSpacingWhereClause { + annotationFiles: AnnotationFileWhereClause + run: RunWhereClause + tomograms: TomogramWhereClause + voxelSpacing: FloatComparators + s3Prefix: StrComparators + httpsPrefix: StrComparators + id: IntComparators +} + +input Fiducial_alignment_status_enumEnumComparators { + _eq: fiducial_alignment_status_enum + _neq: fiducial_alignment_status_enum + _in: [fiducial_alignment_status_enum!] + _nin: [fiducial_alignment_status_enum!] + _gt: fiducial_alignment_status_enum + _gte: fiducial_alignment_status_enum + _lt: fiducial_alignment_status_enum + _lte: fiducial_alignment_status_enum + _is_null: Boolean } -input annotation_authors_aggregate_bool_exp { - bool_and: annotation_authors_aggregate_bool_exp_bool_and - bool_or: annotation_authors_aggregate_bool_exp_bool_or - count: annotation_authors_aggregate_bool_exp_count +enum fiducial_alignment_status_enum { + FIDUCIAL + NON_FIDUCIAL } -input annotation_authors_aggregate_bool_exp_bool_and { - arguments: annotation_authors_select_column_annotation_authors_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: annotation_authors_bool_exp - predicate: Boolean_comparison_exp! +input Tomogram_reconstruction_method_enumEnumComparators { + _eq: tomogram_reconstruction_method_enum + _neq: tomogram_reconstruction_method_enum + _in: [tomogram_reconstruction_method_enum!] + _nin: [tomogram_reconstruction_method_enum!] + _gt: tomogram_reconstruction_method_enum + _gte: tomogram_reconstruction_method_enum + _lt: tomogram_reconstruction_method_enum + _lte: tomogram_reconstruction_method_enum + _is_null: Boolean } -input annotation_authors_aggregate_bool_exp_bool_or { - arguments: annotation_authors_select_column_annotation_authors_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: annotation_authors_bool_exp - predicate: Boolean_comparison_exp! +enum tomogram_reconstruction_method_enum { + SART + Fourier_Space + SIRT + WBP + Unknown } -input annotation_authors_aggregate_bool_exp_count { - arguments: [annotation_authors_select_column!] - distinct: Boolean - filter: annotation_authors_bool_exp - predicate: Int_comparison_exp! +input Tomogram_processing_enumEnumComparators { + _eq: tomogram_processing_enum + _neq: tomogram_processing_enum + _in: [tomogram_processing_enum!] + _nin: [tomogram_processing_enum!] + _gt: tomogram_processing_enum + _gte: tomogram_processing_enum + _lt: tomogram_processing_enum + _lte: tomogram_processing_enum + _is_null: Boolean } -""" -aggregate fields of "annotation_authors" -""" -type annotation_authors_aggregate_fields { - avg: annotation_authors_avg_fields - count(columns: [annotation_authors_select_column!], distinct: Boolean): Int! - max: annotation_authors_max_fields - min: annotation_authors_min_fields - stddev: annotation_authors_stddev_fields - stddev_pop: annotation_authors_stddev_pop_fields - stddev_samp: annotation_authors_stddev_samp_fields - sum: annotation_authors_sum_fields - var_pop: annotation_authors_var_pop_fields - var_samp: annotation_authors_var_samp_fields - variance: annotation_authors_variance_fields +enum tomogram_processing_enum { + denoised + filtered + raw } -""" -order by aggregate values of table "annotation_authors" -""" -input annotation_authors_aggregate_order_by { - avg: annotation_authors_avg_order_by - count: order_by - max: annotation_authors_max_order_by - min: annotation_authors_min_order_by - stddev: annotation_authors_stddev_order_by - stddev_pop: annotation_authors_stddev_pop_order_by - stddev_samp: annotation_authors_stddev_samp_order_by - sum: annotation_authors_sum_order_by - var_pop: annotation_authors_var_pop_order_by - var_samp: annotation_authors_var_samp_order_by - variance: annotation_authors_variance_order_by +input DepositionTypeWhereClause { + deposition: DepositionWhereClause + type: Deposition_types_enumEnumComparators + id: IntComparators } -"""aggregate avg on columns""" -type annotation_authors_avg_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float +input Deposition_types_enumEnumComparators { + _eq: deposition_types_enum + _neq: deposition_types_enum + _in: [deposition_types_enum!] + _nin: [deposition_types_enum!] + _gt: deposition_types_enum + _gte: deposition_types_enum + _lt: deposition_types_enum + _lte: deposition_types_enum + _is_null: Boolean +} - """The order in which the author appears in the publication""" - author_list_order: Float +enum deposition_types_enum { + annotation + dataset + tomogram +} - """Numeric identifier for this annotation author (this may change!)""" - id: Float +input DatetimeComparators { + _eq: DateTime + _neq: DateTime + _in: [DateTime!] + _nin: [DateTime!] + _gt: DateTime + _gte: DateTime + _lt: DateTime + _lte: DateTime + _is_null: Boolean } -""" -order by avg() on columns of table "annotation_authors" -""" -input annotation_authors_avg_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by +"""Date with time (isoformat)""" +scalar DateTime + +input DatasetFundingWhereClause { + dataset: DatasetWhereClause + fundingAgencyName: StrComparators + grantId: StrComparators + id: IntComparators +} + +input DatasetAuthorWhereClause { + dataset: DatasetWhereClause + id: IntComparators + authorListOrder: IntComparators + orcid: StrComparators + name: StrComparators + email: StrComparators + affiliationName: StrComparators + affiliationAddress: StrComparators + affiliationIdentifier: StrComparators + correspondingAuthorStatus: BoolComparators + primaryAuthorStatus: BoolComparators +} + +input Sample_type_enumEnumComparators { + _eq: sample_type_enum + _neq: sample_type_enum + _in: [sample_type_enum!] + _nin: [sample_type_enum!] + _gt: sample_type_enum + _gte: sample_type_enum + _lt: sample_type_enum + _lte: sample_type_enum + _is_null: Boolean +} - """The order in which the author appears in the publication""" - author_list_order: order_by +enum sample_type_enum { + cell + tissue + organism + organelle + virus + in_vitro + in_silico + other +} + +input AnnotationAuthorWhereClause { + annotation: AnnotationWhereClause + id: IntComparators + authorListOrder: IntComparators + orcid: StrComparators + name: StrComparators + email: StrComparators + affiliationName: StrComparators + affiliationAddress: StrComparators + affiliationIdentifier: StrComparators + correspondingAuthorStatus: BoolComparators + primaryAuthorStatus: BoolComparators +} + +input Annotation_method_type_enumEnumComparators { + _eq: annotation_method_type_enum + _neq: annotation_method_type_enum + _in: [annotation_method_type_enum!] + _nin: [annotation_method_type_enum!] + _gt: annotation_method_type_enum + _gte: annotation_method_type_enum + _lt: annotation_method_type_enum + _lte: annotation_method_type_enum + _is_null: Boolean +} - """Numeric identifier for this annotation author (this may change!)""" - id: order_by +enum annotation_method_type_enum { + manual + automated + hybrid } -""" -Boolean expression to filter rows from the table "annotation_authors". All fields are combined with a logical 'AND'. -""" -input annotation_authors_bool_exp { - _and: [annotation_authors_bool_exp!] - _not: annotation_authors_bool_exp - _or: [annotation_authors_bool_exp!] - affiliation_address: String_comparison_exp - affiliation_identifier: String_comparison_exp - affiliation_name: String_comparison_exp - annotation: annotations_bool_exp - annotation_id: Int_comparison_exp - author_list_order: Int_comparison_exp - corresponding_author_status: Boolean_comparison_exp - email: String_comparison_exp - id: Int_comparison_exp - name: String_comparison_exp - orcid: String_comparison_exp - primary_annotator_status: Boolean_comparison_exp - primary_author_status: Boolean_comparison_exp -} - -"""aggregate max on columns""" -type annotation_authors_max_fields { - """Address of the institution an annotator is affiliated with.""" - affiliation_address: String +input Annotation_file_shape_type_enumEnumComparators { + _eq: annotation_file_shape_type_enum + _neq: annotation_file_shape_type_enum + _in: [annotation_file_shape_type_enum!] + _nin: [annotation_file_shape_type_enum!] + _gt: annotation_file_shape_type_enum + _gte: annotation_file_shape_type_enum + _lt: annotation_file_shape_type_enum + _lte: annotation_file_shape_type_enum + _is_null: Boolean +} - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String +enum annotation_file_shape_type_enum { + SegmentationMask + OrientedPoint + Point + InstanceSegmentation + Mesh +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String +input Annotation_file_source_enumEnumComparators { + _eq: annotation_file_source_enum + _neq: annotation_file_source_enum + _in: [annotation_file_source_enum!] + _nin: [annotation_file_source_enum!] + _gt: annotation_file_source_enum + _gte: annotation_file_source_enum + _lt: annotation_file_source_enum + _lte: annotation_file_source_enum + _is_null: Boolean +} + +enum annotation_file_source_enum { + dataset_author + community + portal_standard +} + +input PerSectionAlignmentParametersWhereClause { + alignment: AlignmentWhereClause + zIndex: IntComparators + xOffset: FloatComparators + yOffset: FloatComparators + inPlaneRotation: FloatComparators + beamTilt: FloatComparators + tiltAngle: FloatComparators + id: IntComparators +} + +input Alignment_type_enumEnumComparators { + _eq: alignment_type_enum + _neq: alignment_type_enum + _in: [alignment_type_enum!] + _nin: [alignment_type_enum!] + _gt: alignment_type_enum + _gte: alignment_type_enum + _lt: alignment_type_enum + _lte: alignment_type_enum + _is_null: Boolean +} - """Reference to the annotation this author contributed to""" - annotation_id: Int +enum alignment_type_enum { + LOCAL + GLOBAL +} + +input AlignmentOrderByClause { + deposition: DepositionOrderByClause + tiltseries: TiltseriesOrderByClause + run: RunOrderByClause + alignmentType: orderBy + volumeXDimension: orderBy + volumeYDimension: orderBy + volumeZDimension: orderBy + volumeXOffset: orderBy + volumeYOffset: orderBy + volumeZOffset: orderBy + xRotationOffset: orderBy + tiltOffset: orderBy + localAlignmentFile: orderBy + affineTransformationMatrix: orderBy + id: orderBy +} + +input DepositionOrderByClause { + depositionTitle: orderBy + depositionDescription: orderBy + publications: orderBy + relatedDatabaseEntries: orderBy + depositionDate: orderBy + releaseDate: orderBy + lastModifiedDate: orderBy + id: orderBy +} + +enum orderBy { + asc + asc_nulls_first + asc_nulls_last + desc + desc_nulls_first + desc_nulls_last +} - """The order in which the author appears in the publication""" - author_list_order: Int +input TiltseriesOrderByClause { + run: RunOrderByClause + deposition: DepositionOrderByClause + s3OmezarrDir: orderBy + s3MrcFile: orderBy + httpsOmezarrDir: orderBy + httpsMrcFile: orderBy + s3CollectionMetadata: orderBy + httpsCollectionMetadata: orderBy + s3AngleList: orderBy + httpsAngleList: orderBy + s3GainFile: orderBy + httpsGainFile: orderBy + accelerationVoltage: orderBy + sphericalAberrationConstant: orderBy + microscopeManufacturer: orderBy + microscopeModel: orderBy + microscopeEnergyFilter: orderBy + microscopePhasePlate: orderBy + microscopeImageCorrector: orderBy + microscopeAdditionalInfo: orderBy + cameraManufacturer: orderBy + cameraModel: orderBy + tiltMin: orderBy + tiltMax: orderBy + tiltRange: orderBy + tiltStep: orderBy + tiltingScheme: orderBy + tiltAxis: orderBy + totalFlux: orderBy + dataAcquisitionSoftware: orderBy + relatedEmpiarEntry: orderBy + binningFromFrames: orderBy + tiltSeriesQuality: orderBy + isAligned: orderBy + pixelSpacing: orderBy + alignedTiltseriesBinning: orderBy + tiltseriesFramesCount: orderBy + id: orderBy +} + +input RunOrderByClause { + dataset: DatasetOrderByClause + name: orderBy + s3Prefix: orderBy + httpsPrefix: orderBy + id: orderBy +} + +input DatasetOrderByClause { + deposition: DepositionOrderByClause + title: orderBy + description: orderBy + organismName: orderBy + organismTaxid: orderBy + tissueName: orderBy + tissueId: orderBy + cellName: orderBy + cellTypeId: orderBy + cellStrainName: orderBy + cellStrainId: orderBy + sampleType: orderBy + samplePreparation: orderBy + gridPreparation: orderBy + otherSetup: orderBy + keyPhotoUrl: orderBy + keyPhotoThumbnailUrl: orderBy + cellComponentName: orderBy + cellComponentId: orderBy + depositionDate: orderBy + releaseDate: orderBy + lastModifiedDate: orderBy + publications: orderBy + relatedDatabaseEntries: orderBy + s3Prefix: orderBy + httpsPrefix: orderBy + id: orderBy +} + +"""Shapes associated with an annotation""" +type AnnotationShape implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """An identifier to refer to a specific instance of this type""" + id: Int! + annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation + annotationId: Int + annotationFiles( + where: AnnotationFileWhereClause = null + orderBy: [AnnotationFileOrderByClause!] = [] - """Email address for this author""" - email: String + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier for this annotation author (this may change!)""" - id: Int + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Full name of an annotation author (e.g. Jane Doe).""" - name: String + """Returns the first n items from the list.""" + first: Int = null - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationFileConnection! + annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate + shapeType: annotation_file_shape_type_enum } -""" -order by max() on columns of table "annotation_authors" -""" -input annotation_authors_max_order_by { - """Address of the institution an annotator is affiliated with.""" - affiliation_address: order_by +"""Metadata about an annotation for a run""" +type Annotation implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int + annotationShapes( + where: AnnotationShapeWhereClause = null + orderBy: [AnnotationShapeOrderByClause!] = [] - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Returns the first n items from the list.""" + first: Int = null - """The order in which the author appears in the publication""" - author_list_order: order_by + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationShapeConnection! + annotationShapesAggregate(where: AnnotationShapeWhereClause = null): AnnotationShapeAggregate + authors( + where: AnnotationAuthorWhereClause = null + orderBy: [AnnotationAuthorOrderByClause!] = [] - """Email address for this author""" - email: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier for this annotation author (this may change!)""" - id: order_by + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Full name of an annotation author (e.g. Jane Doe).""" - name: order_by + """Returns the first n items from the list.""" + first: Int = null - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationAuthorConnection! + authorsAggregate(where: AnnotationAuthorWhereClause = null): AnnotationAuthorAggregate + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int -"""aggregate min on columns""" -type annotation_authors_min_fields { - """Address of the institution an annotator is affiliated with.""" - affiliation_address: String + """Path to the file in s3""" + s3MetadataPath: String! + + """Path to the file as an https url""" + httpsMetadataPath: String! """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. """ - affiliation_identifier: String + annotationPublication: String """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) """ - affiliation_name: String + annotationMethod: String! - """Reference to the annotation this author contributed to""" - annotation_id: Int - - """The order in which the author appears in the publication""" - author_list_order: Int + """ + Whether an annotation is considered ground truth, as determined by the annotator. + """ + groundTruthStatus: Boolean - """Email address for this author""" - email: String + """Gene Ontology Cellular Component identifier for the annotation object""" + objectId: String! - """Numeric identifier for this annotation author (this may change!)""" - id: Int + """ + Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + """ + objectName: String! - """Full name of an annotation author (e.g. Jane Doe).""" - name: String + """ + A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + """ + objectDescription: String - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String -} + """Molecule state annotated (e.g. open, closed)""" + objectState: String -""" -order by min() on columns of table "annotation_authors" -""" -input annotation_authors_min_order_by { - """Address of the institution an annotator is affiliated with.""" - affiliation_address: order_by + """Number of objects identified""" + objectCount: Int """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive """ - affiliation_identifier: order_by + confidencePrecision: Float """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly """ - affiliation_name: order_by + confidenceRecall: Float - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Annotation filename used as ground truth for precision and recall""" + groundTruthUsed: String - """The order in which the author appears in the publication""" - author_list_order: order_by + """Software used for generating this annotation""" + annotationSoftware: String - """Email address for this author""" - email: order_by + """ + This annotation is recommended by the curator to be preferred for this object type. + """ + isCuratorRecommended: Boolean - """Numeric identifier for this annotation author (this may change!)""" - id: order_by + """Classification of the annotation method based on supervision.""" + methodType: annotation_method_type_enum! - """Full name of an annotation author (e.g. Jane Doe).""" - name: order_by + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! -"""Ordering options when selecting data from "annotation_authors".""" -input annotation_authors_order_by { - affiliation_address: order_by - affiliation_identifier: order_by - affiliation_name: order_by - annotation: annotations_order_by - annotation_id: order_by - author_list_order: order_by - corresponding_author_status: order_by - email: order_by - id: order_by - name: order_by - orcid: order_by - primary_annotator_status: order_by - primary_author_status: order_by + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! } -""" -select columns of table "annotation_authors" -""" -enum annotation_authors_select_column { - """column name""" - affiliation_address - - """column name""" - affiliation_identifier +type Run implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """column name""" - affiliation_name + """An identifier to refer to a specific instance of this type""" + id: Int! + alignments( + where: AlignmentWhereClause = null + orderBy: [AlignmentOrderByClause!] = [] - """column name""" - annotation_id + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """column name""" - author_list_order + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - corresponding_author_status + """Returns the first n items from the list.""" + first: Int = null - """column name""" - email + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AlignmentConnection! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate + annotations( + where: AnnotationWhereClause = null + orderBy: [AnnotationOrderByClause!] = [] - """column name""" - id + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """column name""" - name + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - orcid + """Returns the first n items from the list.""" + first: Int = null - """column name""" - primary_annotator_status + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationConnection! + annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int! + frames( + where: FrameWhereClause = null + orderBy: [FrameOrderByClause!] = [] - """column name""" - primary_author_status -} + """Returns the items in the list that come before the specified cursor.""" + before: String = null -""" -select "annotation_authors_aggregate_bool_exp_bool_and_arguments_columns" columns of table "annotation_authors" -""" -enum annotation_authors_select_column_annotation_authors_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - corresponding_author_status + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - primary_annotator_status + """Returns the first n items from the list.""" + first: Int = null - """column name""" - primary_author_status -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): FrameConnection! + framesAggregate(where: FrameWhereClause = null): FrameAggregate + tiltseries( + where: TiltseriesWhereClause = null + orderBy: [TiltseriesOrderByClause!] = [] -""" -select "annotation_authors_aggregate_bool_exp_bool_or_arguments_columns" columns of table "annotation_authors" -""" -enum annotation_authors_select_column_annotation_authors_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - corresponding_author_status + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """column name""" - primary_annotator_status + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - primary_author_status -} + """Returns the first n items from the list.""" + first: Int = null -"""aggregate stddev on columns""" -type annotation_authors_stddev_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TiltseriesConnection! + tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate + tomogramVoxelSpacings( + where: TomogramVoxelSpacingWhereClause = null + orderBy: [TomogramVoxelSpacingOrderByClause!] = [] - """The order in which the author appears in the publication""" - author_list_order: Float + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier for this annotation author (this may change!)""" - id: Float -} + """Returns the items in the list that come after the specified cursor.""" + after: String = null -""" -order by stddev() on columns of table "annotation_authors" -""" -input annotation_authors_stddev_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Returns the first n items from the list.""" + first: Int = null - """The order in which the author appears in the publication""" - author_list_order: order_by + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramVoxelSpacingConnection! + tomogramVoxelSpacingsAggregate(where: TomogramVoxelSpacingWhereClause = null): TomogramVoxelSpacingAggregate + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] - """Numeric identifier for this annotation author (this may change!)""" - id: order_by -} + """Returns the items in the list that come before the specified cursor.""" + before: String = null -"""aggregate stddev_pop on columns""" -type annotation_authors_stddev_pop_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """The order in which the author appears in the publication""" - author_list_order: Float + """Returns the first n items from the list.""" + first: Int = null - """Numeric identifier for this annotation author (this may change!)""" - id: Float -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate -""" -order by stddev_pop() on columns of table "annotation_authors" -""" -input annotation_authors_stddev_pop_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Name of a run""" + name: String! - """The order in which the author appears in the publication""" - author_list_order: order_by + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """Numeric identifier for this annotation author (this may change!)""" - id: order_by + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! } -"""aggregate stddev_samp on columns""" -type annotation_authors_stddev_samp_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float - - """The order in which the author appears in the publication""" - author_list_order: Float +"""A connection to a list of items.""" +type AlignmentConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Numeric identifier for this annotation author (this may change!)""" - id: Float + """Contains the nodes in this connection""" + edges: [AlignmentEdge!]! } -""" -order by stddev_samp() on columns of table "annotation_authors" -""" -input annotation_authors_stddev_samp_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by +"""An edge in a connection.""" +type AlignmentEdge { + """A cursor for use in pagination""" + cursor: String! - """The order in which the author appears in the publication""" - author_list_order: order_by + """The item at the end of the edge""" + node: Alignment! +} - """Numeric identifier for this annotation author (this may change!)""" - id: order_by +type AlignmentAggregate { + aggregate: [AlignmentAggregateFunctions!] } -"""aggregate sum on columns""" -type annotation_authors_sum_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Int +type AlignmentAggregateFunctions { + sum: AlignmentNumericalColumns + avg: AlignmentNumericalColumns + stddev: AlignmentNumericalColumns + variance: AlignmentNumericalColumns + min: AlignmentMinMaxColumns + max: AlignmentMinMaxColumns + groupBy: AlignmentGroupByOptions + count(distinct: Boolean = false, columns: AlignmentCountColumns = null): Int +} - """The order in which the author appears in the publication""" - author_list_order: Int +type AlignmentNumericalColumns { + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + id: Int +} - """Numeric identifier for this annotation author (this may change!)""" +type AlignmentMinMaxColumns { + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + localAlignmentFile: String + affineTransformationMatrix: String id: Int } -""" -order by sum() on columns of table "annotation_authors" -""" -input annotation_authors_sum_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by +type AlignmentGroupByOptions { + deposition: DepositionGroupByOptions + tiltseries: TiltseriesGroupByOptions + run: RunGroupByOptions + alignmentType: alignment_type_enum + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + localAlignmentFile: String + affineTransformationMatrix: String + id: Int +} - """The order in which the author appears in the publication""" - author_list_order: order_by +type DepositionGroupByOptions { + depositionTitle: String + depositionDescription: String + publications: String + relatedDatabaseEntries: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + id: Int +} - """Numeric identifier for this annotation author (this may change!)""" - id: order_by +type TiltseriesGroupByOptions { + run: RunGroupByOptions + deposition: DepositionGroupByOptions + s3OmezarrDir: String + s3MrcFile: String + httpsOmezarrDir: String + httpsMrcFile: String + s3CollectionMetadata: String + httpsCollectionMetadata: String + s3AngleList: String + httpsAngleList: String + s3GainFile: String + httpsGainFile: String + accelerationVoltage: Float + sphericalAberrationConstant: Float + microscopeManufacturer: tiltseries_microscope_manufacturer_enum + microscopeModel: String + microscopeEnergyFilter: String + microscopePhasePlate: String + microscopeImageCorrector: String + microscopeAdditionalInfo: String + cameraManufacturer: String + cameraModel: String + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltingScheme: String + tiltAxis: Float + totalFlux: Float + dataAcquisitionSoftware: String + relatedEmpiarEntry: String + binningFromFrames: Float + tiltSeriesQuality: Int + isAligned: Boolean + pixelSpacing: Float + alignedTiltseriesBinning: Float + tiltseriesFramesCount: Int + id: Int } -"""aggregate var_pop on columns""" -type annotation_authors_var_pop_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float +type RunGroupByOptions { + dataset: DatasetGroupByOptions + name: String + s3Prefix: String + httpsPrefix: String + id: Int +} - """The order in which the author appears in the publication""" - author_list_order: Float +type DatasetGroupByOptions { + deposition: DepositionGroupByOptions + title: String + description: String + organismName: String + organismTaxid: Int + tissueName: String + tissueId: String + cellName: String + cellTypeId: String + cellStrainName: String + cellStrainId: String + sampleType: sample_type_enum + samplePreparation: String + gridPreparation: String + otherSetup: String + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + cellComponentName: String + cellComponentId: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + publications: String + relatedDatabaseEntries: String + s3Prefix: String + httpsPrefix: String + id: Int +} - """Numeric identifier for this annotation author (this may change!)""" - id: Float +enum AlignmentCountColumns { + annotationFiles + perSectionAlignments + deposition + tiltseries + tomograms + run + alignmentType + volumeXDimension + volumeYDimension + volumeZDimension + volumeXOffset + volumeYOffset + volumeZOffset + xRotationOffset + tiltOffset + localAlignmentFile + affineTransformationMatrix + id } -""" -order by var_pop() on columns of table "annotation_authors" -""" -input annotation_authors_var_pop_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by +"""A connection to a list of items.""" +type AnnotationConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [AnnotationEdge!]! +} + +"""An edge in a connection.""" +type AnnotationEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: Annotation! +} + +input AnnotationOrderByClause { + run: RunOrderByClause + deposition: DepositionOrderByClause + s3MetadataPath: orderBy + httpsMetadataPath: orderBy + annotationPublication: orderBy + annotationMethod: orderBy + groundTruthStatus: orderBy + objectId: orderBy + objectName: orderBy + objectDescription: orderBy + objectState: orderBy + objectCount: orderBy + confidencePrecision: orderBy + confidenceRecall: orderBy + groundTruthUsed: orderBy + annotationSoftware: orderBy + isCuratorRecommended: orderBy + methodType: orderBy + depositionDate: orderBy + releaseDate: orderBy + lastModifiedDate: orderBy + id: orderBy +} + +type AnnotationAggregate { + aggregate: [AnnotationAggregateFunctions!] +} + +type AnnotationAggregateFunctions { + sum: AnnotationNumericalColumns + avg: AnnotationNumericalColumns + stddev: AnnotationNumericalColumns + variance: AnnotationNumericalColumns + min: AnnotationMinMaxColumns + max: AnnotationMinMaxColumns + groupBy: AnnotationGroupByOptions + count(distinct: Boolean = false, columns: AnnotationCountColumns = null): Int +} + +type AnnotationNumericalColumns { + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float + id: Int +} - """The order in which the author appears in the publication""" - author_list_order: order_by +type AnnotationMinMaxColumns { + s3MetadataPath: String + httpsMetadataPath: String + annotationPublication: String + annotationMethod: String + objectId: String + objectName: String + objectDescription: String + objectState: String + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float + groundTruthUsed: String + annotationSoftware: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + id: Int +} - """Numeric identifier for this annotation author (this may change!)""" - id: order_by +type AnnotationGroupByOptions { + run: RunGroupByOptions + deposition: DepositionGroupByOptions + s3MetadataPath: String + httpsMetadataPath: String + annotationPublication: String + annotationMethod: String + groundTruthStatus: Boolean + objectId: String + objectName: String + objectDescription: String + objectState: String + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float + groundTruthUsed: String + annotationSoftware: String + isCuratorRecommended: Boolean + methodType: annotation_method_type_enum + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + id: Int } -"""aggregate var_samp on columns""" -type annotation_authors_var_samp_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float +enum AnnotationCountColumns { + run + annotationShapes + authors + deposition + s3MetadataPath + httpsMetadataPath + annotationPublication + annotationMethod + groundTruthStatus + objectId + objectName + objectDescription + objectState + objectCount + confidencePrecision + confidenceRecall + groundTruthUsed + annotationSoftware + isCuratorRecommended + methodType + depositionDate + releaseDate + lastModifiedDate + id +} - """The order in which the author appears in the publication""" - author_list_order: Float +"""An author of a dataset""" +type Dataset implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this annotation author (this may change!)""" - id: Float -} + """An identifier to refer to a specific instance of this type""" + id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int + fundingSources( + where: DatasetFundingWhereClause = null + orderBy: [DatasetFundingOrderByClause!] = [] -""" -order by var_samp() on columns of table "annotation_authors" -""" -input annotation_authors_var_samp_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """The order in which the author appears in the publication""" - author_list_order: order_by + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Numeric identifier for this annotation author (this may change!)""" - id: order_by -} + """Returns the first n items from the list.""" + first: Int = null -"""aggregate variance on columns""" -type annotation_authors_variance_fields { - """Reference to the annotation this author contributed to""" - annotation_id: Float + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): DatasetFundingConnection! + fundingSourcesAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate + authors( + where: DatasetAuthorWhereClause = null + orderBy: [DatasetAuthorOrderByClause!] = [] - """The order in which the author appears in the publication""" - author_list_order: Float + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier for this annotation author (this may change!)""" - id: Float -} + """Returns the items in the list that come after the specified cursor.""" + after: String = null -""" -order by variance() on columns of table "annotation_authors" -""" -input annotation_authors_variance_order_by { - """Reference to the annotation this author contributed to""" - annotation_id: order_by + """Returns the first n items from the list.""" + first: Int = null - """The order in which the author appears in the publication""" - author_list_order: order_by + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): DatasetAuthorConnection! + authorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate + runs( + where: RunWhereClause = null + orderBy: [RunOrderByClause!] = [] - """Numeric identifier for this annotation author (this may change!)""" - id: order_by -} + """Returns the items in the list that come before the specified cursor.""" + before: String = null -"""Metadata for an annotation file""" -type annotation_files { - """An object relationship""" - annotation: annotations! + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """The ID of the annotation this file applies to""" - annotation_id: Int! + """Returns the first n items from the list.""" + first: Int = null - """File format for this file""" - format: String! + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): RunConnection! + runsAggregate(where: RunWhereClause = null): RunAggregate - """HTTPS path for this annotation file""" - https_path: String! + """Title of a CryoET dataset.""" + title: String! - """Numeric identifier (May change!)""" - id: Int! + """ + A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. + """ + description: String! """ - Data curator’s subjective choice of default annotation to display in visualization for an object + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. """ - is_visualization_default: Boolean + organismName: String! - """s3 path of the annotation file""" - s3_path: String! + """NCBI taxonomy identifier for the organism, e.g. 9606""" + organismTaxid: Int - """The type of the annotation""" - shape_type: String! -} + """ + Name of the tissue from which a biological sample used in a CryoET study is derived from. + """ + tissueName: String -""" -aggregated selection of "annotation_files" -""" -type annotation_files_aggregate { - aggregate: annotation_files_aggregate_fields - nodes: [annotation_files!]! -} + """The UBERON identifier for the tissue.""" + tissueId: String -input annotation_files_aggregate_bool_exp { - bool_and: annotation_files_aggregate_bool_exp_bool_and - bool_or: annotation_files_aggregate_bool_exp_bool_or - count: annotation_files_aggregate_bool_exp_count -} + """ + Name of the cell type from which a biological sample used in a CryoET study is derived from. + """ + cellName: String -input annotation_files_aggregate_bool_exp_bool_and { - arguments: annotation_files_select_column_annotation_files_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: annotation_files_bool_exp - predicate: Boolean_comparison_exp! -} + """Cell Ontology identifier for the cell type""" + cellTypeId: String -input annotation_files_aggregate_bool_exp_bool_or { - arguments: annotation_files_select_column_annotation_files_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: annotation_files_bool_exp - predicate: Boolean_comparison_exp! -} + """Cell line or strain for the sample.""" + cellStrainName: String -input annotation_files_aggregate_bool_exp_count { - arguments: [annotation_files_select_column!] - distinct: Boolean - filter: annotation_files_bool_exp - predicate: Int_comparison_exp! -} + """Link to more information about the cell strain.""" + cellStrainId: String -""" -aggregate fields of "annotation_files" -""" -type annotation_files_aggregate_fields { - avg: annotation_files_avg_fields - count(columns: [annotation_files_select_column!], distinct: Boolean): Int! - max: annotation_files_max_fields - min: annotation_files_min_fields - stddev: annotation_files_stddev_fields - stddev_pop: annotation_files_stddev_pop_fields - stddev_samp: annotation_files_stddev_samp_fields - sum: annotation_files_sum_fields - var_pop: annotation_files_var_pop_fields - var_samp: annotation_files_var_samp_fields - variance: annotation_files_variance_fields -} + """Type of sample imaged in a CryoET study""" + sampleType: sample_type_enum -""" -order by aggregate values of table "annotation_files" -""" -input annotation_files_aggregate_order_by { - avg: annotation_files_avg_order_by - count: order_by - max: annotation_files_max_order_by - min: annotation_files_min_order_by - stddev: annotation_files_stddev_order_by - stddev_pop: annotation_files_stddev_pop_order_by - stddev_samp: annotation_files_stddev_samp_order_by - sum: annotation_files_sum_order_by - var_pop: annotation_files_var_pop_order_by - var_samp: annotation_files_var_samp_order_by - variance: annotation_files_variance_order_by -} + """Describes how the sample was prepared.""" + samplePreparation: String -"""aggregate avg on columns""" -type annotation_files_avg_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float + """Describes Cryo-ET grid preparation.""" + gridPreparation: String - """Numeric identifier (May change!)""" - id: Float -} + """ + Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + """ + otherSetup: String -""" -order by avg() on columns of table "annotation_files" -""" -input annotation_files_avg_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by + """URL for the dataset preview image.""" + keyPhotoUrl: String - """Numeric identifier (May change!)""" - id: order_by -} + """URL for the thumbnail of preview image.""" + keyPhotoThumbnailUrl: String -""" -Boolean expression to filter rows from the table "annotation_files". All fields are combined with a logical 'AND'. -""" -input annotation_files_bool_exp { - _and: [annotation_files_bool_exp!] - _not: annotation_files_bool_exp - _or: [annotation_files_bool_exp!] - annotation: annotations_bool_exp - annotation_id: Int_comparison_exp - format: String_comparison_exp - https_path: String_comparison_exp - id: Int_comparison_exp - is_visualization_default: Boolean_comparison_exp - s3_path: String_comparison_exp - shape_type: String_comparison_exp -} - -"""aggregate max on columns""" -type annotation_files_max_fields { - """The ID of the annotation this file applies to""" - annotation_id: Int - - """File format for this file""" - format: String + """Name of the cellular component.""" + cellComponentName: String - """HTTPS path for this annotation file""" - https_path: String + """The GO identifier for the cellular component.""" + cellComponentId: String - """Numeric identifier (May change!)""" - id: Int + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! - """s3 path of the annotation file""" - s3_path: String + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! - """The type of the annotation""" - shape_type: String + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! + + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String + + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String + + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! + + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! } -""" -order by max() on columns of table "annotation_files" -""" -input annotation_files_max_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +type Deposition implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """File format for this file""" - format: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + authors( + where: DepositionAuthorWhereClause = null + orderBy: [DepositionAuthorOrderByClause!] = [] - """HTTPS path for this annotation file""" - https_path: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier (May change!)""" - id: order_by + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """s3 path of the annotation file""" - s3_path: order_by + """Returns the first n items from the list.""" + first: Int = null - """The type of the annotation""" - shape_type: order_by -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): DepositionAuthorConnection! + authorsAggregate(where: DepositionAuthorWhereClause = null): DepositionAuthorAggregate + alignments( + where: AlignmentWhereClause = null + orderBy: [AlignmentOrderByClause!] = [] -"""aggregate min on columns""" -type annotation_files_min_fields { - """The ID of the annotation this file applies to""" - annotation_id: Int + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """File format for this file""" - format: String + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """HTTPS path for this annotation file""" - https_path: String + """Returns the first n items from the list.""" + first: Int = null - """Numeric identifier (May change!)""" - id: Int + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AlignmentConnection! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate + annotations( + where: AnnotationWhereClause = null + orderBy: [AnnotationOrderByClause!] = [] - """s3 path of the annotation file""" - s3_path: String + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """The type of the annotation""" - shape_type: String -} + """Returns the items in the list that come after the specified cursor.""" + after: String = null -""" -order by min() on columns of table "annotation_files" -""" -input annotation_files_min_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by + """Returns the first n items from the list.""" + first: Int = null - """File format for this file""" - format: order_by + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationConnection! + annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate + datasets( + where: DatasetWhereClause = null + orderBy: [DatasetOrderByClause!] = [] - """HTTPS path for this annotation file""" - https_path: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier (May change!)""" - id: order_by + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """s3 path of the annotation file""" - s3_path: order_by + """Returns the first n items from the list.""" + first: Int = null - """The type of the annotation""" - shape_type: order_by -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): DatasetConnection! + datasetsAggregate(where: DatasetWhereClause = null): DatasetAggregate + frames( + where: FrameWhereClause = null + orderBy: [FrameOrderByClause!] = [] -"""Ordering options when selecting data from "annotation_files".""" -input annotation_files_order_by { - annotation: annotations_order_by - annotation_id: order_by - format: order_by - https_path: order_by - id: order_by - is_visualization_default: order_by - s3_path: order_by - shape_type: order_by -} + """Returns the items in the list that come before the specified cursor.""" + before: String = null -""" -select columns of table "annotation_files" -""" -enum annotation_files_select_column { - """column name""" - annotation_id + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - format + """Returns the first n items from the list.""" + first: Int = null - """column name""" - https_path + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): FrameConnection! + framesAggregate(where: FrameWhereClause = null): FrameAggregate + tiltseries( + where: TiltseriesWhereClause = null + orderBy: [TiltseriesOrderByClause!] = [] - """column name""" - id + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """column name""" - is_visualization_default + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """column name""" - s3_path + """Returns the first n items from the list.""" + first: Int = null - """column name""" - shape_type -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TiltseriesConnection! + tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] -""" -select "annotation_files_aggregate_bool_exp_bool_and_arguments_columns" columns of table "annotation_files" -""" -enum annotation_files_select_column_annotation_files_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - is_visualization_default -} + """Returns the items in the list that come before the specified cursor.""" + before: String = null -""" -select "annotation_files_aggregate_bool_exp_bool_or_arguments_columns" columns of table "annotation_files" -""" -enum annotation_files_select_column_annotation_files_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - is_visualization_default -} + """Returns the items in the list that come after the specified cursor.""" + after: String = null -"""aggregate stddev on columns""" -type annotation_files_stddev_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float + """Returns the first n items from the list.""" + first: Int = null - """Numeric identifier (May change!)""" - id: Float -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate -""" -order by stddev() on columns of table "annotation_files" -""" -input annotation_files_stddev_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by + """Title of a CryoET deposition.""" + depositionTitle: String! - """Numeric identifier (May change!)""" - id: order_by -} + """ + A short description of the deposition, similar to an abstract for a journal article or dataset. + """ + depositionDescription: String! + depositionTypes( + where: DepositionTypeWhereClause = null + orderBy: [DepositionTypeOrderByClause!] = [] -"""aggregate stddev_pop on columns""" -type annotation_files_stddev_pop_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Numeric identifier (May change!)""" - id: Float -} + """Returns the items in the list that come after the specified cursor.""" + after: String = null -""" -order by stddev_pop() on columns of table "annotation_files" -""" -input annotation_files_stddev_pop_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by + """Returns the first n items from the list.""" + first: Int = null - """Numeric identifier (May change!)""" - id: order_by -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): DepositionTypeConnection! + depositionTypesAggregate(where: DepositionTypeWhereClause = null): DepositionTypeAggregate + + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String + + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String + + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! -"""aggregate stddev_samp on columns""" -type annotation_files_stddev_samp_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! - """Numeric identifier (May change!)""" - id: Float + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! } -""" -order by stddev_samp() on columns of table "annotation_files" -""" -input annotation_files_stddev_samp_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +"""A connection to a list of items.""" +type DepositionAuthorConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Numeric identifier (May change!)""" - id: order_by + """Contains the nodes in this connection""" + edges: [DepositionAuthorEdge!]! } -""" -Streaming cursor of the table "annotation_files" -""" -input annotation_files_stream_cursor_input { - """Stream column input with initial value""" - initial_value: annotation_files_stream_cursor_value_input! +"""An edge in a connection.""" +type DepositionAuthorEdge { + """A cursor for use in pagination""" + cursor: String! - """cursor ordering""" - ordering: cursor_ordering + """The item at the end of the edge""" + node: DepositionAuthor! } -"""Initial value of the column from where the streaming should start""" -input annotation_files_stream_cursor_value_input { - """The ID of the annotation this file applies to""" - annotation_id: Int +"""Author of a deposition""" +type DepositionAuthor implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """File format for this file""" - format: String + """An identifier to refer to a specific instance of this type""" + id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int - """HTTPS path for this annotation file""" - https_path: String + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """Numeric identifier (May change!)""" - id: Int + """The ORCID identifier for the author.""" + orcid: String - """ - Data curator’s subjective choice of default annotation to display in visualization for an object - """ - is_visualization_default: Boolean + """The full name of the author.""" + name: String! + + """The email address of the author.""" + email: String - """s3 path of the annotation file""" - s3_path: String + """The name of the author's affiliation.""" + affiliationName: String - """The type of the annotation""" - shape_type: String -} + """The address of the author's affiliation.""" + affiliationAddress: String -"""aggregate sum on columns""" -type annotation_files_sum_fields { - """The ID of the annotation this file applies to""" - annotation_id: Int + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String - """Numeric identifier (May change!)""" - id: Int + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean + + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean } -""" -order by sum() on columns of table "annotation_files" -""" -input annotation_files_sum_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +input DepositionAuthorOrderByClause { + deposition: DepositionOrderByClause + id: orderBy + authorListOrder: orderBy + orcid: orderBy + name: orderBy + email: orderBy + affiliationName: orderBy + affiliationAddress: orderBy + affiliationIdentifier: orderBy + correspondingAuthorStatus: orderBy + primaryAuthorStatus: orderBy +} - """Numeric identifier (May change!)""" - id: order_by +type DepositionAuthorAggregate { + aggregate: [DepositionAuthorAggregateFunctions!] } -"""aggregate var_pop on columns""" -type annotation_files_var_pop_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float +type DepositionAuthorAggregateFunctions { + sum: DepositionAuthorNumericalColumns + avg: DepositionAuthorNumericalColumns + stddev: DepositionAuthorNumericalColumns + variance: DepositionAuthorNumericalColumns + min: DepositionAuthorMinMaxColumns + max: DepositionAuthorMinMaxColumns + groupBy: DepositionAuthorGroupByOptions + count(distinct: Boolean = false, columns: DepositionAuthorCountColumns = null): Int +} - """Numeric identifier (May change!)""" - id: Float +type DepositionAuthorNumericalColumns { + id: Int + authorListOrder: Int } -""" -order by var_pop() on columns of table "annotation_files" -""" -input annotation_files_var_pop_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +type DepositionAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} + +type DepositionAuthorGroupByOptions { + deposition: DepositionGroupByOptions + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean +} - """Numeric identifier (May change!)""" - id: order_by +enum DepositionAuthorCountColumns { + deposition + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus } -"""aggregate var_samp on columns""" -type annotation_files_var_samp_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float +"""A connection to a list of items.""" +type DatasetConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Numeric identifier (May change!)""" - id: Float + """Contains the nodes in this connection""" + edges: [DatasetEdge!]! } -""" -order by var_samp() on columns of table "annotation_files" -""" -input annotation_files_var_samp_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +"""An edge in a connection.""" +type DatasetEdge { + """A cursor for use in pagination""" + cursor: String! - """Numeric identifier (May change!)""" - id: order_by + """The item at the end of the edge""" + node: Dataset! } -"""aggregate variance on columns""" -type annotation_files_variance_fields { - """The ID of the annotation this file applies to""" - annotation_id: Float +type DatasetAggregate { + aggregate: [DatasetAggregateFunctions!] +} - """Numeric identifier (May change!)""" - id: Float +type DatasetAggregateFunctions { + sum: DatasetNumericalColumns + avg: DatasetNumericalColumns + stddev: DatasetNumericalColumns + variance: DatasetNumericalColumns + min: DatasetMinMaxColumns + max: DatasetMinMaxColumns + groupBy: DatasetGroupByOptions + count(distinct: Boolean = false, columns: DatasetCountColumns = null): Int } -""" -order by variance() on columns of table "annotation_files" -""" -input annotation_files_variance_order_by { - """The ID of the annotation this file applies to""" - annotation_id: order_by +type DatasetNumericalColumns { + organismTaxid: Int + id: Int +} - """Numeric identifier (May change!)""" - id: order_by +type DatasetMinMaxColumns { + title: String + description: String + organismName: String + organismTaxid: Int + tissueName: String + tissueId: String + cellName: String + cellTypeId: String + cellStrainName: String + cellStrainId: String + samplePreparation: String + gridPreparation: String + otherSetup: String + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + cellComponentName: String + cellComponentId: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + publications: String + relatedDatabaseEntries: String + s3Prefix: String + httpsPrefix: String + id: Int } -"""Metadata for an annotation""" -type annotations { - """ - Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - """ - annotation_method: String! +enum DatasetCountColumns { + deposition + fundingSources + authors + runs + title + description + organismName + organismTaxid + tissueName + tissueId + cellName + cellTypeId + cellStrainName + cellStrainId + sampleType + samplePreparation + gridPreparation + otherSetup + keyPhotoUrl + keyPhotoThumbnailUrl + cellComponentName + cellComponentId + depositionDate + releaseDate + lastModifiedDate + publications + relatedDatabaseEntries + s3Prefix + httpsPrefix + id +} - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - annotation_publication: String +"""A connection to a list of items.""" +type FrameConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Software used for generating this annotation""" - annotation_software: String + """Contains the nodes in this connection""" + edges: [FrameEdge!]! +} - """An array relationship""" - authors( - """distinct select on columns""" - distinct_on: [annotation_authors_select_column!] +"""An edge in a connection.""" +type FrameEdge { + """A cursor for use in pagination""" + cursor: String! - """limit the number of rows returned""" - limit: Int + """The item at the end of the edge""" + node: Frame! +} - """skip the first n rows. Use only with order_by""" - offset: Int +type Frame implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """sort the rows by one or more columns""" - order_by: [annotation_authors_order_by!] + """An identifier to refer to a specific instance of this type""" + id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int + perSectionParameters( + where: PerSectionParametersWhereClause = null + orderBy: [PerSectionParametersOrderByClause!] = [] - """filter the rows returned""" - where: annotation_authors_bool_exp - ): [annotation_authors!]! + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """An aggregate relationship""" - authors_aggregate( - """distinct select on columns""" - distinct_on: [annotation_authors_select_column!] + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """limit the number of rows returned""" - limit: Int + """Returns the first n items from the list.""" + first: Int = null - """skip the first n rows. Use only with order_by""" - offset: Int + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): PerSectionParametersConnection! + perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int - """sort the rows by one or more columns""" - order_by: [annotation_authors_order_by!] + """Camera angle for a frame""" + rawAngle: Float! - """filter the rows returned""" - where: annotation_authors_bool_exp - ): annotation_authors_aggregate! + """Frame's acquistion order within a tilt experiment""" + acquisitionOrder: Int - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: numeric + """The raw camera angle for a frame""" + dose: Float! - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: numeric + """Whether this frame has been gain corrected""" + isGainCorrected: Boolean - """An object relationship""" - deposition: depositions + """S3 path to the gain file for this frame""" + s3GainFile: String - """Date when an annotation set is initially received by the Data Portal.""" - deposition_date: date! + """HTTPS path to the gain file for this frame""" + httpsGainFile: String - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Int + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """An array relationship""" - files( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! +} - """limit the number of rows returned""" - limit: Int +"""A connection to a list of items.""" +type PerSectionParametersConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """skip the first n rows. Use only with order_by""" - offset: Int + """Contains the nodes in this connection""" + edges: [PerSectionParametersEdge!]! +} - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] +"""An edge in a connection.""" +type PerSectionParametersEdge { + """A cursor for use in pagination""" + cursor: String! - """filter the rows returned""" - where: annotation_files_bool_exp - ): [annotation_files!]! + """The item at the end of the edge""" + node: PerSectionParameters! +} - """An aggregate relationship""" - files_aggregate( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] +"""Record how frames get mapped to TiltSeries""" +type PerSectionParameters implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """limit the number of rows returned""" - limit: Int + """An identifier to refer to a specific instance of this type""" + id: Int! + frame(where: FrameWhereClause = null, orderBy: [FrameOrderByClause!] = []): Frame + frameId: Int! + tiltseries(where: TiltseriesWhereClause = null, orderBy: [TiltseriesOrderByClause!] = []): Tiltseries + tiltseriesId: Int! - """skip the first n rows. Use only with order_by""" - offset: Int + """z-index of the frame in the tiltseries""" + zIndex: Int! - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] + """defocus amount""" + defocus: Float - """filter the rows returned""" - where: annotation_files_bool_exp - ): annotation_files_aggregate! + """Astigmatism amount for this frame""" + astigmatism: Float - """ - Whether an annotation is considered ground truth, as determined by the annotator. - """ - ground_truth_status: Boolean! + """Angle of ast""" + astigmaticAngle: Float +} - """Annotation filename used as ground truth for precision and recall""" - ground_truth_used: String +input FrameOrderByClause { + deposition: DepositionOrderByClause + run: RunOrderByClause + rawAngle: orderBy + acquisitionOrder: orderBy + dose: orderBy + isGainCorrected: orderBy + s3GainFile: orderBy + httpsGainFile: orderBy + s3Prefix: orderBy + httpsPrefix: orderBy + id: orderBy +} - """HTTPS path for the metadata json file for this annotation""" - https_metadata_path: String! +type Tiltseries implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier (May change!)""" + """An identifier to refer to a specific instance of this type""" id: Int! + alignments( + where: AlignmentWhereClause = null + orderBy: [AlignmentOrderByClause!] = [] - """ - Data curator’s subjective choice as the best annotation of the same annotation object ID - """ - is_curator_recommended: Boolean + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Date when an annotation was last modified in the Data Portal""" - last_modified_date: date + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """ - Provides links that generates information on the method used for generating annotation - """ - method_links( - """JSON select path""" - path: String - ): json + """Returns the first n items from the list.""" + first: Int = null - """ - The method type for generating the annotation (e.g. manual, hybrid, automated) - """ - method_type: String + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AlignmentConnection! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate + perSectionParameters( + where: PerSectionParametersWhereClause = null + orderBy: [PerSectionParametersOrderByClause!] = [] - """Number of objects identified""" - object_count: Int! + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """ - A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - """ - object_description: String + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Gene Ontology Cellular Component identifier for the annotation object""" - object_id: String! + """Returns the first n items from the list.""" + first: Int = null - """ - Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - """ - object_name: String! + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): PerSectionParametersConnection! + perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int - """Molecule state annotated (e.g. open, closed)""" - object_state: String + """S3 path to this tiltseries in multiscale OME-Zarr format""" + s3OmezarrDir: String - """Date when annotation data is made public by the Data Portal.""" - release_date: date! + """S3 path to this tiltseries in MRC format (no scaling)""" + s3MrcFile: String - """S3 path for the metadata json file for this annotation""" - s3_metadata_path: String! + """HTTPS path to this tiltseries in multiscale OME-Zarr format""" + httpsOmezarrDir: String - """An object relationship""" - tomogram_voxel_spacing: tomogram_voxel_spacings + """HTTPS path to this tiltseries in MRC format (no scaling)""" + httpsMrcFile: String - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Int -} + """S3 path to the collection metadata file for this tiltseries""" + s3CollectionMetadata: String -""" -aggregated selection of "annotations" -""" -type annotations_aggregate { - aggregate: annotations_aggregate_fields - nodes: [annotations!]! -} + """HTTPS path to the collection metadata file for this tiltseries""" + httpsCollectionMetadata: String -input annotations_aggregate_bool_exp { - bool_and: annotations_aggregate_bool_exp_bool_and - bool_or: annotations_aggregate_bool_exp_bool_or - count: annotations_aggregate_bool_exp_count -} + """S3 path to the angle list file for this tiltseries""" + s3AngleList: String -input annotations_aggregate_bool_exp_bool_and { - arguments: annotations_select_column_annotations_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: annotations_bool_exp - predicate: Boolean_comparison_exp! -} + """HTTPS path to the angle list file for this tiltseries""" + httpsAngleList: String -input annotations_aggregate_bool_exp_bool_or { - arguments: annotations_select_column_annotations_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: annotations_bool_exp - predicate: Boolean_comparison_exp! -} + """S3 path to the gain file for this tiltseries""" + s3GainFile: String -input annotations_aggregate_bool_exp_count { - arguments: [annotations_select_column!] - distinct: Boolean - filter: annotations_bool_exp - predicate: Int_comparison_exp! -} + """HTTPS path to the gain file for this tiltseries""" + httpsGainFile: String -""" -aggregate fields of "annotations" -""" -type annotations_aggregate_fields { - avg: annotations_avg_fields - count(columns: [annotations_select_column!], distinct: Boolean): Int! - max: annotations_max_fields - min: annotations_min_fields - stddev: annotations_stddev_fields - stddev_pop: annotations_stddev_pop_fields - stddev_samp: annotations_stddev_samp_fields - sum: annotations_sum_fields - var_pop: annotations_var_pop_fields - var_samp: annotations_var_samp_fields - variance: annotations_variance_fields -} + """Electron Microscope Accelerator voltage in volts""" + accelerationVoltage: Float! -""" -order by aggregate values of table "annotations" -""" -input annotations_aggregate_order_by { - avg: annotations_avg_order_by - count: order_by - max: annotations_max_order_by - min: annotations_min_order_by - stddev: annotations_stddev_order_by - stddev_pop: annotations_stddev_pop_order_by - stddev_samp: annotations_stddev_samp_order_by - sum: annotations_sum_order_by - var_pop: annotations_var_pop_order_by - var_samp: annotations_var_samp_order_by - variance: annotations_variance_order_by -} - -"""aggregate avg on columns""" -type annotations_avg_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float + """Spherical Aberration Constant of the objective lens in millimeters""" + sphericalAberrationConstant: Float! - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float + """Name of the microscope manufacturer""" + microscopeManufacturer: tiltseries_microscope_manufacturer_enum! - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float + """Microscope model name""" + microscopeModel: String! - """Numeric identifier (May change!)""" - id: Float + """Energy filter setup used""" + microscopeEnergyFilter: String! - """Number of objects identified""" - object_count: Float + """Phase plate configuration""" + microscopePhasePlate: String - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} + """Image corrector setup""" + microscopeImageCorrector: String -""" -order by avg() on columns of table "annotations" -""" -input annotations_avg_order_by { """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + Other microscope optical setup information, in addition to energy filter, phase plate and image corrector """ - confidence_precision: order_by + microscopeAdditionalInfo: String - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by + """Name of the camera manufacturer""" + cameraManufacturer: String! - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by + """Camera model name""" + cameraModel: String! - """Numeric identifier (May change!)""" - id: order_by + """Minimal tilt angle in degrees""" + tiltMin: Float! - """Number of objects identified""" - object_count: order_by + """Maximal tilt angle in degrees""" + tiltMax: Float! - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} + """Total tilt range from min to max in degrees""" + tiltRange: Float! -""" -Boolean expression to filter rows from the table "annotations". All fields are combined with a logical 'AND'. -""" -input annotations_bool_exp { - _and: [annotations_bool_exp!] - _not: annotations_bool_exp - _or: [annotations_bool_exp!] - annotation_method: String_comparison_exp - annotation_publication: String_comparison_exp - annotation_software: String_comparison_exp - authors: annotation_authors_bool_exp - authors_aggregate: annotation_authors_aggregate_bool_exp - confidence_precision: numeric_comparison_exp - confidence_recall: numeric_comparison_exp - deposition: depositions_bool_exp - deposition_date: date_comparison_exp - deposition_id: Int_comparison_exp - files: annotation_files_bool_exp - files_aggregate: annotation_files_aggregate_bool_exp - ground_truth_status: Boolean_comparison_exp - ground_truth_used: String_comparison_exp - https_metadata_path: String_comparison_exp - id: Int_comparison_exp - is_curator_recommended: Boolean_comparison_exp - last_modified_date: date_comparison_exp - method_links: json_comparison_exp - method_type: String_comparison_exp - object_count: Int_comparison_exp - object_description: String_comparison_exp - object_id: String_comparison_exp - object_name: String_comparison_exp - object_state: String_comparison_exp - release_date: date_comparison_exp - s3_metadata_path: String_comparison_exp - tomogram_voxel_spacing: tomogram_voxel_spacings_bool_exp - tomogram_voxel_spacing_id: Int_comparison_exp -} - -"""aggregate max on columns""" -type annotations_max_fields { - """ - Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - """ - annotation_method: String + """Tilt step in degrees""" + tiltStep: Float! + + """The order of stage tilting during acquisition of the data""" + tiltingScheme: String! + + """Rotation angle in degrees""" + tiltAxis: Float! """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. + Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series """ - annotation_publication: String + totalFlux: Float! - """Software used for generating this annotation""" - annotation_software: String + """Software used to collect data""" + dataAcquisitionSoftware: String! """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier """ - confidence_precision: numeric + relatedEmpiarEntry: String + + """Describes the binning factor from frames to tilt series file""" + binningFromFrames: Float """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + Author assessment of tilt series quality within the dataset (1-5, 5 is best) """ - confidence_recall: numeric + tiltSeriesQuality: Int! - """Date when an annotation set is initially received by the Data Portal.""" - deposition_date: date + """Whether this tilt series is aligned""" + isAligned: Boolean! - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Int + """Pixel spacing for the tilt series""" + pixelSpacing: Float! - """Annotation filename used as ground truth for precision and recall""" - ground_truth_used: String + """Binning factor of the aligned tilt series""" + alignedTiltseriesBinning: Float - """HTTPS path for the metadata json file for this annotation""" - https_metadata_path: String + """Number of frames associated with this tiltseries""" + tiltseriesFramesCount: Int +} - """Numeric identifier (May change!)""" - id: Int - - """Date when an annotation was last modified in the Data Portal""" - last_modified_date: date - - """ - The method type for generating the annotation (e.g. manual, hybrid, automated) - """ - method_type: String - - """Number of objects identified""" - object_count: Int - - """ - A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - """ - object_description: String - - """Gene Ontology Cellular Component identifier for the annotation object""" - object_id: String - - """ - Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - """ - object_name: String - - """Molecule state annotated (e.g. open, closed)""" - object_state: String - - """Date when annotation data is made public by the Data Portal.""" - release_date: date - - """S3 path for the metadata json file for this annotation""" - s3_metadata_path: String - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Int -} - -""" -order by max() on columns of table "annotations" -""" -input annotations_max_order_by { - """ - Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - """ - annotation_method: order_by - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - annotation_publication: order_by - - """Software used for generating this annotation""" - annotation_software: order_by - - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """Date when an annotation set is initially received by the Data Portal.""" - deposition_date: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Annotation filename used as ground truth for precision and recall""" - ground_truth_used: order_by - - """HTTPS path for the metadata json file for this annotation""" - https_metadata_path: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Date when an annotation was last modified in the Data Portal""" - last_modified_date: order_by - - """ - The method type for generating the annotation (e.g. manual, hybrid, automated) - """ - method_type: order_by - - """Number of objects identified""" - object_count: order_by - - """ - A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - """ - object_description: order_by - - """Gene Ontology Cellular Component identifier for the annotation object""" - object_id: order_by - - """ - Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - """ - object_name: order_by - - """Molecule state annotated (e.g. open, closed)""" - object_state: order_by - - """Date when annotation data is made public by the Data Portal.""" - release_date: order_by - - """S3 path for the metadata json file for this annotation""" - s3_metadata_path: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate min on columns""" -type annotations_min_fields { - """ - Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - """ - annotation_method: String - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - annotation_publication: String - - """Software used for generating this annotation""" - annotation_software: String - - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: numeric - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: numeric - - """Date when an annotation set is initially received by the Data Portal.""" - deposition_date: date - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Int - - """Annotation filename used as ground truth for precision and recall""" - ground_truth_used: String - - """HTTPS path for the metadata json file for this annotation""" - https_metadata_path: String - - """Numeric identifier (May change!)""" - id: Int - - """Date when an annotation was last modified in the Data Portal""" - last_modified_date: date - - """ - The method type for generating the annotation (e.g. manual, hybrid, automated) - """ - method_type: String - - """Number of objects identified""" - object_count: Int - - """ - A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - """ - object_description: String - - """Gene Ontology Cellular Component identifier for the annotation object""" - object_id: String - - """ - Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - """ - object_name: String - - """Molecule state annotated (e.g. open, closed)""" - object_state: String - - """Date when annotation data is made public by the Data Portal.""" - release_date: date - - """S3 path for the metadata json file for this annotation""" - s3_metadata_path: String - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Int -} - -""" -order by min() on columns of table "annotations" -""" -input annotations_min_order_by { - """ - Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - """ - annotation_method: order_by - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - annotation_publication: order_by - - """Software used for generating this annotation""" - annotation_software: order_by - - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """Date when an annotation set is initially received by the Data Portal.""" - deposition_date: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Annotation filename used as ground truth for precision and recall""" - ground_truth_used: order_by - - """HTTPS path for the metadata json file for this annotation""" - https_metadata_path: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Date when an annotation was last modified in the Data Portal""" - last_modified_date: order_by - - """ - The method type for generating the annotation (e.g. manual, hybrid, automated) - """ - method_type: order_by - - """Number of objects identified""" - object_count: order_by - - """ - A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - """ - object_description: order_by - - """Gene Ontology Cellular Component identifier for the annotation object""" - object_id: order_by - - """ - Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - """ - object_name: order_by - - """Molecule state annotated (e.g. open, closed)""" - object_state: order_by - - """Date when annotation data is made public by the Data Portal.""" - release_date: order_by - - """S3 path for the metadata json file for this annotation""" - s3_metadata_path: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""Ordering options when selecting data from "annotations".""" -input annotations_order_by { - annotation_method: order_by - annotation_publication: order_by - annotation_software: order_by - authors_aggregate: annotation_authors_aggregate_order_by - confidence_precision: order_by - confidence_recall: order_by - deposition: depositions_order_by - deposition_date: order_by - deposition_id: order_by - files_aggregate: annotation_files_aggregate_order_by - ground_truth_status: order_by - ground_truth_used: order_by - https_metadata_path: order_by - id: order_by - is_curator_recommended: order_by - last_modified_date: order_by - method_links: order_by - method_type: order_by - object_count: order_by - object_description: order_by - object_id: order_by - object_name: order_by - object_state: order_by - release_date: order_by - s3_metadata_path: order_by - tomogram_voxel_spacing: tomogram_voxel_spacings_order_by - tomogram_voxel_spacing_id: order_by -} - -""" -select columns of table "annotations" -""" -enum annotations_select_column { - """column name""" - annotation_method - - """column name""" - annotation_publication - - """column name""" - annotation_software - - """column name""" - confidence_precision - - """column name""" - confidence_recall - - """column name""" - deposition_date - - """column name""" - deposition_id - - """column name""" - ground_truth_status - - """column name""" - ground_truth_used - - """column name""" - https_metadata_path - - """column name""" - id - - """column name""" - is_curator_recommended - - """column name""" - last_modified_date - - """column name""" - method_links - - """column name""" - method_type - - """column name""" - object_count - - """column name""" - object_description - - """column name""" - object_id - - """column name""" - object_name - - """column name""" - object_state - - """column name""" - release_date - - """column name""" - s3_metadata_path - - """column name""" - tomogram_voxel_spacing_id -} - -""" -select "annotations_aggregate_bool_exp_bool_and_arguments_columns" columns of table "annotations" -""" -enum annotations_select_column_annotations_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - ground_truth_status - - """column name""" - is_curator_recommended -} - -""" -select "annotations_aggregate_bool_exp_bool_or_arguments_columns" columns of table "annotations" -""" -enum annotations_select_column_annotations_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - ground_truth_status - - """column name""" - is_curator_recommended -} - -"""aggregate stddev on columns""" -type annotations_stddev_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by stddev() on columns of table "annotations" -""" -input annotations_stddev_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate stddev_pop on columns""" -type annotations_stddev_pop_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by stddev_pop() on columns of table "annotations" -""" -input annotations_stddev_pop_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate stddev_samp on columns""" -type annotations_stddev_samp_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by stddev_samp() on columns of table "annotations" -""" -input annotations_stddev_samp_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate sum on columns""" -type annotations_sum_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: numeric - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: numeric - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Int - - """Numeric identifier (May change!)""" - id: Int - - """Number of objects identified""" - object_count: Int - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Int -} - -""" -order by sum() on columns of table "annotations" -""" -input annotations_sum_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate var_pop on columns""" -type annotations_var_pop_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by var_pop() on columns of table "annotations" -""" -input annotations_var_pop_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate var_samp on columns""" -type annotations_var_samp_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by var_samp() on columns of table "annotations" -""" -input annotations_var_samp_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""aggregate variance on columns""" -type annotations_variance_fields { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: Float - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: Float - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier (May change!)""" - id: Float - - """Number of objects identified""" - object_count: Float - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: Float -} - -""" -order by variance() on columns of table "annotations" -""" -input annotations_variance_order_by { - """ - Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - """ - confidence_precision: order_by - - """ - Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - """ - confidence_recall: order_by - - """If the annotation is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Number of objects identified""" - object_count: order_by - - """The ID of the tomogram voxel spacing this annotation is part of""" - tomogram_voxel_spacing_id: order_by -} - -"""ordering argument of a cursor""" -enum cursor_ordering { - """ascending ordering of the cursor""" - ASC - - """descending ordering of the cursor""" - DESC -} - -"""Metadata for authors of a dataset""" -type dataset_authors { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Indicating whether an author is the corresponding author""" - corresponding_author_status: Boolean - - """An object relationship""" - dataset: datasets! - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Int! - - """Email address for each author""" - email: String - - """A numeric identifier for this author (May change!)""" - id: Int! - - """Full name of a dataset author (e.g. Jane Doe).""" - name: String! - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """ - Indicating whether an author is the main person associated with the corresponding dataset - """ - primary_author_status: Boolean -} - -""" -aggregated selection of "dataset_authors" -""" -type dataset_authors_aggregate { - aggregate: dataset_authors_aggregate_fields - nodes: [dataset_authors!]! -} - -input dataset_authors_aggregate_bool_exp { - bool_and: dataset_authors_aggregate_bool_exp_bool_and - bool_or: dataset_authors_aggregate_bool_exp_bool_or - count: dataset_authors_aggregate_bool_exp_count -} - -input dataset_authors_aggregate_bool_exp_bool_and { - arguments: dataset_authors_select_column_dataset_authors_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: dataset_authors_bool_exp - predicate: Boolean_comparison_exp! -} - -input dataset_authors_aggregate_bool_exp_bool_or { - arguments: dataset_authors_select_column_dataset_authors_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: dataset_authors_bool_exp - predicate: Boolean_comparison_exp! -} - -input dataset_authors_aggregate_bool_exp_count { - arguments: [dataset_authors_select_column!] - distinct: Boolean - filter: dataset_authors_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "dataset_authors" -""" -type dataset_authors_aggregate_fields { - avg: dataset_authors_avg_fields - count(columns: [dataset_authors_select_column!], distinct: Boolean): Int! - max: dataset_authors_max_fields - min: dataset_authors_min_fields - stddev: dataset_authors_stddev_fields - stddev_pop: dataset_authors_stddev_pop_fields - stddev_samp: dataset_authors_stddev_samp_fields - sum: dataset_authors_sum_fields - var_pop: dataset_authors_var_pop_fields - var_samp: dataset_authors_var_samp_fields - variance: dataset_authors_variance_fields -} - -""" -order by aggregate values of table "dataset_authors" -""" -input dataset_authors_aggregate_order_by { - avg: dataset_authors_avg_order_by - count: order_by - max: dataset_authors_max_order_by - min: dataset_authors_min_order_by - stddev: dataset_authors_stddev_order_by - stddev_pop: dataset_authors_stddev_pop_order_by - stddev_samp: dataset_authors_stddev_samp_order_by - sum: dataset_authors_sum_order_by - var_pop: dataset_authors_var_pop_order_by - var_samp: dataset_authors_var_samp_order_by - variance: dataset_authors_variance_order_by -} - -"""aggregate avg on columns""" -type dataset_authors_avg_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by avg() on columns of table "dataset_authors" -""" -input dataset_authors_avg_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -""" -Boolean expression to filter rows from the table "dataset_authors". All fields are combined with a logical 'AND'. -""" -input dataset_authors_bool_exp { - _and: [dataset_authors_bool_exp!] - _not: dataset_authors_bool_exp - _or: [dataset_authors_bool_exp!] - affiliation_address: String_comparison_exp - affiliation_identifier: String_comparison_exp - affiliation_name: String_comparison_exp - author_list_order: Int_comparison_exp - corresponding_author_status: Boolean_comparison_exp - dataset: datasets_bool_exp - dataset_id: Int_comparison_exp - email: String_comparison_exp - id: Int_comparison_exp - name: String_comparison_exp - orcid: String_comparison_exp - primary_author_status: Boolean_comparison_exp -} - -"""aggregate max on columns""" -type dataset_authors_max_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Int - - """Email address for each author""" - email: String - - """A numeric identifier for this author (May change!)""" - id: Int - - """Full name of a dataset author (e.g. Jane Doe).""" - name: String - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String -} - -""" -order by max() on columns of table "dataset_authors" -""" -input dataset_authors_max_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliation_name: order_by - - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """Email address for each author""" - email: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by - - """Full name of a dataset author (e.g. Jane Doe).""" - name: order_by - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} - -"""aggregate min on columns""" -type dataset_authors_min_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Int - - """Email address for each author""" - email: String - - """A numeric identifier for this author (May change!)""" - id: Int - - """Full name of a dataset author (e.g. Jane Doe).""" - name: String - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String -} - -""" -order by min() on columns of table "dataset_authors" -""" -input dataset_authors_min_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliation_name: order_by - - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """Email address for each author""" - email: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by - - """Full name of a dataset author (e.g. Jane Doe).""" - name: order_by - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} - -"""Ordering options when selecting data from "dataset_authors".""" -input dataset_authors_order_by { - affiliation_address: order_by - affiliation_identifier: order_by - affiliation_name: order_by - author_list_order: order_by - corresponding_author_status: order_by - dataset: datasets_order_by - dataset_id: order_by - email: order_by - id: order_by - name: order_by - orcid: order_by - primary_author_status: order_by -} - -""" -select columns of table "dataset_authors" -""" -enum dataset_authors_select_column { - """column name""" - affiliation_address - - """column name""" - affiliation_identifier - - """column name""" - affiliation_name - - """column name""" - author_list_order - - """column name""" - corresponding_author_status - - """column name""" - dataset_id - - """column name""" - email - - """column name""" - id - - """column name""" - name - - """column name""" - orcid - - """column name""" - primary_author_status -} - -""" -select "dataset_authors_aggregate_bool_exp_bool_and_arguments_columns" columns of table "dataset_authors" -""" -enum dataset_authors_select_column_dataset_authors_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - corresponding_author_status - - """column name""" - primary_author_status -} - -""" -select "dataset_authors_aggregate_bool_exp_bool_or_arguments_columns" columns of table "dataset_authors" -""" -enum dataset_authors_select_column_dataset_authors_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - corresponding_author_status - - """column name""" - primary_author_status -} - -"""aggregate stddev on columns""" -type dataset_authors_stddev_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by stddev() on columns of table "dataset_authors" -""" -input dataset_authors_stddev_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate stddev_pop on columns""" -type dataset_authors_stddev_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by stddev_pop() on columns of table "dataset_authors" -""" -input dataset_authors_stddev_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate stddev_samp on columns""" -type dataset_authors_stddev_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by stddev_samp() on columns of table "dataset_authors" -""" -input dataset_authors_stddev_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate sum on columns""" -type dataset_authors_sum_fields { - """The order in which the author appears in the publication""" - author_list_order: Int - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Int - - """A numeric identifier for this author (May change!)""" - id: Int -} - -""" -order by sum() on columns of table "dataset_authors" -""" -input dataset_authors_sum_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate var_pop on columns""" -type dataset_authors_var_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by var_pop() on columns of table "dataset_authors" -""" -input dataset_authors_var_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate var_samp on columns""" -type dataset_authors_var_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by var_samp() on columns of table "dataset_authors" -""" -input dataset_authors_var_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""aggregate variance on columns""" -type dataset_authors_variance_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: Float - - """A numeric identifier for this author (May change!)""" - id: Float -} - -""" -order by variance() on columns of table "dataset_authors" -""" -input dataset_authors_variance_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Numeric identifier for the dataset this author corresponds to""" - dataset_id: order_by - - """A numeric identifier for this author (May change!)""" - id: order_by -} - -"""Metadata for a dataset's funding sources""" -type dataset_funding { - """An object relationship""" - dataset: datasets! - - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Int! - - """Name of the funding agency.""" - funding_agency_name: String! - - """Grant identifier provided by the funding agency.""" - grant_id: String - - """A numeric identifier for this funding record (May change!)""" - id: Int! -} - -""" -aggregated selection of "dataset_funding" -""" -type dataset_funding_aggregate { - aggregate: dataset_funding_aggregate_fields - nodes: [dataset_funding!]! -} - -input dataset_funding_aggregate_bool_exp { - count: dataset_funding_aggregate_bool_exp_count -} - -input dataset_funding_aggregate_bool_exp_count { - arguments: [dataset_funding_select_column!] - distinct: Boolean - filter: dataset_funding_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "dataset_funding" -""" -type dataset_funding_aggregate_fields { - avg: dataset_funding_avg_fields - count(columns: [dataset_funding_select_column!], distinct: Boolean): Int! - max: dataset_funding_max_fields - min: dataset_funding_min_fields - stddev: dataset_funding_stddev_fields - stddev_pop: dataset_funding_stddev_pop_fields - stddev_samp: dataset_funding_stddev_samp_fields - sum: dataset_funding_sum_fields - var_pop: dataset_funding_var_pop_fields - var_samp: dataset_funding_var_samp_fields - variance: dataset_funding_variance_fields -} - -""" -order by aggregate values of table "dataset_funding" -""" -input dataset_funding_aggregate_order_by { - avg: dataset_funding_avg_order_by - count: order_by - max: dataset_funding_max_order_by - min: dataset_funding_min_order_by - stddev: dataset_funding_stddev_order_by - stddev_pop: dataset_funding_stddev_pop_order_by - stddev_samp: dataset_funding_stddev_samp_order_by - sum: dataset_funding_sum_order_by - var_pop: dataset_funding_var_pop_order_by - var_samp: dataset_funding_var_samp_order_by - variance: dataset_funding_variance_order_by -} - -"""aggregate avg on columns""" -type dataset_funding_avg_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by avg() on columns of table "dataset_funding" -""" -input dataset_funding_avg_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -""" -Boolean expression to filter rows from the table "dataset_funding". All fields are combined with a logical 'AND'. -""" -input dataset_funding_bool_exp { - _and: [dataset_funding_bool_exp!] - _not: dataset_funding_bool_exp - _or: [dataset_funding_bool_exp!] - dataset: datasets_bool_exp - dataset_id: Int_comparison_exp - funding_agency_name: String_comparison_exp - grant_id: String_comparison_exp - id: Int_comparison_exp -} - -"""aggregate max on columns""" -type dataset_funding_max_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Int - - """Name of the funding agency.""" - funding_agency_name: String - - """Grant identifier provided by the funding agency.""" - grant_id: String - - """A numeric identifier for this funding record (May change!)""" - id: Int -} - -""" -order by max() on columns of table "dataset_funding" -""" -input dataset_funding_max_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """Name of the funding agency.""" - funding_agency_name: order_by - - """Grant identifier provided by the funding agency.""" - grant_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate min on columns""" -type dataset_funding_min_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Int - - """Name of the funding agency.""" - funding_agency_name: String - - """Grant identifier provided by the funding agency.""" - grant_id: String - - """A numeric identifier for this funding record (May change!)""" - id: Int -} - -""" -order by min() on columns of table "dataset_funding" -""" -input dataset_funding_min_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """Name of the funding agency.""" - funding_agency_name: order_by - - """Grant identifier provided by the funding agency.""" - grant_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""Ordering options when selecting data from "dataset_funding".""" -input dataset_funding_order_by { - dataset: datasets_order_by - dataset_id: order_by - funding_agency_name: order_by - grant_id: order_by - id: order_by -} - -""" -select columns of table "dataset_funding" -""" -enum dataset_funding_select_column { - """column name""" - dataset_id - - """column name""" - funding_agency_name - - """column name""" - grant_id - - """column name""" - id -} - -"""aggregate stddev on columns""" -type dataset_funding_stddev_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by stddev() on columns of table "dataset_funding" -""" -input dataset_funding_stddev_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate stddev_pop on columns""" -type dataset_funding_stddev_pop_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by stddev_pop() on columns of table "dataset_funding" -""" -input dataset_funding_stddev_pop_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate stddev_samp on columns""" -type dataset_funding_stddev_samp_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by stddev_samp() on columns of table "dataset_funding" -""" -input dataset_funding_stddev_samp_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate sum on columns""" -type dataset_funding_sum_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Int - - """A numeric identifier for this funding record (May change!)""" - id: Int -} - -""" -order by sum() on columns of table "dataset_funding" -""" -input dataset_funding_sum_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate var_pop on columns""" -type dataset_funding_var_pop_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by var_pop() on columns of table "dataset_funding" -""" -input dataset_funding_var_pop_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate var_samp on columns""" -type dataset_funding_var_samp_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by var_samp() on columns of table "dataset_funding" -""" -input dataset_funding_var_samp_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""aggregate variance on columns""" -type dataset_funding_variance_fields { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: Float - - """A numeric identifier for this funding record (May change!)""" - id: Float -} - -""" -order by variance() on columns of table "dataset_funding" -""" -input dataset_funding_variance_order_by { - """Numeric identifier for the dataset this funding source corresponds to""" - dataset_id: order_by - - """A numeric identifier for this funding record (May change!)""" - id: order_by -} - -"""Metadata for a dataset""" -type datasets { - """An array relationship""" - authors( - """distinct select on columns""" - distinct_on: [dataset_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_authors_order_by!] - - """filter the rows returned""" - where: dataset_authors_bool_exp - ): [dataset_authors!]! - - """An aggregate relationship""" - authors_aggregate( - """distinct select on columns""" - distinct_on: [dataset_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_authors_order_by!] - - """filter the rows returned""" - where: dataset_authors_bool_exp - ): dataset_authors_aggregate! - - """ - If the dataset focuses on a specific part of a cell, the subset is included here - """ - cell_component_id: String - - """Name of the cellular component""" - cell_component_name: String - - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cell_name: String - - """Link to more information about the cell strain""" - cell_strain_id: String - - """Cell line or strain for the sample.""" - cell_strain_name: String - - """Cell Ontology identifier for the cell type""" - cell_type_id: String - - """ - DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - """ - dataset_citations: String - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - dataset_publications: String - - """An object relationship""" - deposition: depositions - - """Date when a dataset is initially received by the Data Portal.""" - deposition_date: date! - - """Reference to the deposition this dataset is associated with""" - deposition_id: Int - - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: String! - - """An array relationship""" - funding_sources( - """distinct select on columns""" - distinct_on: [dataset_funding_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_funding_order_by!] - - """filter the rows returned""" - where: dataset_funding_bool_exp - ): [dataset_funding!]! - - """An aggregate relationship""" - funding_sources_aggregate( - """distinct select on columns""" - distinct_on: [dataset_funding_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_funding_order_by!] - - """filter the rows returned""" - where: dataset_funding_bool_exp - ): dataset_funding_aggregate! - - """Describe Cryo-ET grid preparation.""" - grid_preparation: String - - """The https directory path where this dataset is contained""" - https_prefix: String! - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int! - - """URL for the thumbnail of preview image.""" - key_photo_thumbnail_url: String - - """URL for the dataset preview image.""" - key_photo_url: String - - """Date when a released dataset is last modified.""" - last_modified_date: date - - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organism_name: String - - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organism_taxid: String - - """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - """ - other_setup: String - - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - related_database_entries: String - - """ - If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - """ - related_database_links: String - - """Date when a dataset is made available on the Data Portal.""" - release_date: date! - - """An array relationship""" - runs( - """distinct select on columns""" - distinct_on: [runs_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [runs_order_by!] - - """filter the rows returned""" - where: runs_bool_exp - ): [runs!]! - - """An aggregate relationship""" - runs_aggregate( - """distinct select on columns""" - distinct_on: [runs_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [runs_order_by!] - - """filter the rows returned""" - where: runs_bool_exp - ): runs_aggregate! - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String! - - """Describe how the sample was prepared.""" - sample_preparation: String - - """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - """ - sample_type: String! - - """UBERON identifier for the tissue""" - tissue_id: String - - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissue_name: String - - """Title of a CryoET dataset""" - title: String! -} - -""" -aggregated selection of "datasets" -""" -type datasets_aggregate { - aggregate: datasets_aggregate_fields - nodes: [datasets!]! -} - -input datasets_aggregate_bool_exp { - count: datasets_aggregate_bool_exp_count -} - -input datasets_aggregate_bool_exp_count { - arguments: [datasets_select_column!] - distinct: Boolean - filter: datasets_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "datasets" -""" -type datasets_aggregate_fields { - avg: datasets_avg_fields - count(columns: [datasets_select_column!], distinct: Boolean): Int! - max: datasets_max_fields - min: datasets_min_fields - stddev: datasets_stddev_fields - stddev_pop: datasets_stddev_pop_fields - stddev_samp: datasets_stddev_samp_fields - sum: datasets_sum_fields - var_pop: datasets_var_pop_fields - var_samp: datasets_var_samp_fields - variance: datasets_variance_fields -} - -""" -order by aggregate values of table "datasets" -""" -input datasets_aggregate_order_by { - avg: datasets_avg_order_by - count: order_by - max: datasets_max_order_by - min: datasets_min_order_by - stddev: datasets_stddev_order_by - stddev_pop: datasets_stddev_pop_order_by - stddev_samp: datasets_stddev_samp_order_by - sum: datasets_sum_order_by - var_pop: datasets_var_pop_order_by - var_samp: datasets_var_samp_order_by - variance: datasets_variance_order_by -} - -"""aggregate avg on columns""" -type datasets_avg_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by avg() on columns of table "datasets" -""" -input datasets_avg_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -""" -Boolean expression to filter rows from the table "datasets". All fields are combined with a logical 'AND'. -""" -input datasets_bool_exp { - _and: [datasets_bool_exp!] - _not: datasets_bool_exp - _or: [datasets_bool_exp!] - authors: dataset_authors_bool_exp - authors_aggregate: dataset_authors_aggregate_bool_exp - cell_component_id: String_comparison_exp - cell_component_name: String_comparison_exp - cell_name: String_comparison_exp - cell_strain_id: String_comparison_exp - cell_strain_name: String_comparison_exp - cell_type_id: String_comparison_exp - dataset_citations: String_comparison_exp - dataset_publications: String_comparison_exp - deposition: depositions_bool_exp - deposition_date: date_comparison_exp - deposition_id: Int_comparison_exp - description: String_comparison_exp - funding_sources: dataset_funding_bool_exp - funding_sources_aggregate: dataset_funding_aggregate_bool_exp - grid_preparation: String_comparison_exp - https_prefix: String_comparison_exp - id: Int_comparison_exp - key_photo_thumbnail_url: String_comparison_exp - key_photo_url: String_comparison_exp - last_modified_date: date_comparison_exp - organism_name: String_comparison_exp - organism_taxid: String_comparison_exp - other_setup: String_comparison_exp - related_database_entries: String_comparison_exp - related_database_links: String_comparison_exp - release_date: date_comparison_exp - runs: runs_bool_exp - runs_aggregate: runs_aggregate_bool_exp - s3_prefix: String_comparison_exp - sample_preparation: String_comparison_exp - sample_type: String_comparison_exp - tissue_id: String_comparison_exp - tissue_name: String_comparison_exp - title: String_comparison_exp -} - -"""aggregate max on columns""" -type datasets_max_fields { - """ - If the dataset focuses on a specific part of a cell, the subset is included here - """ - cell_component_id: String - - """Name of the cellular component""" - cell_component_name: String - - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cell_name: String - - """Link to more information about the cell strain""" - cell_strain_id: String - - """Cell line or strain for the sample.""" - cell_strain_name: String - - """Cell Ontology identifier for the cell type""" - cell_type_id: String - - """ - DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - """ - dataset_citations: String - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - dataset_publications: String - - """Date when a dataset is initially received by the Data Portal.""" - deposition_date: date - - """Reference to the deposition this dataset is associated with""" - deposition_id: Int - - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: String - - """Describe Cryo-ET grid preparation.""" - grid_preparation: String - - """The https directory path where this dataset is contained""" - https_prefix: String - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int - - """URL for the thumbnail of preview image.""" - key_photo_thumbnail_url: String - - """URL for the dataset preview image.""" - key_photo_url: String - - """Date when a released dataset is last modified.""" - last_modified_date: date - - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organism_name: String - - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organism_taxid: String - - """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - """ - other_setup: String - - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - related_database_entries: String - - """ - If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - """ - related_database_links: String - - """Date when a dataset is made available on the Data Portal.""" - release_date: date - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String - - """Describe how the sample was prepared.""" - sample_preparation: String - - """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - """ - sample_type: String - - """UBERON identifier for the tissue""" - tissue_id: String - - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissue_name: String - - """Title of a CryoET dataset""" - title: String -} - -""" -order by max() on columns of table "datasets" -""" -input datasets_max_order_by { - """ - If the dataset focuses on a specific part of a cell, the subset is included here - """ - cell_component_id: order_by - - """Name of the cellular component""" - cell_component_name: order_by - - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cell_name: order_by - - """Link to more information about the cell strain""" - cell_strain_id: order_by - - """Cell line or strain for the sample.""" - cell_strain_name: order_by - - """Cell Ontology identifier for the cell type""" - cell_type_id: order_by - - """ - DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - """ - dataset_citations: order_by - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - dataset_publications: order_by - - """Date when a dataset is initially received by the Data Portal.""" - deposition_date: order_by - - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: order_by - - """Describe Cryo-ET grid preparation.""" - grid_preparation: order_by - - """The https directory path where this dataset is contained""" - https_prefix: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by - - """URL for the thumbnail of preview image.""" - key_photo_thumbnail_url: order_by - - """URL for the dataset preview image.""" - key_photo_url: order_by - - """Date when a released dataset is last modified.""" - last_modified_date: order_by - - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organism_name: order_by - - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organism_taxid: order_by - - """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - """ - other_setup: order_by - - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - related_database_entries: order_by - - """ - If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - """ - related_database_links: order_by - - """Date when a dataset is made available on the Data Portal.""" - release_date: order_by - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: order_by - - """Describe how the sample was prepared.""" - sample_preparation: order_by - - """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - """ - sample_type: order_by - - """UBERON identifier for the tissue""" - tissue_id: order_by - - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissue_name: order_by - - """Title of a CryoET dataset""" - title: order_by -} - -"""aggregate min on columns""" -type datasets_min_fields { - """ - If the dataset focuses on a specific part of a cell, the subset is included here - """ - cell_component_id: String - - """Name of the cellular component""" - cell_component_name: String - - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cell_name: String - - """Link to more information about the cell strain""" - cell_strain_id: String - - """Cell line or strain for the sample.""" - cell_strain_name: String - - """Cell Ontology identifier for the cell type""" - cell_type_id: String - - """ - DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - """ - dataset_citations: String - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - dataset_publications: String - - """Date when a dataset is initially received by the Data Portal.""" - deposition_date: date - - """Reference to the deposition this dataset is associated with""" - deposition_id: Int - - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: String - - """Describe Cryo-ET grid preparation.""" - grid_preparation: String - - """The https directory path where this dataset is contained""" - https_prefix: String - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int - - """URL for the thumbnail of preview image.""" - key_photo_thumbnail_url: String - - """URL for the dataset preview image.""" - key_photo_url: String - - """Date when a released dataset is last modified.""" - last_modified_date: date - - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organism_name: String - - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organism_taxid: String - - """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - """ - other_setup: String - - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - related_database_entries: String - - """ - If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - """ - related_database_links: String - - """Date when a dataset is made available on the Data Portal.""" - release_date: date - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String - - """Describe how the sample was prepared.""" - sample_preparation: String - - """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - """ - sample_type: String - - """UBERON identifier for the tissue""" - tissue_id: String - - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissue_name: String - - """Title of a CryoET dataset""" - title: String -} - -""" -order by min() on columns of table "datasets" -""" -input datasets_min_order_by { - """ - If the dataset focuses on a specific part of a cell, the subset is included here - """ - cell_component_id: order_by - - """Name of the cellular component""" - cell_component_name: order_by - - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cell_name: order_by - - """Link to more information about the cell strain""" - cell_strain_id: order_by - - """Cell line or strain for the sample.""" - cell_strain_name: order_by - - """Cell Ontology identifier for the cell type""" - cell_type_id: order_by - - """ - DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs. - """ - dataset_citations: order_by - - """ - DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. - """ - dataset_publications: order_by - - """Date when a dataset is initially received by the Data Portal.""" - deposition_date: order_by - - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: order_by - - """Describe Cryo-ET grid preparation.""" - grid_preparation: order_by - - """The https directory path where this dataset is contained""" - https_prefix: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by - - """URL for the thumbnail of preview image.""" - key_photo_thumbnail_url: order_by - - """URL for the dataset preview image.""" - key_photo_url: order_by - - """Date when a released dataset is last modified.""" - last_modified_date: order_by - - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organism_name: order_by - - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organism_taxid: order_by - - """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - """ - other_setup: order_by - - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - related_database_entries: order_by - - """ - If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links. - """ - related_database_links: order_by - - """Date when a dataset is made available on the Data Portal.""" - release_date: order_by - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: order_by - - """Describe how the sample was prepared.""" - sample_preparation: order_by - - """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - """ - sample_type: order_by - - """UBERON identifier for the tissue""" - tissue_id: order_by - - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissue_name: order_by - - """Title of a CryoET dataset""" - title: order_by -} - -"""Ordering options when selecting data from "datasets".""" -input datasets_order_by { - authors_aggregate: dataset_authors_aggregate_order_by - cell_component_id: order_by - cell_component_name: order_by - cell_name: order_by - cell_strain_id: order_by - cell_strain_name: order_by - cell_type_id: order_by - dataset_citations: order_by - dataset_publications: order_by - deposition: depositions_order_by - deposition_date: order_by - deposition_id: order_by - description: order_by - funding_sources_aggregate: dataset_funding_aggregate_order_by - grid_preparation: order_by - https_prefix: order_by - id: order_by - key_photo_thumbnail_url: order_by - key_photo_url: order_by - last_modified_date: order_by - organism_name: order_by - organism_taxid: order_by - other_setup: order_by - related_database_entries: order_by - related_database_links: order_by - release_date: order_by - runs_aggregate: runs_aggregate_order_by - s3_prefix: order_by - sample_preparation: order_by - sample_type: order_by - tissue_id: order_by - tissue_name: order_by - title: order_by -} - -""" -select columns of table "datasets" -""" -enum datasets_select_column { - """column name""" - cell_component_id - - """column name""" - cell_component_name - - """column name""" - cell_name - - """column name""" - cell_strain_id - - """column name""" - cell_strain_name - - """column name""" - cell_type_id - - """column name""" - dataset_citations - - """column name""" - dataset_publications - - """column name""" - deposition_date - - """column name""" - deposition_id - - """column name""" - description - - """column name""" - grid_preparation - - """column name""" - https_prefix - - """column name""" - id - - """column name""" - key_photo_thumbnail_url - - """column name""" - key_photo_url - - """column name""" - last_modified_date - - """column name""" - organism_name - - """column name""" - organism_taxid - - """column name""" - other_setup - - """column name""" - related_database_entries - - """column name""" - related_database_links - - """column name""" - release_date - - """column name""" - s3_prefix - - """column name""" - sample_preparation - - """column name""" - sample_type - - """column name""" - tissue_id - - """column name""" - tissue_name - - """column name""" - title -} - -"""aggregate stddev on columns""" -type datasets_stddev_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by stddev() on columns of table "datasets" -""" -input datasets_stddev_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate stddev_pop on columns""" -type datasets_stddev_pop_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by stddev_pop() on columns of table "datasets" -""" -input datasets_stddev_pop_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate stddev_samp on columns""" -type datasets_stddev_samp_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by stddev_samp() on columns of table "datasets" -""" -input datasets_stddev_samp_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate sum on columns""" -type datasets_sum_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Int - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int -} - -""" -order by sum() on columns of table "datasets" -""" -input datasets_sum_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate var_pop on columns""" -type datasets_var_pop_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by var_pop() on columns of table "datasets" -""" -input datasets_var_pop_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate var_samp on columns""" -type datasets_var_samp_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by var_samp() on columns of table "datasets" -""" -input datasets_var_samp_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -"""aggregate variance on columns""" -type datasets_variance_fields { - """Reference to the deposition this dataset is associated with""" - deposition_id: Float - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Float -} - -""" -order by variance() on columns of table "datasets" -""" -input datasets_variance_order_by { - """Reference to the deposition this dataset is associated with""" - deposition_id: order_by - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: order_by -} - -scalar date - -""" -Boolean expression to compare columns of type "date". All fields are combined with logical 'AND'. -""" -input date_comparison_exp { - _eq: date - _gt: date - _gte: date - _in: [date!] - _is_null: Boolean - _lt: date - _lte: date - _neq: date - _nin: [date!] -} - -"""Authors for a deposition""" -type deposition_authors { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institution an author is affiliated with.""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int! - - """Indicates whether an author is the corresponding author""" - corresponding_author_status: Boolean - - """An object relationship""" - deposition: depositions! - - """Reference to the deposition this author contributed to""" - deposition_id: Int! - - """Email address for this author""" - email: String - - """Numeric identifier for this deposition author (this may change!)""" - id: Int! - - """Full name of a deposition author (e.g. Jane Doe).""" - name: String! - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """Indicates whether an author is the main person creating the deposition""" - primary_author_status: Boolean -} - -""" -aggregated selection of "deposition_authors" -""" -type deposition_authors_aggregate { - aggregate: deposition_authors_aggregate_fields - nodes: [deposition_authors!]! -} - -input deposition_authors_aggregate_bool_exp { - bool_and: deposition_authors_aggregate_bool_exp_bool_and - bool_or: deposition_authors_aggregate_bool_exp_bool_or - count: deposition_authors_aggregate_bool_exp_count -} - -input deposition_authors_aggregate_bool_exp_bool_and { - arguments: deposition_authors_select_column_deposition_authors_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: deposition_authors_bool_exp - predicate: Boolean_comparison_exp! -} - -input deposition_authors_aggregate_bool_exp_bool_or { - arguments: deposition_authors_select_column_deposition_authors_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: deposition_authors_bool_exp - predicate: Boolean_comparison_exp! -} - -input deposition_authors_aggregate_bool_exp_count { - arguments: [deposition_authors_select_column!] - distinct: Boolean - filter: deposition_authors_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "deposition_authors" -""" -type deposition_authors_aggregate_fields { - avg: deposition_authors_avg_fields - count(columns: [deposition_authors_select_column!], distinct: Boolean): Int! - max: deposition_authors_max_fields - min: deposition_authors_min_fields - stddev: deposition_authors_stddev_fields - stddev_pop: deposition_authors_stddev_pop_fields - stddev_samp: deposition_authors_stddev_samp_fields - sum: deposition_authors_sum_fields - var_pop: deposition_authors_var_pop_fields - var_samp: deposition_authors_var_samp_fields - variance: deposition_authors_variance_fields -} - -""" -order by aggregate values of table "deposition_authors" -""" -input deposition_authors_aggregate_order_by { - avg: deposition_authors_avg_order_by - count: order_by - max: deposition_authors_max_order_by - min: deposition_authors_min_order_by - stddev: deposition_authors_stddev_order_by - stddev_pop: deposition_authors_stddev_pop_order_by - stddev_samp: deposition_authors_stddev_samp_order_by - sum: deposition_authors_sum_order_by - var_pop: deposition_authors_var_pop_order_by - var_samp: deposition_authors_var_samp_order_by - variance: deposition_authors_variance_order_by -} - -"""aggregate avg on columns""" -type deposition_authors_avg_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by avg() on columns of table "deposition_authors" -""" -input deposition_authors_avg_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -""" -Boolean expression to filter rows from the table "deposition_authors". All fields are combined with a logical 'AND'. -""" -input deposition_authors_bool_exp { - _and: [deposition_authors_bool_exp!] - _not: deposition_authors_bool_exp - _or: [deposition_authors_bool_exp!] - affiliation_address: String_comparison_exp - affiliation_identifier: String_comparison_exp - affiliation_name: String_comparison_exp - author_list_order: Int_comparison_exp - corresponding_author_status: Boolean_comparison_exp - deposition: depositions_bool_exp - deposition_id: Int_comparison_exp - email: String_comparison_exp - id: Int_comparison_exp - name: String_comparison_exp - orcid: String_comparison_exp - primary_author_status: Boolean_comparison_exp -} - -"""aggregate max on columns""" -type deposition_authors_max_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institution an author is affiliated with.""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Reference to the deposition this author contributed to""" - deposition_id: Int - - """Email address for this author""" - email: String - - """Numeric identifier for this deposition author (this may change!)""" - id: Int - - """Full name of a deposition author (e.g. Jane Doe).""" - name: String - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String -} - -""" -order by max() on columns of table "deposition_authors" -""" -input deposition_authors_max_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by - - """Name of the institution an author is affiliated with.""" - affiliation_name: order_by - - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Email address for this author""" - email: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by - - """Full name of a deposition author (e.g. Jane Doe).""" - name: order_by - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} - -"""aggregate min on columns""" -type deposition_authors_min_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institution an author is affiliated with.""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Reference to the deposition this author contributed to""" - deposition_id: Int - - """Email address for this author""" - email: String - - """Numeric identifier for this deposition author (this may change!)""" - id: Int - - """Full name of a deposition author (e.g. Jane Doe).""" - name: String - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String -} - -""" -order by min() on columns of table "deposition_authors" -""" -input deposition_authors_min_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by - - """Name of the institution an author is affiliated with.""" - affiliation_name: order_by - - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Email address for this author""" - email: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by - - """Full name of a deposition author (e.g. Jane Doe).""" - name: order_by - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by -} - -"""Ordering options when selecting data from "deposition_authors".""" -input deposition_authors_order_by { - affiliation_address: order_by - affiliation_identifier: order_by - affiliation_name: order_by - author_list_order: order_by - corresponding_author_status: order_by - deposition: depositions_order_by - deposition_id: order_by - email: order_by - id: order_by - name: order_by - orcid: order_by - primary_author_status: order_by -} - -""" -select columns of table "deposition_authors" -""" -enum deposition_authors_select_column { - """column name""" - affiliation_address - - """column name""" - affiliation_identifier - - """column name""" - affiliation_name - - """column name""" - author_list_order - - """column name""" - corresponding_author_status - - """column name""" - deposition_id - - """column name""" - email - - """column name""" - id - - """column name""" - name - - """column name""" - orcid - - """column name""" - primary_author_status -} - -""" -select "deposition_authors_aggregate_bool_exp_bool_and_arguments_columns" columns of table "deposition_authors" -""" -enum deposition_authors_select_column_deposition_authors_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - corresponding_author_status - - """column name""" - primary_author_status -} - -""" -select "deposition_authors_aggregate_bool_exp_bool_or_arguments_columns" columns of table "deposition_authors" -""" -enum deposition_authors_select_column_deposition_authors_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - corresponding_author_status - - """column name""" - primary_author_status -} - -"""aggregate stddev on columns""" -type deposition_authors_stddev_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by stddev() on columns of table "deposition_authors" -""" -input deposition_authors_stddev_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""aggregate stddev_pop on columns""" -type deposition_authors_stddev_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by stddev_pop() on columns of table "deposition_authors" -""" -input deposition_authors_stddev_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""aggregate stddev_samp on columns""" -type deposition_authors_stddev_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by stddev_samp() on columns of table "deposition_authors" -""" -input deposition_authors_stddev_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -""" -Streaming cursor of the table "deposition_authors" -""" -input deposition_authors_stream_cursor_input { - """Stream column input with initial value""" - initial_value: deposition_authors_stream_cursor_value_input! - - """cursor ordering""" - ordering: cursor_ordering -} - -"""Initial value of the column from where the streaming should start""" -input deposition_authors_stream_cursor_value_input { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String - - """Name of the institution an author is affiliated with.""" - affiliation_name: String - - """The order in which the author appears in the publication""" - author_list_order: Int - - """Indicates whether an author is the corresponding author""" - corresponding_author_status: Boolean - - """Reference to the deposition this author contributed to""" - deposition_id: Int - - """Email address for this author""" - email: String - - """Numeric identifier for this deposition author (this may change!)""" - id: Int - - """Full name of a deposition author (e.g. Jane Doe).""" - name: String - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """Indicates whether an author is the main person creating the deposition""" - primary_author_status: Boolean -} - -"""aggregate sum on columns""" -type deposition_authors_sum_fields { - """The order in which the author appears in the publication""" - author_list_order: Int - - """Reference to the deposition this author contributed to""" - deposition_id: Int - - """Numeric identifier for this deposition author (this may change!)""" - id: Int -} - -""" -order by sum() on columns of table "deposition_authors" -""" -input deposition_authors_sum_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""aggregate var_pop on columns""" -type deposition_authors_var_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by var_pop() on columns of table "deposition_authors" -""" -input deposition_authors_var_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""aggregate var_samp on columns""" -type deposition_authors_var_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by var_samp() on columns of table "deposition_authors" -""" -input deposition_authors_var_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""aggregate variance on columns""" -type deposition_authors_variance_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Reference to the deposition this author contributed to""" - deposition_id: Float - - """Numeric identifier for this deposition author (this may change!)""" - id: Float -} - -""" -order by variance() on columns of table "deposition_authors" -""" -input deposition_authors_variance_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by - - """Reference to the deposition this author contributed to""" - deposition_id: order_by - - """Numeric identifier for this deposition author (this may change!)""" - id: order_by -} - -"""Deposition metadata""" -type depositions { - """An array relationship""" - annotations( - """distinct select on columns""" - distinct_on: [annotations_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] - - """filter the rows returned""" - where: annotations_bool_exp - ): [annotations!]! - - """An aggregate relationship""" - annotations_aggregate( - """distinct select on columns""" - distinct_on: [annotations_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] - - """filter the rows returned""" - where: annotations_bool_exp - ): annotations_aggregate! - - """An array relationship""" - authors( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): [deposition_authors!]! - - """An aggregate relationship""" - authors_aggregate( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): deposition_authors_aggregate! - - """An array relationship""" - dataset( - """distinct select on columns""" - distinct_on: [datasets_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [datasets_order_by!] - - """filter the rows returned""" - where: datasets_bool_exp - ): [datasets!]! - - """An aggregate relationship""" - dataset_aggregate( - """distinct select on columns""" - distinct_on: [datasets_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [datasets_order_by!] - - """filter the rows returned""" - where: datasets_bool_exp - ): datasets_aggregate! - - """The date the deposition was deposited""" - deposition_date: date! - - """The publications related to this deposition""" - deposition_publications: String - - """The types of data submitted as a part of this deposition""" - deposition_types: String! - - """Description for the deposition""" - description: String! - - """The https directory path where data about this deposition is contained""" - https_prefix: String - - """Numeric identifier for this depositions""" - id: Int! - - """URL for the deposition thumbnail image.""" - key_photo_thumbnail_url: String - - """URL for the deposition preview image.""" - key_photo_url: String - - """The date the deposition was last modified""" - last_modified_date: date! - - """The related database entries to this deposition""" - related_database_entries: String - - """The date the deposition was released""" - release_date: date! - - """ - The S3 public bucket path where data about this deposition is contained - """ - s3_prefix: String - - """An array relationship""" - tiltseries( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): [tiltseries!]! - - """An aggregate relationship""" - tiltseries_aggregate( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): tiltseries_aggregate! - - """Title for the deposition""" - title: String! - - """An array relationship""" - tomograms( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] - - """filter the rows returned""" - where: tomograms_bool_exp - ): [tomograms!]! - - """An aggregate relationship""" - tomograms_aggregate( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] - - """filter the rows returned""" - where: tomograms_bool_exp - ): tomograms_aggregate! -} - -""" -aggregated selection of "depositions" -""" -type depositions_aggregate { - aggregate: depositions_aggregate_fields - nodes: [depositions!]! -} - -""" -aggregate fields of "depositions" -""" -type depositions_aggregate_fields { - avg: depositions_avg_fields - count(columns: [depositions_select_column!], distinct: Boolean): Int! - max: depositions_max_fields - min: depositions_min_fields - stddev: depositions_stddev_fields - stddev_pop: depositions_stddev_pop_fields - stddev_samp: depositions_stddev_samp_fields - sum: depositions_sum_fields - var_pop: depositions_var_pop_fields - var_samp: depositions_var_samp_fields - variance: depositions_variance_fields -} - -"""aggregate avg on columns""" -type depositions_avg_fields { - """Numeric identifier for this depositions""" - id: Float -} - -""" -Boolean expression to filter rows from the table "depositions". All fields are combined with a logical 'AND'. -""" -input depositions_bool_exp { - _and: [depositions_bool_exp!] - _not: depositions_bool_exp - _or: [depositions_bool_exp!] - annotations: annotations_bool_exp - annotations_aggregate: annotations_aggregate_bool_exp - authors: deposition_authors_bool_exp - authors_aggregate: deposition_authors_aggregate_bool_exp - dataset: datasets_bool_exp - dataset_aggregate: datasets_aggregate_bool_exp - deposition_date: date_comparison_exp - deposition_publications: String_comparison_exp - deposition_types: String_comparison_exp - description: String_comparison_exp - https_prefix: String_comparison_exp - id: Int_comparison_exp - key_photo_thumbnail_url: String_comparison_exp - key_photo_url: String_comparison_exp - last_modified_date: date_comparison_exp - related_database_entries: String_comparison_exp - release_date: date_comparison_exp - s3_prefix: String_comparison_exp - tiltseries: tiltseries_bool_exp - tiltseries_aggregate: tiltseries_aggregate_bool_exp - title: String_comparison_exp - tomograms: tomograms_bool_exp - tomograms_aggregate: tomograms_aggregate_bool_exp -} - -"""aggregate max on columns""" -type depositions_max_fields { - """The date the deposition was deposited""" - deposition_date: date - - """The publications related to this deposition""" - deposition_publications: String - - """The types of data submitted as a part of this deposition""" - deposition_types: String - - """Description for the deposition""" - description: String - - """The https directory path where data about this deposition is contained""" - https_prefix: String - - """Numeric identifier for this depositions""" - id: Int - - """URL for the deposition thumbnail image.""" - key_photo_thumbnail_url: String - - """URL for the deposition preview image.""" - key_photo_url: String - - """The date the deposition was last modified""" - last_modified_date: date - - """The related database entries to this deposition""" - related_database_entries: String - - """The date the deposition was released""" - release_date: date - - """ - The S3 public bucket path where data about this deposition is contained - """ - s3_prefix: String - - """Title for the deposition""" - title: String -} - -"""aggregate min on columns""" -type depositions_min_fields { - """The date the deposition was deposited""" - deposition_date: date - - """The publications related to this deposition""" - deposition_publications: String - - """The types of data submitted as a part of this deposition""" - deposition_types: String - - """Description for the deposition""" - description: String - - """The https directory path where data about this deposition is contained""" - https_prefix: String - - """Numeric identifier for this depositions""" - id: Int - - """URL for the deposition thumbnail image.""" - key_photo_thumbnail_url: String - - """URL for the deposition preview image.""" - key_photo_url: String - - """The date the deposition was last modified""" - last_modified_date: date - - """The related database entries to this deposition""" - related_database_entries: String - - """The date the deposition was released""" - release_date: date - - """ - The S3 public bucket path where data about this deposition is contained - """ - s3_prefix: String - - """Title for the deposition""" - title: String -} - -"""Ordering options when selecting data from "depositions".""" -input depositions_order_by { - annotations_aggregate: annotations_aggregate_order_by - authors_aggregate: deposition_authors_aggregate_order_by - dataset_aggregate: datasets_aggregate_order_by - deposition_date: order_by - deposition_publications: order_by - deposition_types: order_by - description: order_by - https_prefix: order_by - id: order_by - key_photo_thumbnail_url: order_by - key_photo_url: order_by - last_modified_date: order_by - related_database_entries: order_by - release_date: order_by - s3_prefix: order_by - tiltseries_aggregate: tiltseries_aggregate_order_by - title: order_by - tomograms_aggregate: tomograms_aggregate_order_by -} - -""" -select columns of table "depositions" -""" -enum depositions_select_column { - """column name""" - deposition_date - - """column name""" - deposition_publications - - """column name""" - deposition_types - - """column name""" - description - - """column name""" - https_prefix - - """column name""" - id - - """column name""" - key_photo_thumbnail_url - - """column name""" - key_photo_url - - """column name""" - last_modified_date - - """column name""" - related_database_entries - - """column name""" - release_date - - """column name""" - s3_prefix - - """column name""" - title -} - -"""aggregate stddev on columns""" -type depositions_stddev_fields { - """Numeric identifier for this depositions""" - id: Float -} - -"""aggregate stddev_pop on columns""" -type depositions_stddev_pop_fields { - """Numeric identifier for this depositions""" - id: Float -} - -"""aggregate stddev_samp on columns""" -type depositions_stddev_samp_fields { - """Numeric identifier for this depositions""" - id: Float -} - -""" -Streaming cursor of the table "depositions" -""" -input depositions_stream_cursor_input { - """Stream column input with initial value""" - initial_value: depositions_stream_cursor_value_input! - - """cursor ordering""" - ordering: cursor_ordering -} - -"""Initial value of the column from where the streaming should start""" -input depositions_stream_cursor_value_input { - """The date the deposition was deposited""" - deposition_date: date - - """The publications related to this deposition""" - deposition_publications: String - - """The types of data submitted as a part of this deposition""" - deposition_types: String - - """Description for the deposition""" - description: String - - """The https directory path where data about this deposition is contained""" - https_prefix: String - - """Numeric identifier for this depositions""" - id: Int - - """URL for the deposition thumbnail image.""" - key_photo_thumbnail_url: String - - """URL for the deposition preview image.""" - key_photo_url: String - - """The date the deposition was last modified""" - last_modified_date: date - - """The related database entries to this deposition""" - related_database_entries: String - - """The date the deposition was released""" - release_date: date - - """ - The S3 public bucket path where data about this deposition is contained - """ - s3_prefix: String - - """Title for the deposition""" - title: String -} - -"""aggregate sum on columns""" -type depositions_sum_fields { - """Numeric identifier for this depositions""" - id: Int -} - -"""aggregate var_pop on columns""" -type depositions_var_pop_fields { - """Numeric identifier for this depositions""" - id: Float -} - -"""aggregate var_samp on columns""" -type depositions_var_samp_fields { - """Numeric identifier for this depositions""" - id: Float -} - -"""aggregate variance on columns""" -type depositions_variance_fields { - """Numeric identifier for this depositions""" - id: Float -} - -scalar json - -""" -Boolean expression to compare columns of type "json". All fields are combined with logical 'AND'. -""" -input json_comparison_exp { - _eq: json - _gt: json - _gte: json - _in: [json!] - _is_null: Boolean - _lt: json - _lte: json - _neq: json - _nin: [json!] -} - -scalar numeric - -""" -Boolean expression to compare columns of type "numeric". All fields are combined with logical 'AND'. -""" -input numeric_comparison_exp { - _eq: numeric - _gt: numeric - _gte: numeric - _in: [numeric!] - _is_null: Boolean - _lt: numeric - _lte: numeric - _neq: numeric - _nin: [numeric!] -} - -"""column ordering options""" -enum order_by { - """in ascending order, nulls last""" - asc - - """in ascending order, nulls first""" - asc_nulls_first - - """in ascending order, nulls last""" - asc_nulls_last - - """in descending order, nulls first""" - desc - - """in descending order, nulls first""" - desc_nulls_first - - """in descending order, nulls last""" - desc_nulls_last -} - -type query_root { - """ - fetch data from the table: "annotation_authors" - """ - annotation_authors( - """distinct select on columns""" - distinct_on: [annotation_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_authors_order_by!] - - """filter the rows returned""" - where: annotation_authors_bool_exp - ): [annotation_authors!]! - - """ - fetch aggregated fields from the table: "annotation_authors" - """ - annotation_authors_aggregate( - """distinct select on columns""" - distinct_on: [annotation_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_authors_order_by!] - - """filter the rows returned""" - where: annotation_authors_bool_exp - ): annotation_authors_aggregate! - - """ - fetch data from the table: "annotation_authors" using primary key columns - """ - annotation_authors_by_pk( - """Numeric identifier for this annotation author (this may change!)""" - id: Int! - ): annotation_authors - - """ - fetch data from the table: "annotation_files" - """ - annotation_files( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] - - """filter the rows returned""" - where: annotation_files_bool_exp - ): [annotation_files!]! - - """ - fetch aggregated fields from the table: "annotation_files" - """ - annotation_files_aggregate( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] - - """filter the rows returned""" - where: annotation_files_bool_exp - ): annotation_files_aggregate! - - """ - fetch data from the table: "annotation_files" using primary key columns - """ - annotation_files_by_pk( - """Numeric identifier (May change!)""" - id: Int! - ): annotation_files - - """An array relationship""" - annotations( - """distinct select on columns""" - distinct_on: [annotations_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] - - """filter the rows returned""" - where: annotations_bool_exp - ): [annotations!]! - - """An aggregate relationship""" - annotations_aggregate( - """distinct select on columns""" - distinct_on: [annotations_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] - - """filter the rows returned""" - where: annotations_bool_exp - ): annotations_aggregate! - - """fetch data from the table: "annotations" using primary key columns""" - annotations_by_pk( - """Numeric identifier (May change!)""" - id: Int! - ): annotations - - """ - fetch data from the table: "dataset_authors" - """ - dataset_authors( - """distinct select on columns""" - distinct_on: [dataset_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_authors_order_by!] - - """filter the rows returned""" - where: dataset_authors_bool_exp - ): [dataset_authors!]! - - """ - fetch aggregated fields from the table: "dataset_authors" - """ - dataset_authors_aggregate( - """distinct select on columns""" - distinct_on: [dataset_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_authors_order_by!] - - """filter the rows returned""" - where: dataset_authors_bool_exp - ): dataset_authors_aggregate! - - """fetch data from the table: "dataset_authors" using primary key columns""" - dataset_authors_by_pk( - """A numeric identifier for this author (May change!)""" - id: Int! - ): dataset_authors - - """ - fetch data from the table: "dataset_funding" - """ - dataset_funding( - """distinct select on columns""" - distinct_on: [dataset_funding_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_funding_order_by!] - - """filter the rows returned""" - where: dataset_funding_bool_exp - ): [dataset_funding!]! - - """ - fetch aggregated fields from the table: "dataset_funding" - """ - dataset_funding_aggregate( - """distinct select on columns""" - distinct_on: [dataset_funding_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [dataset_funding_order_by!] - - """filter the rows returned""" - where: dataset_funding_bool_exp - ): dataset_funding_aggregate! - - """fetch data from the table: "dataset_funding" using primary key columns""" - dataset_funding_by_pk( - """A numeric identifier for this funding record (May change!)""" - id: Int! - ): dataset_funding - - """ - fetch data from the table: "datasets" - """ - datasets( - """distinct select on columns""" - distinct_on: [datasets_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [datasets_order_by!] - - """filter the rows returned""" - where: datasets_bool_exp - ): [datasets!]! - - """ - fetch aggregated fields from the table: "datasets" - """ - datasets_aggregate( - """distinct select on columns""" - distinct_on: [datasets_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [datasets_order_by!] - - """filter the rows returned""" - where: datasets_bool_exp - ): datasets_aggregate! - - """fetch data from the table: "datasets" using primary key columns""" - datasets_by_pk( - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int! - ): datasets - - """ - fetch data from the table: "deposition_authors" - """ - deposition_authors( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): [deposition_authors!]! - - """ - fetch aggregated fields from the table: "deposition_authors" - """ - deposition_authors_aggregate( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): deposition_authors_aggregate! - - """ - fetch data from the table: "deposition_authors" using primary key columns - """ - deposition_authors_by_pk( - """Numeric identifier for this deposition author (this may change!)""" - id: Int! - ): deposition_authors - - """ - fetch data from the table: "depositions" - """ - depositions( - """distinct select on columns""" - distinct_on: [depositions_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [depositions_order_by!] - - """filter the rows returned""" - where: depositions_bool_exp - ): [depositions!]! - - """ - fetch aggregated fields from the table: "depositions" - """ - depositions_aggregate( - """distinct select on columns""" - distinct_on: [depositions_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [depositions_order_by!] - - """filter the rows returned""" - where: depositions_bool_exp - ): depositions_aggregate! - - """fetch data from the table: "depositions" using primary key columns""" - depositions_by_pk( - """Numeric identifier for this depositions""" - id: Int! - ): depositions - - """An array relationship""" - runs( - """distinct select on columns""" - distinct_on: [runs_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [runs_order_by!] - - """filter the rows returned""" - where: runs_bool_exp - ): [runs!]! - - """An aggregate relationship""" - runs_aggregate( - """distinct select on columns""" - distinct_on: [runs_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [runs_order_by!] - - """filter the rows returned""" - where: runs_bool_exp - ): runs_aggregate! - - """fetch data from the table: "runs" using primary key columns""" - runs_by_pk( - """Numeric identifier (May change!)""" - id: Int! - ): runs - - """An array relationship""" - tiltseries( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): [tiltseries!]! - - """An aggregate relationship""" - tiltseries_aggregate( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): tiltseries_aggregate! - - """fetch data from the table: "tiltseries" using primary key columns""" - tiltseries_by_pk( - """Numeric identifier for this tilt series (this may change!)""" - id: Int! - ): tiltseries - - """ - fetch data from the table: "tomogram_authors" - """ - tomogram_authors( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] - - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): [tomogram_authors!]! - - """ - fetch aggregated fields from the table: "tomogram_authors" - """ - tomogram_authors_aggregate( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] - - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): tomogram_authors_aggregate! - - """ - fetch data from the table: "tomogram_authors" using primary key columns - """ - tomogram_authors_by_pk( - """Numeric identifier for this tomogram author (this may change!)""" - id: Int! - ): tomogram_authors - - """ - fetch data from the table: "tomogram_type" - """ - tomogram_type( - """distinct select on columns""" - distinct_on: [tomogram_type_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_type_order_by!] - - """filter the rows returned""" - where: tomogram_type_bool_exp - ): [tomogram_type!]! - - """fetch data from the table: "tomogram_type" using primary key columns""" - tomogram_type_by_pk(value: String!): tomogram_type - - """An array relationship""" - tomogram_voxel_spacings( - """distinct select on columns""" - distinct_on: [tomogram_voxel_spacings_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_voxel_spacings_order_by!] - - """filter the rows returned""" - where: tomogram_voxel_spacings_bool_exp - ): [tomogram_voxel_spacings!]! - - """An aggregate relationship""" - tomogram_voxel_spacings_aggregate( - """distinct select on columns""" - distinct_on: [tomogram_voxel_spacings_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_voxel_spacings_order_by!] - - """filter the rows returned""" - where: tomogram_voxel_spacings_bool_exp - ): tomogram_voxel_spacings_aggregate! - - """ - fetch data from the table: "tomogram_voxel_spacings" using primary key columns - """ - tomogram_voxel_spacings_by_pk( - """Numeric identifier (May change!)""" - id: Int! - ): tomogram_voxel_spacings - - """An array relationship""" - tomograms( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] - - """filter the rows returned""" - where: tomograms_bool_exp - ): [tomograms!]! - - """An aggregate relationship""" - tomograms_aggregate( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] - - """filter the rows returned""" - where: tomograms_bool_exp - ): tomograms_aggregate! - - """fetch data from the table: "tomograms" using primary key columns""" - tomograms_by_pk( - """Numeric identifier for this tomogram (this may change!)""" - id: Int! - ): tomograms -} - -"""Metadata for an experiment run""" -type runs { - """An object relationship""" - dataset: datasets! - - """Reference to the dataset this run is a part of""" - dataset_id: Int! - - """The HTTPS directory path where this dataset is contained""" - https_prefix: String! - - """Numeric identifier (May change!)""" - id: Int! - - """Short name for this experiment run""" - name: String! - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String! - - """An array relationship""" - tiltseries( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): [tiltseries!]! - - """An aggregate relationship""" - tiltseries_aggregate( - """distinct select on columns""" - distinct_on: [tiltseries_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tiltseries_order_by!] - - """filter the rows returned""" - where: tiltseries_bool_exp - ): tiltseries_aggregate! - - """An array relationship""" - tomogram_voxel_spacings( - """distinct select on columns""" - distinct_on: [tomogram_voxel_spacings_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_voxel_spacings_order_by!] - - """filter the rows returned""" - where: tomogram_voxel_spacings_bool_exp - ): [tomogram_voxel_spacings!]! - - """An aggregate relationship""" - tomogram_voxel_spacings_aggregate( - """distinct select on columns""" - distinct_on: [tomogram_voxel_spacings_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_voxel_spacings_order_by!] - - """filter the rows returned""" - where: tomogram_voxel_spacings_bool_exp - ): tomogram_voxel_spacings_aggregate! -} - -""" -aggregated selection of "runs" -""" -type runs_aggregate { - aggregate: runs_aggregate_fields - nodes: [runs!]! -} - -input runs_aggregate_bool_exp { - count: runs_aggregate_bool_exp_count -} - -input runs_aggregate_bool_exp_count { - arguments: [runs_select_column!] - distinct: Boolean - filter: runs_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "runs" -""" -type runs_aggregate_fields { - avg: runs_avg_fields - count(columns: [runs_select_column!], distinct: Boolean): Int! - max: runs_max_fields - min: runs_min_fields - stddev: runs_stddev_fields - stddev_pop: runs_stddev_pop_fields - stddev_samp: runs_stddev_samp_fields - sum: runs_sum_fields - var_pop: runs_var_pop_fields - var_samp: runs_var_samp_fields - variance: runs_variance_fields -} - -""" -order by aggregate values of table "runs" -""" -input runs_aggregate_order_by { - avg: runs_avg_order_by - count: order_by - max: runs_max_order_by - min: runs_min_order_by - stddev: runs_stddev_order_by - stddev_pop: runs_stddev_pop_order_by - stddev_samp: runs_stddev_samp_order_by - sum: runs_sum_order_by - var_pop: runs_var_pop_order_by - var_samp: runs_var_samp_order_by - variance: runs_variance_order_by -} - -"""aggregate avg on columns""" -type runs_avg_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by avg() on columns of table "runs" -""" -input runs_avg_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -""" -Boolean expression to filter rows from the table "runs". All fields are combined with a logical 'AND'. -""" -input runs_bool_exp { - _and: [runs_bool_exp!] - _not: runs_bool_exp - _or: [runs_bool_exp!] - dataset: datasets_bool_exp - dataset_id: Int_comparison_exp - https_prefix: String_comparison_exp - id: Int_comparison_exp - name: String_comparison_exp - s3_prefix: String_comparison_exp - tiltseries: tiltseries_bool_exp - tiltseries_aggregate: tiltseries_aggregate_bool_exp - tomogram_voxel_spacings: tomogram_voxel_spacings_bool_exp - tomogram_voxel_spacings_aggregate: tomogram_voxel_spacings_aggregate_bool_exp -} - -"""aggregate max on columns""" -type runs_max_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Int - - """The HTTPS directory path where this dataset is contained""" - https_prefix: String - - """Numeric identifier (May change!)""" - id: Int - - """Short name for this experiment run""" - name: String - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String -} - -""" -order by max() on columns of table "runs" -""" -input runs_max_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """The HTTPS directory path where this dataset is contained""" - https_prefix: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Short name for this experiment run""" - name: order_by - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: order_by -} - -"""aggregate min on columns""" -type runs_min_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Int - - """The HTTPS directory path where this dataset is contained""" - https_prefix: String - - """Numeric identifier (May change!)""" - id: Int - - """Short name for this experiment run""" - name: String - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: String -} - -""" -order by min() on columns of table "runs" -""" -input runs_min_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """The HTTPS directory path where this dataset is contained""" - https_prefix: order_by - - """Numeric identifier (May change!)""" - id: order_by - - """Short name for this experiment run""" - name: order_by - - """The S3 public bucket path where this dataset is contained""" - s3_prefix: order_by -} - -"""Ordering options when selecting data from "runs".""" -input runs_order_by { - dataset: datasets_order_by - dataset_id: order_by - https_prefix: order_by - id: order_by - name: order_by - s3_prefix: order_by - tiltseries_aggregate: tiltseries_aggregate_order_by - tomogram_voxel_spacings_aggregate: tomogram_voxel_spacings_aggregate_order_by -} - -""" -select columns of table "runs" -""" -enum runs_select_column { - """column name""" - dataset_id - - """column name""" - https_prefix - - """column name""" - id - - """column name""" - name - - """column name""" - s3_prefix -} - -"""aggregate stddev on columns""" -type runs_stddev_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by stddev() on columns of table "runs" -""" -input runs_stddev_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate stddev_pop on columns""" -type runs_stddev_pop_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by stddev_pop() on columns of table "runs" -""" -input runs_stddev_pop_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate stddev_samp on columns""" -type runs_stddev_samp_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by stddev_samp() on columns of table "runs" -""" -input runs_stddev_samp_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate sum on columns""" -type runs_sum_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Int - - """Numeric identifier (May change!)""" - id: Int -} - -""" -order by sum() on columns of table "runs" -""" -input runs_sum_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate var_pop on columns""" -type runs_var_pop_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by var_pop() on columns of table "runs" -""" -input runs_var_pop_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate var_samp on columns""" -type runs_var_samp_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by var_samp() on columns of table "runs" -""" -input runs_var_samp_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -"""aggregate variance on columns""" -type runs_variance_fields { - """Reference to the dataset this run is a part of""" - dataset_id: Float - - """Numeric identifier (May change!)""" - id: Float -} - -""" -order by variance() on columns of table "runs" -""" -input runs_variance_order_by { - """Reference to the dataset this run is a part of""" - dataset_id: order_by - - """Numeric identifier (May change!)""" - id: order_by -} - -type subscription_root { - """ - fetch data from the table: "annotation_files" - """ - annotation_files( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] - - """filter the rows returned""" - where: annotation_files_bool_exp - ): [annotation_files!]! - - """ - fetch aggregated fields from the table: "annotation_files" - """ - annotation_files_aggregate( - """distinct select on columns""" - distinct_on: [annotation_files_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [annotation_files_order_by!] - - """filter the rows returned""" - where: annotation_files_bool_exp - ): annotation_files_aggregate! - - """ - fetch data from the table: "annotation_files" using primary key columns - """ - annotation_files_by_pk( - """Numeric identifier (May change!)""" - id: Int! - ): annotation_files - - """ - fetch data from the table in a streaming manner: "annotation_files" - """ - annotation_files_stream( - """maximum number of rows returned in a single batch""" - batch_size: Int! - - """cursor to stream the results returned by the query""" - cursor: [annotation_files_stream_cursor_input]! - - """filter the rows returned""" - where: annotation_files_bool_exp - ): [annotation_files!]! - - """ - fetch data from the table: "deposition_authors" - """ - deposition_authors( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): [deposition_authors!]! - - """ - fetch aggregated fields from the table: "deposition_authors" - """ - deposition_authors_aggregate( - """distinct select on columns""" - distinct_on: [deposition_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [deposition_authors_order_by!] - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): deposition_authors_aggregate! - - """ - fetch data from the table: "deposition_authors" using primary key columns - """ - deposition_authors_by_pk( - """Numeric identifier for this deposition author (this may change!)""" - id: Int! - ): deposition_authors - - """ - fetch data from the table in a streaming manner: "deposition_authors" - """ - deposition_authors_stream( - """maximum number of rows returned in a single batch""" - batch_size: Int! - - """cursor to stream the results returned by the query""" - cursor: [deposition_authors_stream_cursor_input]! - - """filter the rows returned""" - where: deposition_authors_bool_exp - ): [deposition_authors!]! - - """ - fetch data from the table: "depositions" - """ - depositions( - """distinct select on columns""" - distinct_on: [depositions_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [depositions_order_by!] - - """filter the rows returned""" - where: depositions_bool_exp - ): [depositions!]! - - """ - fetch aggregated fields from the table: "depositions" - """ - depositions_aggregate( - """distinct select on columns""" - distinct_on: [depositions_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [depositions_order_by!] - - """filter the rows returned""" - where: depositions_bool_exp - ): depositions_aggregate! - - """fetch data from the table: "depositions" using primary key columns""" - depositions_by_pk( - """Numeric identifier for this depositions""" - id: Int! - ): depositions - - """ - fetch data from the table in a streaming manner: "depositions" - """ - depositions_stream( - """maximum number of rows returned in a single batch""" - batch_size: Int! - - """cursor to stream the results returned by the query""" - cursor: [depositions_stream_cursor_input]! - - """filter the rows returned""" - where: depositions_bool_exp - ): [depositions!]! - - """ - fetch data from the table: "tomogram_authors" - """ - tomogram_authors( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] - - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): [tomogram_authors!]! - - """ - fetch aggregated fields from the table: "tomogram_authors" - """ - tomogram_authors_aggregate( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] - - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): tomogram_authors_aggregate! - - """ - fetch data from the table: "tomogram_authors" using primary key columns - """ - tomogram_authors_by_pk( - """Numeric identifier for this tomogram author (this may change!)""" - id: Int! - ): tomogram_authors - - """ - fetch data from the table in a streaming manner: "tomogram_authors" - """ - tomogram_authors_stream( - """maximum number of rows returned in a single batch""" - batch_size: Int! - - """cursor to stream the results returned by the query""" - cursor: [tomogram_authors_stream_cursor_input]! - - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): [tomogram_authors!]! - - """ - fetch data from the table: "tomogram_type" - """ - tomogram_type( - """distinct select on columns""" - distinct_on: [tomogram_type_select_column!] - - """limit the number of rows returned""" - limit: Int - - """skip the first n rows. Use only with order_by""" - offset: Int - - """sort the rows by one or more columns""" - order_by: [tomogram_type_order_by!] - - """filter the rows returned""" - where: tomogram_type_bool_exp - ): [tomogram_type!]! - - """fetch data from the table: "tomogram_type" using primary key columns""" - tomogram_type_by_pk(value: String!): tomogram_type - - """ - fetch data from the table in a streaming manner: "tomogram_type" - """ - tomogram_type_stream( - """maximum number of rows returned in a single batch""" - batch_size: Int! - - """cursor to stream the results returned by the query""" - cursor: [tomogram_type_stream_cursor_input]! - - """filter the rows returned""" - where: tomogram_type_bool_exp - ): [tomogram_type!]! -} - -""" -Metadata about how a tilt series was generated, and locations of output files -""" -type tiltseries { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Int! - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Int - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: numeric - - """Name of the camera manufacturer""" - camera_manufacturer: String! - - """Camera model name""" - camera_model: String! - - """Software used to collect data""" - data_acquisition_software: String! - - """An object relationship""" - deposition: depositions - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Int - - """Number of frames associated to the tilt series""" - frames_count: Int - - """HTTPS path to the alignment file for this tiltseries""" - https_alignment_file: String - - """HTTPS path to the angle list file for this tiltseries""" - https_angle_list: String - - """HTTPS path to the collection metadata file for this tiltseries""" - https_collection_metadata: String - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - https_mrc_bin1: String! - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String! - - """Numeric identifier for this tilt series (this may change!)""" - id: Int! - - """Tilt series is aligned""" - is_aligned: Boolean! - - """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - """ - microscope_additional_info: String - - """Energy filter setup used""" - microscope_energy_filter: String! - - """Image corrector setup""" - microscope_image_corrector: String - - """Name of the microscope manufacturer""" - microscope_manufacturer: String! - - """Microscope model name""" - microscope_model: String! - - """Phase plate configuration""" - microscope_phase_plate: String - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: numeric - - """ - If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - """ - related_empiar_entry: String - - """An object relationship""" - run: runs! - - """The ID of the experimental run this tilt series is part of""" - run_id: Int! - - """S3 path to the alignment file for this tilt series""" - s3_alignment_file: String - - """S3 path to the angle list file for this tilt series""" - s3_angle_list: String - - """S3 path to the collection metadata file for this tiltseries""" - s3_collection_metadata: String - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3_mrc_bin1: String! - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String! - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: numeric! - - """Rotation angle in degrees""" - tilt_axis: numeric! - - """Maximal tilt angle in degrees""" - tilt_max: numeric! - - """Minimal tilt angle in degrees""" - tilt_min: numeric! - - """Total tilt range in degrees""" - tilt_range: numeric! - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Int! - - """Tilt step in degrees""" - tilt_step: numeric! - - """The order of stage tilting during acquisition of the data""" - tilting_scheme: String! - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: numeric! -} - -""" -aggregated selection of "tiltseries" -""" -type tiltseries_aggregate { - aggregate: tiltseries_aggregate_fields - nodes: [tiltseries!]! -} - -input tiltseries_aggregate_bool_exp { - bool_and: tiltseries_aggregate_bool_exp_bool_and - bool_or: tiltseries_aggregate_bool_exp_bool_or - count: tiltseries_aggregate_bool_exp_count -} - -input tiltseries_aggregate_bool_exp_bool_and { - arguments: tiltseries_select_column_tiltseries_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: tiltseries_bool_exp - predicate: Boolean_comparison_exp! -} - -input tiltseries_aggregate_bool_exp_bool_or { - arguments: tiltseries_select_column_tiltseries_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: tiltseries_bool_exp - predicate: Boolean_comparison_exp! -} - -input tiltseries_aggregate_bool_exp_count { - arguments: [tiltseries_select_column!] - distinct: Boolean - filter: tiltseries_bool_exp - predicate: Int_comparison_exp! -} - -""" -aggregate fields of "tiltseries" -""" -type tiltseries_aggregate_fields { - avg: tiltseries_avg_fields - count(columns: [tiltseries_select_column!], distinct: Boolean): Int! - max: tiltseries_max_fields - min: tiltseries_min_fields - stddev: tiltseries_stddev_fields - stddev_pop: tiltseries_stddev_pop_fields - stddev_samp: tiltseries_stddev_samp_fields - sum: tiltseries_sum_fields - var_pop: tiltseries_var_pop_fields - var_samp: tiltseries_var_samp_fields - variance: tiltseries_variance_fields -} - -""" -order by aggregate values of table "tiltseries" -""" -input tiltseries_aggregate_order_by { - avg: tiltseries_avg_order_by - count: order_by - max: tiltseries_max_order_by - min: tiltseries_min_order_by - stddev: tiltseries_stddev_order_by - stddev_pop: tiltseries_stddev_pop_order_by - stddev_samp: tiltseries_stddev_samp_order_by - sum: tiltseries_sum_order_by - var_pop: tiltseries_var_pop_order_by - var_samp: tiltseries_var_samp_order_by - variance: tiltseries_variance_order_by -} - -"""aggregate avg on columns""" -type tiltseries_avg_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float - - """Number of frames associated to the tilt series""" - frames_count: Float - - """Numeric identifier for this tilt series (this may change!)""" - id: Float - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float - - """The ID of the experimental run this tilt series is part of""" - run_id: Float - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float - - """Rotation angle in degrees""" - tilt_axis: Float - - """Maximal tilt angle in degrees""" - tilt_max: Float - - """Minimal tilt angle in degrees""" - tilt_min: Float - - """Total tilt range in degrees""" - tilt_range: Float - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float - - """Tilt step in degrees""" - tilt_step: Float - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float -} - -""" -order by avg() on columns of table "tiltseries" -""" -input tiltseries_avg_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by -} - -""" -Boolean expression to filter rows from the table "tiltseries". All fields are combined with a logical 'AND'. -""" -input tiltseries_bool_exp { - _and: [tiltseries_bool_exp!] - _not: tiltseries_bool_exp - _or: [tiltseries_bool_exp!] - acceleration_voltage: Int_comparison_exp - aligned_tiltseries_binning: Int_comparison_exp - binning_from_frames: numeric_comparison_exp - camera_manufacturer: String_comparison_exp - camera_model: String_comparison_exp - data_acquisition_software: String_comparison_exp - deposition: depositions_bool_exp - deposition_id: Int_comparison_exp - frames_count: Int_comparison_exp - https_alignment_file: String_comparison_exp - https_angle_list: String_comparison_exp - https_collection_metadata: String_comparison_exp - https_mrc_bin1: String_comparison_exp - https_omezarr_dir: String_comparison_exp - id: Int_comparison_exp - is_aligned: Boolean_comparison_exp - microscope_additional_info: String_comparison_exp - microscope_energy_filter: String_comparison_exp - microscope_image_corrector: String_comparison_exp - microscope_manufacturer: String_comparison_exp - microscope_model: String_comparison_exp - microscope_phase_plate: String_comparison_exp - pixel_spacing: numeric_comparison_exp - related_empiar_entry: String_comparison_exp - run: runs_bool_exp - run_id: Int_comparison_exp - s3_alignment_file: String_comparison_exp - s3_angle_list: String_comparison_exp - s3_collection_metadata: String_comparison_exp - s3_mrc_bin1: String_comparison_exp - s3_omezarr_dir: String_comparison_exp - spherical_aberration_constant: numeric_comparison_exp - tilt_axis: numeric_comparison_exp - tilt_max: numeric_comparison_exp - tilt_min: numeric_comparison_exp - tilt_range: numeric_comparison_exp - tilt_series_quality: Int_comparison_exp - tilt_step: numeric_comparison_exp - tilting_scheme: String_comparison_exp - total_flux: numeric_comparison_exp -} - -"""aggregate max on columns""" -type tiltseries_max_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Int - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Int - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: numeric - - """Name of the camera manufacturer""" - camera_manufacturer: String - - """Camera model name""" - camera_model: String - - """Software used to collect data""" - data_acquisition_software: String - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Int - - """Number of frames associated to the tilt series""" - frames_count: Int - - """HTTPS path to the alignment file for this tiltseries""" - https_alignment_file: String - - """HTTPS path to the angle list file for this tiltseries""" - https_angle_list: String - - """HTTPS path to the collection metadata file for this tiltseries""" - https_collection_metadata: String - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - https_mrc_bin1: String - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String - - """Numeric identifier for this tilt series (this may change!)""" - id: Int - - """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - """ - microscope_additional_info: String - - """Energy filter setup used""" - microscope_energy_filter: String - - """Image corrector setup""" - microscope_image_corrector: String - - """Name of the microscope manufacturer""" - microscope_manufacturer: String - - """Microscope model name""" - microscope_model: String - - """Phase plate configuration""" - microscope_phase_plate: String - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: numeric - - """ - If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - """ - related_empiar_entry: String - - """The ID of the experimental run this tilt series is part of""" - run_id: Int - - """S3 path to the alignment file for this tilt series""" - s3_alignment_file: String - - """S3 path to the angle list file for this tilt series""" - s3_angle_list: String - - """S3 path to the collection metadata file for this tiltseries""" - s3_collection_metadata: String - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3_mrc_bin1: String - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: numeric - - """Rotation angle in degrees""" - tilt_axis: numeric - - """Maximal tilt angle in degrees""" - tilt_max: numeric - - """Minimal tilt angle in degrees""" - tilt_min: numeric - - """Total tilt range in degrees""" - tilt_range: numeric - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Int - - """Tilt step in degrees""" - tilt_step: numeric - - """The order of stage tilting during acquisition of the data""" - tilting_scheme: String - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: numeric -} - -""" -order by max() on columns of table "tiltseries" -""" -input tiltseries_max_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Name of the camera manufacturer""" - camera_manufacturer: order_by - - """Camera model name""" - camera_model: order_by - - """Software used to collect data""" - data_acquisition_software: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """HTTPS path to the alignment file for this tiltseries""" - https_alignment_file: order_by - - """HTTPS path to the angle list file for this tiltseries""" - https_angle_list: order_by - - """HTTPS path to the collection metadata file for this tiltseries""" - https_collection_metadata: order_by - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - https_mrc_bin1: order_by - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - """ - microscope_additional_info: order_by - - """Energy filter setup used""" - microscope_energy_filter: order_by - - """Image corrector setup""" - microscope_image_corrector: order_by - - """Name of the microscope manufacturer""" - microscope_manufacturer: order_by - - """Microscope model name""" - microscope_model: order_by - - """Phase plate configuration""" - microscope_phase_plate: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """ - If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - """ - related_empiar_entry: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """S3 path to the alignment file for this tilt series""" - s3_alignment_file: order_by - - """S3 path to the angle list file for this tilt series""" - s3_angle_list: order_by - - """S3 path to the collection metadata file for this tiltseries""" - s3_collection_metadata: order_by - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3_mrc_bin1: order_by - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """The order of stage tilting during acquisition of the data""" - tilting_scheme: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by -} - -"""aggregate min on columns""" -type tiltseries_min_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Int - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Int - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: numeric - - """Name of the camera manufacturer""" - camera_manufacturer: String - - """Camera model name""" - camera_model: String - - """Software used to collect data""" - data_acquisition_software: String - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Int - - """Number of frames associated to the tilt series""" - frames_count: Int - - """HTTPS path to the alignment file for this tiltseries""" - https_alignment_file: String - - """HTTPS path to the angle list file for this tiltseries""" - https_angle_list: String - - """HTTPS path to the collection metadata file for this tiltseries""" - https_collection_metadata: String - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - https_mrc_bin1: String - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String - - """Numeric identifier for this tilt series (this may change!)""" - id: Int - - """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - """ - microscope_additional_info: String - - """Energy filter setup used""" - microscope_energy_filter: String - - """Image corrector setup""" - microscope_image_corrector: String - - """Name of the microscope manufacturer""" - microscope_manufacturer: String - - """Microscope model name""" - microscope_model: String - - """Phase plate configuration""" - microscope_phase_plate: String - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: numeric - - """ - If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - """ - related_empiar_entry: String - - """The ID of the experimental run this tilt series is part of""" - run_id: Int - - """S3 path to the alignment file for this tilt series""" - s3_alignment_file: String - - """S3 path to the angle list file for this tilt series""" - s3_angle_list: String - - """S3 path to the collection metadata file for this tiltseries""" - s3_collection_metadata: String - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3_mrc_bin1: String - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: numeric - - """Rotation angle in degrees""" - tilt_axis: numeric - - """Maximal tilt angle in degrees""" - tilt_max: numeric - - """Minimal tilt angle in degrees""" - tilt_min: numeric - - """Total tilt range in degrees""" - tilt_range: numeric - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Int - - """Tilt step in degrees""" - tilt_step: numeric - - """The order of stage tilting during acquisition of the data""" - tilting_scheme: String - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: numeric -} - -""" -order by min() on columns of table "tiltseries" -""" -input tiltseries_min_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Name of the camera manufacturer""" - camera_manufacturer: order_by - - """Camera model name""" - camera_model: order_by - - """Software used to collect data""" - data_acquisition_software: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """HTTPS path to the alignment file for this tiltseries""" - https_alignment_file: order_by - - """HTTPS path to the angle list file for this tiltseries""" - https_angle_list: order_by - - """HTTPS path to the collection metadata file for this tiltseries""" - https_collection_metadata: order_by - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - https_mrc_bin1: order_by - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - """ - microscope_additional_info: order_by - - """Energy filter setup used""" - microscope_energy_filter: order_by - - """Image corrector setup""" - microscope_image_corrector: order_by - - """Name of the microscope manufacturer""" - microscope_manufacturer: order_by - - """Microscope model name""" - microscope_model: order_by - - """Phase plate configuration""" - microscope_phase_plate: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """ - If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier - """ - related_empiar_entry: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """S3 path to the alignment file for this tilt series""" - s3_alignment_file: order_by - - """S3 path to the angle list file for this tilt series""" - s3_angle_list: order_by - - """S3 path to the collection metadata file for this tiltseries""" - s3_collection_metadata: order_by - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3_mrc_bin1: order_by - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """The order of stage tilting during acquisition of the data""" - tilting_scheme: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by -} - -"""Ordering options when selecting data from "tiltseries".""" -input tiltseries_order_by { - acceleration_voltage: order_by - aligned_tiltseries_binning: order_by - binning_from_frames: order_by - camera_manufacturer: order_by - camera_model: order_by - data_acquisition_software: order_by - deposition: depositions_order_by - deposition_id: order_by - frames_count: order_by - https_alignment_file: order_by - https_angle_list: order_by - https_collection_metadata: order_by - https_mrc_bin1: order_by - https_omezarr_dir: order_by - id: order_by - is_aligned: order_by - microscope_additional_info: order_by - microscope_energy_filter: order_by - microscope_image_corrector: order_by - microscope_manufacturer: order_by - microscope_model: order_by - microscope_phase_plate: order_by - pixel_spacing: order_by - related_empiar_entry: order_by - run: runs_order_by - run_id: order_by - s3_alignment_file: order_by - s3_angle_list: order_by - s3_collection_metadata: order_by - s3_mrc_bin1: order_by - s3_omezarr_dir: order_by - spherical_aberration_constant: order_by - tilt_axis: order_by - tilt_max: order_by - tilt_min: order_by - tilt_range: order_by - tilt_series_quality: order_by - tilt_step: order_by - tilting_scheme: order_by - total_flux: order_by -} - -""" -select columns of table "tiltseries" -""" -enum tiltseries_select_column { - """column name""" - acceleration_voltage - - """column name""" - aligned_tiltseries_binning - - """column name""" - binning_from_frames - - """column name""" - camera_manufacturer - - """column name""" - camera_model - - """column name""" - data_acquisition_software - - """column name""" - deposition_id - - """column name""" - frames_count - - """column name""" - https_alignment_file - - """column name""" - https_angle_list - - """column name""" - https_collection_metadata - - """column name""" - https_mrc_bin1 - - """column name""" - https_omezarr_dir - - """column name""" - id - - """column name""" - is_aligned - - """column name""" - microscope_additional_info - - """column name""" - microscope_energy_filter - - """column name""" - microscope_image_corrector - - """column name""" - microscope_manufacturer - - """column name""" - microscope_model - - """column name""" - microscope_phase_plate - - """column name""" - pixel_spacing - - """column name""" - related_empiar_entry - - """column name""" - run_id - - """column name""" - s3_alignment_file - - """column name""" - s3_angle_list - - """column name""" - s3_collection_metadata - - """column name""" - s3_mrc_bin1 - - """column name""" - s3_omezarr_dir - - """column name""" - spherical_aberration_constant - - """column name""" - tilt_axis - - """column name""" - tilt_max - - """column name""" - tilt_min - - """column name""" - tilt_range - - """column name""" - tilt_series_quality - - """column name""" - tilt_step - - """column name""" - tilting_scheme - - """column name""" - total_flux -} - -""" -select "tiltseries_aggregate_bool_exp_bool_and_arguments_columns" columns of table "tiltseries" -""" -enum tiltseries_select_column_tiltseries_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - is_aligned +input PerSectionParametersOrderByClause { + frame: FrameOrderByClause + tiltseries: TiltseriesOrderByClause + zIndex: orderBy + defocus: orderBy + astigmatism: orderBy + astigmaticAngle: orderBy + id: orderBy } -""" -select "tiltseries_aggregate_bool_exp_bool_or_arguments_columns" columns of table "tiltseries" -""" -enum tiltseries_select_column_tiltseries_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - is_aligned +type PerSectionParametersAggregate { + aggregate: [PerSectionParametersAggregateFunctions!] } -"""aggregate stddev on columns""" -type tiltseries_stddev_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float - - """Number of frames associated to the tilt series""" - frames_count: Float - - """Numeric identifier for this tilt series (this may change!)""" - id: Float - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float - - """The ID of the experimental run this tilt series is part of""" - run_id: Float - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float - - """Rotation angle in degrees""" - tilt_axis: Float - - """Maximal tilt angle in degrees""" - tilt_max: Float - - """Minimal tilt angle in degrees""" - tilt_min: Float - - """Total tilt range in degrees""" - tilt_range: Float - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float - - """Tilt step in degrees""" - tilt_step: Float - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float +type PerSectionParametersAggregateFunctions { + sum: PerSectionParametersNumericalColumns + avg: PerSectionParametersNumericalColumns + stddev: PerSectionParametersNumericalColumns + variance: PerSectionParametersNumericalColumns + min: PerSectionParametersMinMaxColumns + max: PerSectionParametersMinMaxColumns + groupBy: PerSectionParametersGroupByOptions + count(distinct: Boolean = false, columns: PerSectionParametersCountColumns = null): Int } -""" -order by stddev() on columns of table "tiltseries" -""" -input tiltseries_stddev_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by +type PerSectionParametersNumericalColumns { + zIndex: Int + defocus: Float + astigmatism: Float + astigmaticAngle: Float + id: Int } -"""aggregate stddev_pop on columns""" -type tiltseries_stddev_pop_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float - - """Number of frames associated to the tilt series""" - frames_count: Float - - """Numeric identifier for this tilt series (this may change!)""" - id: Float - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float - - """The ID of the experimental run this tilt series is part of""" - run_id: Float - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float - - """Rotation angle in degrees""" - tilt_axis: Float - - """Maximal tilt angle in degrees""" - tilt_max: Float - - """Minimal tilt angle in degrees""" - tilt_min: Float - - """Total tilt range in degrees""" - tilt_range: Float - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float - - """Tilt step in degrees""" - tilt_step: Float - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float +type PerSectionParametersMinMaxColumns { + zIndex: Int + defocus: Float + astigmatism: Float + astigmaticAngle: Float + id: Int } -""" -order by stddev_pop() on columns of table "tiltseries" -""" -input tiltseries_stddev_pop_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by +type PerSectionParametersGroupByOptions { + frame: FrameGroupByOptions + tiltseries: TiltseriesGroupByOptions + zIndex: Int + defocus: Float + astigmatism: Float + astigmaticAngle: Float + id: Int } -"""aggregate stddev_samp on columns""" -type tiltseries_stddev_samp_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float - - """Number of frames associated to the tilt series""" - frames_count: Float - - """Numeric identifier for this tilt series (this may change!)""" - id: Float - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float - - """The ID of the experimental run this tilt series is part of""" - run_id: Float - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float - - """Rotation angle in degrees""" - tilt_axis: Float - - """Maximal tilt angle in degrees""" - tilt_max: Float - - """Minimal tilt angle in degrees""" - tilt_min: Float - - """Total tilt range in degrees""" - tilt_range: Float - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float - - """Tilt step in degrees""" - tilt_step: Float - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float +type FrameGroupByOptions { + deposition: DepositionGroupByOptions + run: RunGroupByOptions + rawAngle: Float + acquisitionOrder: Int + dose: Float + isGainCorrected: Boolean + s3GainFile: String + httpsGainFile: String + s3Prefix: String + httpsPrefix: String + id: Int } -""" -order by stddev_samp() on columns of table "tiltseries" -""" -input tiltseries_stddev_samp_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by +enum PerSectionParametersCountColumns { + frame + tiltseries + zIndex + defocus + astigmatism + astigmaticAngle + id } -"""aggregate sum on columns""" -type tiltseries_sum_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Int - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Int - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: numeric - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Int - - """Number of frames associated to the tilt series""" - frames_count: Int - - """Numeric identifier for this tilt series (this may change!)""" - id: Int - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: numeric - - """The ID of the experimental run this tilt series is part of""" - run_id: Int - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: numeric - - """Rotation angle in degrees""" - tilt_axis: numeric - - """Maximal tilt angle in degrees""" - tilt_max: numeric - - """Minimal tilt angle in degrees""" - tilt_min: numeric - - """Total tilt range in degrees""" - tilt_range: numeric - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Int - - """Tilt step in degrees""" - tilt_step: numeric - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: numeric +type FrameAggregate { + aggregate: [FrameAggregateFunctions!] } -""" -order by sum() on columns of table "tiltseries" -""" -input tiltseries_sum_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by - - """Number of frames associated to the tilt series""" - frames_count: order_by - - """Numeric identifier for this tilt series (this may change!)""" - id: order_by - - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by - - """The ID of the experimental run this tilt series is part of""" - run_id: order_by - - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by - - """Rotation angle in degrees""" - tilt_axis: order_by - - """Maximal tilt angle in degrees""" - tilt_max: order_by - - """Minimal tilt angle in degrees""" - tilt_min: order_by - - """Total tilt range in degrees""" - tilt_range: order_by - - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by - - """Tilt step in degrees""" - tilt_step: order_by - - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by +type FrameAggregateFunctions { + sum: FrameNumericalColumns + avg: FrameNumericalColumns + stddev: FrameNumericalColumns + variance: FrameNumericalColumns + min: FrameMinMaxColumns + max: FrameMinMaxColumns + groupBy: FrameGroupByOptions + count(distinct: Boolean = false, columns: FrameCountColumns = null): Int } -"""aggregate var_pop on columns""" -type tiltseries_var_pop_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float - - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float - - """Number of frames associated to the tilt series""" - frames_count: Float +type FrameNumericalColumns { + rawAngle: Float + acquisitionOrder: Int + dose: Float + id: Int +} - """Numeric identifier for this tilt series (this may change!)""" - id: Float +type FrameMinMaxColumns { + rawAngle: Float + acquisitionOrder: Int + dose: Float + s3GainFile: String + httpsGainFile: String + s3Prefix: String + httpsPrefix: String + id: Int +} - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float +enum FrameCountColumns { + deposition + perSectionParameters + run + rawAngle + acquisitionOrder + dose + isGainCorrected + s3GainFile + httpsGainFile + s3Prefix + httpsPrefix + id +} - """The ID of the experimental run this tilt series is part of""" - run_id: Float +"""A connection to a list of items.""" +type TiltseriesConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float + """Contains the nodes in this connection""" + edges: [TiltseriesEdge!]! +} - """Rotation angle in degrees""" - tilt_axis: Float +"""An edge in a connection.""" +type TiltseriesEdge { + """A cursor for use in pagination""" + cursor: String! - """Maximal tilt angle in degrees""" - tilt_max: Float + """The item at the end of the edge""" + node: Tiltseries! +} - """Minimal tilt angle in degrees""" - tilt_min: Float +type TiltseriesAggregate { + aggregate: [TiltseriesAggregateFunctions!] +} - """Total tilt range in degrees""" - tilt_range: Float +type TiltseriesAggregateFunctions { + sum: TiltseriesNumericalColumns + avg: TiltseriesNumericalColumns + stddev: TiltseriesNumericalColumns + variance: TiltseriesNumericalColumns + min: TiltseriesMinMaxColumns + max: TiltseriesMinMaxColumns + groupBy: TiltseriesGroupByOptions + count(distinct: Boolean = false, columns: TiltseriesCountColumns = null): Int +} - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float +type TiltseriesNumericalColumns { + accelerationVoltage: Float + sphericalAberrationConstant: Float + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltAxis: Float + totalFlux: Float + binningFromFrames: Float + tiltSeriesQuality: Int + pixelSpacing: Float + alignedTiltseriesBinning: Float + tiltseriesFramesCount: Int + id: Int +} - """Tilt step in degrees""" - tilt_step: Float +type TiltseriesMinMaxColumns { + s3OmezarrDir: String + s3MrcFile: String + httpsOmezarrDir: String + httpsMrcFile: String + s3CollectionMetadata: String + httpsCollectionMetadata: String + s3AngleList: String + httpsAngleList: String + s3GainFile: String + httpsGainFile: String + accelerationVoltage: Float + sphericalAberrationConstant: Float + microscopeModel: String + microscopeEnergyFilter: String + microscopePhasePlate: String + microscopeImageCorrector: String + microscopeAdditionalInfo: String + cameraManufacturer: String + cameraModel: String + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltingScheme: String + tiltAxis: Float + totalFlux: Float + dataAcquisitionSoftware: String + relatedEmpiarEntry: String + binningFromFrames: Float + tiltSeriesQuality: Int + pixelSpacing: Float + alignedTiltseriesBinning: Float + tiltseriesFramesCount: Int + id: Int +} - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float +enum TiltseriesCountColumns { + alignments + perSectionParameters + run + deposition + s3OmezarrDir + s3MrcFile + httpsOmezarrDir + httpsMrcFile + s3CollectionMetadata + httpsCollectionMetadata + s3AngleList + httpsAngleList + s3GainFile + httpsGainFile + accelerationVoltage + sphericalAberrationConstant + microscopeManufacturer + microscopeModel + microscopeEnergyFilter + microscopePhasePlate + microscopeImageCorrector + microscopeAdditionalInfo + cameraManufacturer + cameraModel + tiltMin + tiltMax + tiltRange + tiltStep + tiltingScheme + tiltAxis + totalFlux + dataAcquisitionSoftware + relatedEmpiarEntry + binningFromFrames + tiltSeriesQuality + isAligned + pixelSpacing + alignedTiltseriesBinning + tiltseriesFramesCount + id } -""" -order by var_pop() on columns of table "tiltseries" -""" -input tiltseries_var_pop_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by +"""A connection to a list of items.""" +type TomogramConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by + """Contains the nodes in this connection""" + edges: [TomogramEdge!]! +} - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by +"""An edge in a connection.""" +type TomogramEdge { + """A cursor for use in pagination""" + cursor: String! - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by + """The item at the end of the edge""" + node: Tomogram! +} - """Number of frames associated to the tilt series""" - frames_count: order_by +"""Metadata describing a tomogram.""" +type Tomogram implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this tilt series (this may change!)""" - id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment + alignmentId: Int + authors( + where: TomogramAuthorWhereClause = null + orderBy: [TomogramAuthorOrderByClause!] = [] - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """The ID of the experimental run this tilt series is part of""" - run_id: order_by + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by + """Returns the first n items from the list.""" + first: Int = null - """Rotation angle in degrees""" - tilt_axis: order_by + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramAuthorConnection! + authorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int + tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing + tomogramVoxelSpacingId: Int - """Maximal tilt angle in degrees""" - tilt_max: order_by + """Short name for this tomogram""" + name: String - """Minimal tilt angle in degrees""" - tilt_min: order_by + """Tomogram voxels in the x dimension""" + sizeX: Float! - """Total tilt range in degrees""" - tilt_range: order_by + """Tomogram voxels in the y dimension""" + sizeY: Float! - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by + """Tomogram voxels in the z dimension""" + sizeZ: Float! - """Tilt step in degrees""" - tilt_step: order_by + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float! """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + Whether the tomographic alignment was computed based on fiducial markers. """ - total_flux: order_by -} + fiducialAlignmentStatus: fiducial_alignment_status_enum! -"""aggregate var_samp on columns""" -type tiltseries_var_samp_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float + """Describe reconstruction method (WBP, SART, SIRT)""" + reconstructionMethod: tomogram_reconstruction_method_enum! - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float + """Describe additional processing used to derive the tomogram""" + processing: tomogram_processing_enum! - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float + """Version of tomogram""" + tomogramVersion: Float - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float + """Processing software used to derive the tomogram""" + processingSoftware: String - """Number of frames associated to the tilt series""" - frames_count: Float + """Name of software used for reconstruction""" + reconstructionSoftware: String! - """Numeric identifier for this tilt series (this may change!)""" - id: Float + """whether this tomogram is canonical for the run""" + isCanonical: Boolean - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float + """S3 path to this tomogram in multiscale OME-Zarr format""" + s3OmezarrDir: String - """The ID of the experimental run this tilt series is part of""" - run_id: Float + """HTTPS path to this tomogram in multiscale OME-Zarr format""" + httpsOmezarrDir: String - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float + """S3 path to this tomogram in MRC format (no scaling)""" + s3MrcFile: String - """Rotation angle in degrees""" - tilt_axis: Float + """HTTPS path to this tomogram in MRC format (no scaling)""" + httpsMrcFile: String - """Maximal tilt angle in degrees""" - tilt_max: Float + """comma separated x,y,z dimensions of the unscaled tomogram""" + scale0Dimensions: String - """Minimal tilt angle in degrees""" - tilt_min: Float + """comma separated x,y,z dimensions of the scale1 tomogram""" + scale1Dimensions: String - """Total tilt range in degrees""" - tilt_range: Float + """comma separated x,y,z dimensions of the scale2 tomogram""" + scale2Dimensions: String - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float + """Whether this tomogram is CTF corrected""" + ctfCorrected: Boolean - """Tilt step in degrees""" - tilt_step: Float + """x offset data relative to the canonical tomogram in pixels""" + offsetX: Int! - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float -} + """y offset data relative to the canonical tomogram in pixels""" + offsetY: Int! -""" -order by var_samp() on columns of table "tiltseries" -""" -input tiltseries_var_samp_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by + """z offset data relative to the canonical tomogram in pixels""" + offsetZ: Int! - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by + """URL for the key photo""" + keyPhotoUrl: String - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by + """URL for the thumbnail of key photo""" + keyPhotoThumbnailUrl: String - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by + """the compact json of neuroglancer config""" + neuroglancerConfig: String - """Number of frames associated to the tilt series""" - frames_count: order_by + """Whether this tomogram was generated per the portal's standards""" + isStandardized: Boolean! +} - """Numeric identifier for this tilt series (this may change!)""" - id: order_by +"""A connection to a list of items.""" +type TomogramAuthorConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by + """Contains the nodes in this connection""" + edges: [TomogramAuthorEdge!]! +} - """The ID of the experimental run this tilt series is part of""" - run_id: order_by +"""An edge in a connection.""" +type TomogramAuthorEdge { + """A cursor for use in pagination""" + cursor: String! - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by + """The item at the end of the edge""" + node: TomogramAuthor! +} - """Rotation angle in degrees""" - tilt_axis: order_by +"""Author of a tomogram""" +type TomogramAuthor implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Maximal tilt angle in degrees""" - tilt_max: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + tomogram(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = []): Tomogram + tomogramId: Int - """Minimal tilt angle in degrees""" - tilt_min: order_by + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """Total tilt range in degrees""" - tilt_range: order_by + """The ORCID identifier for the author.""" + orcid: String - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by + """The full name of the author.""" + name: String! - """Tilt step in degrees""" - tilt_step: order_by + """The email address of the author.""" + email: String - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by + """The name of the author's affiliation.""" + affiliationName: String + + """The address of the author's affiliation.""" + affiliationAddress: String + + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String + + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean + + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean +} + +input TomogramOrderByClause { + alignment: AlignmentOrderByClause + deposition: DepositionOrderByClause + run: RunOrderByClause + tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause + name: orderBy + sizeX: orderBy + sizeY: orderBy + sizeZ: orderBy + voxelSpacing: orderBy + fiducialAlignmentStatus: orderBy + reconstructionMethod: orderBy + processing: orderBy + tomogramVersion: orderBy + processingSoftware: orderBy + reconstructionSoftware: orderBy + isCanonical: orderBy + s3OmezarrDir: orderBy + httpsOmezarrDir: orderBy + s3MrcFile: orderBy + httpsMrcFile: orderBy + scale0Dimensions: orderBy + scale1Dimensions: orderBy + scale2Dimensions: orderBy + ctfCorrected: orderBy + offsetX: orderBy + offsetY: orderBy + offsetZ: orderBy + keyPhotoUrl: orderBy + keyPhotoThumbnailUrl: orderBy + neuroglancerConfig: orderBy + isStandardized: orderBy + id: orderBy +} + +input TomogramVoxelSpacingOrderByClause { + run: RunOrderByClause + voxelSpacing: orderBy + s3Prefix: orderBy + httpsPrefix: orderBy + id: orderBy +} + +input TomogramAuthorOrderByClause { + tomogram: TomogramOrderByClause + id: orderBy + authorListOrder: orderBy + orcid: orderBy + name: orderBy + email: orderBy + affiliationName: orderBy + affiliationAddress: orderBy + affiliationIdentifier: orderBy + correspondingAuthorStatus: orderBy + primaryAuthorStatus: orderBy +} + +type TomogramAuthorAggregate { + aggregate: [TomogramAuthorAggregateFunctions!] +} + +type TomogramAuthorAggregateFunctions { + sum: TomogramAuthorNumericalColumns + avg: TomogramAuthorNumericalColumns + stddev: TomogramAuthorNumericalColumns + variance: TomogramAuthorNumericalColumns + min: TomogramAuthorMinMaxColumns + max: TomogramAuthorMinMaxColumns + groupBy: TomogramAuthorGroupByOptions + count(distinct: Boolean = false, columns: TomogramAuthorCountColumns = null): Int +} + +type TomogramAuthorNumericalColumns { + id: Int + authorListOrder: Int } -"""aggregate variance on columns""" -type tiltseries_variance_fields { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: Float - - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: Float - - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: Float +type TomogramAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} - """Reference to the deposition this tiltseries is associated with""" - deposition_id: Float +type TomogramAuthorGroupByOptions { + tomogram: TomogramGroupByOptions + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean +} + +type TomogramGroupByOptions { + alignment: AlignmentGroupByOptions + deposition: DepositionGroupByOptions + run: RunGroupByOptions + tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions + name: String + sizeX: Float + sizeY: Float + sizeZ: Float + voxelSpacing: Float + fiducialAlignmentStatus: fiducial_alignment_status_enum + reconstructionMethod: tomogram_reconstruction_method_enum + processing: tomogram_processing_enum + tomogramVersion: Float + processingSoftware: String + reconstructionSoftware: String + isCanonical: Boolean + s3OmezarrDir: String + httpsOmezarrDir: String + s3MrcFile: String + httpsMrcFile: String + scale0Dimensions: String + scale1Dimensions: String + scale2Dimensions: String + ctfCorrected: Boolean + offsetX: Int + offsetY: Int + offsetZ: Int + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + neuroglancerConfig: String + isStandardized: Boolean + id: Int +} - """Number of frames associated to the tilt series""" - frames_count: Float +type TomogramVoxelSpacingGroupByOptions { + run: RunGroupByOptions + voxelSpacing: Float + s3Prefix: String + httpsPrefix: String + id: Int +} - """Numeric identifier for this tilt series (this may change!)""" - id: Float +enum TomogramAuthorCountColumns { + tomogram + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus +} - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: Float +"""Voxel spacings for a run""" +type TomogramVoxelSpacing implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """The ID of the experimental run this tilt series is part of""" - run_id: Float + """An identifier to refer to a specific instance of this type""" + id: Int! + annotationFiles( + where: AnnotationFileWhereClause = null + orderBy: [AnnotationFileOrderByClause!] = [] - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: Float + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """Rotation angle in degrees""" - tilt_axis: Float + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Maximal tilt angle in degrees""" - tilt_max: Float + """Returns the first n items from the list.""" + first: Int = null - """Minimal tilt angle in degrees""" - tilt_min: Float + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationFileConnection! + annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] - """Total tilt range in degrees""" - tilt_range: Float + """Returns the items in the list that come before the specified cursor.""" + before: String = null - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: Float + """Returns the items in the list that come after the specified cursor.""" + after: String = null - """Tilt step in degrees""" - tilt_step: Float + """Returns the first n items from the list.""" + first: Int = null - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: Float -} + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate -""" -order by variance() on columns of table "tiltseries" -""" -input tiltseries_variance_order_by { - """Electron Microscope Accelerator voltage in volts""" - acceleration_voltage: order_by + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float! - """Binning factor of the aligned tilt series""" - aligned_tiltseries_binning: order_by + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """Describes the binning factor from frames to tilt series file""" - binning_from_frames: order_by + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! +} - """Reference to the deposition this tiltseries is associated with""" - deposition_id: order_by +input AnnotationFileOrderByClause { + alignment: AlignmentOrderByClause + annotationShape: AnnotationShapeOrderByClause + tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause + format: orderBy + s3Path: orderBy + httpsPath: orderBy + isVisualizationDefault: orderBy + source: orderBy + id: orderBy +} - """Number of frames associated to the tilt series""" - frames_count: order_by +input AnnotationShapeOrderByClause { + annotation: AnnotationOrderByClause + shapeType: orderBy + id: orderBy +} - """Numeric identifier for this tilt series (this may change!)""" - id: order_by +type AnnotationFileAggregate { + aggregate: [AnnotationFileAggregateFunctions!] +} - """Pixel spacing equal in both axes in angstroms""" - pixel_spacing: order_by +type AnnotationFileAggregateFunctions { + sum: AnnotationFileNumericalColumns + avg: AnnotationFileNumericalColumns + stddev: AnnotationFileNumericalColumns + variance: AnnotationFileNumericalColumns + min: AnnotationFileMinMaxColumns + max: AnnotationFileMinMaxColumns + groupBy: AnnotationFileGroupByOptions + count(distinct: Boolean = false, columns: AnnotationFileCountColumns = null): Int +} - """The ID of the experimental run this tilt series is part of""" - run_id: order_by +type AnnotationFileNumericalColumns { + id: Int +} - """Spherical Aberration Constant of the objective lens in millimeters""" - spherical_aberration_constant: order_by +type AnnotationFileMinMaxColumns { + format: String + s3Path: String + httpsPath: String + id: Int +} - """Rotation angle in degrees""" - tilt_axis: order_by +type AnnotationFileGroupByOptions { + alignment: AlignmentGroupByOptions + annotationShape: AnnotationShapeGroupByOptions + tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions + format: String + s3Path: String + httpsPath: String + isVisualizationDefault: Boolean + source: annotation_file_source_enum + id: Int +} - """Maximal tilt angle in degrees""" - tilt_max: order_by +type AnnotationShapeGroupByOptions { + annotation: AnnotationGroupByOptions + shapeType: annotation_file_shape_type_enum + id: Int +} - """Minimal tilt angle in degrees""" - tilt_min: order_by +enum AnnotationFileCountColumns { + alignment + annotationShape + tomogramVoxelSpacing + format + s3Path + httpsPath + isVisualizationDefault + source + id +} - """Total tilt range in degrees""" - tilt_range: order_by +type TomogramAggregate { + aggregate: [TomogramAggregateFunctions!] +} - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tilt_series_quality: order_by +type TomogramAggregateFunctions { + sum: TomogramNumericalColumns + avg: TomogramNumericalColumns + stddev: TomogramNumericalColumns + variance: TomogramNumericalColumns + min: TomogramMinMaxColumns + max: TomogramMinMaxColumns + groupBy: TomogramGroupByOptions + count(distinct: Boolean = false, columns: TomogramCountColumns = null): Int +} - """Tilt step in degrees""" - tilt_step: order_by +type TomogramNumericalColumns { + sizeX: Float + sizeY: Float + sizeZ: Float + voxelSpacing: Float + tomogramVersion: Float + offsetX: Int + offsetY: Int + offsetZ: Int + id: Int +} - """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - """ - total_flux: order_by +type TomogramMinMaxColumns { + name: String + sizeX: Float + sizeY: Float + sizeZ: Float + voxelSpacing: Float + tomogramVersion: Float + processingSoftware: String + reconstructionSoftware: String + s3OmezarrDir: String + httpsOmezarrDir: String + s3MrcFile: String + httpsMrcFile: String + scale0Dimensions: String + scale1Dimensions: String + scale2Dimensions: String + offsetX: Int + offsetY: Int + offsetZ: Int + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + neuroglancerConfig: String + id: Int } -"""Metadata for a tomogram's authors""" -type tomogram_authors { - """Address of the institution an author is affiliated with.""" - affiliation_address: String +enum TomogramCountColumns { + alignment + authors + deposition + run + tomogramVoxelSpacing + name + sizeX + sizeY + sizeZ + voxelSpacing + fiducialAlignmentStatus + reconstructionMethod + processing + tomogramVersion + processingSoftware + reconstructionSoftware + isCanonical + s3OmezarrDir + httpsOmezarrDir + s3MrcFile + httpsMrcFile + scale0Dimensions + scale1Dimensions + scale2Dimensions + ctfCorrected + offsetX + offsetY + offsetZ + keyPhotoUrl + keyPhotoThumbnailUrl + neuroglancerConfig + isStandardized + id +} - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String +"""A connection to a list of items.""" +type DepositionTypeConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String + """Contains the nodes in this connection""" + edges: [DepositionTypeEdge!]! +} - """The order in which the author appears in the publication""" - author_list_order: Int! +"""An edge in a connection.""" +type DepositionTypeEdge { + """A cursor for use in pagination""" + cursor: String! - """Indicating whether an author is the corresponding author (YES or NO)""" - corresponding_author_status: Boolean + """The item at the end of the edge""" + node: DepositionType! +} - """Email address for this author""" - email: String +type DepositionType implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this tomogram author (this may change!)""" + """An identifier to refer to a specific instance of this type""" id: Int! - - """Full name of an author (e.g. Jane Doe).""" - name: String! - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """ - Indicating whether an author is the main person creating the tomogram (YES or NO) - """ - primary_author_status: Boolean - - """An object relationship""" - tomogram: tomograms! - - """Reference to the tomogram this author contributed to""" - tomogram_id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int + type: deposition_types_enum } -""" -aggregated selection of "tomogram_authors" -""" -type tomogram_authors_aggregate { - aggregate: tomogram_authors_aggregate_fields - nodes: [tomogram_authors!]! +input DepositionTypeOrderByClause { + deposition: DepositionOrderByClause + type: orderBy + id: orderBy } -input tomogram_authors_aggregate_bool_exp { - bool_and: tomogram_authors_aggregate_bool_exp_bool_and - bool_or: tomogram_authors_aggregate_bool_exp_bool_or - count: tomogram_authors_aggregate_bool_exp_count +type DepositionTypeAggregate { + aggregate: [DepositionTypeAggregateFunctions!] } -input tomogram_authors_aggregate_bool_exp_bool_and { - arguments: tomogram_authors_select_column_tomogram_authors_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: tomogram_authors_bool_exp - predicate: Boolean_comparison_exp! +type DepositionTypeAggregateFunctions { + sum: DepositionTypeNumericalColumns + avg: DepositionTypeNumericalColumns + stddev: DepositionTypeNumericalColumns + variance: DepositionTypeNumericalColumns + min: DepositionTypeMinMaxColumns + max: DepositionTypeMinMaxColumns + groupBy: DepositionTypeGroupByOptions + count(distinct: Boolean = false, columns: DepositionTypeCountColumns = null): Int } -input tomogram_authors_aggregate_bool_exp_bool_or { - arguments: tomogram_authors_select_column_tomogram_authors_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: tomogram_authors_bool_exp - predicate: Boolean_comparison_exp! +type DepositionTypeNumericalColumns { + id: Int } -input tomogram_authors_aggregate_bool_exp_count { - arguments: [tomogram_authors_select_column!] - distinct: Boolean - filter: tomogram_authors_bool_exp - predicate: Int_comparison_exp! +type DepositionTypeMinMaxColumns { + id: Int } -""" -aggregate fields of "tomogram_authors" -""" -type tomogram_authors_aggregate_fields { - avg: tomogram_authors_avg_fields - count(columns: [tomogram_authors_select_column!], distinct: Boolean): Int! - max: tomogram_authors_max_fields - min: tomogram_authors_min_fields - stddev: tomogram_authors_stddev_fields - stddev_pop: tomogram_authors_stddev_pop_fields - stddev_samp: tomogram_authors_stddev_samp_fields - sum: tomogram_authors_sum_fields - var_pop: tomogram_authors_var_pop_fields - var_samp: tomogram_authors_var_samp_fields - variance: tomogram_authors_variance_fields +type DepositionTypeGroupByOptions { + deposition: DepositionGroupByOptions + type: deposition_types_enum + id: Int } -""" -order by aggregate values of table "tomogram_authors" -""" -input tomogram_authors_aggregate_order_by { - avg: tomogram_authors_avg_order_by - count: order_by - max: tomogram_authors_max_order_by - min: tomogram_authors_min_order_by - stddev: tomogram_authors_stddev_order_by - stddev_pop: tomogram_authors_stddev_pop_order_by - stddev_samp: tomogram_authors_stddev_samp_order_by - sum: tomogram_authors_sum_order_by - var_pop: tomogram_authors_var_pop_order_by - var_samp: tomogram_authors_var_samp_order_by - variance: tomogram_authors_variance_order_by +enum DepositionTypeCountColumns { + deposition + type + id } -"""aggregate avg on columns""" -type tomogram_authors_avg_fields { - """The order in which the author appears in the publication""" - author_list_order: Float +"""A connection to a list of items.""" +type DatasetFundingConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [DatasetFundingEdge!]! +} - """Numeric identifier for this tomogram author (this may change!)""" - id: Float +"""An edge in a connection.""" +type DatasetFundingEdge { + """A cursor for use in pagination""" + cursor: String! - """Reference to the tomogram this author contributed to""" - tomogram_id: Float + """The item at the end of the edge""" + node: DatasetFunding! } -""" -order by avg() on columns of table "tomogram_authors" -""" -input tomogram_authors_avg_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +"""Information about how a dataset was funded""" +type DatasetFunding implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """An identifier to refer to a specific instance of this type""" + id: Int! + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """The name of the funding source.""" + fundingAgencyName: String - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by + """Grant identifier provided by the funding agency""" + grantId: String } -""" -Boolean expression to filter rows from the table "tomogram_authors". All fields are combined with a logical 'AND'. -""" -input tomogram_authors_bool_exp { - _and: [tomogram_authors_bool_exp!] - _not: tomogram_authors_bool_exp - _or: [tomogram_authors_bool_exp!] - affiliation_address: String_comparison_exp - affiliation_identifier: String_comparison_exp - affiliation_name: String_comparison_exp - author_list_order: Int_comparison_exp - corresponding_author_status: Boolean_comparison_exp - email: String_comparison_exp - id: Int_comparison_exp - name: String_comparison_exp - orcid: String_comparison_exp - primary_author_status: Boolean_comparison_exp - tomogram: tomograms_bool_exp - tomogram_id: Int_comparison_exp -} - -"""aggregate max on columns""" -type tomogram_authors_max_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String +input DatasetFundingOrderByClause { + dataset: DatasetOrderByClause + fundingAgencyName: orderBy + grantId: orderBy + id: orderBy +} - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String +type DatasetFundingAggregate { + aggregate: [DatasetFundingAggregateFunctions!] +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String +type DatasetFundingAggregateFunctions { + sum: DatasetFundingNumericalColumns + avg: DatasetFundingNumericalColumns + stddev: DatasetFundingNumericalColumns + variance: DatasetFundingNumericalColumns + min: DatasetFundingMinMaxColumns + max: DatasetFundingMinMaxColumns + groupBy: DatasetFundingGroupByOptions + count(distinct: Boolean = false, columns: DatasetFundingCountColumns = null): Int +} - """The order in which the author appears in the publication""" - author_list_order: Int +type DatasetFundingNumericalColumns { + id: Int +} - """Email address for this author""" - email: String +type DatasetFundingMinMaxColumns { + fundingAgencyName: String + grantId: String + id: Int +} - """Numeric identifier for this tomogram author (this may change!)""" +type DatasetFundingGroupByOptions { + dataset: DatasetGroupByOptions + fundingAgencyName: String + grantId: String id: Int +} - """Full name of an author (e.g. Jane Doe).""" - name: String +enum DatasetFundingCountColumns { + dataset + fundingAgencyName + grantId + id +} - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String +"""A connection to a list of items.""" +type DatasetAuthorConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Reference to the tomogram this author contributed to""" - tomogram_id: Int + """Contains the nodes in this connection""" + edges: [DatasetAuthorEdge!]! } -""" -order by max() on columns of table "tomogram_authors" -""" -input tomogram_authors_max_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by +"""An edge in a connection.""" +type DatasetAuthorEdge { + """A cursor for use in pagination""" + cursor: String! - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by + """The item at the end of the edge""" + node: DatasetAuthor! +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: order_by +"""An author of a dataset""" +type DatasetAuthor implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """An identifier to refer to a specific instance of this type""" + id: Int! + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int - """The order in which the author appears in the publication""" - author_list_order: order_by + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """Email address for this author""" - email: order_by + """The ORCID identifier for the author.""" + orcid: String - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """The full name of the author.""" + name: String! - """Full name of an author (e.g. Jane Doe).""" - name: order_by + """The email address of the author.""" + email: String - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by + """The name of the author's affiliation.""" + affiliationName: String - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by -} + """The address of the author's affiliation.""" + affiliationAddress: String -"""aggregate min on columns""" -type tomogram_authors_min_fields { - """Address of the institution an author is affiliated with.""" - affiliation_address: String + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean + + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String +input DatasetAuthorOrderByClause { + dataset: DatasetOrderByClause + id: orderBy + authorListOrder: orderBy + orcid: orderBy + name: orderBy + email: orderBy + affiliationName: orderBy + affiliationAddress: orderBy + affiliationIdentifier: orderBy + correspondingAuthorStatus: orderBy + primaryAuthorStatus: orderBy +} - """The order in which the author appears in the publication""" - author_list_order: Int +type DatasetAuthorAggregate { + aggregate: [DatasetAuthorAggregateFunctions!] +} - """Email address for this author""" - email: String +type DatasetAuthorAggregateFunctions { + sum: DatasetAuthorNumericalColumns + avg: DatasetAuthorNumericalColumns + stddev: DatasetAuthorNumericalColumns + variance: DatasetAuthorNumericalColumns + min: DatasetAuthorMinMaxColumns + max: DatasetAuthorMinMaxColumns + groupBy: DatasetAuthorGroupByOptions + count(distinct: Boolean = false, columns: DatasetAuthorCountColumns = null): Int +} - """Numeric identifier for this tomogram author (this may change!)""" +type DatasetAuthorNumericalColumns { id: Int + authorListOrder: Int +} - """Full name of an author (e.g. Jane Doe).""" +type DatasetAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} - """A unique, persistent identifier for researchers, provided by ORCID.""" +type DatasetAuthorGroupByOptions { + dataset: DatasetGroupByOptions + id: Int + authorListOrder: Int orcid: String - - """Reference to the tomogram this author contributed to""" - tomogram_id: Int + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean } -""" -order by min() on columns of table "tomogram_authors" -""" -input tomogram_authors_min_order_by { - """Address of the institution an author is affiliated with.""" - affiliation_address: order_by +enum DatasetAuthorCountColumns { + dataset + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus +} - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: order_by +"""A connection to a list of items.""" +type RunConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: order_by + """Contains the nodes in this connection""" + edges: [RunEdge!]! +} - """The order in which the author appears in the publication""" - author_list_order: order_by +"""An edge in a connection.""" +type RunEdge { + """A cursor for use in pagination""" + cursor: String! - """Email address for this author""" - email: order_by + """The item at the end of the edge""" + node: Run! +} - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by +type RunAggregate { + aggregate: [RunAggregateFunctions!] +} - """Full name of an author (e.g. Jane Doe).""" - name: order_by +type RunAggregateFunctions { + sum: RunNumericalColumns + avg: RunNumericalColumns + stddev: RunNumericalColumns + variance: RunNumericalColumns + min: RunMinMaxColumns + max: RunMinMaxColumns + groupBy: RunGroupByOptions + count(distinct: Boolean = false, columns: RunCountColumns = null): Int +} - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: order_by +type RunNumericalColumns { + id: Int +} - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by +type RunMinMaxColumns { + name: String + s3Prefix: String + httpsPrefix: String + id: Int } -"""Ordering options when selecting data from "tomogram_authors".""" -input tomogram_authors_order_by { - affiliation_address: order_by - affiliation_identifier: order_by - affiliation_name: order_by - author_list_order: order_by - corresponding_author_status: order_by - email: order_by - id: order_by - name: order_by - orcid: order_by - primary_author_status: order_by - tomogram: tomograms_order_by - tomogram_id: order_by +enum RunCountColumns { + alignments + annotations + dataset + frames + tiltseries + tomogramVoxelSpacings + tomograms + name + s3Prefix + httpsPrefix + id } -""" -select columns of table "tomogram_authors" -""" -enum tomogram_authors_select_column { - """column name""" - affiliation_address +"""A connection to a list of items.""" +type TomogramVoxelSpacingConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """column name""" - affiliation_identifier + """Contains the nodes in this connection""" + edges: [TomogramVoxelSpacingEdge!]! +} - """column name""" - affiliation_name +"""An edge in a connection.""" +type TomogramVoxelSpacingEdge { + """A cursor for use in pagination""" + cursor: String! - """column name""" - author_list_order + """The item at the end of the edge""" + node: TomogramVoxelSpacing! +} - """column name""" - corresponding_author_status +type TomogramVoxelSpacingAggregate { + aggregate: [TomogramVoxelSpacingAggregateFunctions!] +} - """column name""" - email +type TomogramVoxelSpacingAggregateFunctions { + sum: TomogramVoxelSpacingNumericalColumns + avg: TomogramVoxelSpacingNumericalColumns + stddev: TomogramVoxelSpacingNumericalColumns + variance: TomogramVoxelSpacingNumericalColumns + min: TomogramVoxelSpacingMinMaxColumns + max: TomogramVoxelSpacingMinMaxColumns + groupBy: TomogramVoxelSpacingGroupByOptions + count(distinct: Boolean = false, columns: TomogramVoxelSpacingCountColumns = null): Int +} - """column name""" - id +type TomogramVoxelSpacingNumericalColumns { + voxelSpacing: Float + id: Int +} - """column name""" - name +type TomogramVoxelSpacingMinMaxColumns { + voxelSpacing: Float + s3Prefix: String + httpsPrefix: String + id: Int +} - """column name""" - orcid +enum TomogramVoxelSpacingCountColumns { + annotationFiles + run + tomograms + voxelSpacing + s3Prefix + httpsPrefix + id +} - """column name""" - primary_author_status +"""A connection to a list of items.""" +type AnnotationShapeConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """column name""" - tomogram_id + """Contains the nodes in this connection""" + edges: [AnnotationShapeEdge!]! } -""" -select "tomogram_authors_aggregate_bool_exp_bool_and_arguments_columns" columns of table "tomogram_authors" -""" -enum tomogram_authors_select_column_tomogram_authors_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - corresponding_author_status +"""An edge in a connection.""" +type AnnotationShapeEdge { + """A cursor for use in pagination""" + cursor: String! - """column name""" - primary_author_status + """The item at the end of the edge""" + node: AnnotationShape! } -""" -select "tomogram_authors_aggregate_bool_exp_bool_or_arguments_columns" columns of table "tomogram_authors" -""" -enum tomogram_authors_select_column_tomogram_authors_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - corresponding_author_status - - """column name""" - primary_author_status +type AnnotationShapeAggregate { + aggregate: [AnnotationShapeAggregateFunctions!] } -"""aggregate stddev on columns""" -type tomogram_authors_stddev_fields { - """The order in which the author appears in the publication""" - author_list_order: Float +type AnnotationShapeAggregateFunctions { + sum: AnnotationShapeNumericalColumns + avg: AnnotationShapeNumericalColumns + stddev: AnnotationShapeNumericalColumns + variance: AnnotationShapeNumericalColumns + min: AnnotationShapeMinMaxColumns + max: AnnotationShapeMinMaxColumns + groupBy: AnnotationShapeGroupByOptions + count(distinct: Boolean = false, columns: AnnotationShapeCountColumns = null): Int +} - """Numeric identifier for this tomogram author (this may change!)""" - id: Float +type AnnotationShapeNumericalColumns { + id: Int +} - """Reference to the tomogram this author contributed to""" - tomogram_id: Float +type AnnotationShapeMinMaxColumns { + id: Int } -""" -order by stddev() on columns of table "tomogram_authors" -""" -input tomogram_authors_stddev_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +enum AnnotationShapeCountColumns { + annotation + annotationFiles + shapeType + id +} - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by +"""A connection to a list of items.""" +type AnnotationAuthorConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by + """Contains the nodes in this connection""" + edges: [AnnotationAuthorEdge!]! } -"""aggregate stddev_pop on columns""" -type tomogram_authors_stddev_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float - - """Numeric identifier for this tomogram author (this may change!)""" - id: Float +"""An edge in a connection.""" +type AnnotationAuthorEdge { + """A cursor for use in pagination""" + cursor: String! - """Reference to the tomogram this author contributed to""" - tomogram_id: Float + """The item at the end of the edge""" + node: AnnotationAuthor! } -""" -order by stddev_pop() on columns of table "tomogram_authors" -""" -input tomogram_authors_stddev_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +"""Author of an annotation""" +type AnnotationAuthor implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation + annotationId: Int - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by -} + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! -"""aggregate stddev_samp on columns""" -type tomogram_authors_stddev_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float + """The ORCID identifier for the author.""" + orcid: String - """Numeric identifier for this tomogram author (this may change!)""" - id: Float + """The full name of the author.""" + name: String! - """Reference to the tomogram this author contributed to""" - tomogram_id: Float -} + """The email address of the author.""" + email: String -""" -order by stddev_samp() on columns of table "tomogram_authors" -""" -input tomogram_authors_stddev_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by + """The name of the author's affiliation.""" + affiliationName: String - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """The address of the author's affiliation.""" + affiliationAddress: String - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by -} + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String -""" -Streaming cursor of the table "tomogram_authors" -""" -input tomogram_authors_stream_cursor_input { - """Stream column input with initial value""" - initial_value: tomogram_authors_stream_cursor_value_input! + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean - """cursor ordering""" - ordering: cursor_ordering + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean } -"""Initial value of the column from where the streaming should start""" -input tomogram_authors_stream_cursor_value_input { - """Address of the institution an author is affiliated with.""" - affiliation_address: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliation_identifier: String +input AnnotationAuthorOrderByClause { + annotation: AnnotationOrderByClause + id: orderBy + authorListOrder: orderBy + orcid: orderBy + name: orderBy + email: orderBy + affiliationName: orderBy + affiliationAddress: orderBy + affiliationIdentifier: orderBy + correspondingAuthorStatus: orderBy + primaryAuthorStatus: orderBy +} - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliation_name: String +type AnnotationAuthorAggregate { + aggregate: [AnnotationAuthorAggregateFunctions!] +} - """The order in which the author appears in the publication""" - author_list_order: Int +type AnnotationAuthorAggregateFunctions { + sum: AnnotationAuthorNumericalColumns + avg: AnnotationAuthorNumericalColumns + stddev: AnnotationAuthorNumericalColumns + variance: AnnotationAuthorNumericalColumns + min: AnnotationAuthorMinMaxColumns + max: AnnotationAuthorMinMaxColumns + groupBy: AnnotationAuthorGroupByOptions + count(distinct: Boolean = false, columns: AnnotationAuthorCountColumns = null): Int +} - """Indicating whether an author is the corresponding author (YES or NO)""" - corresponding_author_status: Boolean +type AnnotationAuthorNumericalColumns { + id: Int + authorListOrder: Int +} - """Email address for this author""" +type AnnotationAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String + name: String email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} - """Numeric identifier for this tomogram author (this may change!)""" +type AnnotationAuthorGroupByOptions { + annotation: AnnotationGroupByOptions id: Int - - """Full name of an author (e.g. Jane Doe).""" + authorListOrder: Int + orcid: String name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean +} - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String +enum AnnotationAuthorCountColumns { + annotation + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus +} - """ - Indicating whether an author is the main person creating the tomogram (YES or NO) - """ - primary_author_status: Boolean +"""A connection to a list of items.""" +type PerSectionAlignmentParametersConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Reference to the tomogram this author contributed to""" - tomogram_id: Int + """Contains the nodes in this connection""" + edges: [PerSectionAlignmentParametersEdge!]! } -"""aggregate sum on columns""" -type tomogram_authors_sum_fields { - """The order in which the author appears in the publication""" - author_list_order: Int - - """Numeric identifier for this tomogram author (this may change!)""" - id: Int +"""An edge in a connection.""" +type PerSectionAlignmentParametersEdge { + """A cursor for use in pagination""" + cursor: String! - """Reference to the tomogram this author contributed to""" - tomogram_id: Int + """The item at the end of the edge""" + node: PerSectionAlignmentParameters! } -""" -order by sum() on columns of table "tomogram_authors" -""" -input tomogram_authors_sum_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +"""Map alignment parameters to tilt series frames""" +type PerSectionAlignmentParameters implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! + alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment + alignmentId: Int! - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by -} + """z-index of the frame in the tiltseries""" + zIndex: Int! -"""aggregate var_pop on columns""" -type tomogram_authors_var_pop_fields { - """The order in which the author appears in the publication""" - author_list_order: Float + """In-plane X-shift of the projection in angstrom""" + xOffset: Float - """Numeric identifier for this tomogram author (this may change!)""" - id: Float + """In-plane Y-shift of the projection in angstrom""" + yOffset: Float - """Reference to the tomogram this author contributed to""" - tomogram_id: Float -} + """In-plane rotation of the projection in degrees""" + inPlaneRotation: Float -""" -order by var_pop() on columns of table "tomogram_authors" -""" -input tomogram_authors_var_pop_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by + """Beam tilt during projection in degrees""" + beamTilt: Float - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by + """Tilt angle of the projection in degrees""" + tiltAngle: Float +} - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by +input PerSectionAlignmentParametersOrderByClause { + alignment: AlignmentOrderByClause + zIndex: orderBy + xOffset: orderBy + yOffset: orderBy + inPlaneRotation: orderBy + beamTilt: orderBy + tiltAngle: orderBy + id: orderBy } -"""aggregate var_samp on columns""" -type tomogram_authors_var_samp_fields { - """The order in which the author appears in the publication""" - author_list_order: Float +type PerSectionAlignmentParametersAggregate { + aggregate: [PerSectionAlignmentParametersAggregateFunctions!] +} - """Numeric identifier for this tomogram author (this may change!)""" - id: Float +type PerSectionAlignmentParametersAggregateFunctions { + sum: PerSectionAlignmentParametersNumericalColumns + avg: PerSectionAlignmentParametersNumericalColumns + stddev: PerSectionAlignmentParametersNumericalColumns + variance: PerSectionAlignmentParametersNumericalColumns + min: PerSectionAlignmentParametersMinMaxColumns + max: PerSectionAlignmentParametersMinMaxColumns + groupBy: PerSectionAlignmentParametersGroupByOptions + count(distinct: Boolean = false, columns: PerSectionAlignmentParametersCountColumns = null): Int +} - """Reference to the tomogram this author contributed to""" - tomogram_id: Float +type PerSectionAlignmentParametersNumericalColumns { + zIndex: Int + xOffset: Float + yOffset: Float + inPlaneRotation: Float + beamTilt: Float + tiltAngle: Float + id: Int } -""" -order by var_samp() on columns of table "tomogram_authors" -""" -input tomogram_authors_var_samp_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +type PerSectionAlignmentParametersMinMaxColumns { + zIndex: Int + xOffset: Float + yOffset: Float + inPlaneRotation: Float + beamTilt: Float + tiltAngle: Float + id: Int +} - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by +type PerSectionAlignmentParametersGroupByOptions { + alignment: AlignmentGroupByOptions + zIndex: Int + xOffset: Float + yOffset: Float + inPlaneRotation: Float + beamTilt: Float + tiltAngle: Float + id: Int +} - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by +enum PerSectionAlignmentParametersCountColumns { + alignment + zIndex + xOffset + yOffset + inPlaneRotation + beamTilt + tiltAngle + id } -"""aggregate variance on columns""" -type tomogram_authors_variance_fields { - """The order in which the author appears in the publication""" - author_list_order: Float +input LimitOffsetClause { + limit: Int + offset: Int +} - """Numeric identifier for this tomogram author (this may change!)""" - id: Float +type DepositionAggregate { + aggregate: [DepositionAggregateFunctions!] +} - """Reference to the tomogram this author contributed to""" - tomogram_id: Float +type DepositionAggregateFunctions { + sum: DepositionNumericalColumns + avg: DepositionNumericalColumns + stddev: DepositionNumericalColumns + variance: DepositionNumericalColumns + min: DepositionMinMaxColumns + max: DepositionMinMaxColumns + groupBy: DepositionGroupByOptions + count(distinct: Boolean = false, columns: DepositionCountColumns = null): Int } -""" -order by variance() on columns of table "tomogram_authors" -""" -input tomogram_authors_variance_order_by { - """The order in which the author appears in the publication""" - author_list_order: order_by +type DepositionNumericalColumns { + id: Int +} - """Numeric identifier for this tomogram author (this may change!)""" - id: order_by +type DepositionMinMaxColumns { + depositionTitle: String + depositionDescription: String + publications: String + relatedDatabaseEntries: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + id: Int +} - """Reference to the tomogram this author contributed to""" - tomogram_id: order_by +enum DepositionCountColumns { + authors + alignments + annotations + datasets + frames + tiltseries + tomograms + depositionTitle + depositionDescription + depositionTypes + publications + relatedDatabaseEntries + depositionDate + releaseDate + lastModifiedDate + id } -"""The type of tomograms""" -type tomogram_type { - description: String +type Mutation { + createAlignment(input: AlignmentCreateInput!): Alignment! + updateAlignment(input: AlignmentUpdateInput!, where: AlignmentWhereClauseMutations!): [Alignment!]! + deleteAlignment(where: AlignmentWhereClauseMutations!): [Alignment!]! + createAnnotationAuthor(input: AnnotationAuthorCreateInput!): AnnotationAuthor! + updateAnnotationAuthor(input: AnnotationAuthorUpdateInput!, where: AnnotationAuthorWhereClauseMutations!): [AnnotationAuthor!]! + deleteAnnotationAuthor(where: AnnotationAuthorWhereClauseMutations!): [AnnotationAuthor!]! + createAnnotationFile(input: AnnotationFileCreateInput!): AnnotationFile! + updateAnnotationFile(input: AnnotationFileUpdateInput!, where: AnnotationFileWhereClauseMutations!): [AnnotationFile!]! + deleteAnnotationFile(where: AnnotationFileWhereClauseMutations!): [AnnotationFile!]! + createAnnotationShape(input: AnnotationShapeCreateInput!): AnnotationShape! + updateAnnotationShape(input: AnnotationShapeUpdateInput!, where: AnnotationShapeWhereClauseMutations!): [AnnotationShape!]! + deleteAnnotationShape(where: AnnotationShapeWhereClauseMutations!): [AnnotationShape!]! + createAnnotation(input: AnnotationCreateInput!): Annotation! + updateAnnotation(input: AnnotationUpdateInput!, where: AnnotationWhereClauseMutations!): [Annotation!]! + deleteAnnotation(where: AnnotationWhereClauseMutations!): [Annotation!]! + createDatasetAuthor(input: DatasetAuthorCreateInput!): DatasetAuthor! + updateDatasetAuthor(input: DatasetAuthorUpdateInput!, where: DatasetAuthorWhereClauseMutations!): [DatasetAuthor!]! + deleteDatasetAuthor(where: DatasetAuthorWhereClauseMutations!): [DatasetAuthor!]! + createDatasetFunding(input: DatasetFundingCreateInput!): DatasetFunding! + updateDatasetFunding(input: DatasetFundingUpdateInput!, where: DatasetFundingWhereClauseMutations!): [DatasetFunding!]! + deleteDatasetFunding(where: DatasetFundingWhereClauseMutations!): [DatasetFunding!]! + createDataset(input: DatasetCreateInput!): Dataset! + updateDataset(input: DatasetUpdateInput!, where: DatasetWhereClauseMutations!): [Dataset!]! + deleteDataset(where: DatasetWhereClauseMutations!): [Dataset!]! + createDepositionAuthor(input: DepositionAuthorCreateInput!): DepositionAuthor! + updateDepositionAuthor(input: DepositionAuthorUpdateInput!, where: DepositionAuthorWhereClauseMutations!): [DepositionAuthor!]! + deleteDepositionAuthor(where: DepositionAuthorWhereClauseMutations!): [DepositionAuthor!]! + createDeposition(input: DepositionCreateInput!): Deposition! + updateDeposition(input: DepositionUpdateInput!, where: DepositionWhereClauseMutations!): [Deposition!]! + deleteDeposition(where: DepositionWhereClauseMutations!): [Deposition!]! + createDepositionType(input: DepositionTypeCreateInput!): DepositionType! + updateDepositionType(input: DepositionTypeUpdateInput!, where: DepositionTypeWhereClauseMutations!): [DepositionType!]! + deleteDepositionType(where: DepositionTypeWhereClauseMutations!): [DepositionType!]! + createFrame(input: FrameCreateInput!): Frame! + updateFrame(input: FrameUpdateInput!, where: FrameWhereClauseMutations!): [Frame!]! + deleteFrame(where: FrameWhereClauseMutations!): [Frame!]! + createPerSectionParameters(input: PerSectionParametersCreateInput!): PerSectionParameters! + updatePerSectionParameters(input: PerSectionParametersUpdateInput!, where: PerSectionParametersWhereClauseMutations!): [PerSectionParameters!]! + deletePerSectionParameters(where: PerSectionParametersWhereClauseMutations!): [PerSectionParameters!]! + createPerSectionAlignmentParameters(input: PerSectionAlignmentParametersCreateInput!): PerSectionAlignmentParameters! + updatePerSectionAlignmentParameters(input: PerSectionAlignmentParametersUpdateInput!, where: PerSectionAlignmentParametersWhereClauseMutations!): [PerSectionAlignmentParameters!]! + deletePerSectionAlignmentParameters(where: PerSectionAlignmentParametersWhereClauseMutations!): [PerSectionAlignmentParameters!]! + createRun(input: RunCreateInput!): Run! + updateRun(input: RunUpdateInput!, where: RunWhereClauseMutations!): [Run!]! + deleteRun(where: RunWhereClauseMutations!): [Run!]! + createTiltseries(input: TiltseriesCreateInput!): Tiltseries! + updateTiltseries(input: TiltseriesUpdateInput!, where: TiltseriesWhereClauseMutations!): [Tiltseries!]! + deleteTiltseries(where: TiltseriesWhereClauseMutations!): [Tiltseries!]! + createTomogramAuthor(input: TomogramAuthorCreateInput!): TomogramAuthor! + updateTomogramAuthor(input: TomogramAuthorUpdateInput!, where: TomogramAuthorWhereClauseMutations!): [TomogramAuthor!]! + deleteTomogramAuthor(where: TomogramAuthorWhereClauseMutations!): [TomogramAuthor!]! + createTomogramVoxelSpacing(input: TomogramVoxelSpacingCreateInput!): TomogramVoxelSpacing! + updateTomogramVoxelSpacing(input: TomogramVoxelSpacingUpdateInput!, where: TomogramVoxelSpacingWhereClauseMutations!): [TomogramVoxelSpacing!]! + deleteTomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClauseMutations!): [TomogramVoxelSpacing!]! + createTomogram(input: TomogramCreateInput!): Tomogram! + updateTomogram(input: TomogramUpdateInput!, where: TomogramWhereClauseMutations!): [Tomogram!]! + deleteTomogram(where: TomogramWhereClauseMutations!): [Tomogram!]! +} + +input AlignmentCreateInput { + depositionId: ID = null + tiltseriesId: ID = null + runId: ID = null + + """Type of alignment included, i.e. is a non-rigid alignment included?""" + alignmentType: alignment_type_enum = null + + """X dimension of the reconstruction volume in angstrom""" + volumeXDimension: Float = null + + """Y dimension of the reconstruction volume in angstrom""" + volumeYDimension: Float = null + + """Z dimension of the reconstruction volume in angstrom""" + volumeZDimension: Float = null + + """X shift of the reconstruction volume in angstrom""" + volumeXOffset: Float = null + + """Y shift of the reconstruction volume in angstrom""" + volumeYOffset: Float = null + + """Z shift of the reconstruction volume in angstrom""" + volumeZOffset: Float = null + + """Additional X rotation of the reconstruction volume in degrees""" + xRotationOffset: Float = null + + """Additional tilt offset in degrees""" + tiltOffset: Float = null + + """Path to the local alignment file""" + localAlignmentFile: String = null + + """A placeholder for the affine transformation matrix.""" + affineTransformationMatrix: String = null + + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """An array relationship""" - tomograms( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] +input AlignmentUpdateInput { + depositionId: ID = null + tiltseriesId: ID = null + runId: ID = null - """limit the number of rows returned""" - limit: Int + """Type of alignment included, i.e. is a non-rigid alignment included?""" + alignmentType: alignment_type_enum = null - """skip the first n rows. Use only with order_by""" - offset: Int + """X dimension of the reconstruction volume in angstrom""" + volumeXDimension: Float = null - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] + """Y dimension of the reconstruction volume in angstrom""" + volumeYDimension: Float = null - """filter the rows returned""" - where: tomograms_bool_exp - ): [tomograms!]! + """Z dimension of the reconstruction volume in angstrom""" + volumeZDimension: Float = null - """An aggregate relationship""" - tomograms_aggregate( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] + """X shift of the reconstruction volume in angstrom""" + volumeXOffset: Float = null - """limit the number of rows returned""" - limit: Int + """Y shift of the reconstruction volume in angstrom""" + volumeYOffset: Float = null - """skip the first n rows. Use only with order_by""" - offset: Int + """Z shift of the reconstruction volume in angstrom""" + volumeZOffset: Float = null - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] + """Additional X rotation of the reconstruction volume in degrees""" + xRotationOffset: Float = null - """filter the rows returned""" - where: tomograms_bool_exp - ): tomograms_aggregate! - value: String! -} + """Additional tilt offset in degrees""" + tiltOffset: Float = null -""" -Boolean expression to filter rows from the table "tomogram_type". All fields are combined with a logical 'AND'. -""" -input tomogram_type_bool_exp { - _and: [tomogram_type_bool_exp!] - _not: tomogram_type_bool_exp - _or: [tomogram_type_bool_exp!] - description: String_comparison_exp - tomograms: tomograms_bool_exp - tomograms_aggregate: tomograms_aggregate_bool_exp - value: String_comparison_exp -} + """Path to the local alignment file""" + localAlignmentFile: String = null -enum tomogram_type_enum { - """""" - CANONICAL + """A placeholder for the affine transformation matrix.""" + affineTransformationMatrix: String = null - """""" - UNKOWN + """An identifier to refer to a specific instance of this type""" + id: Int } -""" -Boolean expression to compare columns of type "tomogram_type_enum". All fields are combined with logical 'AND'. -""" -input tomogram_type_enum_comparison_exp { - _eq: tomogram_type_enum - _in: [tomogram_type_enum!] - _is_null: Boolean - _neq: tomogram_type_enum - _nin: [tomogram_type_enum!] +input AlignmentWhereClauseMutations { + id: IntComparators } -"""Ordering options when selecting data from "tomogram_type".""" -input tomogram_type_order_by { - description: order_by - tomograms_aggregate: tomograms_aggregate_order_by - value: order_by -} +input AnnotationAuthorCreateInput { + """Metadata about an annotation for a run""" + annotationId: ID = null -""" -select columns of table "tomogram_type" -""" -enum tomogram_type_select_column { - """column name""" - description + """An identifier to refer to a specific instance of this type""" + id: Int! - """column name""" - value -} + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! -""" -Streaming cursor of the table "tomogram_type" -""" -input tomogram_type_stream_cursor_input { - """Stream column input with initial value""" - initial_value: tomogram_type_stream_cursor_value_input! + """The ORCID identifier for the author.""" + orcid: String = null - """cursor ordering""" - ordering: cursor_ordering -} + """The full name of the author.""" + name: String! -"""Initial value of the column from where the streaming should start""" -input tomogram_type_stream_cursor_value_input { - description: String - value: String -} + """The email address of the author.""" + email: String = null -""" -Metadata for a given voxel spacing related to tomograms and annotations -""" -type tomogram_voxel_spacings { - """An array relationship""" - annotations( - """distinct select on columns""" - distinct_on: [annotations_select_column!] + """The name of the author's affiliation.""" + affiliationName: String = null - """limit the number of rows returned""" - limit: Int + """The address of the author's affiliation.""" + affiliationAddress: String = null - """skip the first n rows. Use only with order_by""" - offset: Int + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """filter the rows returned""" - where: annotations_bool_exp - ): [annotations!]! + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null +} - """An aggregate relationship""" - annotations_aggregate( - """distinct select on columns""" - distinct_on: [annotations_select_column!] +input AnnotationAuthorUpdateInput { + """Metadata about an annotation for a run""" + annotationId: ID = null - """limit the number of rows returned""" - limit: Int + """An identifier to refer to a specific instance of this type""" + id: Int - """skip the first n rows. Use only with order_by""" - offset: Int + """The order that the author is listed as in the associated publication""" + authorListOrder: Int - """sort the rows by one or more columns""" - order_by: [annotations_order_by!] + """The ORCID identifier for the author.""" + orcid: String = null - """filter the rows returned""" - where: annotations_bool_exp - ): annotations_aggregate! + """The full name of the author.""" + name: String - """ - The HTTPS directory path where this tomogram voxel spacing is contained - """ - https_prefix: String + """The email address of the author.""" + email: String = null - """Numeric identifier (May change!)""" - id: Int! + """The name of the author's affiliation.""" + affiliationName: String = null - """An object relationship""" - run: runs! + """The address of the author's affiliation.""" + affiliationAddress: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Int! + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """ - The S3 public bucket path where this tomogram voxel spacing is contained - """ - s3_prefix: String + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """An array relationship""" - tomograms( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null +} - """limit the number of rows returned""" - limit: Int +input AnnotationAuthorWhereClauseMutations { + id: IntComparators +} - """skip the first n rows. Use only with order_by""" - offset: Int +input AnnotationFileCreateInput { + """Tiltseries Alignment""" + alignmentId: ID = null - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] + """Shapes associated with an annotation""" + annotationShapeId: ID = null - """filter the rows returned""" - where: tomograms_bool_exp - ): [tomograms!]! + """Voxel spacings for a run""" + tomogramVoxelSpacingId: ID = null - """An aggregate relationship""" - tomograms_aggregate( - """distinct select on columns""" - distinct_on: [tomograms_select_column!] + """File format label""" + format: String! - """limit the number of rows returned""" - limit: Int + """Path to the file in s3""" + s3Path: String! - """skip the first n rows. Use only with order_by""" - offset: Int + """Path to the file as an https url""" + httpsPath: String! - """sort the rows by one or more columns""" - order_by: [tomograms_order_by!] + """This annotation will be rendered in neuroglancer by default.""" + isVisualizationDefault: Boolean = null - """filter the rows returned""" - where: tomograms_bool_exp - ): tomograms_aggregate! + """The source type for the annotation file""" + source: annotation_file_source_enum = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: numeric! + """An identifier to refer to a specific instance of this type""" + id: Int! } -""" -aggregated selection of "tomogram_voxel_spacings" -""" -type tomogram_voxel_spacings_aggregate { - aggregate: tomogram_voxel_spacings_aggregate_fields - nodes: [tomogram_voxel_spacings!]! -} +input AnnotationFileUpdateInput { + """Tiltseries Alignment""" + alignmentId: ID = null -input tomogram_voxel_spacings_aggregate_bool_exp { - count: tomogram_voxel_spacings_aggregate_bool_exp_count -} + """Shapes associated with an annotation""" + annotationShapeId: ID = null -input tomogram_voxel_spacings_aggregate_bool_exp_count { - arguments: [tomogram_voxel_spacings_select_column!] - distinct: Boolean - filter: tomogram_voxel_spacings_bool_exp - predicate: Int_comparison_exp! -} + """Voxel spacings for a run""" + tomogramVoxelSpacingId: ID = null -""" -aggregate fields of "tomogram_voxel_spacings" -""" -type tomogram_voxel_spacings_aggregate_fields { - avg: tomogram_voxel_spacings_avg_fields - count(columns: [tomogram_voxel_spacings_select_column!], distinct: Boolean): Int! - max: tomogram_voxel_spacings_max_fields - min: tomogram_voxel_spacings_min_fields - stddev: tomogram_voxel_spacings_stddev_fields - stddev_pop: tomogram_voxel_spacings_stddev_pop_fields - stddev_samp: tomogram_voxel_spacings_stddev_samp_fields - sum: tomogram_voxel_spacings_sum_fields - var_pop: tomogram_voxel_spacings_var_pop_fields - var_samp: tomogram_voxel_spacings_var_samp_fields - variance: tomogram_voxel_spacings_variance_fields -} + """File format label""" + format: String -""" -order by aggregate values of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_aggregate_order_by { - avg: tomogram_voxel_spacings_avg_order_by - count: order_by - max: tomogram_voxel_spacings_max_order_by - min: tomogram_voxel_spacings_min_order_by - stddev: tomogram_voxel_spacings_stddev_order_by - stddev_pop: tomogram_voxel_spacings_stddev_pop_order_by - stddev_samp: tomogram_voxel_spacings_stddev_samp_order_by - sum: tomogram_voxel_spacings_sum_order_by - var_pop: tomogram_voxel_spacings_var_pop_order_by - var_samp: tomogram_voxel_spacings_var_samp_order_by - variance: tomogram_voxel_spacings_variance_order_by -} + """Path to the file in s3""" + s3Path: String -"""aggregate avg on columns""" -type tomogram_voxel_spacings_avg_fields { - """Numeric identifier (May change!)""" - id: Float + """Path to the file as an https url""" + httpsPath: String - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """This annotation will be rendered in neuroglancer by default.""" + isVisualizationDefault: Boolean = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float + """The source type for the annotation file""" + source: annotation_file_source_enum = null + + """An identifier to refer to a specific instance of this type""" + id: Int } -""" -order by avg() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_avg_order_by { - """Numeric identifier (May change!)""" - id: order_by +input AnnotationFileWhereClauseMutations { + id: IntComparators +} - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by +input AnnotationShapeCreateInput { + """Metadata about an annotation for a run""" + annotationId: ID = null + shapeType: annotation_file_shape_type_enum = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! } -""" -Boolean expression to filter rows from the table "tomogram_voxel_spacings". All fields are combined with a logical 'AND'. -""" -input tomogram_voxel_spacings_bool_exp { - _and: [tomogram_voxel_spacings_bool_exp!] - _not: tomogram_voxel_spacings_bool_exp - _or: [tomogram_voxel_spacings_bool_exp!] - annotations: annotations_bool_exp - annotations_aggregate: annotations_aggregate_bool_exp - https_prefix: String_comparison_exp - id: Int_comparison_exp - run: runs_bool_exp - run_id: Int_comparison_exp - s3_prefix: String_comparison_exp - tomograms: tomograms_bool_exp - tomograms_aggregate: tomograms_aggregate_bool_exp - voxel_spacing: numeric_comparison_exp -} - -"""aggregate max on columns""" -type tomogram_voxel_spacings_max_fields { - """ - The HTTPS directory path where this tomogram voxel spacing is contained - """ - https_prefix: String +input AnnotationShapeUpdateInput { + """Metadata about an annotation for a run""" + annotationId: ID = null + shapeType: annotation_file_shape_type_enum = null - """Numeric identifier (May change!)""" + """An identifier to refer to a specific instance of this type""" id: Int +} + +input AnnotationShapeWhereClauseMutations { + id: IntComparators +} + +input AnnotationCreateInput { + runId: ID = null + depositionId: ID = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Int + """Path to the file in s3""" + s3MetadataPath: String! + + """Path to the file as an https url""" + httpsMetadataPath: String! """ - The S3 public bucket path where this tomogram voxel spacing is contained + List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. """ - s3_prefix: String - - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: numeric -} + annotationPublication: String = null -""" -order by max() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_max_order_by { """ - The HTTPS directory path where this tomogram voxel spacing is contained + Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) """ - https_prefix: order_by + annotationMethod: String! - """Numeric identifier (May change!)""" - id: order_by + """ + Whether an annotation is considered ground truth, as determined by the annotator. + """ + groundTruthStatus: Boolean = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """Gene Ontology Cellular Component identifier for the annotation object""" + objectId: String! """ - The S3 public bucket path where this tomogram voxel spacing is contained + Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) """ - s3_prefix: order_by - - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + objectName: String! -"""aggregate min on columns""" -type tomogram_voxel_spacings_min_fields { """ - The HTTPS directory path where this tomogram voxel spacing is contained + A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. """ - https_prefix: String + objectDescription: String = null - """Numeric identifier (May change!)""" - id: Int + """Molecule state annotated (e.g. open, closed)""" + objectState: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Int + """Number of objects identified""" + objectCount: Int = null """ - The S3 public bucket path where this tomogram voxel spacing is contained + Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive """ - s3_prefix: String - - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: numeric -} + confidencePrecision: Float = null -""" -order by min() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_min_order_by { """ - The HTTPS directory path where this tomogram voxel spacing is contained + Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly """ - https_prefix: order_by + confidenceRecall: Float = null - """Numeric identifier (May change!)""" - id: order_by + """Annotation filename used as ground truth for precision and recall""" + groundTruthUsed: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """Software used for generating this annotation""" + annotationSoftware: String = null """ - The S3 public bucket path where this tomogram voxel spacing is contained + This annotation is recommended by the curator to be preferred for this object type. """ - s3_prefix: order_by - - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} - -"""Ordering options when selecting data from "tomogram_voxel_spacings".""" -input tomogram_voxel_spacings_order_by { - annotations_aggregate: annotations_aggregate_order_by - https_prefix: order_by - id: order_by - run: runs_order_by - run_id: order_by - s3_prefix: order_by - tomograms_aggregate: tomograms_aggregate_order_by - voxel_spacing: order_by -} + isCuratorRecommended: Boolean = null -""" -select columns of table "tomogram_voxel_spacings" -""" -enum tomogram_voxel_spacings_select_column { - """column name""" - https_prefix + """Classification of the annotation method based on supervision.""" + methodType: annotation_method_type_enum! - """column name""" - id + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! - """column name""" - run_id + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! - """column name""" - s3_prefix + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! - """column name""" - voxel_spacing + """An identifier to refer to a specific instance of this type""" + id: Int! } -"""aggregate stddev on columns""" -type tomogram_voxel_spacings_stddev_fields { - """Numeric identifier (May change!)""" - id: Float +input AnnotationUpdateInput { + runId: ID = null + depositionId: ID = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """Path to the file in s3""" + s3MetadataPath: String - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float -} + """Path to the file as an https url""" + httpsMetadataPath: String -""" -order by stddev() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_stddev_order_by { - """Numeric identifier (May change!)""" - id: order_by + """ + List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + """ + annotationPublication: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """ + Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + """ + annotationMethod: String - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """ + Whether an annotation is considered ground truth, as determined by the annotator. + """ + groundTruthStatus: Boolean = null -"""aggregate stddev_pop on columns""" -type tomogram_voxel_spacings_stddev_pop_fields { - """Numeric identifier (May change!)""" - id: Float + """Gene Ontology Cellular Component identifier for the annotation object""" + objectId: String - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """ + Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + """ + objectName: String - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float -} + """ + A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + """ + objectDescription: String = null -""" -order by stddev_pop() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_stddev_pop_order_by { - """Numeric identifier (May change!)""" - id: order_by + """Molecule state annotated (e.g. open, closed)""" + objectState: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """Number of objects identified""" + objectCount: Int = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """ + Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + """ + confidencePrecision: Float = null -"""aggregate stddev_samp on columns""" -type tomogram_voxel_spacings_stddev_samp_fields { - """Numeric identifier (May change!)""" - id: Float + """ + Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + """ + confidenceRecall: Float = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """Annotation filename used as ground truth for precision and recall""" + groundTruthUsed: String = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float -} + """Software used for generating this annotation""" + annotationSoftware: String = null -""" -order by stddev_samp() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_stddev_samp_order_by { - """Numeric identifier (May change!)""" - id: order_by + """ + This annotation is recommended by the curator to be preferred for this object type. + """ + isCuratorRecommended: Boolean = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """Classification of the annotation method based on supervision.""" + methodType: annotation_method_type_enum - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime -"""aggregate sum on columns""" -type tomogram_voxel_spacings_sum_fields { - """Numeric identifier (May change!)""" - id: Int + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Int + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: numeric + """An identifier to refer to a specific instance of this type""" + id: Int } -""" -order by sum() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_sum_order_by { - """Numeric identifier (May change!)""" - id: order_by +input AnnotationWhereClauseMutations { + id: IntComparators +} - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by +input DatasetAuthorCreateInput { + """An author of a dataset""" + datasetId: ID = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """An identifier to refer to a specific instance of this type""" + id: Int! -"""aggregate var_pop on columns""" -type tomogram_voxel_spacings_var_pop_fields { - """Numeric identifier (May change!)""" - id: Float + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """The ORCID identifier for the author.""" + orcid: String = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float -} + """The full name of the author.""" + name: String! -""" -order by var_pop() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_var_pop_order_by { - """Numeric identifier (May change!)""" - id: order_by + """The email address of the author.""" + email: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """The name of the author's affiliation.""" + affiliationName: String = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """The address of the author's affiliation.""" + affiliationAddress: String = null -"""aggregate var_samp on columns""" -type tomogram_voxel_spacings_var_samp_fields { - """Numeric identifier (May change!)""" - id: Float + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null } -""" -order by var_samp() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_var_samp_order_by { - """Numeric identifier (May change!)""" - id: order_by +input DatasetAuthorUpdateInput { + """An author of a dataset""" + datasetId: ID = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """The order that the author is listed as in the associated publication""" + authorListOrder: Int -"""aggregate variance on columns""" -type tomogram_voxel_spacings_variance_fields { - """Numeric identifier (May change!)""" - id: Float + """The ORCID identifier for the author.""" + orcid: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: Float + """The full name of the author.""" + name: String - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: Float -} + """The email address of the author.""" + email: String = null -""" -order by variance() on columns of table "tomogram_voxel_spacings" -""" -input tomogram_voxel_spacings_variance_order_by { - """Numeric identifier (May change!)""" - id: order_by + """The name of the author's affiliation.""" + affiliationName: String = null - """The ID of the run this tomogram voxel spacing is a part of""" - run_id: order_by + """The address of the author's affiliation.""" + affiliationAddress: String = null - """The voxel spacing for the tomograms in this set in angstroms""" - voxel_spacing: order_by -} + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null -"""Metadata for a tomogram""" -type tomograms { - """ - The flip or rotation transformation of this author submitted tomogram is indicated here - """ - affine_transformation_matrix: _numeric + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """An array relationship""" - authors( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null +} - """limit the number of rows returned""" - limit: Int +input DatasetAuthorWhereClauseMutations { + id: IntComparators +} - """skip the first n rows. Use only with order_by""" - offset: Int +input DatasetFundingCreateInput { + """An author of a dataset""" + datasetId: ID = null - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] + """The name of the funding source.""" + fundingAgencyName: String = null - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): [tomogram_authors!]! + """Grant identifier provided by the funding agency""" + grantId: String = null - """An aggregate relationship""" - authors_aggregate( - """distinct select on columns""" - distinct_on: [tomogram_authors_select_column!] + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """limit the number of rows returned""" - limit: Int +input DatasetFundingUpdateInput { + """An author of a dataset""" + datasetId: ID = null - """skip the first n rows. Use only with order_by""" - offset: Int + """The name of the funding source.""" + fundingAgencyName: String = null - """sort the rows by one or more columns""" - order_by: [tomogram_authors_order_by!] + """Grant identifier provided by the funding agency""" + grantId: String = null - """filter the rows returned""" - where: tomogram_authors_bool_exp - ): tomogram_authors_aggregate! + """An identifier to refer to a specific instance of this type""" + id: Int +} - """Whether this tomogram is CTF corrected""" - ctf_corrected: Boolean +input DatasetFundingWhereClauseMutations { + id: IntComparators +} - """An object relationship""" - deposition: depositions +input DatasetCreateInput { + depositionId: ID = null - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Int + """Title of a CryoET dataset.""" + title: String! """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. """ - fiducial_alignment_status: String! - - """HTTPS path to this tomogram in MRC format (no scaling)""" - https_mrc_scale0: String! - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String! - - """Numeric identifier for this tomogram (this may change!)""" - id: Int! + description: String! """ - Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. """ - is_canonical: Boolean + organismName: String! - """URL for the thumbnail of key photo""" - key_photo_thumbnail_url: String + """NCBI taxonomy identifier for the organism, e.g. 9606""" + organismTaxid: Int = null - """URL for the key photo""" - key_photo_url: String + """ + Name of the tissue from which a biological sample used in a CryoET study is derived from. + """ + tissueName: String = null - """Short name for this tomogram""" - name: String! + """The UBERON identifier for the tissue.""" + tissueId: String = null - """the compact json of neuroglancer config""" - neuroglancer_config: String + """ + Name of the cell type from which a biological sample used in a CryoET study is derived from. + """ + cellName: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Int! + """Cell Ontology identifier for the cell type""" + cellTypeId: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Int! + """Cell line or strain for the sample.""" + cellStrainName: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Int! + """Link to more information about the cell strain.""" + cellStrainId: String = null - """Describe additional processing used to derive the tomogram""" - processing: String! + """Type of sample imaged in a CryoET study""" + sampleType: sample_type_enum = null - """Processing software used to derive the tomogram""" - processing_software: String + """Describes how the sample was prepared.""" + samplePreparation: String = null - """Describe reconstruction method (Weighted back-projection, SART, SIRT)""" - reconstruction_method: String! + """Describes Cryo-ET grid preparation.""" + gridPreparation: String = null - """Name of software used for reconstruction""" - reconstruction_software: String! + """ + Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + """ + otherSetup: String = null - """S3 path to this tomogram in MRC format (no scaling)""" - s3_mrc_scale0: String! + """URL for the dataset preview image.""" + keyPhotoUrl: String = null - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String! + """URL for the thumbnail of preview image.""" + keyPhotoThumbnailUrl: String = null - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0_dimensions: String! + """Name of the cellular component.""" + cellComponentName: String = null - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1_dimensions: String! + """The GO identifier for the cellular component.""" + cellComponentId: String = null - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2_dimensions: String! + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! - """Number of pixels in the 3D data fast axis""" - size_x: Int! + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! - """Number of pixels in the 3D data medium axis""" - size_y: Int! + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Comma-separated list of DOIs for publications associated with the dataset. """ - size_z: Int! + publications: String = null - """An object relationship""" - tomogram_type: tomogram_type + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String = null - """ - Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - """ - tomogram_version: String! + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """An object relationship""" - tomogram_voxel_spacing: tomogram_voxel_spacings + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Int + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """Tomogram purpose (ex: CANONICAL)""" - type: tomogram_type_enum +input DatasetUpdateInput { + depositionId: ID = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: numeric! -} + """Title of a CryoET dataset.""" + title: String -""" -aggregated selection of "tomograms" -""" -type tomograms_aggregate { - aggregate: tomograms_aggregate_fields - nodes: [tomograms!]! -} + """ + A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. + """ + description: String -input tomograms_aggregate_bool_exp { - bool_and: tomograms_aggregate_bool_exp_bool_and - bool_or: tomograms_aggregate_bool_exp_bool_or - count: tomograms_aggregate_bool_exp_count -} + """ + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + """ + organismName: String -input tomograms_aggregate_bool_exp_bool_and { - arguments: tomograms_select_column_tomograms_aggregate_bool_exp_bool_and_arguments_columns! - distinct: Boolean - filter: tomograms_bool_exp - predicate: Boolean_comparison_exp! -} + """NCBI taxonomy identifier for the organism, e.g. 9606""" + organismTaxid: Int = null -input tomograms_aggregate_bool_exp_bool_or { - arguments: tomograms_select_column_tomograms_aggregate_bool_exp_bool_or_arguments_columns! - distinct: Boolean - filter: tomograms_bool_exp - predicate: Boolean_comparison_exp! -} + """ + Name of the tissue from which a biological sample used in a CryoET study is derived from. + """ + tissueName: String = null -input tomograms_aggregate_bool_exp_count { - arguments: [tomograms_select_column!] - distinct: Boolean - filter: tomograms_bool_exp - predicate: Int_comparison_exp! -} + """The UBERON identifier for the tissue.""" + tissueId: String = null -""" -aggregate fields of "tomograms" -""" -type tomograms_aggregate_fields { - avg: tomograms_avg_fields - count(columns: [tomograms_select_column!], distinct: Boolean): Int! - max: tomograms_max_fields - min: tomograms_min_fields - stddev: tomograms_stddev_fields - stddev_pop: tomograms_stddev_pop_fields - stddev_samp: tomograms_stddev_samp_fields - sum: tomograms_sum_fields - var_pop: tomograms_var_pop_fields - var_samp: tomograms_var_samp_fields - variance: tomograms_variance_fields -} + """ + Name of the cell type from which a biological sample used in a CryoET study is derived from. + """ + cellName: String = null -""" -order by aggregate values of table "tomograms" -""" -input tomograms_aggregate_order_by { - avg: tomograms_avg_order_by - count: order_by - max: tomograms_max_order_by - min: tomograms_min_order_by - stddev: tomograms_stddev_order_by - stddev_pop: tomograms_stddev_pop_order_by - stddev_samp: tomograms_stddev_samp_order_by - sum: tomograms_sum_order_by - var_pop: tomograms_var_pop_order_by - var_samp: tomograms_var_samp_order_by - variance: tomograms_variance_order_by -} - -"""aggregate avg on columns""" -type tomograms_avg_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float - - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """Cell Ontology identifier for the cell type""" + cellTypeId: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Cell line or strain for the sample.""" + cellStrainName: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """Link to more information about the cell strain.""" + cellStrainId: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """Type of sample imaged in a CryoET study""" + sampleType: sample_type_enum = null - """Number of pixels in the 3D data fast axis""" - size_x: Float + """Describes how the sample was prepared.""" + samplePreparation: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Float + """Describes Cryo-ET grid preparation.""" + gridPreparation: String = null """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. """ - size_z: Float - - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float - - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float -} + otherSetup: String = null -""" -order by avg() on columns of table "tomograms" -""" -input tomograms_avg_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by + """URL for the dataset preview image.""" + keyPhotoUrl: String = null - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """URL for the thumbnail of preview image.""" + keyPhotoThumbnailUrl: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """Name of the cellular component.""" + cellComponentName: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """The GO identifier for the cellular component.""" + cellComponentId: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Comma-separated list of DOIs for publications associated with the dataset. """ - size_z: order_by + publications: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} - -""" -Boolean expression to filter rows from the table "tomograms". All fields are combined with a logical 'AND'. -""" -input tomograms_bool_exp { - _and: [tomograms_bool_exp!] - _not: tomograms_bool_exp - _or: [tomograms_bool_exp!] - affine_transformation_matrix: _numeric_comparison_exp - authors: tomogram_authors_bool_exp - authors_aggregate: tomogram_authors_aggregate_bool_exp - ctf_corrected: Boolean_comparison_exp - deposition: depositions_bool_exp - deposition_id: Int_comparison_exp - fiducial_alignment_status: String_comparison_exp - https_mrc_scale0: String_comparison_exp - https_omezarr_dir: String_comparison_exp - id: Int_comparison_exp - is_canonical: Boolean_comparison_exp - key_photo_thumbnail_url: String_comparison_exp - key_photo_url: String_comparison_exp - name: String_comparison_exp - neuroglancer_config: String_comparison_exp - offset_x: Int_comparison_exp - offset_y: Int_comparison_exp - offset_z: Int_comparison_exp - processing: String_comparison_exp - processing_software: String_comparison_exp - reconstruction_method: String_comparison_exp - reconstruction_software: String_comparison_exp - s3_mrc_scale0: String_comparison_exp - s3_omezarr_dir: String_comparison_exp - scale0_dimensions: String_comparison_exp - scale1_dimensions: String_comparison_exp - scale2_dimensions: String_comparison_exp - size_x: Int_comparison_exp - size_y: Int_comparison_exp - size_z: Int_comparison_exp - tomogram_type: tomogram_type_bool_exp - tomogram_version: String_comparison_exp - tomogram_voxel_spacing: tomogram_voxel_spacings_bool_exp - tomogram_voxel_spacing_id: Int_comparison_exp - type: tomogram_type_enum_comparison_exp - voxel_spacing: numeric_comparison_exp -} - -"""aggregate max on columns""" -type tomograms_max_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Int + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String - """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial - """ - fiducial_alignment_status: String + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String - """HTTPS path to this tomogram in MRC format (no scaling)""" - https_mrc_scale0: String + """An identifier to refer to a specific instance of this type""" + id: Int +} - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String +input DatasetWhereClauseMutations { + id: IntComparators +} - """Numeric identifier for this tomogram (this may change!)""" - id: Int +input DepositionAuthorCreateInput { + depositionId: ID = null - """URL for the thumbnail of key photo""" - key_photo_thumbnail_url: String + """An identifier to refer to a specific instance of this type""" + id: Int! - """URL for the key photo""" - key_photo_url: String + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """Short name for this tomogram""" - name: String + """The ORCID identifier for the author.""" + orcid: String = null - """the compact json of neuroglancer config""" - neuroglancer_config: String + """The full name of the author.""" + name: String! - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Int + """The email address of the author.""" + email: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Int + """The name of the author's affiliation.""" + affiliationName: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Int + """The address of the author's affiliation.""" + affiliationAddress: String = null - """Describe additional processing used to derive the tomogram""" - processing: String + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """Processing software used to derive the tomogram""" - processing_software: String + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """Describe reconstruction method (Weighted back-projection, SART, SIRT)""" - reconstruction_method: String + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null +} - """Name of software used for reconstruction""" - reconstruction_software: String +input DepositionAuthorUpdateInput { + depositionId: ID = null - """S3 path to this tomogram in MRC format (no scaling)""" - s3_mrc_scale0: String + """An identifier to refer to a specific instance of this type""" + id: Int - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String + """The order that the author is listed as in the associated publication""" + authorListOrder: Int - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0_dimensions: String + """The ORCID identifier for the author.""" + orcid: String = null - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1_dimensions: String + """The full name of the author.""" + name: String - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2_dimensions: String + """The email address of the author.""" + email: String = null - """Number of pixels in the 3D data fast axis""" - size_x: Int + """The name of the author's affiliation.""" + affiliationName: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Int + """The address of the author's affiliation.""" + affiliationAddress: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Int + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """ - Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - """ - tomogram_version: String + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Int + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null +} - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: numeric +input DepositionAuthorWhereClauseMutations { + id: IntComparators } -""" -order by max() on columns of table "tomograms" -""" -input tomograms_max_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by +input DepositionCreateInput { + """Title of a CryoET deposition.""" + depositionTitle: String! """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + A short description of the deposition, similar to an abstract for a journal article or dataset. """ - fiducial_alignment_status: order_by - - """HTTPS path to this tomogram in MRC format (no scaling)""" - https_mrc_scale0: order_by + depositionDescription: String! - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: order_by - - """Numeric identifier for this tomogram (this may change!)""" - id: order_by - - """URL for the thumbnail of key photo""" - key_photo_thumbnail_url: order_by - - """URL for the key photo""" - key_photo_url: order_by - - """Short name for this tomogram""" - name: order_by + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String = null - """the compact json of neuroglancer config""" - neuroglancer_config: order_by + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime! - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime! - """Describe additional processing used to derive the tomogram""" - processing: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """Processing software used to derive the tomogram""" - processing_software: order_by +input DepositionUpdateInput { + """Title of a CryoET deposition.""" + depositionTitle: String - """Describe reconstruction method (Weighted back-projection, SART, SIRT)""" - reconstruction_method: order_by + """ + A short description of the deposition, similar to an abstract for a journal article or dataset. + """ + depositionDescription: String - """Name of software used for reconstruction""" - reconstruction_software: order_by + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String = null - """S3 path to this tomogram in MRC format (no scaling)""" - s3_mrc_scale0: order_by + """Comma-separated list of related database entries for the dataset.""" + relatedDatabaseEntries: String = null - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: order_by + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0_dimensions: order_by + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1_dimensions: order_by + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2_dimensions: order_by + """An identifier to refer to a specific instance of this type""" + id: Int +} - """Number of pixels in the 3D data fast axis""" - size_x: order_by +input DepositionWhereClauseMutations { + id: IntComparators +} - """Number of pixels in the 3D data medium axis""" - size_y: order_by +input DepositionTypeCreateInput { + depositionId: ID = null + type: deposition_types_enum = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """ - Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - """ - tomogram_version: order_by +input DepositionTypeUpdateInput { + depositionId: ID = null + type: deposition_types_enum = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int +} - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by +input DepositionTypeWhereClauseMutations { + id: IntComparators } -"""aggregate min on columns""" -type tomograms_min_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Int +input FrameCreateInput { + depositionId: ID = null + runId: ID = null - """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial - """ - fiducial_alignment_status: String + """Camera angle for a frame""" + rawAngle: Float! - """HTTPS path to this tomogram in MRC format (no scaling)""" - https_mrc_scale0: String + """Frame's acquistion order within a tilt experiment""" + acquisitionOrder: Int = null - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: String + """The raw camera angle for a frame""" + dose: Float! - """Numeric identifier for this tomogram (this may change!)""" - id: Int + """Whether this frame has been gain corrected""" + isGainCorrected: Boolean = null - """URL for the thumbnail of key photo""" - key_photo_thumbnail_url: String + """S3 path to the gain file for this frame""" + s3GainFile: String = null - """URL for the key photo""" - key_photo_url: String + """HTTPS path to the gain file for this frame""" + httpsGainFile: String = null - """Short name for this tomogram""" - name: String + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """the compact json of neuroglancer config""" - neuroglancer_config: String + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Int + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Int +input FrameUpdateInput { + depositionId: ID = null + runId: ID = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Int + """Camera angle for a frame""" + rawAngle: Float - """Describe additional processing used to derive the tomogram""" - processing: String + """Frame's acquistion order within a tilt experiment""" + acquisitionOrder: Int = null - """Processing software used to derive the tomogram""" - processing_software: String + """The raw camera angle for a frame""" + dose: Float - """Describe reconstruction method (Weighted back-projection, SART, SIRT)""" - reconstruction_method: String + """Whether this frame has been gain corrected""" + isGainCorrected: Boolean = null - """Name of software used for reconstruction""" - reconstruction_software: String + """S3 path to the gain file for this frame""" + s3GainFile: String = null - """S3 path to this tomogram in MRC format (no scaling)""" - s3_mrc_scale0: String + """HTTPS path to the gain file for this frame""" + httpsGainFile: String = null - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: String + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0_dimensions: String + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1_dimensions: String + """An identifier to refer to a specific instance of this type""" + id: Int +} - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2_dimensions: String +input FrameWhereClauseMutations { + id: IntComparators +} - """Number of pixels in the 3D data fast axis""" - size_x: Int +input PerSectionParametersCreateInput { + frameId: ID! + tiltseriesId: ID! - """Number of pixels in the 3D data medium axis""" - size_y: Int + """z-index of the frame in the tiltseries""" + zIndex: Int! - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Int + """defocus amount""" + defocus: Float = null - """ - Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - """ - tomogram_version: String + """Astigmatism amount for this frame""" + astigmatism: Float = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Int + """Angle of ast""" + astigmaticAngle: Float = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: numeric + """An identifier to refer to a specific instance of this type""" + id: Int! } -""" -order by min() on columns of table "tomograms" -""" -input tomograms_min_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by - - """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial - """ - fiducial_alignment_status: order_by - - """HTTPS path to this tomogram in MRC format (no scaling)""" - https_mrc_scale0: order_by - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - https_omezarr_dir: order_by +input PerSectionParametersUpdateInput { + frameId: ID + tiltseriesId: ID - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """z-index of the frame in the tiltseries""" + zIndex: Int - """URL for the thumbnail of key photo""" - key_photo_thumbnail_url: order_by + """defocus amount""" + defocus: Float = null - """URL for the key photo""" - key_photo_url: order_by + """Astigmatism amount for this frame""" + astigmatism: Float = null - """Short name for this tomogram""" - name: order_by + """Angle of ast""" + astigmaticAngle: Float = null - """the compact json of neuroglancer config""" - neuroglancer_config: order_by + """An identifier to refer to a specific instance of this type""" + id: Int +} - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by +input PerSectionParametersWhereClauseMutations { + id: IntComparators +} - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by +input PerSectionAlignmentParametersCreateInput { + """Tiltseries Alignment""" + alignmentId: ID! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """z-index of the frame in the tiltseries""" + zIndex: Int! - """Describe additional processing used to derive the tomogram""" - processing: order_by + """In-plane X-shift of the projection in angstrom""" + xOffset: Float = null - """Processing software used to derive the tomogram""" - processing_software: order_by + """In-plane Y-shift of the projection in angstrom""" + yOffset: Float = null - """Describe reconstruction method (Weighted back-projection, SART, SIRT)""" - reconstruction_method: order_by + """In-plane rotation of the projection in degrees""" + inPlaneRotation: Float = null - """Name of software used for reconstruction""" - reconstruction_software: order_by + """Beam tilt during projection in degrees""" + beamTilt: Float = null - """S3 path to this tomogram in MRC format (no scaling)""" - s3_mrc_scale0: order_by + """Tilt angle of the projection in degrees""" + tiltAngle: Float = null - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3_omezarr_dir: order_by + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0_dimensions: order_by +input PerSectionAlignmentParametersUpdateInput { + """Tiltseries Alignment""" + alignmentId: ID - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1_dimensions: order_by + """z-index of the frame in the tiltseries""" + zIndex: Int - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2_dimensions: order_by + """In-plane X-shift of the projection in angstrom""" + xOffset: Float = null - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """In-plane Y-shift of the projection in angstrom""" + yOffset: Float = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """In-plane rotation of the projection in degrees""" + inPlaneRotation: Float = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """Beam tilt during projection in degrees""" + beamTilt: Float = null - """ - Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version - """ - tomogram_version: order_by + """Tilt angle of the projection in degrees""" + tiltAngle: Float = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """An identifier to refer to a specific instance of this type""" + id: Int +} - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} - -"""Ordering options when selecting data from "tomograms".""" -input tomograms_order_by { - affine_transformation_matrix: order_by - authors_aggregate: tomogram_authors_aggregate_order_by - ctf_corrected: order_by - deposition: depositions_order_by - deposition_id: order_by - fiducial_alignment_status: order_by - https_mrc_scale0: order_by - https_omezarr_dir: order_by - id: order_by - is_canonical: order_by - key_photo_thumbnail_url: order_by - key_photo_url: order_by - name: order_by - neuroglancer_config: order_by - offset_x: order_by - offset_y: order_by - offset_z: order_by - processing: order_by - processing_software: order_by - reconstruction_method: order_by - reconstruction_software: order_by - s3_mrc_scale0: order_by - s3_omezarr_dir: order_by - scale0_dimensions: order_by - scale1_dimensions: order_by - scale2_dimensions: order_by - size_x: order_by - size_y: order_by - size_z: order_by - tomogram_type: tomogram_type_order_by - tomogram_version: order_by - tomogram_voxel_spacing: tomogram_voxel_spacings_order_by - tomogram_voxel_spacing_id: order_by - type: order_by - voxel_spacing: order_by +input PerSectionAlignmentParametersWhereClauseMutations { + id: IntComparators } -""" -select columns of table "tomograms" -""" -enum tomograms_select_column { - """column name""" - affine_transformation_matrix +input RunCreateInput { + """An author of a dataset""" + datasetId: ID! - """column name""" - ctf_corrected + """Name of a run""" + name: String! - """column name""" - deposition_id + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """column name""" - fiducial_alignment_status + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! - """column name""" - https_mrc_scale0 + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """column name""" - https_omezarr_dir +input RunUpdateInput { + """An author of a dataset""" + datasetId: ID - """column name""" - id + """Name of a run""" + name: String - """column name""" - is_canonical + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String - """column name""" - key_photo_thumbnail_url + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String - """column name""" - key_photo_url + """An identifier to refer to a specific instance of this type""" + id: Int +} - """column name""" - name +input RunWhereClauseMutations { + id: IntComparators +} - """column name""" - neuroglancer_config +input TiltseriesCreateInput { + runId: ID! + depositionId: ID = null - """column name""" - offset_x + """S3 path to this tiltseries in multiscale OME-Zarr format""" + s3OmezarrDir: String = null - """column name""" - offset_y + """S3 path to this tiltseries in MRC format (no scaling)""" + s3MrcFile: String = null - """column name""" - offset_z + """HTTPS path to this tiltseries in multiscale OME-Zarr format""" + httpsOmezarrDir: String = null - """column name""" - processing + """HTTPS path to this tiltseries in MRC format (no scaling)""" + httpsMrcFile: String = null - """column name""" - processing_software + """S3 path to the collection metadata file for this tiltseries""" + s3CollectionMetadata: String = null - """column name""" - reconstruction_method + """HTTPS path to the collection metadata file for this tiltseries""" + httpsCollectionMetadata: String = null - """column name""" - reconstruction_software + """S3 path to the angle list file for this tiltseries""" + s3AngleList: String = null - """column name""" - s3_mrc_scale0 + """HTTPS path to the angle list file for this tiltseries""" + httpsAngleList: String = null - """column name""" - s3_omezarr_dir + """S3 path to the gain file for this tiltseries""" + s3GainFile: String = null - """column name""" - scale0_dimensions + """HTTPS path to the gain file for this tiltseries""" + httpsGainFile: String = null - """column name""" - scale1_dimensions + """Electron Microscope Accelerator voltage in volts""" + accelerationVoltage: Float! - """column name""" - scale2_dimensions + """Spherical Aberration Constant of the objective lens in millimeters""" + sphericalAberrationConstant: Float! - """column name""" - size_x + """Name of the microscope manufacturer""" + microscopeManufacturer: tiltseries_microscope_manufacturer_enum! - """column name""" - size_y + """Microscope model name""" + microscopeModel: String! - """column name""" - size_z + """Energy filter setup used""" + microscopeEnergyFilter: String! - """column name""" - tomogram_version + """Phase plate configuration""" + microscopePhasePlate: String = null - """column name""" - tomogram_voxel_spacing_id + """Image corrector setup""" + microscopeImageCorrector: String = null - """column name""" - type + """ + Other microscope optical setup information, in addition to energy filter, phase plate and image corrector + """ + microscopeAdditionalInfo: String = null - """column name""" - voxel_spacing -} + """Name of the camera manufacturer""" + cameraManufacturer: String! -""" -select "tomograms_aggregate_bool_exp_bool_and_arguments_columns" columns of table "tomograms" -""" -enum tomograms_select_column_tomograms_aggregate_bool_exp_bool_and_arguments_columns { - """column name""" - ctf_corrected + """Camera model name""" + cameraModel: String! - """column name""" - is_canonical -} + """Minimal tilt angle in degrees""" + tiltMin: Float! -""" -select "tomograms_aggregate_bool_exp_bool_or_arguments_columns" columns of table "tomograms" -""" -enum tomograms_select_column_tomograms_aggregate_bool_exp_bool_or_arguments_columns { - """column name""" - ctf_corrected + """Maximal tilt angle in degrees""" + tiltMax: Float! - """column name""" - is_canonical -} + """Total tilt range from min to max in degrees""" + tiltRange: Float! -"""aggregate stddev on columns""" -type tomograms_stddev_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float + """Tilt step in degrees""" + tiltStep: Float! - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """The order of stage tilting during acquisition of the data""" + tiltingScheme: String! - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Rotation angle in degrees""" + tiltAxis: Float! - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """ + Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + """ + totalFlux: Float! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """Software used to collect data""" + dataAcquisitionSoftware: String! - """Number of pixels in the 3D data fast axis""" - size_x: Float + """ + If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + """ + relatedEmpiarEntry: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Float + """Describes the binning factor from frames to tilt series file""" + binningFromFrames: Float = null """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Author assessment of tilt series quality within the dataset (1-5, 5 is best) """ - size_z: Float + tiltSeriesQuality: Int! - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + """Whether this tilt series is aligned""" + isAligned: Boolean! - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float + """Pixel spacing for the tilt series""" + pixelSpacing: Float! + + """Binning factor of the aligned tilt series""" + alignedTiltseriesBinning: Float = null + + """Number of frames associated with this tiltseries""" + tiltseriesFramesCount: Int = null + + """An identifier to refer to a specific instance of this type""" + id: Int! } -""" -order by stddev() on columns of table "tomograms" -""" -input tomograms_stddev_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by +input TiltseriesUpdateInput { + runId: ID + depositionId: ID = null - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """S3 path to this tiltseries in multiscale OME-Zarr format""" + s3OmezarrDir: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """S3 path to this tiltseries in MRC format (no scaling)""" + s3MrcFile: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """HTTPS path to this tiltseries in multiscale OME-Zarr format""" + httpsOmezarrDir: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """HTTPS path to this tiltseries in MRC format (no scaling)""" + httpsMrcFile: String = null + + """S3 path to the collection metadata file for this tiltseries""" + s3CollectionMetadata: String = null - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """HTTPS path to the collection metadata file for this tiltseries""" + httpsCollectionMetadata: String = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """S3 path to the angle list file for this tiltseries""" + s3AngleList: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """HTTPS path to the angle list file for this tiltseries""" + httpsAngleList: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """S3 path to the gain file for this tiltseries""" + s3GainFile: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} + """HTTPS path to the gain file for this tiltseries""" + httpsGainFile: String = null -"""aggregate stddev_pop on columns""" -type tomograms_stddev_pop_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float + """Electron Microscope Accelerator voltage in volts""" + accelerationVoltage: Float - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """Spherical Aberration Constant of the objective lens in millimeters""" + sphericalAberrationConstant: Float - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Name of the microscope manufacturer""" + microscopeManufacturer: tiltseries_microscope_manufacturer_enum - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """Microscope model name""" + microscopeModel: String - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """Energy filter setup used""" + microscopeEnergyFilter: String - """Number of pixels in the 3D data fast axis""" - size_x: Float + """Phase plate configuration""" + microscopePhasePlate: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Float + """Image corrector setup""" + microscopeImageCorrector: String = null """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Other microscope optical setup information, in addition to energy filter, phase plate and image corrector """ - size_z: Float - - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + microscopeAdditionalInfo: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float -} + """Name of the camera manufacturer""" + cameraManufacturer: String -""" -order by stddev_pop() on columns of table "tomograms" -""" -input tomograms_stddev_pop_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by + """Camera model name""" + cameraModel: String - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """Minimal tilt angle in degrees""" + tiltMin: Float - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """Maximal tilt angle in degrees""" + tiltMax: Float - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """Total tilt range from min to max in degrees""" + tiltRange: Float - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """Tilt step in degrees""" + tiltStep: Float - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """The order of stage tilting during acquisition of the data""" + tiltingScheme: String - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """Rotation angle in degrees""" + tiltAxis: Float """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series """ - size_z: order_by - - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by - - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} + totalFlux: Float -"""aggregate stddev_samp on columns""" -type tomograms_stddev_samp_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float + """Software used to collect data""" + dataAcquisitionSoftware: String - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """ + If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + """ + relatedEmpiarEntry: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Describes the binning factor from frames to tilt series file""" + binningFromFrames: Float = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """ + Author assessment of tilt series quality within the dataset (1-5, 5 is best) + """ + tiltSeriesQuality: Int - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """Whether this tilt series is aligned""" + isAligned: Boolean - """Number of pixels in the 3D data fast axis""" - size_x: Float + """Pixel spacing for the tilt series""" + pixelSpacing: Float - """Number of pixels in the 3D data medium axis""" - size_y: Float + """Binning factor of the aligned tilt series""" + alignedTiltseriesBinning: Float = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Float + """Number of frames associated with this tiltseries""" + tiltseriesFramesCount: Int = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + """An identifier to refer to a specific instance of this type""" + id: Int +} - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float +input TiltseriesWhereClauseMutations { + id: IntComparators } -""" -order by stddev_samp() on columns of table "tomograms" -""" -input tomograms_stddev_samp_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by +input TomogramAuthorCreateInput { + """Metadata describing a tomogram.""" + tomogramId: ID = null + + """An identifier to refer to a specific instance of this type""" + id: Int! - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """The order that the author is listed as in the associated publication""" + authorListOrder: Int! - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """The ORCID identifier for the author.""" + orcid: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """The full name of the author.""" + name: String! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """The email address of the author.""" + email: String = null - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """The name of the author's affiliation.""" + affiliationName: String = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """The address of the author's affiliation.""" + affiliationAddress: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null } -"""aggregate sum on columns""" -type tomograms_sum_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Int +input TomogramAuthorUpdateInput { + """Metadata describing a tomogram.""" + tomogramId: ID = null - """Numeric identifier for this tomogram (this may change!)""" + """An identifier to refer to a specific instance of this type""" id: Int - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Int + """The order that the author is listed as in the associated publication""" + authorListOrder: Int - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Int + """The ORCID identifier for the author.""" + orcid: String = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Int + """The full name of the author.""" + name: String - """Number of pixels in the 3D data fast axis""" - size_x: Int + """The email address of the author.""" + email: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Int + """The name of the author's affiliation.""" + affiliationName: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Int + """The address of the author's affiliation.""" + affiliationAddress: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Int + """A Research Organization Registry (ROR) identifier.""" + affiliationIdentifier: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: numeric + """Whether the author is a corresponding author.""" + correspondingAuthorStatus: Boolean = null + + """Whether the author is a primary author.""" + primaryAuthorStatus: Boolean = null } -""" -order by sum() on columns of table "tomograms" -""" -input tomograms_sum_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by +input TomogramAuthorWhereClauseMutations { + id: IntComparators +} - """Numeric identifier for this tomogram (this may change!)""" - id: order_by +input TomogramVoxelSpacingCreateInput { + runId: ID = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float! - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String! + + """An identifier to refer to a specific instance of this type""" + id: Int! +} - """Number of pixels in the 3D data fast axis""" - size_x: order_by +input TomogramVoxelSpacingUpdateInput { + runId: ID = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """Path to a directory containing data for this entity as an S3 url""" + s3Prefix: String - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """Path to a directory containing data for this entity as an HTTPS url""" + httpsPrefix: String - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by + """An identifier to refer to a specific instance of this type""" + id: Int +} + +input TomogramVoxelSpacingWhereClauseMutations { + id: IntComparators } -"""aggregate var_pop on columns""" -type tomograms_var_pop_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float +input TomogramCreateInput { + """Tiltseries Alignment""" + alignmentId: ID = null + depositionId: ID = null + runId: ID = null - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """Voxel spacings for a run""" + tomogramVoxelSpacingId: ID = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Short name for this tomogram""" + name: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """Tomogram voxels in the x dimension""" + sizeX: Float! - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """Tomogram voxels in the y dimension""" + sizeY: Float! - """Number of pixels in the 3D data fast axis""" - size_x: Float + """Tomogram voxels in the z dimension""" + sizeZ: Float! - """Number of pixels in the 3D data medium axis""" - size_y: Float + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float! """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Whether the tomographic alignment was computed based on fiducial markers. """ - size_z: Float + fiducialAlignmentStatus: fiducial_alignment_status_enum! - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + """Describe reconstruction method (WBP, SART, SIRT)""" + reconstructionMethod: tomogram_reconstruction_method_enum! - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float -} + """Describe additional processing used to derive the tomogram""" + processing: tomogram_processing_enum! -""" -order by var_pop() on columns of table "tomograms" -""" -input tomograms_var_pop_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by + """Version of tomogram""" + tomogramVersion: Float = null - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """Processing software used to derive the tomogram""" + processingSoftware: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """Name of software used for reconstruction""" + reconstructionSoftware: String! - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """whether this tomogram is canonical for the run""" + isCanonical: Boolean = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """S3 path to this tomogram in multiscale OME-Zarr format""" + s3OmezarrDir: String = null - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """HTTPS path to this tomogram in multiscale OME-Zarr format""" + httpsOmezarrDir: String = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """S3 path to this tomogram in MRC format (no scaling)""" + s3MrcFile: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """HTTPS path to this tomogram in MRC format (no scaling)""" + httpsMrcFile: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """comma separated x,y,z dimensions of the unscaled tomogram""" + scale0Dimensions: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} + """comma separated x,y,z dimensions of the scale1 tomogram""" + scale1Dimensions: String = null -"""aggregate var_samp on columns""" -type tomograms_var_samp_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float + """comma separated x,y,z dimensions of the scale2 tomogram""" + scale2Dimensions: String = null - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """Whether this tomogram is CTF corrected""" + ctfCorrected: Boolean = null """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + offsetX: Int! """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + offsetY: Int! """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + offsetZ: Int! - """Number of pixels in the 3D data fast axis""" - size_x: Float + """URL for the key photo""" + keyPhotoUrl: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Float + """URL for the thumbnail of key photo""" + keyPhotoThumbnailUrl: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Float + """the compact json of neuroglancer config""" + neuroglancerConfig: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + """Whether this tomogram was generated per the portal's standards""" + isStandardized: Boolean! - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float + """An identifier to refer to a specific instance of this type""" + id: Int! } -""" -order by var_samp() on columns of table "tomograms" -""" -input tomograms_var_samp_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by +input TomogramUpdateInput { + """Tiltseries Alignment""" + alignmentId: ID = null + depositionId: ID = null + runId: ID = null - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """Voxel spacings for a run""" + tomogramVoxelSpacingId: ID = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + """Short name for this tomogram""" + name: String = null - """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + """Tomogram voxels in the x dimension""" + sizeX: Float - """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + """Tomogram voxels in the y dimension""" + sizeY: Float - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """Tomogram voxels in the z dimension""" + sizeZ: Float - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + Whether the tomographic alignment was computed based on fiducial markers. """ - size_z: order_by + fiducialAlignmentStatus: fiducial_alignment_status_enum - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """Describe reconstruction method (WBP, SART, SIRT)""" + reconstructionMethod: tomogram_reconstruction_method_enum - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by -} + """Describe additional processing used to derive the tomogram""" + processing: tomogram_processing_enum -"""aggregate variance on columns""" -type tomograms_variance_fields { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: Float + """Version of tomogram""" + tomogramVersion: Float = null - """Numeric identifier for this tomogram (this may change!)""" - id: Float + """Processing software used to derive the tomogram""" + processingSoftware: String = null - """x offset data relative to the canonical tomogram in pixels""" - offset_x: Float + """Name of software used for reconstruction""" + reconstructionSoftware: String - """y offset data relative to the canonical tomogram in pixels""" - offset_y: Float + """whether this tomogram is canonical for the run""" + isCanonical: Boolean = null - """z offset data relative to the canonical tomogram in pixels""" - offset_z: Float + """S3 path to this tomogram in multiscale OME-Zarr format""" + s3OmezarrDir: String = null - """Number of pixels in the 3D data fast axis""" - size_x: Float + """HTTPS path to this tomogram in multiscale OME-Zarr format""" + httpsOmezarrDir: String = null - """Number of pixels in the 3D data medium axis""" - size_y: Float + """S3 path to this tomogram in MRC format (no scaling)""" + s3MrcFile: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: Float + """HTTPS path to this tomogram in MRC format (no scaling)""" + httpsMrcFile: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: Float + """comma separated x,y,z dimensions of the unscaled tomogram""" + scale0Dimensions: String = null - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: Float -} + """comma separated x,y,z dimensions of the scale1 tomogram""" + scale1Dimensions: String = null -""" -order by variance() on columns of table "tomograms" -""" -input tomograms_variance_order_by { - """If the tomogram is part of a deposition, the related deposition's id""" - deposition_id: order_by + """comma separated x,y,z dimensions of the scale2 tomogram""" + scale2Dimensions: String = null - """Numeric identifier for this tomogram (this may change!)""" - id: order_by + """Whether this tomogram is CTF corrected""" + ctfCorrected: Boolean = null """x offset data relative to the canonical tomogram in pixels""" - offset_x: order_by + offsetX: Int """y offset data relative to the canonical tomogram in pixels""" - offset_y: order_by + offsetY: Int """z offset data relative to the canonical tomogram in pixels""" - offset_z: order_by + offsetZ: Int - """Number of pixels in the 3D data fast axis""" - size_x: order_by + """URL for the key photo""" + keyPhotoUrl: String = null - """Number of pixels in the 3D data medium axis""" - size_y: order_by + """URL for the thumbnail of key photo""" + keyPhotoThumbnailUrl: String = null - """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - """ - size_z: order_by + """the compact json of neuroglancer config""" + neuroglancerConfig: String = null - """The ID of the tomogram voxel spacing this tomogram is part of""" - tomogram_voxel_spacing_id: order_by + """Whether this tomogram was generated per the portal's standards""" + isStandardized: Boolean - """Voxel spacing equal in all three axes in angstroms""" - voxel_spacing: order_by + """An identifier to refer to a specific instance of this type""" + id: Int } + +input TomogramWhereClauseMutations { + id: IntComparators +} \ No newline at end of file diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 index 386fa5808..f6ffcff43 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 @@ -7,7 +7,8 @@ class {{ model.name }}(Model): {% endfor %} """ - _gql_type: str = "{{ model.gql_name }}" + _gql_type: str = "{{ model.gql_type }}" + _gql_root_field: str = "{{ model.root_field }}" {% for field in model.fields %} {{ field.name }}: {{ field.annotation_type }} = {{ field.default_value }} From c8d69a7c984cec049847c887d0c33caa18c62b36 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Thu, 29 Aug 2024 17:26:51 -0400 Subject: [PATCH 02/18] Start working on tests. --- client/python/cryoet_data_portal/tests/conftest.py | 2 +- client/python/cryoet_data_portal/tests/test_downloads.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/python/cryoet_data_portal/tests/conftest.py b/client/python/cryoet_data_portal/tests/conftest.py index c7adabd0f..0634d0c17 100644 --- a/client/python/cryoet_data_portal/tests/conftest.py +++ b/client/python/cryoet_data_portal/tests/conftest.py @@ -5,7 +5,7 @@ @pytest.fixture def gql_url() -> str: - return "http://localhost:8080/v1/graphql" + return "http://localhost:9009/graphql" @pytest.fixture diff --git a/client/python/cryoet_data_portal/tests/test_downloads.py b/client/python/cryoet_data_portal/tests/test_downloads.py index 1e97867c2..e400055a5 100644 --- a/client/python/cryoet_data_portal/tests/test_downloads.py +++ b/client/python/cryoet_data_portal/tests/test_downloads.py @@ -7,7 +7,7 @@ Annotation, Dataset, Run, - TiltSeries, + Tiltseries, Tomogram, TomogramVoxelSpacing, ) @@ -132,7 +132,7 @@ def test_download_default_dir(tmp_dir, client) -> None: def test_tiltseries_downloaders(tmp_dir, client): - ts = TiltSeries.find(client, [TiltSeries.run.name == "RUN1"])[0] + ts = Tiltseries.find(client, [Tiltseries.run.name == "RUN1"])[0] assert ts ts.download_collection_metadata(tmp_dir) ts.download_angle_list(tmp_dir) From c36cdd89e0764f5fa523ff9513d2adc22c18590c Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Tue, 17 Sep 2024 16:25:03 -0400 Subject: [PATCH 03/18] Support mapping camelCase field names in the api to snake_case field names in the client. --- .../src/cryoet_data_portal/__init__.py | 4 +- .../src/cryoet_data_portal/_client.py | 2 +- .../src/cryoet_data_portal/_codegen.py | 26 +- .../src/cryoet_data_portal/_gql_base.py | 24 +- .../src/cryoet_data_portal/_models.py | 832 +++++++++--------- .../cryoet_data_portal/templates/Model.jinja2 | 4 +- 6 files changed, 455 insertions(+), 437 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py index 4ac0100e1..2e6271938 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py @@ -20,7 +20,7 @@ PerSectionAlignmentParameters, PerSectionParameters, Run, - Tiltseries, + TiltSeries, TomogramAuthor, TomogramVoxelSpacing, Tomogram, @@ -44,7 +44,7 @@ "PerSectionAlignmentParameters", "PerSectionParameters", "Run", - "Tiltseries", + "TiltSeries", "TomogramAuthor", "TomogramVoxelSpacing", "Tomogram", diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py index 6c2d1cd33..b8e7b96f7 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py @@ -53,7 +53,7 @@ def build_query( query_filters = {} if not query_filters else {"where": query_filters} gql_type = getattr(ds, gql_class_name) scalar_fields = [ - getattr(gql_type, fieldname) for fieldname in cls._get_scalar_fields() + getattr(gql_type, fieldname) for fieldname in cls._get_gql_fields() ] query = dsl_gql( DSLQuery( diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index 61bf64fd2..87852d300 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -55,7 +55,7 @@ "PerSectionAlignmentParameters": "PerSectionAlignmentParameters", "PerSectionParameters": "PerSectionParameters", "Run": "Run", - "Tiltseries": "Tiltseries", + "Tiltseries": "TiltSeries", "TomogramAuthor": "TomogramAuthor", "TomogramVoxelSpacing": "TomogramVoxelSpacing", "Tomogram": "Tomogram", @@ -281,17 +281,6 @@ def _maybe_unwrap_non_null(field_type: GraphQLType) -> GraphQLType: return field_type -def _load_jinja_environment() -> Environment: - template_dir = _THIS_DIR / "templates" - loader = FileSystemLoader(template_dir) - return Environment( - loader=loader, - trim_blocks=True, - lstrip_blocks=True, - keep_trailing_newline=True, - ) - - def _camel_to_snake_case(name: str) -> str: return re.sub("(?!^)([A-Z]+)", r"_\1", name).lower() @@ -304,6 +293,19 @@ def _space_case_to_plural(name: str) -> str: return name if name[-1] == "s" else f"{name}s" +def _load_jinja_environment() -> Environment: + template_dir = _THIS_DIR / "templates" + loader = FileSystemLoader(template_dir) + env = Environment( + loader=loader, + trim_blocks=True, + lstrip_blocks=True, + keep_trailing_newline=True, + ) + env.filters["to_snake"] = _camel_to_snake_case + return env + + if __name__ == "__main__": logging.basicConfig(level=logging.WARN) update_schema_and_models( diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py index cbf16227a..0f4f5da49 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py @@ -1,5 +1,6 @@ import functools -from datetime import datetime, timezone +import re +from datetime import datetime from importlib import import_module from typing import Any, Dict, Iterable, Optional @@ -8,6 +9,16 @@ from ._client import Client +def to_camel(txt: str | list[str]): + if isinstance(txt, list): + return [to_camel(item) for item in txt] + return txt[0] + txt.title().replace("_", "")[1:] + + +def to_snake(name: str) -> str: + return re.sub("(?!^)([A-Z]+)", r"_\1", name).lower() + + class GQLExpression: def __init__(self, field: "GQLField", operator, value: Optional[Any]): self.field = field @@ -80,7 +91,7 @@ def is_relationship(self): return False def to_gql(self): - return self._name + return to_camel(self._name) class BaseField(GQLField): @@ -129,7 +140,7 @@ def get_related_class(self): return self.__current_query.get_related_class() def to_gql(self): - return self.__name + return to_camel(self.__name) class Relationship(GQLField): @@ -182,7 +193,7 @@ def __get__(self, obj, obj_class=None): if obj is None: return self source_field = getattr(obj, self.source_field) - dest_field = getattr(self.related_class, self.dest_field) + dest_field = getattr(self.related_class, to_snake(self.dest_field)) res = self.related_class.find( obj._client, [dest_field == source_field], @@ -215,6 +226,11 @@ def _get_scalar_fields(cls): fields.append(k) return fields + @classmethod + @functools.lru_cache(maxsize=32) + def _get_gql_fields(cls): + return [to_camel(item) for item in cls._get_scalar_fields()] + @classmethod @functools.lru_cache(maxsize=32) def _get_relationship_fields(cls): diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 99c77e87f..5a444ddb9 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -26,66 +26,66 @@ class Alignment(Model): Attributes: id (int): An identifier to refer to a specific instance of this type - annotationFiles (List[AnnotationFile]): The annotation files of this alignment - perSectionAlignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment + annotation_files (List[AnnotationFile]): The annotation files of this alignment + per_section_alignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment deposition (Deposition): The deposition this alignment is a part of - depositionId (int): None - tiltseries (Tiltseries): The tiltseries this alignment is a part of - tiltseriesId (int): None + deposition_id (int): None + tiltseries (TiltSeries): The tilt series this alignment is a part of + tiltseries_id (int): None tomograms (List[Tomogram]): The tomograms of this alignment run (Run): The run this alignment is a part of - runId (int): None - volumeXDimension (float): X dimension of the reconstruction volume in angstrom - volumeYDimension (float): Y dimension of the reconstruction volume in angstrom - volumeZDimension (float): Z dimension of the reconstruction volume in angstrom - volumeXOffset (float): X shift of the reconstruction volume in angstrom - volumeYOffset (float): Y shift of the reconstruction volume in angstrom - volumeZOffset (float): Z shift of the reconstruction volume in angstrom - xRotationOffset (float): Additional X rotation of the reconstruction volume in degrees - tiltOffset (float): Additional tilt offset in degrees - localAlignmentFile (str): Path to the local alignment file - affineTransformationMatrix (str): A placeholder for the affine transformation matrix. + run_id (int): None + volume_xdimension (float): X dimension of the reconstruction volume in angstrom + volume_ydimension (float): Y dimension of the reconstruction volume in angstrom + volume_zdimension (float): Z dimension of the reconstruction volume in angstrom + volume_xoffset (float): X shift of the reconstruction volume in angstrom + volume_yoffset (float): Y shift of the reconstruction volume in angstrom + volume_zoffset (float): Z shift of the reconstruction volume in angstrom + x_rotation_offset (float): Additional X rotation of the reconstruction volume in degrees + tilt_offset (float): Additional tilt offset in degrees + local_alignment_file (str): Path to the local alignment file + affine_transformation_matrix (str): A placeholder for the affine transformation matrix. """ _gql_type: str = "Alignment" _gql_root_field: str = "alignments" id: int = IntField() - annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") - perSectionAlignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") + per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - tiltseries: Tiltseries = ItemRelationship("Tiltseries", "tiltseriesId", "id") - tiltseriesId: int = IntField() + deposition_id: int = IntField() + tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") + tiltseries_id: int = IntField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignmentId") run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() - volumeXDimension: float = FloatField() - volumeYDimension: float = FloatField() - volumeZDimension: float = FloatField() - volumeXOffset: float = FloatField() - volumeYOffset: float = FloatField() - volumeZOffset: float = FloatField() - xRotationOffset: float = FloatField() - tiltOffset: float = FloatField() - localAlignmentFile: str = StringField() - affineTransformationMatrix: str = StringField() + run_id: int = IntField() + volume_xdimension: float = FloatField() + volume_ydimension: float = FloatField() + volume_zdimension: float = FloatField() + volume_xoffset: float = FloatField() + volume_yoffset: float = FloatField() + volume_zoffset: float = FloatField() + x_rotation_offset: float = FloatField() + tilt_offset: float = FloatField() + local_alignment_file: str = StringField() + affine_transformation_matrix: str = StringField() class AnnotationAuthor(Model): """Author of an annotation Attributes: id (int): An identifier to refer to a specific instance of this type annotation (Annotation): The annotation this annotation author is a part of - annotationId (int): None - authorListOrder (int): The order that the author is listed as in the associated publication + annotation_id (int): None + author_list_order (int): The order that the author is listed as in the associated publication orcid (str): The ORCID identifier for the author. name (str): The full name of the author. email (str): The email address of the author. - affiliationName (str): The name of the author's affiliation. - affiliationAddress (str): The address of the author's affiliation. - affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. - correspondingAuthorStatus (bool): Whether the author is a corresponding author. - primaryAuthorStatus (bool): Whether the author is a primary author. + affiliation_name (str): The name of the author's affiliation. + affiliation_address (str): The address of the author's affiliation. + affiliation_identifier (str): A Research Organization Registry (ROR) identifier. + corresponding_author_status (bool): Whether the author is a corresponding author. + primary_author_status (bool): Whether the author is a primary author. """ _gql_type: str = "AnnotationAuthor" @@ -93,31 +93,31 @@ class AnnotationAuthor(Model): id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") - annotationId: int = IntField() - authorListOrder: int = IntField() + annotation_id: int = IntField() + author_list_order: int = IntField() orcid: str = StringField() name: str = StringField() email: str = StringField() - affiliationName: str = StringField() - affiliationAddress: str = StringField() - affiliationIdentifier: str = StringField() - correspondingAuthorStatus: bool = BooleanField() - primaryAuthorStatus: bool = BooleanField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() + primary_author_status: bool = BooleanField() class AnnotationFile(Model): """Files associated with an annotation Attributes: id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this annotation file is a part of - alignmentId (int): None - annotationShape (AnnotationShape): The annotation shape this annotation file is a part of - annotationShapeId (int): None - tomogramVoxelSpacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of - tomogramVoxelSpacingId (int): None + alignment_id (int): None + annotation_shape (AnnotationShape): The annotation shape this annotation file is a part of + annotation_shape_id (int): None + tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of + tomogram_voxel_spacing_id (int): None format (str): File format label - s3Path (str): Path to the file in s3 - httpsPath (str): Path to the file as an https url - isVisualizationDefault (bool): This annotation will be rendered in neuroglancer by default. + s3_path (str): Path to the file in s3 + https_path (str): Path to the file as an https url + is_visualization_default (bool): This annotation will be rendered in neuroglancer by default. """ _gql_type: str = "AnnotationFile" @@ -125,15 +125,15 @@ class AnnotationFile(Model): id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") - alignmentId: int = IntField() - annotationShape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") - annotationShapeId: int = IntField() - tomogramVoxelSpacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogramVoxelSpacingId: int = IntField() + alignment_id: int = IntField() + annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") + annotation_shape_id: int = IntField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() format: str = StringField() - s3Path: str = StringField() - httpsPath: str = StringField() - isVisualizationDefault: bool = BooleanField() + s3_path: str = StringField() + https_path: str = StringField() + is_visualization_default: bool = BooleanField() def download(self, dest_path: Optional[str] = None): if self.format == "zarr": @@ -147,8 +147,8 @@ class AnnotationShape(Model): Attributes: id (int): An identifier to refer to a specific instance of this type annotation (Annotation): The annotation this annotation shape is a part of - annotationId (int): None - annotationFiles (List[AnnotationFile]): The annotation files of this annotation shape + annotation_id (int): None + annotation_files (List[AnnotationFile]): The annotation files of this annotation shape """ _gql_type: str = "AnnotationShape" @@ -156,37 +156,37 @@ class AnnotationShape(Model): id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") - annotationId: int = IntField() - annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") + annotation_id: int = IntField() + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") class Annotation(Model): """Metadata about an annotation for a run Attributes: id (int): An identifier to refer to a specific instance of this type run (Run): The run this annotation is a part of - runId (int): None - annotationShapes (List[AnnotationShape]): The annotation shapes of this annotation + run_id (int): None + annotation_shapes (List[AnnotationShape]): The annotation shapes of this annotation authors (List[AnnotationAuthor]): The annotation authors of this annotation deposition (Deposition): The deposition this annotation is a part of - depositionId (int): None - s3MetadataPath (str): Path to the file in s3 - httpsMetadataPath (str): Path to the file as an https url - annotationPublication (str): List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. - annotationMethod (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - groundTruthStatus (bool): Whether an annotation is considered ground truth, as determined by the annotator. - objectId (str): Gene Ontology Cellular Component identifier for the annotation object - objectName (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - objectDescription (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - objectState (str): Molecule state annotated (e.g. open, closed) - objectCount (int): Number of objects identified - confidencePrecision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - confidenceRecall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - groundTruthUsed (str): Annotation filename used as ground truth for precision and recall - annotationSoftware (str): Software used for generating this annotation - isCuratorRecommended (bool): This annotation is recommended by the curator to be preferred for this object type. - depositionDate (date): The date a data item was received by the cryoET data portal. - releaseDate (date): The date a data item was received by the cryoET data portal. - lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. + deposition_id (int): None + s3_metadata_path (str): Path to the file in s3 + https_metadata_path (str): Path to the file as an https url + annotation_publication (str): List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. + object_id (str): Gene Ontology Cellular Component identifier for the annotation object + object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + object_state (str): Molecule state annotated (e.g. open, closed) + object_count (int): Number of objects identified + confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + ground_truth_used (str): Annotation filename used as ground truth for precision and recall + annotation_software (str): Software used for generating this annotation + is_curator_recommended (bool): This annotation is recommended by the curator to be preferred for this object type. + deposition_date (date): The date a data item was received by the cryoET data portal. + release_date (date): The date a data item was received by the cryoET data portal. + last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. """ _gql_type: str = "Annotation" @@ -194,29 +194,29 @@ class Annotation(Model): id: int = IntField() run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() - annotationShapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") + run_id: int = IntField() + annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - s3MetadataPath: str = StringField() - httpsMetadataPath: str = StringField() - annotationPublication: str = StringField() - annotationMethod: str = StringField() - groundTruthStatus: bool = BooleanField() - objectId: str = StringField() - objectName: str = StringField() - objectDescription: str = StringField() - objectState: str = StringField() - objectCount: int = IntField() - confidencePrecision: float = FloatField() - confidenceRecall: float = FloatField() - groundTruthUsed: str = StringField() - annotationSoftware: str = StringField() - isCuratorRecommended: bool = BooleanField() - depositionDate: date = DateField() - releaseDate: date = DateField() - lastModifiedDate: date = DateField() + deposition_id: int = IntField() + s3_metadata_path: str = StringField() + https_metadata_path: str = StringField() + annotation_publication: str = StringField() + annotation_method: str = StringField() + ground_truth_status: bool = BooleanField() + object_id: str = StringField() + object_name: str = StringField() + object_description: str = StringField() + object_state: str = StringField() + object_count: int = IntField() + confidence_precision: float = FloatField() + confidence_recall: float = FloatField() + ground_truth_used: str = StringField() + annotation_software: str = StringField() + is_curator_recommended: bool = BooleanField() + deposition_date: date = DateField() + release_date: date = DateField() + last_modified_date: date = DateField() def download( self, @@ -247,16 +247,16 @@ class DatasetAuthor(Model): Attributes: id (int): An identifier to refer to a specific instance of this type dataset (Dataset): The dataset this dataset author is a part of - datasetId (int): None - authorListOrder (int): The order that the author is listed as in the associated publication + dataset_id (int): None + author_list_order (int): The order that the author is listed as in the associated publication orcid (str): The ORCID identifier for the author. name (str): The full name of the author. email (str): The email address of the author. - affiliationName (str): The name of the author's affiliation. - affiliationAddress (str): The address of the author's affiliation. - affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. - correspondingAuthorStatus (bool): Whether the author is a corresponding author. - primaryAuthorStatus (bool): Whether the author is a primary author. + affiliation_name (str): The name of the author's affiliation. + affiliation_address (str): The address of the author's affiliation. + affiliation_identifier (str): A Research Organization Registry (ROR) identifier. + corresponding_author_status (bool): Whether the author is a corresponding author. + primary_author_status (bool): Whether the author is a primary author. """ _gql_type: str = "DatasetAuthor" @@ -264,25 +264,25 @@ class DatasetAuthor(Model): id: int = IntField() dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") - datasetId: int = IntField() - authorListOrder: int = IntField() + dataset_id: int = IntField() + author_list_order: int = IntField() orcid: str = StringField() name: str = StringField() email: str = StringField() - affiliationName: str = StringField() - affiliationAddress: str = StringField() - affiliationIdentifier: str = StringField() - correspondingAuthorStatus: bool = BooleanField() - primaryAuthorStatus: bool = BooleanField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() + primary_author_status: bool = BooleanField() class DatasetFunding(Model): """Information about how a dataset was funded Attributes: id (int): An identifier to refer to a specific instance of this type dataset (Dataset): The dataset this dataset funding is a part of - datasetId (int): None - fundingAgencyName (str): The name of the funding source. - grantId (str): Grant identifier provided by the funding agency + dataset_id (int): None + funding_agency_name (str): The name of the funding source. + grant_id (str): Grant identifier provided by the funding agency """ _gql_type: str = "DatasetFunding" @@ -290,43 +290,43 @@ class DatasetFunding(Model): id: int = IntField() dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") - datasetId: int = IntField() - fundingAgencyName: str = StringField() - grantId: str = StringField() + dataset_id: int = IntField() + funding_agency_name: str = StringField() + grant_id: str = StringField() class Dataset(Model): """An author of a dataset Attributes: id (int): An identifier to refer to a specific instance of this type deposition (Deposition): The deposition this dataset is a part of - depositionId (int): None - fundingSources (List[DatasetFunding]): The dataset fundings of this dataset + deposition_id (int): None + funding_sources (List[DatasetFunding]): The dataset fundings of this dataset authors (List[DatasetAuthor]): The dataset authors of this dataset runs (List[Run]): The runs of this dataset title (str): Title of a CryoET dataset. description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - organismName (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. - organismTaxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 - tissueName (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. - tissueId (str): The UBERON identifier for the tissue. - cellName (str): Name of the cell type from which a biological sample used in a CryoET study is derived from. - cellTypeId (str): Cell Ontology identifier for the cell type - cellStrainName (str): Cell line or strain for the sample. - cellStrainId (str): Link to more information about the cell strain. - samplePreparation (str): Describes how the sample was prepared. - gridPreparation (str): Describes Cryo-ET grid preparation. - otherSetup (str): Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. - keyPhotoUrl (str): URL for the dataset preview image. - keyPhotoThumbnailUrl (str): URL for the thumbnail of preview image. - cellComponentName (str): Name of the cellular component. - cellComponentId (str): The GO identifier for the cellular component. - depositionDate (date): The date a data item was received by the cryoET data portal. - releaseDate (date): The date a data item was received by the cryoET data portal. - lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. + organism_name (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + organism_taxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 + tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. + tissue_id (str): The UBERON identifier for the tissue. + cell_name (str): Name of the cell type from which a biological sample used in a CryoET study is derived from. + cell_type_id (str): Cell Ontology identifier for the cell type + cell_strain_name (str): Cell line or strain for the sample. + cell_strain_id (str): Link to more information about the cell strain. + sample_preparation (str): Describes how the sample was prepared. + grid_preparation (str): Describes Cryo-ET grid preparation. + other_setup (str): Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + key_photo_url (str): URL for the dataset preview image. + key_photo_thumbnail_url (str): URL for the thumbnail of preview image. + cell_component_name (str): Name of the cellular component. + cell_component_id (str): The GO identifier for the cellular component. + deposition_date (date): The date a data item was received by the cryoET data portal. + release_date (date): The date a data item was received by the cryoET data portal. + last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. publications (str): Comma-separated list of DOIs for publications associated with the dataset. - relatedDatabaseEntries (str): Comma-separated list of related database entries for the dataset. - s3Prefix (str): Path to a directory containing data for this entity as an S3 url - httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + related_database_entries (str): Comma-separated list of related database entries for the dataset. + s3_prefix (str): Path to a directory containing data for this entity as an S3 url + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "Dataset" @@ -334,34 +334,34 @@ class Dataset(Model): id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - fundingSources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") + deposition_id: int = IntField() + funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") runs: List[Run] = ListRelationship("Run", "id", "datasetId") title: str = StringField() description: str = StringField() - organismName: str = StringField() - organismTaxid: int = IntField() - tissueName: str = StringField() - tissueId: str = StringField() - cellName: str = StringField() - cellTypeId: str = StringField() - cellStrainName: str = StringField() - cellStrainId: str = StringField() - samplePreparation: str = StringField() - gridPreparation: str = StringField() - otherSetup: str = StringField() - keyPhotoUrl: str = StringField() - keyPhotoThumbnailUrl: str = StringField() - cellComponentName: str = StringField() - cellComponentId: str = StringField() - depositionDate: date = DateField() - releaseDate: date = DateField() - lastModifiedDate: date = DateField() + organism_name: str = StringField() + organism_taxid: int = IntField() + tissue_name: str = StringField() + tissue_id: str = StringField() + cell_name: str = StringField() + cell_type_id: str = StringField() + cell_strain_name: str = StringField() + cell_strain_id: str = StringField() + sample_preparation: str = StringField() + grid_preparation: str = StringField() + other_setup: str = StringField() + key_photo_url: str = StringField() + key_photo_thumbnail_url: str = StringField() + cell_component_name: str = StringField() + cell_component_id: str = StringField() + deposition_date: date = DateField() + release_date: date = DateField() + last_modified_date: date = DateField() publications: str = StringField() - relatedDatabaseEntries: str = StringField() - s3Prefix: str = StringField() - httpsPrefix: str = StringField() + related_database_entries: str = StringField() + s3_prefix: str = StringField() + https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this dataset. @@ -377,16 +377,16 @@ class DepositionAuthor(Model): Attributes: id (int): An identifier to refer to a specific instance of this type deposition (Deposition): The deposition this deposition author is a part of - depositionId (int): None - authorListOrder (int): The order that the author is listed as in the associated publication + deposition_id (int): None + author_list_order (int): The order that the author is listed as in the associated publication orcid (str): The ORCID identifier for the author. name (str): The full name of the author. email (str): The email address of the author. - affiliationName (str): The name of the author's affiliation. - affiliationAddress (str): The address of the author's affiliation. - affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. - correspondingAuthorStatus (bool): Whether the author is a corresponding author. - primaryAuthorStatus (bool): Whether the author is a primary author. + affiliation_name (str): The name of the author's affiliation. + affiliation_address (str): The address of the author's affiliation. + affiliation_identifier (str): A Research Organization Registry (ROR) identifier. + corresponding_author_status (bool): Whether the author is a corresponding author. + primary_author_status (bool): Whether the author is a primary author. """ _gql_type: str = "DepositionAuthor" @@ -394,16 +394,16 @@ class DepositionAuthor(Model): id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - authorListOrder: int = IntField() + deposition_id: int = IntField() + author_list_order: int = IntField() orcid: str = StringField() name: str = StringField() email: str = StringField() - affiliationName: str = StringField() - affiliationAddress: str = StringField() - affiliationIdentifier: str = StringField() - correspondingAuthorStatus: bool = BooleanField() - primaryAuthorStatus: bool = BooleanField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() + primary_author_status: bool = BooleanField() class Deposition(Model): """None @@ -414,15 +414,15 @@ class Deposition(Model): annotations (List[Annotation]): The annotations of this deposition datasets (List[Dataset]): The datasets of this deposition frames (List[Frame]): The frames of this deposition - tiltseries (List[Tiltseries]): The tiltseries of this deposition + tiltseries (List[TiltSeries]): The tilt series of this deposition tomograms (List[Tomogram]): The tomograms of this deposition - depositionTitle (str): Title of a CryoET deposition. - depositionDescription (str): A short description of the deposition, similar to an abstract for a journal article or dataset. + deposition_title (str): Title of a CryoET deposition. + deposition_description (str): A short description of the deposition, similar to an abstract for a journal article or dataset. publications (str): Comma-separated list of DOIs for publications associated with the dataset. - relatedDatabaseEntries (str): Comma-separated list of related database entries for the dataset. - depositionDate (date): The date a data item was received by the cryoET data portal. - releaseDate (date): The date a data item was received by the cryoET data portal. - lastModifiedDate (date): The date a piece of data was last modified on the cryoET data portal. + related_database_entries (str): Comma-separated list of related database entries for the dataset. + deposition_date (date): The date a data item was received by the cryoET data portal. + release_date (date): The date a data item was received by the cryoET data portal. + last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. """ _gql_type: str = "Deposition" @@ -434,33 +434,33 @@ class Deposition(Model): annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") - tiltseries: List[Tiltseries] = ListRelationship("Tiltseries", "id", "depositionId") + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "depositionId") tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") - depositionTitle: str = StringField() - depositionDescription: str = StringField() + deposition_title: str = StringField() + deposition_description: str = StringField() publications: str = StringField() - relatedDatabaseEntries: str = StringField() - depositionDate: date = DateField() - releaseDate: date = DateField() - lastModifiedDate: date = DateField() + related_database_entries: str = StringField() + deposition_date: date = DateField() + release_date: date = DateField() + last_modified_date: date = DateField() class Frame(Model): """None Attributes: id (int): An identifier to refer to a specific instance of this type deposition (Deposition): The deposition this frame is a part of - depositionId (int): None - perSectionParameters (List[PerSectionParameters]): The per section parameters of this frame + deposition_id (int): None + per_section_parameters (List[PerSectionParameters]): The per section parameters of this frame run (Run): The run this frame is a part of - runId (int): None - rawAngle (float): Camera angle for a frame - acquisitionOrder (int): Frame's acquistion order within a tilt experiment + run_id (int): None + raw_angle (float): Camera angle for a frame + acquisition_order (int): Frame's acquistion order within a tilt experiment dose (float): The raw camera angle for a frame - isGainCorrected (bool): Whether this frame has been gain corrected - s3GainFile (str): S3 path to the gain file for this frame - httpsGainFile (str): HTTPS path to the gain file for this frame - s3Prefix (str): Path to a directory containing data for this entity as an S3 url - httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + is_gain_corrected (bool): Whether this frame has been gain corrected + s3_gain_file (str): S3 path to the gain file for this frame + https_gain_file (str): HTTPS path to the gain file for this frame + s3_prefix (str): Path to a directory containing data for this entity as an S3 url + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "Frame" @@ -468,31 +468,31 @@ class Frame(Model): id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - perSectionParameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") + deposition_id: int = IntField() + per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() - rawAngle: float = FloatField() - acquisitionOrder: int = IntField() + run_id: int = IntField() + raw_angle: float = FloatField() + acquisition_order: int = IntField() dose: float = FloatField() - isGainCorrected: bool = BooleanField() - s3GainFile: str = StringField() - httpsGainFile: str = StringField() - s3Prefix: str = StringField() - httpsPrefix: str = StringField() + is_gain_corrected: bool = BooleanField() + s3_gain_file: str = StringField() + https_gain_file: str = StringField() + s3_prefix: str = StringField() + https_prefix: str = StringField() class PerSectionAlignmentParameters(Model): """Map alignment parameters to tilt series frames Attributes: id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this per section alignment parameters is a part of - alignmentId (int): None - zIndex (int): z-index of the frame in the tiltseries - xOffset (float): In-plane X-shift of the projection in angstrom - yOffset (float): In-plane Y-shift of the projection in angstrom - inPlaneRotation (float): In-plane rotation of the projection in degrees - beamTilt (float): Beam tilt during projection in degrees - tiltAngle (float): Tilt angle of the projection in degrees + alignment_id (int): None + z_index (int): z-index of the frame in the tiltseries + x_offset (float): In-plane X-shift of the projection in angstrom + y_offset (float): In-plane Y-shift of the projection in angstrom + in_plane_rotation (float): In-plane rotation of the projection in degrees + beam_tilt (float): Beam tilt during projection in degrees + tilt_angle (float): Tilt angle of the projection in degrees """ _gql_type: str = "PerSectionAlignmentParameters" @@ -500,26 +500,26 @@ class PerSectionAlignmentParameters(Model): id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") - alignmentId: int = IntField() - zIndex: int = IntField() - xOffset: float = FloatField() - yOffset: float = FloatField() - inPlaneRotation: float = FloatField() - beamTilt: float = FloatField() - tiltAngle: float = FloatField() + alignment_id: int = IntField() + z_index: int = IntField() + x_offset: float = FloatField() + y_offset: float = FloatField() + in_plane_rotation: float = FloatField() + beam_tilt: float = FloatField() + tilt_angle: float = FloatField() class PerSectionParameters(Model): """Record how frames get mapped to TiltSeries Attributes: id (int): An identifier to refer to a specific instance of this type frame (Frame): The frame this per section parameters is a part of - frameId (int): None - tiltseries (Tiltseries): The tiltseries this per section parameters is a part of - tiltseriesId (int): None - zIndex (int): z-index of the frame in the tiltseries + frame_id (int): None + tiltseries (TiltSeries): The tilt series this per section parameters is a part of + tiltseries_id (int): None + z_index (int): z-index of the frame in the tiltseries defocus (float): defocus amount astigmatism (float): Astigmatism amount for this frame - astigmaticAngle (float): Angle of ast + astigmatic_angle (float): Angle of ast """ _gql_type: str = "PerSectionParameters" @@ -527,13 +527,13 @@ class PerSectionParameters(Model): id: int = IntField() frame: Frame = ItemRelationship("Frame", "frameId", "id") - frameId: int = IntField() - tiltseries: Tiltseries = ItemRelationship("Tiltseries", "tiltseriesId", "id") - tiltseriesId: int = IntField() - zIndex: int = IntField() + frame_id: int = IntField() + tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") + tiltseries_id: int = IntField() + z_index: int = IntField() defocus: float = FloatField() astigmatism: float = FloatField() - astigmaticAngle: float = FloatField() + astigmatic_angle: float = FloatField() class Run(Model): """None @@ -542,14 +542,14 @@ class Run(Model): alignments (List[Alignment]): The alignments of this run annotations (List[Annotation]): The annotations of this run dataset (Dataset): The dataset this run is a part of - datasetId (int): None + dataset_id (int): None frames (List[Frame]): The frames of this run - tiltseries (List[Tiltseries]): The tiltseries of this run - tomogramVoxelSpacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run + tiltseries (List[TiltSeries]): The tilt series of this run + tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run tomograms (List[Tomogram]): The tomograms of this run name (str): Name of a run - s3Prefix (str): Path to a directory containing data for this entity as an S3 url - httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + s3_prefix (str): Path to a directory containing data for this entity as an S3 url + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "Run" @@ -559,14 +559,14 @@ class Run(Model): alignments: List[Alignment] = ListRelationship("Alignment", "id", "runId") annotations: List[Annotation] = ListRelationship("Annotation", "id", "runId") dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") - datasetId: int = IntField() + dataset_id: int = IntField() frames: List[Frame] = ListRelationship("Frame", "id", "runId") - tiltseries: List[Tiltseries] = ListRelationship("Tiltseries", "id", "runId") - tomogramVoxelSpacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "runId") + tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") name: str = StringField() - s3Prefix: str = StringField() - httpsPrefix: str = StringField() + s3_prefix: str = StringField() + https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this run. @@ -582,97 +582,97 @@ def download_frames(self, dest_path: Optional[str] = None): self.s3_prefix, dest_path, ) -class Tiltseries(Model): +class TiltSeries(Model): """None Attributes: id (int): An identifier to refer to a specific instance of this type - alignments (List[Alignment]): The alignments of this tiltseries - perSectionParameters (List[PerSectionParameters]): The per section parameters of this tiltseries - run (Run): The run this tiltseries is a part of - runId (int): None - deposition (Deposition): The deposition this tiltseries is a part of - depositionId (int): None - s3OmezarrDir (str): S3 path to this tiltseries in multiscale OME-Zarr format - s3MrcFile (str): S3 path to this tiltseries in MRC format (no scaling) - httpsOmezarrDir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format - httpsMrcFile (str): HTTPS path to this tiltseries in MRC format (no scaling) - s3CollectionMetadata (str): S3 path to the collection metadata file for this tiltseries - httpsCollectionMetadata (str): HTTPS path to the collection metadata file for this tiltseries - s3AngleList (str): S3 path to the angle list file for this tiltseries - httpsAngleList (str): HTTPS path to the angle list file for this tiltseries - s3GainFile (str): S3 path to the gain file for this tiltseries - httpsGainFile (str): HTTPS path to the gain file for this tiltseries - accelerationVoltage (float): Electron Microscope Accelerator voltage in volts - sphericalAberrationConstant (float): Spherical Aberration Constant of the objective lens in millimeters - microscopeModel (str): Microscope model name - microscopeEnergyFilter (str): Energy filter setup used - microscopePhasePlate (str): Phase plate configuration - microscopeImageCorrector (str): Image corrector setup - microscopeAdditionalInfo (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - cameraManufacturer (str): Name of the camera manufacturer - cameraModel (str): Camera model name - tiltMin (float): Minimal tilt angle in degrees - tiltMax (float): Maximal tilt angle in degrees - tiltRange (float): Total tilt range from min to max in degrees - tiltStep (float): Tilt step in degrees - tiltingScheme (str): The order of stage tilting during acquisition of the data - tiltAxis (float): Rotation angle in degrees - totalFlux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - dataAcquisitionSoftware (str): Software used to collect data - relatedEmpiarEntry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier - binningFromFrames (float): Describes the binning factor from frames to tilt series file - tiltSeriesQuality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) - isAligned (bool): Whether this tilt series is aligned - pixelSpacing (float): Pixel spacing for the tilt series - alignedTiltseriesBinning (float): Binning factor of the aligned tilt series - tiltseriesFramesCount (int): Number of frames associated with this tiltseries + alignments (List[Alignment]): The alignments of this tilt series + per_section_parameters (List[PerSectionParameters]): The per section parameters of this tilt series + run (Run): The run this tilt series is a part of + run_id (int): None + deposition (Deposition): The deposition this tilt series is a part of + deposition_id (int): None + s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format + s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) + https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format + https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) + s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries + https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries + s3_angle_list (str): S3 path to the angle list file for this tiltseries + https_angle_list (str): HTTPS path to the angle list file for this tiltseries + s3_gain_file (str): S3 path to the gain file for this tiltseries + https_gain_file (str): HTTPS path to the gain file for this tiltseries + acceleration_voltage (float): Electron Microscope Accelerator voltage in volts + spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters + microscope_model (str): Microscope model name + microscope_energy_filter (str): Energy filter setup used + microscope_phase_plate (str): Phase plate configuration + microscope_image_corrector (str): Image corrector setup + microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector + camera_manufacturer (str): Name of the camera manufacturer + camera_model (str): Camera model name + tilt_min (float): Minimal tilt angle in degrees + tilt_max (float): Maximal tilt angle in degrees + tilt_range (float): Total tilt range from min to max in degrees + tilt_step (float): Tilt step in degrees + tilting_scheme (str): The order of stage tilting during acquisition of the data + tilt_axis (float): Rotation angle in degrees + total_flux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + data_acquisition_software (str): Software used to collect data + related_empiar_entry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + binning_from_frames (float): Describes the binning factor from frames to tilt series file + tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) + is_aligned (bool): Whether this tilt series is aligned + pixel_spacing (float): Pixel spacing for the tilt series + aligned_tiltseries_binning (float): Binning factor of the aligned tilt series + tiltseries_frames_count (int): Number of frames associated with this tiltseries """ _gql_type: str = "Tiltseries" _gql_root_field: str = "tiltseries" id: int = IntField() - alignments: List[Alignment] = ListRelationship("Alignment", "id", "tiltseriesId") - perSectionParameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tiltseriesId") + alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_seriesId") + per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_seriesId") run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() + run_id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() - s3OmezarrDir: str = StringField() - s3MrcFile: str = StringField() - httpsOmezarrDir: str = StringField() - httpsMrcFile: str = StringField() - s3CollectionMetadata: str = StringField() - httpsCollectionMetadata: str = StringField() - s3AngleList: str = StringField() - httpsAngleList: str = StringField() - s3GainFile: str = StringField() - httpsGainFile: str = StringField() - accelerationVoltage: float = FloatField() - sphericalAberrationConstant: float = FloatField() - microscopeModel: str = StringField() - microscopeEnergyFilter: str = StringField() - microscopePhasePlate: str = StringField() - microscopeImageCorrector: str = StringField() - microscopeAdditionalInfo: str = StringField() - cameraManufacturer: str = StringField() - cameraModel: str = StringField() - tiltMin: float = FloatField() - tiltMax: float = FloatField() - tiltRange: float = FloatField() - tiltStep: float = FloatField() - tiltingScheme: str = StringField() - tiltAxis: float = FloatField() - totalFlux: float = FloatField() - dataAcquisitionSoftware: str = StringField() - relatedEmpiarEntry: str = StringField() - binningFromFrames: float = FloatField() - tiltSeriesQuality: int = IntField() - isAligned: bool = BooleanField() - pixelSpacing: float = FloatField() - alignedTiltseriesBinning: float = FloatField() - tiltseriesFramesCount: int = IntField() + deposition_id: int = IntField() + s3_omezarr_dir: str = StringField() + s3_mrc_file: str = StringField() + https_omezarr_dir: str = StringField() + https_mrc_file: str = StringField() + s3_collection_metadata: str = StringField() + https_collection_metadata: str = StringField() + s3_angle_list: str = StringField() + https_angle_list: str = StringField() + s3_gain_file: str = StringField() + https_gain_file: str = StringField() + acceleration_voltage: float = FloatField() + spherical_aberration_constant: float = FloatField() + microscope_model: str = StringField() + microscope_energy_filter: str = StringField() + microscope_phase_plate: str = StringField() + microscope_image_corrector: str = StringField() + microscope_additional_info: str = StringField() + camera_manufacturer: str = StringField() + camera_model: str = StringField() + tilt_min: float = FloatField() + tilt_max: float = FloatField() + tilt_range: float = FloatField() + tilt_step: float = FloatField() + tilting_scheme: str = StringField() + tilt_axis: float = FloatField() + total_flux: float = FloatField() + data_acquisition_software: str = StringField() + related_empiar_entry: str = StringField() + binning_from_frames: float = FloatField() + tilt_series_quality: int = IntField() + is_aligned: bool = BooleanField() + pixel_spacing: float = FloatField() + aligned_tiltseries_binning: float = FloatField() + tiltseries_frames_count: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries @@ -724,16 +724,16 @@ class TomogramAuthor(Model): Attributes: id (int): An identifier to refer to a specific instance of this type tomogram (Tomogram): The tomogram this tomogram author is a part of - tomogramId (int): None - authorListOrder (int): The order that the author is listed as in the associated publication + tomogram_id (int): None + author_list_order (int): The order that the author is listed as in the associated publication orcid (str): The ORCID identifier for the author. name (str): The full name of the author. email (str): The email address of the author. - affiliationName (str): The name of the author's affiliation. - affiliationAddress (str): The address of the author's affiliation. - affiliationIdentifier (str): A Research Organization Registry (ROR) identifier. - correspondingAuthorStatus (bool): Whether the author is a corresponding author. - primaryAuthorStatus (bool): Whether the author is a primary author. + affiliation_name (str): The name of the author's affiliation. + affiliation_address (str): The address of the author's affiliation. + affiliation_identifier (str): A Research Organization Registry (ROR) identifier. + corresponding_author_status (bool): Whether the author is a corresponding author. + primary_author_status (bool): Whether the author is a primary author. """ _gql_type: str = "TomogramAuthor" @@ -741,41 +741,41 @@ class TomogramAuthor(Model): id: int = IntField() tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") - tomogramId: int = IntField() - authorListOrder: int = IntField() + tomogram_id: int = IntField() + author_list_order: int = IntField() orcid: str = StringField() name: str = StringField() email: str = StringField() - affiliationName: str = StringField() - affiliationAddress: str = StringField() - affiliationIdentifier: str = StringField() - correspondingAuthorStatus: bool = BooleanField() - primaryAuthorStatus: bool = BooleanField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() + primary_author_status: bool = BooleanField() class TomogramVoxelSpacing(Model): """Voxel spacings for a run Attributes: id (int): An identifier to refer to a specific instance of this type - annotationFiles (List[AnnotationFile]): The annotation files of this tomogram voxel spacing + annotation_files (List[AnnotationFile]): The annotation files of this tomogram voxel spacing run (Run): The run this tomogram voxel spacing is a part of - runId (int): None + run_id (int): None tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing - voxelSpacing (float): Voxel spacing equal in all three axes in angstroms - s3Prefix (str): Path to a directory containing data for this entity as an S3 url - httpsPrefix (str): Path to a directory containing data for this entity as an HTTPS url + voxel_spacing (float): Voxel spacing equal in all three axes in angstroms + s3_prefix (str): Path to a directory containing data for this entity as an S3 url + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "TomogramVoxelSpacing" _gql_root_field: str = "tomogramVoxelSpacings" id: int = IntField() - annotationFiles: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() + run_id: int = IntField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") - voxelSpacing: float = FloatField() - s3Prefix: str = StringField() - httpsPrefix: str = StringField() + voxel_spacing: float = FloatField() + s3_prefix: str = StringField() + https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this tomogram voxel spacing. @@ -790,38 +790,38 @@ class Tomogram(Model): Attributes: id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this tomogram is a part of - alignmentId (int): None + alignment_id (int): None authors (List[TomogramAuthor]): The tomogram authors of this tomogram deposition (Deposition): The deposition this tomogram is a part of - depositionId (int): None + deposition_id (int): None run (Run): The run this tomogram is a part of - runId (int): None - tomogramVoxelSpacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of - tomogramVoxelSpacingId (int): None + run_id (int): None + tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of + tomogram_voxel_spacing_id (int): None name (str): Short name for this tomogram - sizeX (float): Tomogram voxels in the x dimension - sizeY (float): Tomogram voxels in the y dimension - sizeZ (float): Tomogram voxels in the z dimension - voxelSpacing (float): Voxel spacing equal in all three axes in angstroms - tomogramVersion (float): Version of tomogram - processingSoftware (str): Processing software used to derive the tomogram - reconstructionSoftware (str): Name of software used for reconstruction - isCanonical (bool): whether this tomogram is canonical for the run - s3OmezarrDir (str): S3 path to this tomogram in multiscale OME-Zarr format - httpsOmezarrDir (str): HTTPS path to this tomogram in multiscale OME-Zarr format - s3MrcFile (str): S3 path to this tomogram in MRC format (no scaling) - httpsMrcFile (str): HTTPS path to this tomogram in MRC format (no scaling) - scale0Dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram - scale1Dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram - scale2Dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram - ctfCorrected (bool): Whether this tomogram is CTF corrected - offsetX (int): x offset data relative to the canonical tomogram in pixels - offsetY (int): y offset data relative to the canonical tomogram in pixels - offsetZ (int): z offset data relative to the canonical tomogram in pixels - keyPhotoUrl (str): URL for the key photo - keyPhotoThumbnailUrl (str): URL for the thumbnail of key photo - neuroglancerConfig (str): the compact json of neuroglancer config - isStandardized (bool): Whether this tomogram was generated per the portal's standards + size_x (float): Tomogram voxels in the x dimension + size_y (float): Tomogram voxels in the y dimension + size_z (float): Tomogram voxels in the z dimension + voxel_spacing (float): Voxel spacing equal in all three axes in angstroms + tomogram_version (float): Version of tomogram + processing_software (str): Processing software used to derive the tomogram + reconstruction_software (str): Name of software used for reconstruction + is_canonical (bool): whether this tomogram is canonical for the run + s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format + https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format + s3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) + https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) + scale0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram + scale1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram + scale2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram + ctf_corrected (bool): Whether this tomogram is CTF corrected + offset_x (int): x offset data relative to the canonical tomogram in pixels + offset_y (int): y offset data relative to the canonical tomogram in pixels + offset_z (int): z offset data relative to the canonical tomogram in pixels + key_photo_url (str): URL for the key photo + key_photo_thumbnail_url (str): URL for the thumbnail of key photo + neuroglancer_config (str): the compact json of neuroglancer config + is_standardized (bool): Whether this tomogram was generated per the portal's standards """ _gql_type: str = "Tomogram" @@ -829,38 +829,38 @@ class Tomogram(Model): id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") - alignmentId: int = IntField() + alignment_id: int = IntField() authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogramId") deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - depositionId: int = IntField() + deposition_id: int = IntField() run: Run = ItemRelationship("Run", "runId", "id") - runId: int = IntField() - tomogramVoxelSpacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogramVoxelSpacingId: int = IntField() + run_id: int = IntField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() name: str = StringField() - sizeX: float = FloatField() - sizeY: float = FloatField() - sizeZ: float = FloatField() - voxelSpacing: float = FloatField() - tomogramVersion: float = FloatField() - processingSoftware: str = StringField() - reconstructionSoftware: str = StringField() - isCanonical: bool = BooleanField() - s3OmezarrDir: str = StringField() - httpsOmezarrDir: str = StringField() - s3MrcFile: str = StringField() - httpsMrcFile: str = StringField() - scale0Dimensions: str = StringField() - scale1Dimensions: str = StringField() - scale2Dimensions: str = StringField() - ctfCorrected: bool = BooleanField() - offsetX: int = IntField() - offsetY: int = IntField() - offsetZ: int = IntField() - keyPhotoUrl: str = StringField() - keyPhotoThumbnailUrl: str = StringField() - neuroglancerConfig: str = StringField() - isStandardized: bool = BooleanField() + size_x: float = FloatField() + size_y: float = FloatField() + size_z: float = FloatField() + voxel_spacing: float = FloatField() + tomogram_version: float = FloatField() + processing_software: str = StringField() + reconstruction_software: str = StringField() + is_canonical: bool = BooleanField() + s3_omezarr_dir: str = StringField() + https_omezarr_dir: str = StringField() + s3_mrc_file: str = StringField() + https_mrc_file: str = StringField() + scale0_dimensions: str = StringField() + scale1_dimensions: str = StringField() + scale2_dimensions: str = StringField() + ctf_corrected: bool = BooleanField() + offset_x: int = IntField() + offset_y: int = IntField() + offset_z: int = IntField() + key_photo_url: str = StringField() + key_photo_thumbnail_url: str = StringField() + neuroglancer_config: str = StringField() + is_standardized: bool = BooleanField() def download_omezarr(self, dest_path: Optional[str] = None): """Download the OME-Zarr version of this tomogram @@ -910,7 +910,7 @@ def download_all_annotations( PerSectionAlignmentParameters.setup() PerSectionParameters.setup() Run.setup() -Tiltseries.setup() +TiltSeries.setup() TomogramAuthor.setup() TomogramVoxelSpacing.setup() Tomogram.setup() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 index f6ffcff43..88ec05173 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Model.jinja2 @@ -3,7 +3,7 @@ class {{ model.name }}(Model): Attributes: {% for field in model.fields %} - {{ field.name }} ({{ field.annotation_type }}): {{ field.description}} + {{ field.name | to_snake }} ({{ field.annotation_type }}): {{ field.description}} {% endfor %} """ @@ -11,5 +11,5 @@ class {{ model.name }}(Model): _gql_root_field: str = "{{ model.root_field }}" {% for field in model.fields %} - {{ field.name }}: {{ field.annotation_type }} = {{ field.default_value }} + {{ field.name | to_snake }}: {{ field.annotation_type }} = {{ field.default_value }} {% endfor %} From 1ef4b2a95fd46fb604839b039cadc5216ab550be Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Tue, 17 Sep 2024 16:49:58 -0400 Subject: [PATCH 04/18] Sort models by name. --- .../python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index 87852d300..bd9d209c5 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -140,6 +140,7 @@ def get_models(schema: GraphQLSchema) -> Tuple[ModelInfo, ...]: fields=fields, ), ) + models = sorted(models, key=lambda x: x.name) return tuple(models) From 223aa290e5c962873a28cc4230808311ef6d8cfa Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Wed, 18 Sep 2024 14:56:21 -0400 Subject: [PATCH 05/18] Resolved field discrepancies. --- .../src/cryoet_data_portal/_codegen.py | 14 +- .../src/cryoet_data_portal/_models.py | 1006 +++++++++-------- .../cryoet_data_portal/data/schema.graphql | 1005 +++++++++------- 3 files changed, 1131 insertions(+), 894 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index bd9d209c5..eee1b45a1 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -36,6 +36,17 @@ "numeric": ("FloatField()", "float"), "_numeric": ("StringField()", "str"), "tomogram_type_enum": ("StringField()", "str"), + "tomogram_processing_enum": ("StringField()", "str"), + "tomogram_reconstruction_method_enum": ("StringField()", "str"), + "annotation_file_source_enum": ("StringField()", "str"), + "annotation_method_type_enum": ("StringField()", "str"), + "annotation_file_shape_type_enum": ("StringField()", "str"), + "deposition_types_enum": ("StringField()", "str"), + "sample_type_enum": ("StringField()", "str"), + "tiltseries_camer_acquire_mode_enum": ("StringField()", "str"), + "tiltseries_microscope_manufacturer": ("StringField()", "str"), + "fiducial_alignment_status_enum": ("StringField()", "str"), + "alignment_type_enum": ("StringField()", "str"), } @@ -50,6 +61,7 @@ "DatasetFunding": "DatasetFunding", "Dataset": "Dataset", "DepositionAuthor": "DepositionAuthor", + "DepositionType": "DepositionType", "Deposition": "Deposition", "Frame": "Frame", "PerSectionAlignmentParameters": "PerSectionAlignmentParameters", @@ -114,7 +126,7 @@ def write_models(models: Tuple[ModelInfo, ...], path: Path) -> None: with open(path, "w") as f: template = environment.get_template("Header.jinja2") f.write(template.render()) - for model in models: + for model in sorted(models, key=lambda x: x.name): template = environment.select_template( (f"{model.name}.jinja2", "Model.jinja2"), ) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 5a444ddb9..793b69daa 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -25,115 +25,204 @@ class Alignment(Model): """Tiltseries Alignment Attributes: - id (int): An identifier to refer to a specific instance of this type + affine_transformation_matrix (str): A placeholder for the affine transformation matrix. + alignment_type (str): Whether this a LOCAL or GLOBAL alignment annotation_files (List[AnnotationFile]): The annotation files of this alignment - per_section_alignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment deposition (Deposition): The deposition this alignment is a part of deposition_id (int): None + id (int): Numeric identifier (May change!) + local_alignment_file (str): Path to the local alignment file + per_section_alignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment + run (Run): The run this alignment is a part of + run_id (int): None + tilt_offset (float): Additional tilt offset in degrees tiltseries (TiltSeries): The tilt series this alignment is a part of tiltseries_id (int): None tomograms (List[Tomogram]): The tomograms of this alignment - run (Run): The run this alignment is a part of - run_id (int): None volume_xdimension (float): X dimension of the reconstruction volume in angstrom - volume_ydimension (float): Y dimension of the reconstruction volume in angstrom - volume_zdimension (float): Z dimension of the reconstruction volume in angstrom volume_xoffset (float): X shift of the reconstruction volume in angstrom + volume_ydimension (float): Y dimension of the reconstruction volume in angstrom volume_yoffset (float): Y shift of the reconstruction volume in angstrom + volume_zdimension (float): Z dimension of the reconstruction volume in angstrom volume_zoffset (float): Z shift of the reconstruction volume in angstrom x_rotation_offset (float): Additional X rotation of the reconstruction volume in degrees - tilt_offset (float): Additional tilt offset in degrees - local_alignment_file (str): Path to the local alignment file - affine_transformation_matrix (str): A placeholder for the affine transformation matrix. """ _gql_type: str = "Alignment" _gql_root_field: str = "alignments" - id: int = IntField() + affine_transformation_matrix: str = StringField() + alignment_type: str = StringField() annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") - per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() + id: int = IntField() + local_alignment_file: str = StringField() + per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + tilt_offset: float = FloatField() tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") tiltseries_id: int = IntField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignmentId") - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() volume_xdimension: float = FloatField() - volume_ydimension: float = FloatField() - volume_zdimension: float = FloatField() volume_xoffset: float = FloatField() + volume_ydimension: float = FloatField() volume_yoffset: float = FloatField() + volume_zdimension: float = FloatField() volume_zoffset: float = FloatField() x_rotation_offset: float = FloatField() - tilt_offset: float = FloatField() - local_alignment_file: str = StringField() - affine_transformation_matrix: str = StringField() +class Annotation(Model): + """Metadata for an annotation + + Attributes: + annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. + annotation_shapes (List[AnnotationShape]): The annotation shapes of this annotation + annotation_software (str): Software used for generating this annotation + authors (List[AnnotationAuthor]): The annotation authors of this annotation + confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + deposition (Deposition): The deposition this annotation is a part of + deposition_date (date): Date when an annotation set is initially received by the Data Portal. + deposition_id (int): None + ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. + ground_truth_used (str): Annotation filename used as ground truth for precision and recall + https_metadata_path (str): HTTPS path for the metadata json file for this annotation + id (int): Numeric identifier (May change!) + is_curator_recommended (bool): Data curator’s subjective choice as the best annotation of the same annotation object ID + last_modified_date (date): Date when an annotation was last modified in the Data Portal + method_type (str): The method type for generating the annotation (e.g. manual, hybrid, automated) + object_count (int): Number of objects identified + object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + object_id (str): Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. + object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + object_state (str): Molecule state annotated (e.g. open, closed) + release_date (date): Date when annotation data is made public by the Data Portal. + run (Run): The run this annotation is a part of + run_id (int): None + s3_metadata_path (str): S3 path for the metadata json file for this annotation + """ + + _gql_type: str = "Annotation" + _gql_root_field: str = "annotations" + + annotation_method: str = StringField() + annotation_publication: str = StringField() + annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") + annotation_software: str = StringField() + authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") + confidence_precision: float = FloatField() + confidence_recall: float = FloatField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition_date: date = DateField() + deposition_id: int = IntField() + ground_truth_status: bool = BooleanField() + ground_truth_used: str = StringField() + https_metadata_path: str = StringField() + id: int = IntField() + is_curator_recommended: bool = BooleanField() + last_modified_date: date = DateField() + method_type: str = StringField() + object_count: int = IntField() + object_description: str = StringField() + object_id: str = StringField() + object_name: str = StringField() + object_state: str = StringField() + release_date: date = DateField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + s3_metadata_path: str = StringField() + + def download( + self, + dest_path: Optional[str] = None, + format: Optional[str] = None, + shape: Optional[str] = None, + ): + """Download annotation files for a given format and/or shape + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) + format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) + """ + download_metadata = False + for file in self.files: + if format and file.format != format: + continue + if shape and file.shape_type != shape: + continue + file.download(dest_path) + download_metadata = True + if download_metadata: + download_https(self.https_metadata_path, dest_path) class AnnotationAuthor(Model): - """Author of an annotation + """Metadata for an annotation's authors Attributes: - id (int): An identifier to refer to a specific instance of this type + affiliation_address (str): Address of the institution an annotator is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + affiliation_name (str): Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. annotation (Annotation): The annotation this annotation author is a part of annotation_id (int): None - author_list_order (int): The order that the author is listed as in the associated publication - orcid (str): The ORCID identifier for the author. - name (str): The full name of the author. - email (str): The email address of the author. - affiliation_name (str): The name of the author's affiliation. - affiliation_address (str): The address of the author's affiliation. - affiliation_identifier (str): A Research Organization Registry (ROR) identifier. - corresponding_author_status (bool): Whether the author is a corresponding author. - primary_author_status (bool): Whether the author is a primary author. + author_list_order (int): The order in which the author appears in the publication + corresponding_author_status (bool): Indicates whether an annotator is the corresponding author + email (str): Email address for this author + id (int): Numeric identifier (May change!) + name (str): Full name of an annotation author (e.g. Jane Doe). + orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + primary_author_status (bool): Indicates whether an author is the main person executing the annotation, especially on manual annotation """ _gql_type: str = "AnnotationAuthor" _gql_root_field: str = "annotationAuthors" - id: int = IntField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + affiliation_name: str = StringField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") annotation_id: int = IntField() author_list_order: int = IntField() - orcid: str = StringField() - name: str = StringField() - email: str = StringField() - affiliation_name: str = StringField() - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() corresponding_author_status: bool = BooleanField() + email: str = StringField() + id: int = IntField() + name: str = StringField() + orcid: str = StringField() primary_author_status: bool = BooleanField() class AnnotationFile(Model): - """Files associated with an annotation + """Metadata for files associated with an annotation Attributes: - id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this annotation file is a part of alignment_id (int): None annotation_shape (AnnotationShape): The annotation shape this annotation file is a part of annotation_shape_id (int): None + format (str): File format for this file + https_path (str): HTTPS path for this annotation file + id (int): Numeric identifier (May change!) + is_visualization_default (bool): Data curator’s subjective choice of default annotation to display in visualization for an object + s3_path (str): s3 path of the annotation file + source (str): The source type for the annotation file (dataset_author, community, or portal_standard) tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of tomogram_voxel_spacing_id (int): None - format (str): File format label - s3_path (str): Path to the file in s3 - https_path (str): Path to the file as an https url - is_visualization_default (bool): This annotation will be rendered in neuroglancer by default. """ _gql_type: str = "AnnotationFile" _gql_root_field: str = "annotationFiles" - id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") annotation_shape_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogram_voxel_spacing_id: int = IntField() format: str = StringField() - s3_path: str = StringField() https_path: str = StringField() + id: int = IntField() is_visualization_default: bool = BooleanField() + s3_path: str = StringField() + source: str = StringField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() def download(self, dest_path: Optional[str] = None): if self.format == "zarr": @@ -145,428 +234,374 @@ class AnnotationShape(Model): """Shapes associated with an annotation Attributes: - id (int): An identifier to refer to a specific instance of this type annotation (Annotation): The annotation this annotation shape is a part of - annotation_id (int): None annotation_files (List[AnnotationFile]): The annotation files of this annotation shape + annotation_id (int): None + id (int): Numeric identifier (May change!) + shape_type (str): The shape of the annotation (SegmentationMask, OrientedPoint, Point, InstanceSegmentation, Mesh) """ _gql_type: str = "AnnotationShape" _gql_root_field: str = "annotationShapes" - id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") - annotation_id: int = IntField() annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") -class Annotation(Model): - """Metadata about an annotation for a run + annotation_id: int = IntField() + id: int = IntField() + shape_type: str = StringField() +class Dataset(Model): + """A collection of imaging experiments on the same organism Attributes: - id (int): An identifier to refer to a specific instance of this type - run (Run): The run this annotation is a part of - run_id (int): None - annotation_shapes (List[AnnotationShape]): The annotation shapes of this annotation - authors (List[AnnotationAuthor]): The annotation authors of this annotation - deposition (Deposition): The deposition this annotation is a part of + authors (List[DatasetAuthor]): The dataset authors of this dataset + cell_component_id (str): If the dataset focuses on a specific part of a cell, the subset is included here + cell_component_name (str): Name of the cellular component + cell_name (str): Name of the cell from which a biological sample used in a CryoET study is derived from. + cell_strain_id (str): Link to more information about the cell strain + cell_strain_name (str): Cell line or strain for the sample. + cell_type_id (str): Cell Ontology identifier for the cell type + dataset_publications (str): Comma-separated list of DOIs for publications associated with the dataset. + deposition (Deposition): The deposition this dataset is a part of + deposition_date (date): Date when a dataset is initially received by the Data Portal. deposition_id (int): None - s3_metadata_path (str): Path to the file in s3 - https_metadata_path (str): Path to the file as an https url - annotation_publication (str): List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. - annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. - object_id (str): Gene Ontology Cellular Component identifier for the annotation object - object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) - object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. - object_state (str): Molecule state annotated (e.g. open, closed) - object_count (int): Number of objects identified - confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly - ground_truth_used (str): Annotation filename used as ground truth for precision and recall - annotation_software (str): Software used for generating this annotation - is_curator_recommended (bool): This annotation is recommended by the curator to be preferred for this object type. - deposition_date (date): The date a data item was received by the cryoET data portal. - release_date (date): The date a data item was received by the cryoET data portal. - last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. + description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. + funding_sources (List[DatasetFunding]): The dataset fundings of this dataset + grid_preparation (str): Describe Cryo-ET grid preparation. + https_prefix (str): The https directory path where this dataset is contained + id (int): An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree + key_photo_thumbnail_url (str): URL for the thumbnail of preview image. + key_photo_url (str): URL for the dataset preview image. + last_modified_date (date): Date when a released dataset is last modified. + organism_name (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens + organism_taxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 + other_setup (str): Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication + publications (str): Comma-separated list of DOIs for publications associated with the dataset. + related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + release_date (date): Date when a dataset is made available on the Data Portal. + runs (List[Run]): The runs of this dataset + s3_prefix (str): The S3 public bucket path where this dataset is contained + sample_preparation (str): Describe how the sample was prepared. + sample_type (str): Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + tissue_id (str): UBERON identifier for the tissue + tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. + title (str): Title of a CryoET dataset """ - _gql_type: str = "Annotation" - _gql_root_field: str = "annotations" + _gql_type: str = "Dataset" + _gql_root_field: str = "datasets" - id: int = IntField() - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") - authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") + authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") + cell_component_id: str = StringField() + cell_component_name: str = StringField() + cell_name: str = StringField() + cell_strain_id: str = StringField() + cell_strain_name: str = StringField() + cell_type_id: str = StringField() + dataset_publications: str = StringField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_id: int = IntField() - s3_metadata_path: str = StringField() - https_metadata_path: str = StringField() - annotation_publication: str = StringField() - annotation_method: str = StringField() - ground_truth_status: bool = BooleanField() - object_id: str = StringField() - object_name: str = StringField() - object_description: str = StringField() - object_state: str = StringField() - object_count: int = IntField() - confidence_precision: float = FloatField() - confidence_recall: float = FloatField() - ground_truth_used: str = StringField() - annotation_software: str = StringField() - is_curator_recommended: bool = BooleanField() deposition_date: date = DateField() - release_date: date = DateField() + deposition_id: int = IntField() + description: str = StringField() + funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") + grid_preparation: str = StringField() + https_prefix: str = StringField() + id: int = IntField() + key_photo_thumbnail_url: str = StringField() + key_photo_url: str = StringField() last_modified_date: date = DateField() + organism_name: str = StringField() + organism_taxid: int = IntField() + other_setup: str = StringField() + publications: str = StringField() + related_database_entries: str = StringField() + release_date: date = DateField() + runs: List[Run] = ListRelationship("Run", "id", "datasetId") + s3_prefix: str = StringField() + sample_preparation: str = StringField() + sample_type: str = StringField() + tissue_id: str = StringField() + tissue_name: str = StringField() + title: str = StringField() - def download( - self, - dest_path: Optional[str] = None, - format: Optional[str] = None, - shape: Optional[str] = None, - ): - """Download annotation files for a given format and/or shape + def download_everything(self, dest_path: Optional[str] = None): + """Download all of the data for this dataset. Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) - format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - download_metadata = False - for file in self.files: - if format and file.format != format: - continue - if shape and file.shape_type != shape: - continue - file.download(dest_path) - download_metadata = True - if download_metadata: - download_https(self.https_metadata_path, dest_path) + recursive_prefix = "/".join(self.s3_prefix.strip("/").split("/")[:-1]) + "/" + download_directory(self.s3_prefix, recursive_prefix, dest_path) class DatasetAuthor(Model): """An author of a dataset Attributes: - id (int): An identifier to refer to a specific instance of this type + affiliation_address (str): Address of the institution an author is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated + author_list_order (int): The order in which the author appears in the publication + corresponding_author_status (bool): Indicates whether an author is the corresponding author dataset (Dataset): The dataset this dataset author is a part of dataset_id (int): None - author_list_order (int): The order that the author is listed as in the associated publication - orcid (str): The ORCID identifier for the author. - name (str): The full name of the author. - email (str): The email address of the author. - affiliation_name (str): The name of the author's affiliation. - affiliation_address (str): The address of the author's affiliation. - affiliation_identifier (str): A Research Organization Registry (ROR) identifier. - corresponding_author_status (bool): Whether the author is a corresponding author. - primary_author_status (bool): Whether the author is a primary author. + email (str): Email address for this author + id (int): Numeric identifier (May change!) + name (str): Full name of an author (e.g. Jane Doe). + orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + primary_author_status (bool): Indicates whether an author is the main person associated with the corresponding dataset """ _gql_type: str = "DatasetAuthor" _gql_root_field: str = "datasetAuthors" - id: int = IntField() - dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") - dataset_id: int = IntField() - author_list_order: int = IntField() - orcid: str = StringField() - name: str = StringField() - email: str = StringField() - affiliation_name: str = StringField() affiliation_address: str = StringField() affiliation_identifier: str = StringField() + affiliation_name: str = StringField() + author_list_order: int = IntField() corresponding_author_status: bool = BooleanField() + dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + dataset_id: int = IntField() + email: str = StringField() + id: int = IntField() + name: str = StringField() + orcid: str = StringField() primary_author_status: bool = BooleanField() class DatasetFunding(Model): - """Information about how a dataset was funded + """Metadata for a dataset's funding sources Attributes: - id (int): An identifier to refer to a specific instance of this type dataset (Dataset): The dataset this dataset funding is a part of dataset_id (int): None - funding_agency_name (str): The name of the funding source. - grant_id (str): Grant identifier provided by the funding agency + funding_agency_name (str): Name of the funding agency. + grant_id (str): Grant identifier provided by the funding agency. + id (int): Numeric identifier (May change!) """ _gql_type: str = "DatasetFunding" - _gql_root_field: str = "datasetFunding" + _gql_root_field: str = "datasetFundedByThisSource" - id: int = IntField() dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") dataset_id: int = IntField() funding_agency_name: str = StringField() grant_id: str = StringField() -class Dataset(Model): - """An author of a dataset + id: int = IntField() +class Deposition(Model): + """Deposition metadata Attributes: - id (int): An identifier to refer to a specific instance of this type - deposition (Deposition): The deposition this dataset is a part of - deposition_id (int): None - funding_sources (List[DatasetFunding]): The dataset fundings of this dataset - authors (List[DatasetAuthor]): The dataset authors of this dataset - runs (List[Run]): The runs of this dataset - title (str): Title of a CryoET dataset. - description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - organism_name (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. - organism_taxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 - tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. - tissue_id (str): The UBERON identifier for the tissue. - cell_name (str): Name of the cell type from which a biological sample used in a CryoET study is derived from. - cell_type_id (str): Cell Ontology identifier for the cell type - cell_strain_name (str): Cell line or strain for the sample. - cell_strain_id (str): Link to more information about the cell strain. - sample_preparation (str): Describes how the sample was prepared. - grid_preparation (str): Describes Cryo-ET grid preparation. - other_setup (str): Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. - key_photo_url (str): URL for the dataset preview image. - key_photo_thumbnail_url (str): URL for the thumbnail of preview image. - cell_component_name (str): Name of the cellular component. - cell_component_id (str): The GO identifier for the cellular component. - deposition_date (date): The date a data item was received by the cryoET data portal. - release_date (date): The date a data item was received by the cryoET data portal. - last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. - publications (str): Comma-separated list of DOIs for publications associated with the dataset. - related_database_entries (str): Comma-separated list of related database entries for the dataset. - s3_prefix (str): Path to a directory containing data for this entity as an S3 url - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url + alignments (List[Alignment]): The alignments of this deposition + annotations (List[Annotation]): The annotations of this deposition + authors (List[DepositionAuthor]): The deposition authors of this deposition + datasets (List[Dataset]): The datasets of this deposition + deposition_date (date): The date the deposition was deposited + deposition_publications (str): The publications related to this deposition + deposition_types (List[DepositionType]): The deposition types of this deposition + description (str): Description for the deposition + frames (List[Frame]): The frames of this deposition + id (int): Numeric identifier (May change!) + key_photo_thumbnail_url (str): URL for the deposition thumbnail image. + key_photo_url (str): URL for the deposition preview image. + last_modified_date (date): The date the deposition was last modified + related_database_entries (str): The related database entries to this deposition + release_date (date): The date the deposition was released + tiltseries (List[TiltSeries]): The tilt series of this deposition + title (str): Title for the deposition + tomograms (List[Tomogram]): The tomograms of this deposition """ - _gql_type: str = "Dataset" - _gql_root_field: str = "datasets" + _gql_type: str = "Deposition" + _gql_root_field: str = "depositions" - id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_id: int = IntField() - funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") - authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") - runs: List[Run] = ListRelationship("Run", "id", "datasetId") - title: str = StringField() + alignments: List[Alignment] = ListRelationship("Alignment", "id", "depositionId") + annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") + authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") + datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") + deposition_date: date = DateField() + deposition_publications: str = StringField() + deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "depositionId") description: str = StringField() - organism_name: str = StringField() - organism_taxid: int = IntField() - tissue_name: str = StringField() - tissue_id: str = StringField() - cell_name: str = StringField() - cell_type_id: str = StringField() - cell_strain_name: str = StringField() - cell_strain_id: str = StringField() - sample_preparation: str = StringField() - grid_preparation: str = StringField() - other_setup: str = StringField() - key_photo_url: str = StringField() + frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") + id: int = IntField() key_photo_thumbnail_url: str = StringField() - cell_component_name: str = StringField() - cell_component_id: str = StringField() - deposition_date: date = DateField() - release_date: date = DateField() + key_photo_url: str = StringField() last_modified_date: date = DateField() - publications: str = StringField() related_database_entries: str = StringField() - s3_prefix: str = StringField() - https_prefix: str = StringField() - - def download_everything(self, dest_path: Optional[str] = None): - """Download all of the data for this dataset. - - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - recursive_prefix = "/".join(self.s3_prefix.strip("/").split("/")[:-1]) + "/" - download_directory(self.s3_prefix, recursive_prefix, dest_path) + release_date: date = DateField() + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "depositionId") + title: str = StringField() + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") class DepositionAuthor(Model): - """Author of a deposition + """Authors for a deposition Attributes: - id (int): An identifier to refer to a specific instance of this type + affiliation_address (str): Address of the institution an author is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated + author_list_order (int): The order in which the author appears in the publication + corresponding_author_status (bool): Indicates whether an author is the corresponding author deposition (Deposition): The deposition this deposition author is a part of deposition_id (int): None - author_list_order (int): The order that the author is listed as in the associated publication - orcid (str): The ORCID identifier for the author. - name (str): The full name of the author. - email (str): The email address of the author. - affiliation_name (str): The name of the author's affiliation. - affiliation_address (str): The address of the author's affiliation. - affiliation_identifier (str): A Research Organization Registry (ROR) identifier. - corresponding_author_status (bool): Whether the author is a corresponding author. - primary_author_status (bool): Whether the author is a primary author. + email (str): Email address for this author + id (int): Numeric identifier (May change!) + name (str): Full name of a deposition author (e.g. Jane Doe). + orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + primary_author_status (bool): Indicates whether an author is the main person creating the deposition """ _gql_type: str = "DepositionAuthor" _gql_root_field: str = "depositionAuthors" - id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_id: int = IntField() - author_list_order: int = IntField() - orcid: str = StringField() - name: str = StringField() - email: str = StringField() - affiliation_name: str = StringField() affiliation_address: str = StringField() affiliation_identifier: str = StringField() + affiliation_name: str = StringField() + author_list_order: int = IntField() corresponding_author_status: bool = BooleanField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition_id: int = IntField() + email: str = StringField() + id: int = IntField() + name: str = StringField() + orcid: str = StringField() primary_author_status: bool = BooleanField() -class Deposition(Model): +class DepositionType(Model): """None Attributes: - id (int): An identifier to refer to a specific instance of this type - authors (List[DepositionAuthor]): The deposition authors of this deposition - alignments (List[Alignment]): The alignments of this deposition - annotations (List[Annotation]): The annotations of this deposition - datasets (List[Dataset]): The datasets of this deposition - frames (List[Frame]): The frames of this deposition - tiltseries (List[TiltSeries]): The tilt series of this deposition - tomograms (List[Tomogram]): The tomograms of this deposition - deposition_title (str): Title of a CryoET deposition. - deposition_description (str): A short description of the deposition, similar to an abstract for a journal article or dataset. - publications (str): Comma-separated list of DOIs for publications associated with the dataset. - related_database_entries (str): Comma-separated list of related database entries for the dataset. - deposition_date (date): The date a data item was received by the cryoET data portal. - release_date (date): The date a data item was received by the cryoET data portal. - last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. + deposition (Deposition): The deposition this deposition type is a part of + deposition_id (int): None + id (int): Numeric identifier (May change!) + type (str): The type of data submitted as a part of this deposition (annotation, dataset, tomogram) """ - _gql_type: str = "Deposition" - _gql_root_field: str = "depositions" + _gql_type: str = "DepositionType" + _gql_root_field: str = "depositionTypes" + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition_id: int = IntField() id: int = IntField() - authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") - alignments: List[Alignment] = ListRelationship("Alignment", "id", "depositionId") - annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") - datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") - frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "depositionId") - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") - deposition_title: str = StringField() - deposition_description: str = StringField() - publications: str = StringField() - related_database_entries: str = StringField() - deposition_date: date = DateField() - release_date: date = DateField() - last_modified_date: date = DateField() + type: str = StringField() class Frame(Model): """None Attributes: - id (int): An identifier to refer to a specific instance of this type + acquisition_order (int): Frame's acquistion order within a tilt experiment deposition (Deposition): The deposition this frame is a part of deposition_id (int): None + dose (float): The raw camera angle for a frame + https_gain_file (str): HTTPS path to the gain file for this frame + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url + id (int): Numeric identifier (May change!) + is_gain_corrected (bool): Whether this frame has been gain corrected per_section_parameters (List[PerSectionParameters]): The per section parameters of this frame + raw_angle (float): Camera angle for a frame run (Run): The run this frame is a part of run_id (int): None - raw_angle (float): Camera angle for a frame - acquisition_order (int): Frame's acquistion order within a tilt experiment - dose (float): The raw camera angle for a frame - is_gain_corrected (bool): Whether this frame has been gain corrected s3_gain_file (str): S3 path to the gain file for this frame - https_gain_file (str): HTTPS path to the gain file for this frame s3_prefix (str): Path to a directory containing data for this entity as an S3 url - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "Frame" _gql_root_field: str = "frames" - id: int = IntField() + acquisition_order: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() + dose: float = FloatField() + https_gain_file: str = StringField() + https_prefix: str = StringField() + id: int = IntField() + is_gain_corrected: bool = BooleanField() per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") + raw_angle: float = FloatField() run: Run = ItemRelationship("Run", "runId", "id") run_id: int = IntField() - raw_angle: float = FloatField() - acquisition_order: int = IntField() - dose: float = FloatField() - is_gain_corrected: bool = BooleanField() s3_gain_file: str = StringField() - https_gain_file: str = StringField() s3_prefix: str = StringField() - https_prefix: str = StringField() class PerSectionAlignmentParameters(Model): """Map alignment parameters to tilt series frames Attributes: - id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this per section alignment parameters is a part of alignment_id (int): None - z_index (int): z-index of the frame in the tiltseries - x_offset (float): In-plane X-shift of the projection in angstrom - y_offset (float): In-plane Y-shift of the projection in angstrom - in_plane_rotation (float): In-plane rotation of the projection in degrees beam_tilt (float): Beam tilt during projection in degrees + id (int): Numeric identifier (May change!) + in_plane_rotation (float): In-plane rotation of the projection in degrees tilt_angle (float): Tilt angle of the projection in degrees + x_offset (float): In-plane X-shift of the projection in angstrom + y_offset (float): In-plane Y-shift of the projection in angstrom + z_index (int): z-index of the frame in the tiltseries """ _gql_type: str = "PerSectionAlignmentParameters" _gql_root_field: str = "perSectionAlignmentParameters" - id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() - z_index: int = IntField() - x_offset: float = FloatField() - y_offset: float = FloatField() - in_plane_rotation: float = FloatField() beam_tilt: float = FloatField() + id: int = IntField() + in_plane_rotation: float = FloatField() tilt_angle: float = FloatField() + x_offset: float = FloatField() + y_offset: float = FloatField() + z_index: int = IntField() class PerSectionParameters(Model): - """Record how frames get mapped to TiltSeries + """Record how frames get mapped to Tiltseries Attributes: - id (int): An identifier to refer to a specific instance of this type + astigmatic_angle (float): Angle of ast + astigmatism (float): Astigmatism amount for this frame + defocus (float): defocus amount frame (Frame): The frame this per section parameters is a part of frame_id (int): None + id (int): Numeric identifier (May change!) tiltseries (TiltSeries): The tilt series this per section parameters is a part of tiltseries_id (int): None z_index (int): z-index of the frame in the tiltseries - defocus (float): defocus amount - astigmatism (float): Astigmatism amount for this frame - astigmatic_angle (float): Angle of ast """ _gql_type: str = "PerSectionParameters" _gql_root_field: str = "perSectionParameters" - id: int = IntField() + astigmatic_angle: float = FloatField() + astigmatism: float = FloatField() + defocus: float = FloatField() frame: Frame = ItemRelationship("Frame", "frameId", "id") frame_id: int = IntField() + id: int = IntField() tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") tiltseries_id: int = IntField() z_index: int = IntField() - defocus: float = FloatField() - astigmatism: float = FloatField() - astigmatic_angle: float = FloatField() class Run(Model): """None Attributes: - id (int): An identifier to refer to a specific instance of this type alignments (List[Alignment]): The alignments of this run annotations (List[Annotation]): The annotations of this run dataset (Dataset): The dataset this run is a part of dataset_id (int): None frames (List[Frame]): The frames of this run + https_prefix (str): The HTTPS directory path where this run is contained url + id (int): Numeric identifier (May change!) + name (str): Short name for this experiment run + s3_prefix (str): The S3 public bucket path where this run is contained tiltseries (List[TiltSeries]): The tilt series of this run - tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run tomograms (List[Tomogram]): The tomograms of this run - name (str): Name of a run - s3_prefix (str): Path to a directory containing data for this entity as an S3 url - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url + tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run """ _gql_type: str = "Run" _gql_root_field: str = "runs" - id: int = IntField() alignments: List[Alignment] = ListRelationship("Alignment", "id", "runId") annotations: List[Annotation] = ListRelationship("Annotation", "id", "runId") dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") dataset_id: int = IntField() frames: List[Frame] = ListRelationship("Frame", "id", "runId") - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "runId") - tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") + https_prefix: str = StringField() + id: int = IntField() name: str = StringField() s3_prefix: str = StringField() - https_prefix: str = StringField() + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "runId") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") + tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this run. @@ -586,93 +621,93 @@ class TiltSeries(Model): """None Attributes: - id (int): An identifier to refer to a specific instance of this type + acceleration_voltage (int): Electron Microscope Accelerator voltage in volts + aligned_tiltseries_binning (int): Binning factor of the aligned tilt series alignments (List[Alignment]): The alignments of this tilt series - per_section_parameters (List[PerSectionParameters]): The per section parameters of this tilt series - run (Run): The run this tilt series is a part of - run_id (int): None + binning_from_frames (float): Describes the binning factor from frames to tilt series file + camera_manufacturer (str): Name of the camera manufacturer + camera_model (str): Camera model name + data_acquisition_software (str): Software used to collect data deposition (Deposition): The deposition this tilt series is a part of deposition_id (int): None - s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format - s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) - https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format - https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) - s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries - https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries - s3_angle_list (str): S3 path to the angle list file for this tiltseries https_angle_list (str): HTTPS path to the angle list file for this tiltseries - s3_gain_file (str): S3 path to the gain file for this tiltseries + https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries https_gain_file (str): HTTPS path to the gain file for this tiltseries - acceleration_voltage (float): Electron Microscope Accelerator voltage in volts - spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters - microscope_model (str): Microscope model name + https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) + https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format + id (int): Numeric identifier (May change!) + is_aligned (bool): Whether this tilt series is aligned + microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector microscope_energy_filter (str): Energy filter setup used - microscope_phase_plate (str): Phase plate configuration microscope_image_corrector (str): Image corrector setup - microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - camera_manufacturer (str): Name of the camera manufacturer - camera_model (str): Camera model name - tilt_min (float): Minimal tilt angle in degrees - tilt_max (float): Maximal tilt angle in degrees - tilt_range (float): Total tilt range from min to max in degrees - tilt_step (float): Tilt step in degrees - tilting_scheme (str): The order of stage tilting during acquisition of the data - tilt_axis (float): Rotation angle in degrees - total_flux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series - data_acquisition_software (str): Software used to collect data + microscope_model (str): Microscope model name + microscope_phase_plate (str): Phase plate configuration + per_section_parameters (List[PerSectionParameters]): The per section parameters of this tilt series + pixel_spacing (float): Pixel spacing equal in both axes in angstroms related_empiar_entry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier - binning_from_frames (float): Describes the binning factor from frames to tilt series file - tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) - is_aligned (bool): Whether this tilt series is aligned - pixel_spacing (float): Pixel spacing for the tilt series - aligned_tiltseries_binning (float): Binning factor of the aligned tilt series + run (Run): The run this tilt series is a part of + run_id (int): None + s3_angle_list (str): S3 path to the angle list file for this tiltseries + s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries + s3_gain_file (str): S3 path to the gain file for this tiltseries + s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) + s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format + spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters + tilt_axis (float): Rotation angle in degrees + tilting_scheme (str): The order of stage tilting during acquisition of the data + tilt_max (float): Maximal tilt angle in degrees + tilt_min (float): Minimal tilt angle in degrees + tilt_range (float): Total tilt range in degrees tiltseries_frames_count (int): Number of frames associated with this tiltseries + tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) + tilt_step (float): Tilt step in degrees + total_flux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series """ _gql_type: str = "Tiltseries" _gql_root_field: str = "tiltseries" - id: int = IntField() + acceleration_voltage: int = IntField() + aligned_tiltseries_binning: int = IntField() alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_seriesId") - per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_seriesId") - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() + binning_from_frames: float = FloatField() + camera_manufacturer: str = StringField() + camera_model: str = StringField() + data_acquisition_software: str = StringField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - s3_omezarr_dir: str = StringField() - s3_mrc_file: str = StringField() - https_omezarr_dir: str = StringField() - https_mrc_file: str = StringField() - s3_collection_metadata: str = StringField() - https_collection_metadata: str = StringField() - s3_angle_list: str = StringField() https_angle_list: str = StringField() - s3_gain_file: str = StringField() + https_collection_metadata: str = StringField() https_gain_file: str = StringField() - acceleration_voltage: float = FloatField() - spherical_aberration_constant: float = FloatField() - microscope_model: str = StringField() + https_mrc_file: str = StringField() + https_omezarr_dir: str = StringField() + id: int = IntField() + is_aligned: bool = BooleanField() + microscope_additional_info: str = StringField() microscope_energy_filter: str = StringField() - microscope_phase_plate: str = StringField() microscope_image_corrector: str = StringField() - microscope_additional_info: str = StringField() - camera_manufacturer: str = StringField() - camera_model: str = StringField() - tilt_min: float = FloatField() + microscope_model: str = StringField() + microscope_phase_plate: str = StringField() + per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_seriesId") + pixel_spacing: float = FloatField() + related_empiar_entry: str = StringField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + s3_angle_list: str = StringField() + s3_collection_metadata: str = StringField() + s3_gain_file: str = StringField() + s3_mrc_file: str = StringField() + s3_omezarr_dir: str = StringField() + spherical_aberration_constant: float = FloatField() + tilt_axis: float = FloatField() + tilting_scheme: str = StringField() tilt_max: float = FloatField() + tilt_min: float = FloatField() tilt_range: float = FloatField() + tiltseries_frames_count: int = IntField() + tilt_series_quality: int = IntField() tilt_step: float = FloatField() - tilting_scheme: str = StringField() - tilt_axis: float = FloatField() total_flux: float = FloatField() - data_acquisition_software: str = StringField() - related_empiar_entry: str = StringField() - binning_from_frames: float = FloatField() - tilt_series_quality: int = IntField() - is_aligned: bool = BooleanField() - pixel_spacing: float = FloatField() - aligned_tiltseries_binning: float = FloatField() - tiltseries_frames_count: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries @@ -718,149 +753,89 @@ def download_mrcfile( """ url = self.https_mrc_bin1 download_https(url, dest_path) -class TomogramAuthor(Model): - """Author of a tomogram - - Attributes: - id (int): An identifier to refer to a specific instance of this type - tomogram (Tomogram): The tomogram this tomogram author is a part of - tomogram_id (int): None - author_list_order (int): The order that the author is listed as in the associated publication - orcid (str): The ORCID identifier for the author. - name (str): The full name of the author. - email (str): The email address of the author. - affiliation_name (str): The name of the author's affiliation. - affiliation_address (str): The address of the author's affiliation. - affiliation_identifier (str): A Research Organization Registry (ROR) identifier. - corresponding_author_status (bool): Whether the author is a corresponding author. - primary_author_status (bool): Whether the author is a primary author. - """ - - _gql_type: str = "TomogramAuthor" - _gql_root_field: str = "tomogramAuthors" - - id: int = IntField() - tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") - tomogram_id: int = IntField() - author_list_order: int = IntField() - orcid: str = StringField() - name: str = StringField() - email: str = StringField() - affiliation_name: str = StringField() - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - corresponding_author_status: bool = BooleanField() - primary_author_status: bool = BooleanField() -class TomogramVoxelSpacing(Model): - """Voxel spacings for a run - - Attributes: - id (int): An identifier to refer to a specific instance of this type - annotation_files (List[AnnotationFile]): The annotation files of this tomogram voxel spacing - run (Run): The run this tomogram voxel spacing is a part of - run_id (int): None - tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing - voxel_spacing (float): Voxel spacing equal in all three axes in angstroms - s3_prefix (str): Path to a directory containing data for this entity as an S3 url - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url - """ - - _gql_type: str = "TomogramVoxelSpacing" - _gql_root_field: str = "tomogramVoxelSpacings" - - id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") - voxel_spacing: float = FloatField() - s3_prefix: str = StringField() - https_prefix: str = StringField() - - def download_everything(self, dest_path: Optional[str] = None): - """Download all of the data for this tomogram voxel spacing. - - Args: - dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. - """ - download_directory(self.s3_prefix, self.run.s3_prefix, dest_path) class Tomogram(Model): """Metadata describing a tomogram. Attributes: - id (int): An identifier to refer to a specific instance of this type alignment (Alignment): The alignment this tomogram is a part of alignment_id (int): None authors (List[TomogramAuthor]): The tomogram authors of this tomogram + ctf_corrected (bool): Whether this tomogram is CTF corrected deposition (Deposition): The deposition this tomogram is a part of deposition_id (int): None - run (Run): The run this tomogram is a part of - run_id (int): None - tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of - tomogram_voxel_spacing_id (int): None + fiducial_alignment_status (str): Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) + https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format + id (int): Numeric identifier (May change!) + is_canonical (bool): Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + is_standardized (bool): Whether this tomogram was generated per the portal's standards + key_photo_thumbnail_url (str): URL for the thumbnail of key photo + key_photo_url (str): URL for the key photo name (str): Short name for this tomogram - size_x (float): Tomogram voxels in the x dimension - size_y (float): Tomogram voxels in the y dimension - size_z (float): Tomogram voxels in the z dimension - voxel_spacing (float): Voxel spacing equal in all three axes in angstroms - tomogram_version (float): Version of tomogram + neuroglancer_config (str): the compact json of neuroglancer config + offset_x (int): x offset data relative to the canonical tomogram in pixels + offset_y (int): y offset data relative to the canonical tomogram in pixels + offset_z (int): z offset data relative to the canonical tomogram in pixels + processing (str): Describe additional processing used to derive the tomogram processing_software (str): Processing software used to derive the tomogram + reconstruction_method (str): Describe reconstruction method (WBP, SART, SIRT) reconstruction_software (str): Name of software used for reconstruction - is_canonical (bool): whether this tomogram is canonical for the run - s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format - https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format + run (Run): The run this tomogram is a part of + run_id (int): None s3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) - https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) + s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format scale0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram scale1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram scale2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram - ctf_corrected (bool): Whether this tomogram is CTF corrected - offset_x (int): x offset data relative to the canonical tomogram in pixels - offset_y (int): y offset data relative to the canonical tomogram in pixels - offset_z (int): z offset data relative to the canonical tomogram in pixels - key_photo_url (str): URL for the key photo - key_photo_thumbnail_url (str): URL for the thumbnail of key photo - neuroglancer_config (str): the compact json of neuroglancer config - is_standardized (bool): Whether this tomogram was generated per the portal's standards + size_x (float): Number of pixels in the 3D data fast axis + size_y (float): Number of pixels in the 3D data medium axis + size_z (float): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + tomogram_version (float): Version of tomogram + tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of + tomogram_voxel_spacing_id (int): None + voxel_spacing (float): Voxel spacing equal in all three axes in angstroms """ _gql_type: str = "Tomogram" _gql_root_field: str = "tomograms" - id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogramId") + ctf_corrected: bool = BooleanField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogram_voxel_spacing_id: int = IntField() + fiducial_alignment_status: str = StringField() + https_mrc_file: str = StringField() + https_omezarr_dir: str = StringField() + id: int = IntField() + is_canonical: bool = BooleanField() + is_standardized: bool = BooleanField() + key_photo_thumbnail_url: str = StringField() + key_photo_url: str = StringField() name: str = StringField() - size_x: float = FloatField() - size_y: float = FloatField() - size_z: float = FloatField() - voxel_spacing: float = FloatField() - tomogram_version: float = FloatField() + neuroglancer_config: str = StringField() + offset_x: int = IntField() + offset_y: int = IntField() + offset_z: int = IntField() + processing: str = StringField() processing_software: str = StringField() + reconstruction_method: str = StringField() reconstruction_software: str = StringField() - is_canonical: bool = BooleanField() - s3_omezarr_dir: str = StringField() - https_omezarr_dir: str = StringField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() s3_mrc_file: str = StringField() - https_mrc_file: str = StringField() + s3_omezarr_dir: str = StringField() scale0_dimensions: str = StringField() scale1_dimensions: str = StringField() scale2_dimensions: str = StringField() - ctf_corrected: bool = BooleanField() - offset_x: int = IntField() - offset_y: int = IntField() - offset_z: int = IntField() - key_photo_url: str = StringField() - key_photo_thumbnail_url: str = StringField() - neuroglancer_config: str = StringField() - is_standardized: bool = BooleanField() + size_x: float = FloatField() + size_y: float = FloatField() + size_z: float = FloatField() + tomogram_version: float = FloatField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() + voxel_spacing: float = FloatField() def download_omezarr(self, dest_path: Optional[str] = None): """Download the OME-Zarr version of this tomogram @@ -896,21 +871,88 @@ def download_all_annotations( vs = self.tomogram_voxel_spacing for anno in vs.annotations: anno.download(dest_path, format, shape) +class TomogramAuthor(Model): + """Author of a tomogram + + Attributes: + affiliation_address (str): Address of the institution an author is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated + author_list_order (int): The order in which the author appears in the publication + corresponding_author_status (bool): Indicates whether an author is the corresponding author + email (str): Email address for this author + id (int): Numeric identifier (May change!) + name (str): Full name of an author (e.g. Jane Doe). + orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + primary_author_status (bool): Indicates whether an author is the main person creating the tomogram + tomogram (Tomogram): The tomogram this tomogram author is a part of + tomogram_id (int): None + """ + + _gql_type: str = "TomogramAuthor" + _gql_root_field: str = "tomogramAuthors" + + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + affiliation_name: str = StringField() + author_list_order: int = IntField() + corresponding_author_status: bool = BooleanField() + email: str = StringField() + id: int = IntField() + name: str = StringField() + orcid: str = StringField() + primary_author_status: bool = BooleanField() + tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") + tomogram_id: int = IntField() +class TomogramVoxelSpacing(Model): + """Voxel spacings for a run + + Attributes: + annotation_files (List[AnnotationFile]): The annotation files of this tomogram voxel spacing + https_prefix (str): The HTTPS directory path where this tomogram voxel spacing is contained + id (int): Numeric identifier (May change!) + run (Run): The run this tomogram voxel spacing is a part of + run_id (int): None + s3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained + tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing + voxel_spacing (float): The voxel spacing for the tomograms in this set in angstroms + """ + + _gql_type: str = "TomogramVoxelSpacing" + _gql_root_field: str = "tomogramVoxelSpacings" + + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") + https_prefix: str = StringField() + id: int = IntField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + s3_prefix: str = StringField() + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") + voxel_spacing: float = FloatField() + + def download_everything(self, dest_path: Optional[str] = None): + """Download all of the data for this tomogram voxel spacing. + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + download_directory(self.s3_prefix, self.run.s3_prefix, dest_path) Alignment.setup() +Annotation.setup() AnnotationAuthor.setup() AnnotationFile.setup() AnnotationShape.setup() -Annotation.setup() +Dataset.setup() DatasetAuthor.setup() DatasetFunding.setup() -Dataset.setup() -DepositionAuthor.setup() Deposition.setup() +DepositionAuthor.setup() +DepositionType.setup() Frame.setup() PerSectionAlignmentParameters.setup() PerSectionParameters.setup() Run.setup() TiltSeries.setup() +Tomogram.setup() TomogramAuthor.setup() TomogramVoxelSpacing.setup() -Tomogram.setup() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index 918f065ec..eabe8ec94 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -5,7 +5,7 @@ type Query { annotationShapes(where: AnnotationShapeWhereClause = null, orderBy: [AnnotationShapeOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationShape!]! annotations(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Annotation!]! datasetAuthors(where: DatasetAuthorWhereClause = null, orderBy: [DatasetAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetAuthor!]! - datasetFunding(where: DatasetFundingWhereClause = null, orderBy: [DatasetFundingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetFunding!]! + datasetFundedByThisSource(where: DatasetFundingWhereClause = null, orderBy: [DatasetFundingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetFunding!]! datasets(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Dataset!]! depositionAuthors(where: DepositionAuthorWhereClause = null, orderBy: [DepositionAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DepositionAuthor!]! depositions(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Deposition!]! @@ -24,7 +24,7 @@ type Query { annotationShapesAggregate(where: AnnotationShapeWhereClause = null): AnnotationShapeAggregate! annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate! datasetAuthorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate! - datasetFundingAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate! + datasetFundedByThisSourceAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate! datasetsAggregate(where: DatasetWhereClause = null): DatasetAggregate! depositionAuthorsAggregate(where: DepositionAuthorWhereClause = null): DepositionAuthorAggregate! depositionsAggregate(where: DepositionWhereClause = null): DepositionAggregate! @@ -44,7 +44,7 @@ type Alignment implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! annotationFiles( where: AnnotationFileWhereClause = null @@ -104,7 +104,7 @@ type Alignment implements EntityInterface & Node { run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run runId: Int - """Type of alignment included, i.e. is a non-rigid alignment included?""" + """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum """X dimension of the reconstruction volume in angstrom""" @@ -187,12 +187,12 @@ type AnnotationFileEdge { node: AnnotationFile! } -"""Files associated with an annotation""" +"""Metadata for files associated with an annotation""" type AnnotationFile implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment alignmentId: Int @@ -201,19 +201,23 @@ type AnnotationFile implements EntityInterface & Node { tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing tomogramVoxelSpacingId: Int - """File format label""" + """File format for this file""" format: String! - """Path to the file in s3""" + """s3 path of the annotation file""" s3Path: String! - """Path to the file as an https url""" + """HTTPS path for this annotation file""" httpsPath: String! - """This annotation will be rendered in neuroglancer by default.""" + """ + Data curator’s subjective choice of default annotation to display in visualization for an object + """ isVisualizationDefault: Boolean - """The source type for the annotation file""" + """ + The source type for the annotation file (dataset_author, community, or portal_standard) + """ source: annotation_file_source_enum } @@ -324,11 +328,12 @@ input DatasetWhereClause { depositionDate: DatetimeComparators releaseDate: DatetimeComparators lastModifiedDate: DatetimeComparators - publications: StrComparators + datasetPublications: StrComparators relatedDatabaseEntries: StrComparators s3Prefix: StrComparators httpsPrefix: StrComparators id: IntComparators + publications: StrComparators } input DepositionWhereClause { @@ -339,14 +344,16 @@ input DepositionWhereClause { frames: FrameWhereClause tiltseries: TiltseriesWhereClause tomograms: TomogramWhereClause - depositionTitle: StrComparators - depositionDescription: StrComparators + title: StrComparators + description: StrComparators depositionTypes: DepositionTypeWhereClause - publications: StrComparators + depositionPublications: StrComparators relatedDatabaseEntries: StrComparators depositionDate: DatetimeComparators releaseDate: DatetimeComparators lastModifiedDate: DatetimeComparators + keyPhotoUrl: StrComparators + keyPhotoThumbnailUrl: StrComparators id: IntComparators } @@ -448,7 +455,7 @@ input TiltseriesWhereClause { httpsAngleList: StrComparators s3GainFile: StrComparators httpsGainFile: StrComparators - accelerationVoltage: FloatComparators + accelerationVoltage: IntComparators sphericalAberrationConstant: FloatComparators microscopeManufacturer: Tiltseries_microscope_manufacturer_enumEnumComparators microscopeModel: StrComparators @@ -471,7 +478,7 @@ input TiltseriesWhereClause { tiltSeriesQuality: IntComparators isAligned: BoolComparators pixelSpacing: FloatComparators - alignedTiltseriesBinning: FloatComparators + alignedTiltseriesBinning: IntComparators tiltseriesFramesCount: IntComparators id: IntComparators } @@ -821,13 +828,15 @@ input AlignmentOrderByClause { } input DepositionOrderByClause { - depositionTitle: orderBy - depositionDescription: orderBy - publications: orderBy + title: orderBy + description: orderBy + depositionPublications: orderBy relatedDatabaseEntries: orderBy depositionDate: orderBy releaseDate: orderBy lastModifiedDate: orderBy + keyPhotoUrl: orderBy + keyPhotoThumbnailUrl: orderBy id: orderBy } @@ -912,11 +921,12 @@ input DatasetOrderByClause { depositionDate: orderBy releaseDate: orderBy lastModifiedDate: orderBy - publications: orderBy + datasetPublications: orderBy relatedDatabaseEntries: orderBy s3Prefix: orderBy httpsPrefix: orderBy id: orderBy + publications: orderBy } """Shapes associated with an annotation""" @@ -924,7 +934,7 @@ type AnnotationShape implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation annotationId: Int @@ -945,15 +955,19 @@ type AnnotationShape implements EntityInterface & Node { last: Int = null ): AnnotationFileConnection! annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate + + """ + The shape of the annotation (SegmentationMask, OrientedPoint, Point, InstanceSegmentation, Mesh) + """ shapeType: annotation_file_shape_type_enum } -"""Metadata about an annotation for a run""" +"""Metadata for an annotation""" type Annotation implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run runId: Int @@ -994,14 +1008,14 @@ type Annotation implements EntityInterface & Node { deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int - """Path to the file in s3""" + """S3 path for the metadata json file for this annotation""" s3MetadataPath: String! - """Path to the file as an https url""" + """HTTPS path for the metadata json file for this annotation""" httpsMetadataPath: String! """ - List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. """ annotationPublication: String @@ -1015,7 +1029,9 @@ type Annotation implements EntityInterface & Node { """ groundTruthStatus: Boolean - """Gene Ontology Cellular Component identifier for the annotation object""" + """ + Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. + """ objectId: String! """ @@ -1051,20 +1067,22 @@ type Annotation implements EntityInterface & Node { annotationSoftware: String """ - This annotation is recommended by the curator to be preferred for this object type. + Data curator’s subjective choice as the best annotation of the same annotation object ID """ isCuratorRecommended: Boolean - """Classification of the annotation method based on supervision.""" + """ + The method type for generating the annotation (e.g. manual, hybrid, automated) + """ methodType: annotation_method_type_enum! - """The date a data item was received by the cryoET data portal.""" + """Date when an annotation set is initially received by the Data Portal.""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """Date when annotation data is made public by the Data Portal.""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when an annotation was last modified in the Data Portal""" lastModifiedDate: DateTime! } @@ -1072,7 +1090,7 @@ type Run implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! alignments( where: AlignmentWhereClause = null @@ -1179,13 +1197,13 @@ type Run implements EntityInterface & Node { ): TomogramConnection! tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate - """Name of a run""" + """Short name for this experiment run""" name: String! - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this run is contained""" s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """The HTTPS directory path where this run is contained url""" httpsPrefix: String! } @@ -1267,13 +1285,15 @@ type AlignmentGroupByOptions { } type DepositionGroupByOptions { - depositionTitle: String - depositionDescription: String - publications: String + title: String + description: String + depositionPublications: String relatedDatabaseEntries: String depositionDate: DateTime releaseDate: DateTime lastModifiedDate: DateTime + keyPhotoUrl: String + keyPhotoThumbnailUrl: String id: Int } @@ -1290,7 +1310,7 @@ type TiltseriesGroupByOptions { httpsAngleList: String s3GainFile: String httpsGainFile: String - accelerationVoltage: Float + accelerationVoltage: Int sphericalAberrationConstant: Float microscopeManufacturer: tiltseries_microscope_manufacturer_enum microscopeModel: String @@ -1313,7 +1333,7 @@ type TiltseriesGroupByOptions { tiltSeriesQuality: Int isAligned: Boolean pixelSpacing: Float - alignedTiltseriesBinning: Float + alignedTiltseriesBinning: Int tiltseriesFramesCount: Int id: Int } @@ -1349,11 +1369,12 @@ type DatasetGroupByOptions { depositionDate: DateTime releaseDate: DateTime lastModifiedDate: DateTime - publications: String + datasetPublications: String relatedDatabaseEntries: String s3Prefix: String httpsPrefix: String id: Int + publications: String } enum AlignmentCountColumns { @@ -1514,12 +1535,14 @@ enum AnnotationCountColumns { id } -"""An author of a dataset""" +"""A collection of imaging experiments on the same organism""" type Dataset implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """ + An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree + """ id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int @@ -1575,7 +1598,7 @@ type Dataset implements EntityInterface & Node { ): RunConnection! runsAggregate(where: RunWhereClause = null): RunAggregate - """Title of a CryoET dataset.""" + """Title of a CryoET dataset""" title: String! """ @@ -1584,7 +1607,7 @@ type Dataset implements EntityInterface & Node { description: String! """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ organismName: String! @@ -1596,11 +1619,11 @@ type Dataset implements EntityInterface & Node { """ tissueName: String - """The UBERON identifier for the tissue.""" + """UBERON identifier for the tissue""" tissueId: String """ - Name of the cell type from which a biological sample used in a CryoET study is derived from. + Name of the cell from which a biological sample used in a CryoET study is derived from. """ cellName: String @@ -1610,20 +1633,22 @@ type Dataset implements EntityInterface & Node { """Cell line or strain for the sample.""" cellStrainName: String - """Link to more information about the cell strain.""" + """Link to more information about the cell strain""" cellStrainId: String - """Type of sample imaged in a CryoET study""" + """ + Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + """ sampleType: sample_type_enum - """Describes how the sample was prepared.""" + """Describe how the sample was prepared.""" samplePreparation: String - """Describes Cryo-ET grid preparation.""" + """Describe Cryo-ET grid preparation.""" gridPreparation: String """ - Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication """ otherSetup: String @@ -1633,41 +1658,51 @@ type Dataset implements EntityInterface & Node { """URL for the thumbnail of preview image.""" keyPhotoThumbnailUrl: String - """Name of the cellular component.""" + """Name of the cellular component""" cellComponentName: String - """The GO identifier for the cellular component.""" + """ + If the dataset focuses on a specific part of a cell, the subset is included here + """ cellComponentId: String - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is initially received by the Data Portal.""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is made available on the Data Portal.""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when a released dataset is last modified.""" lastModifiedDate: DateTime! """ Comma-separated list of DOIs for publications associated with the dataset. """ - publications: String + datasetPublications: String - """Comma-separated list of related database entries for the dataset.""" + """ + If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ relatedDatabaseEntries: String - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this dataset is contained""" s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """The https directory path where this dataset is contained""" httpsPrefix: String! + + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String } +"""Deposition metadata""" type Deposition implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! authors( where: DepositionAuthorWhereClause = null @@ -1789,13 +1824,11 @@ type Deposition implements EntityInterface & Node { ): TomogramConnection! tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate - """Title of a CryoET deposition.""" - depositionTitle: String! + """Title for the deposition""" + title: String! - """ - A short description of the deposition, similar to an abstract for a journal article or dataset. - """ - depositionDescription: String! + """Description for the deposition""" + description: String! depositionTypes( where: DepositionTypeWhereClause = null orderBy: [DepositionTypeOrderByClause!] = [] @@ -1814,22 +1847,26 @@ type Deposition implements EntityInterface & Node { ): DepositionTypeConnection! depositionTypesAggregate(where: DepositionTypeWhereClause = null): DepositionTypeAggregate - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String + """The publications related to this deposition""" + depositionPublications: String - """Comma-separated list of related database entries for the dataset.""" + """The related database entries to this deposition""" relatedDatabaseEntries: String - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was deposited""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was released""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """The date the deposition was last modified""" lastModifiedDate: DateTime! + + """URL for the deposition preview image.""" + keyPhotoUrl: String + + """URL for the deposition thumbnail image.""" + keyPhotoThumbnailUrl: String } """A connection to a list of items.""" @@ -1850,41 +1887,43 @@ type DepositionAuthorEdge { node: DepositionAuthor! } -"""Author of a deposition""" +"""Authors for a deposition""" type DepositionAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String - """The full name of the author.""" + """Full name of a deposition author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the deposition""" primaryAuthorStatus: Boolean } @@ -2020,11 +2059,12 @@ type DatasetMinMaxColumns { depositionDate: DateTime releaseDate: DateTime lastModifiedDate: DateTime - publications: String + datasetPublications: String relatedDatabaseEntries: String s3Prefix: String httpsPrefix: String id: Int + publications: String } enum DatasetCountColumns { @@ -2053,11 +2093,12 @@ enum DatasetCountColumns { depositionDate releaseDate lastModifiedDate - publications + datasetPublications relatedDatabaseEntries s3Prefix httpsPrefix id + publications } """A connection to a list of items.""" @@ -2082,7 +2123,7 @@ type Frame implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int @@ -2149,12 +2190,12 @@ type PerSectionParametersEdge { node: PerSectionParameters! } -"""Record how frames get mapped to TiltSeries""" +"""Record how frames get mapped to Tiltseries""" type PerSectionParameters implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! frame(where: FrameWhereClause = null, orderBy: [FrameOrderByClause!] = []): Frame frameId: Int! @@ -2192,7 +2233,7 @@ type Tiltseries implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! alignments( where: AlignmentWhereClause = null @@ -2264,12 +2305,12 @@ type Tiltseries implements EntityInterface & Node { httpsGainFile: String """Electron Microscope Accelerator voltage in volts""" - accelerationVoltage: Float! + accelerationVoltage: Int! """Spherical Aberration Constant of the objective lens in millimeters""" sphericalAberrationConstant: Float! - """Name of the microscope manufacturer""" + """Name of the microscope manufacturer (FEI, TFS, JEOL)""" microscopeManufacturer: tiltseries_microscope_manufacturer_enum! """Microscope model name""" @@ -2301,7 +2342,7 @@ type Tiltseries implements EntityInterface & Node { """Maximal tilt angle in degrees""" tiltMax: Float! - """Total tilt range from min to max in degrees""" + """Total tilt range in degrees""" tiltRange: Float! """Tilt step in degrees""" @@ -2337,11 +2378,11 @@ type Tiltseries implements EntityInterface & Node { """Whether this tilt series is aligned""" isAligned: Boolean! - """Pixel spacing for the tilt series""" + """Pixel spacing equal in both axes in angstroms""" pixelSpacing: Float! """Binning factor of the aligned tilt series""" - alignedTiltseriesBinning: Float + alignedTiltseriesBinning: Int """Number of frames associated with this tiltseries""" tiltseriesFramesCount: Int @@ -2504,7 +2545,7 @@ type TiltseriesAggregateFunctions { } type TiltseriesNumericalColumns { - accelerationVoltage: Float + accelerationVoltage: Int sphericalAberrationConstant: Float tiltMin: Float tiltMax: Float @@ -2515,7 +2556,7 @@ type TiltseriesNumericalColumns { binningFromFrames: Float tiltSeriesQuality: Int pixelSpacing: Float - alignedTiltseriesBinning: Float + alignedTiltseriesBinning: Int tiltseriesFramesCount: Int id: Int } @@ -2531,7 +2572,7 @@ type TiltseriesMinMaxColumns { httpsAngleList: String s3GainFile: String httpsGainFile: String - accelerationVoltage: Float + accelerationVoltage: Int sphericalAberrationConstant: Float microscopeModel: String microscopeEnergyFilter: String @@ -2552,7 +2593,7 @@ type TiltseriesMinMaxColumns { binningFromFrames: Float tiltSeriesQuality: Int pixelSpacing: Float - alignedTiltseriesBinning: Float + alignedTiltseriesBinning: Int tiltseriesFramesCount: Int id: Int } @@ -2623,7 +2664,7 @@ type Tomogram implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment alignmentId: Int @@ -2654,20 +2695,22 @@ type Tomogram implements EntityInterface & Node { """Short name for this tomogram""" name: String - """Tomogram voxels in the x dimension""" + """Number of pixels in the 3D data fast axis""" sizeX: Float! - """Tomogram voxels in the y dimension""" + """Number of pixels in the 3D data medium axis""" sizeY: Float! - """Tomogram voxels in the z dimension""" + """ + Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + """ sizeZ: Float! """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float! """ - Whether the tomographic alignment was computed based on fiducial markers. + Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial """ fiducialAlignmentStatus: fiducial_alignment_status_enum! @@ -2686,7 +2729,9 @@ type Tomogram implements EntityInterface & Node { """Name of software used for reconstruction""" reconstructionSoftware: String! - """whether this tomogram is canonical for the run""" + """ + Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + """ isCanonical: Boolean """S3 path to this tomogram in multiscale OME-Zarr format""" @@ -2758,36 +2803,38 @@ type TomogramAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! tomogram(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = []): Tomogram tomogramId: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the tomogram""" primaryAuthorStatus: Boolean } @@ -2955,7 +3002,7 @@ type TomogramVoxelSpacing implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! annotationFiles( where: AnnotationFileWhereClause = null @@ -2994,13 +3041,17 @@ type TomogramVoxelSpacing implements EntityInterface & Node { ): TomogramConnection! tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate - """Voxel spacing equal in all three axes in angstroms""" + """The voxel spacing for the tomograms in this set in angstroms""" voxelSpacing: Float! - """Path to a directory containing data for this entity as an S3 url""" + """ + The S3 public bucket path where this tomogram voxel spacing is contained + """ s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """ + The HTTPS directory path where this tomogram voxel spacing is contained + """ httpsPrefix: String! } @@ -3188,10 +3239,14 @@ type DepositionType implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int + + """ + The type of data submitted as a part of this deposition (annotation, dataset, tomogram) + """ type: deposition_types_enum } @@ -3254,20 +3309,20 @@ type DatasetFundingEdge { node: DatasetFunding! } -"""Information about how a dataset was funded""" +"""Metadata for a dataset's funding sources""" type DatasetFunding implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset datasetId: Int - """The name of the funding source.""" + """Name of the funding agency.""" fundingAgencyName: String - """Grant identifier provided by the funding agency""" + """Grant identifier provided by the funding agency.""" grantId: String } @@ -3340,36 +3395,40 @@ type DatasetAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset datasetId: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person associated with the corresponding dataset + """ primaryAuthorStatus: Boolean } @@ -3625,41 +3684,47 @@ type AnnotationAuthorEdge { node: AnnotationAuthor! } -"""Author of an annotation""" +"""Metadata for an annotation's authors""" type AnnotationAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation annotationId: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String - """The full name of the author.""" + """Full name of an annotation author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String - """The name of the author's affiliation.""" + """ + Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + """ affiliationName: String - """The address of the author's affiliation.""" + """Address of the institution an annotator is affiliated with.""" affiliationAddress: String - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String - """Whether the author is a corresponding author.""" + """Indicates whether an annotator is the corresponding author""" correspondingAuthorStatus: Boolean - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person executing the annotation, especially on manual annotation + """ primaryAuthorStatus: Boolean } @@ -3759,7 +3824,7 @@ type PerSectionAlignmentParameters implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment alignmentId: Int! @@ -3876,13 +3941,15 @@ type DepositionNumericalColumns { } type DepositionMinMaxColumns { - depositionTitle: String - depositionDescription: String - publications: String + title: String + description: String + depositionPublications: String relatedDatabaseEntries: String depositionDate: DateTime releaseDate: DateTime lastModifiedDate: DateTime + keyPhotoUrl: String + keyPhotoThumbnailUrl: String id: Int } @@ -3894,14 +3961,16 @@ enum DepositionCountColumns { frames tiltseries tomograms - depositionTitle - depositionDescription + title + description depositionTypes - publications + depositionPublications relatedDatabaseEntries depositionDate releaseDate lastModifiedDate + keyPhotoUrl + keyPhotoThumbnailUrl id } @@ -3970,7 +4039,7 @@ input AlignmentCreateInput { tiltseriesId: ID = null runId: ID = null - """Type of alignment included, i.e. is a non-rigid alignment included?""" + """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum = null """X dimension of the reconstruction volume in angstrom""" @@ -4003,7 +4072,7 @@ input AlignmentCreateInput { """A placeholder for the affine transformation matrix.""" affineTransformationMatrix: String = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4012,7 +4081,7 @@ input AlignmentUpdateInput { tiltseriesId: ID = null runId: ID = null - """Type of alignment included, i.e. is a non-rigid alignment included?""" + """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum = null """X dimension of the reconstruction volume in angstrom""" @@ -4045,7 +4114,7 @@ input AlignmentUpdateInput { """A placeholder for the affine transformation matrix.""" affineTransformationMatrix: String = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4054,72 +4123,84 @@ input AlignmentWhereClauseMutations { } input AnnotationAuthorCreateInput { - """Metadata about an annotation for a run""" + """Reference to the annotation this author contributed to""" annotationId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an annotation author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """ + Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + """ affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an annotator is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an annotator is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person executing the annotation, especially on manual annotation + """ primaryAuthorStatus: Boolean = null } input AnnotationAuthorUpdateInput { - """Metadata about an annotation for a run""" + """Reference to the annotation this author contributed to""" annotationId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an annotation author (e.g. Jane Doe).""" name: String - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """ + Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + """ affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an annotator is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an annotator is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person executing the annotation, especially on manual annotation + """ primaryAuthorStatus: Boolean = null } @@ -4134,25 +4215,29 @@ input AnnotationFileCreateInput { """Shapes associated with an annotation""" annotationShapeId: ID = null - """Voxel spacings for a run""" + """Voxel spacing that this annotation file is associated with""" tomogramVoxelSpacingId: ID = null - """File format label""" + """File format for this file""" format: String! - """Path to the file in s3""" + """s3 path of the annotation file""" s3Path: String! - """Path to the file as an https url""" + """HTTPS path for this annotation file""" httpsPath: String! - """This annotation will be rendered in neuroglancer by default.""" + """ + Data curator’s subjective choice of default annotation to display in visualization for an object + """ isVisualizationDefault: Boolean = null - """The source type for the annotation file""" + """ + The source type for the annotation file (dataset_author, community, or portal_standard) + """ source: annotation_file_source_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4163,25 +4248,29 @@ input AnnotationFileUpdateInput { """Shapes associated with an annotation""" annotationShapeId: ID = null - """Voxel spacings for a run""" + """Voxel spacing that this annotation file is associated with""" tomogramVoxelSpacingId: ID = null - """File format label""" + """File format for this file""" format: String - """Path to the file in s3""" + """s3 path of the annotation file""" s3Path: String - """Path to the file as an https url""" + """HTTPS path for this annotation file""" httpsPath: String - """This annotation will be rendered in neuroglancer by default.""" + """ + Data curator’s subjective choice of default annotation to display in visualization for an object + """ isVisualizationDefault: Boolean = null - """The source type for the annotation file""" + """ + The source type for the annotation file (dataset_author, community, or portal_standard) + """ source: annotation_file_source_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4190,20 +4279,28 @@ input AnnotationFileWhereClauseMutations { } input AnnotationShapeCreateInput { - """Metadata about an annotation for a run""" + """Metadata about an shapes for an annotation""" annotationId: ID = null + + """ + The shape of the annotation (SegmentationMask, OrientedPoint, Point, InstanceSegmentation, Mesh) + """ shapeType: annotation_file_shape_type_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input AnnotationShapeUpdateInput { - """Metadata about an annotation for a run""" + """Metadata about an shapes for an annotation""" annotationId: ID = null + + """ + The shape of the annotation (SegmentationMask, OrientedPoint, Point, InstanceSegmentation, Mesh) + """ shapeType: annotation_file_shape_type_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4215,14 +4312,14 @@ input AnnotationCreateInput { runId: ID = null depositionId: ID = null - """Path to the file in s3""" + """S3 path for the metadata json file for this annotation""" s3MetadataPath: String! - """Path to the file as an https url""" + """HTTPS path for the metadata json file for this annotation""" httpsMetadataPath: String! """ - List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. """ annotationPublication: String = null @@ -4236,7 +4333,9 @@ input AnnotationCreateInput { """ groundTruthStatus: Boolean = null - """Gene Ontology Cellular Component identifier for the annotation object""" + """ + Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. + """ objectId: String! """ @@ -4272,23 +4371,25 @@ input AnnotationCreateInput { annotationSoftware: String = null """ - This annotation is recommended by the curator to be preferred for this object type. + Data curator’s subjective choice as the best annotation of the same annotation object ID """ isCuratorRecommended: Boolean = null - """Classification of the annotation method based on supervision.""" + """ + The method type for generating the annotation (e.g. manual, hybrid, automated) + """ methodType: annotation_method_type_enum! - """The date a data item was received by the cryoET data portal.""" + """Date when an annotation set is initially received by the Data Portal.""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """Date when annotation data is made public by the Data Portal.""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when an annotation was last modified in the Data Portal""" lastModifiedDate: DateTime! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4296,14 +4397,14 @@ input AnnotationUpdateInput { runId: ID = null depositionId: ID = null - """Path to the file in s3""" + """S3 path for the metadata json file for this annotation""" s3MetadataPath: String - """Path to the file as an https url""" + """HTTPS path for the metadata json file for this annotation""" httpsMetadataPath: String """ - List of publication IDs (EMPIAR, EMDB, DOI) that describe this annotation method. Comma separated. + DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. """ annotationPublication: String = null @@ -4317,7 +4418,9 @@ input AnnotationUpdateInput { """ groundTruthStatus: Boolean = null - """Gene Ontology Cellular Component identifier for the annotation object""" + """ + Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. + """ objectId: String """ @@ -4353,23 +4456,25 @@ input AnnotationUpdateInput { annotationSoftware: String = null """ - This annotation is recommended by the curator to be preferred for this object type. + Data curator’s subjective choice as the best annotation of the same annotation object ID """ isCuratorRecommended: Boolean = null - """Classification of the annotation method based on supervision.""" + """ + The method type for generating the annotation (e.g. manual, hybrid, automated) + """ methodType: annotation_method_type_enum - """The date a data item was received by the cryoET data portal.""" + """Date when an annotation set is initially received by the Data Portal.""" depositionDate: DateTime - """The date a data item was received by the cryoET data portal.""" + """Date when annotation data is made public by the Data Portal.""" releaseDate: DateTime - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when an annotation was last modified in the Data Portal""" lastModifiedDate: DateTime - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4378,72 +4483,80 @@ input AnnotationWhereClauseMutations { } input DatasetAuthorCreateInput { - """An author of a dataset""" + """Dataset authored by this person""" datasetId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person associated with the corresponding dataset + """ primaryAuthorStatus: Boolean = null } input DatasetAuthorUpdateInput { - """An author of a dataset""" + """Dataset authored by this person""" datasetId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """ + Indicates whether an author is the main person associated with the corresponding dataset + """ primaryAuthorStatus: Boolean = null } @@ -4452,30 +4565,30 @@ input DatasetAuthorWhereClauseMutations { } input DatasetFundingCreateInput { - """An author of a dataset""" + """The dataset this dataset funding is a part of""" datasetId: ID = null - """The name of the funding source.""" + """Name of the funding agency.""" fundingAgencyName: String = null - """Grant identifier provided by the funding agency""" + """Grant identifier provided by the funding agency.""" grantId: String = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input DatasetFundingUpdateInput { - """An author of a dataset""" + """The dataset this dataset funding is a part of""" datasetId: ID = null - """The name of the funding source.""" + """Name of the funding agency.""" fundingAgencyName: String = null - """Grant identifier provided by the funding agency""" + """Grant identifier provided by the funding agency.""" grantId: String = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4484,9 +4597,10 @@ input DatasetFundingWhereClauseMutations { } input DatasetCreateInput { + """Reference to the deposition this dataset is associated with""" depositionId: ID = null - """Title of a CryoET dataset.""" + """Title of a CryoET dataset""" title: String! """ @@ -4495,7 +4609,7 @@ input DatasetCreateInput { description: String! """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ organismName: String! @@ -4507,11 +4621,11 @@ input DatasetCreateInput { """ tissueName: String = null - """The UBERON identifier for the tissue.""" + """UBERON identifier for the tissue""" tissueId: String = null """ - Name of the cell type from which a biological sample used in a CryoET study is derived from. + Name of the cell from which a biological sample used in a CryoET study is derived from. """ cellName: String = null @@ -4521,20 +4635,22 @@ input DatasetCreateInput { """Cell line or strain for the sample.""" cellStrainName: String = null - """Link to more information about the cell strain.""" + """Link to more information about the cell strain""" cellStrainId: String = null - """Type of sample imaged in a CryoET study""" + """ + Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + """ sampleType: sample_type_enum = null - """Describes how the sample was prepared.""" + """Describe how the sample was prepared.""" samplePreparation: String = null - """Describes Cryo-ET grid preparation.""" + """Describe Cryo-ET grid preparation.""" gridPreparation: String = null """ - Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication """ otherSetup: String = null @@ -4544,43 +4660,55 @@ input DatasetCreateInput { """URL for the thumbnail of preview image.""" keyPhotoThumbnailUrl: String = null - """Name of the cellular component.""" + """Name of the cellular component""" cellComponentName: String = null - """The GO identifier for the cellular component.""" + """ + If the dataset focuses on a specific part of a cell, the subset is included here + """ cellComponentId: String = null - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is initially received by the Data Portal.""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is made available on the Data Portal.""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when a released dataset is last modified.""" lastModifiedDate: DateTime! """ Comma-separated list of DOIs for publications associated with the dataset. """ - publications: String = null + datasetPublications: String = null - """Comma-separated list of related database entries for the dataset.""" + """ + If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ relatedDatabaseEntries: String = null - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this dataset is contained""" s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """The https directory path where this dataset is contained""" httpsPrefix: String! - """An identifier to refer to a specific instance of this type""" + """ + An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree + """ id: Int! + + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String = null } input DatasetUpdateInput { + """Reference to the deposition this dataset is associated with""" depositionId: ID = null - """Title of a CryoET dataset.""" + """Title of a CryoET dataset""" title: String """ @@ -4589,7 +4717,7 @@ input DatasetUpdateInput { description: String """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens. + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ organismName: String @@ -4601,11 +4729,11 @@ input DatasetUpdateInput { """ tissueName: String = null - """The UBERON identifier for the tissue.""" + """UBERON identifier for the tissue""" tissueId: String = null """ - Name of the cell type from which a biological sample used in a CryoET study is derived from. + Name of the cell from which a biological sample used in a CryoET study is derived from. """ cellName: String = null @@ -4615,20 +4743,22 @@ input DatasetUpdateInput { """Cell line or strain for the sample.""" cellStrainName: String = null - """Link to more information about the cell strain.""" + """Link to more information about the cell strain""" cellStrainId: String = null - """Type of sample imaged in a CryoET study""" + """ + Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + """ sampleType: sample_type_enum = null - """Describes how the sample was prepared.""" + """Describe how the sample was prepared.""" samplePreparation: String = null - """Describes Cryo-ET grid preparation.""" + """Describe Cryo-ET grid preparation.""" gridPreparation: String = null """ - Describes other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication. + Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication """ otherSetup: String = null @@ -4638,37 +4768,48 @@ input DatasetUpdateInput { """URL for the thumbnail of preview image.""" keyPhotoThumbnailUrl: String = null - """Name of the cellular component.""" + """Name of the cellular component""" cellComponentName: String = null - """The GO identifier for the cellular component.""" + """ + If the dataset focuses on a specific part of a cell, the subset is included here + """ cellComponentId: String = null - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is initially received by the Data Portal.""" depositionDate: DateTime - """The date a data item was received by the cryoET data portal.""" + """Date when a dataset is made available on the Data Portal.""" releaseDate: DateTime - """The date a piece of data was last modified on the cryoET data portal.""" + """Date when a released dataset is last modified.""" lastModifiedDate: DateTime """ Comma-separated list of DOIs for publications associated with the dataset. """ - publications: String = null + datasetPublications: String = null - """Comma-separated list of related database entries for the dataset.""" + """ + If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ relatedDatabaseEntries: String = null - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this dataset is contained""" s3Prefix: String - """Path to a directory containing data for this entity as an HTTPS url""" + """The https directory path where this dataset is contained""" httpsPrefix: String - """An identifier to refer to a specific instance of this type""" + """ + An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree + """ id: Int + + """ + Comma-separated list of DOIs for publications associated with the dataset. + """ + publications: String = null } input DatasetWhereClauseMutations { @@ -4678,68 +4819,72 @@ input DatasetWhereClauseMutations { input DepositionAuthorCreateInput { depositionId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of a deposition author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the deposition""" primaryAuthorStatus: Boolean = null } input DepositionAuthorUpdateInput { depositionId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of a deposition author (e.g. Jane Doe).""" name: String - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the deposition""" primaryAuthorStatus: Boolean = null } @@ -4748,62 +4893,66 @@ input DepositionAuthorWhereClauseMutations { } input DepositionCreateInput { - """Title of a CryoET deposition.""" - depositionTitle: String! + """Title for the deposition""" + title: String! - """ - A short description of the deposition, similar to an abstract for a journal article or dataset. - """ - depositionDescription: String! + """Description for the deposition""" + description: String! - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String = null + """The publications related to this deposition""" + depositionPublications: String = null - """Comma-separated list of related database entries for the dataset.""" + """The related database entries to this deposition""" relatedDatabaseEntries: String = null - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was deposited""" depositionDate: DateTime! - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was released""" releaseDate: DateTime! - """The date a piece of data was last modified on the cryoET data portal.""" + """The date the deposition was last modified""" lastModifiedDate: DateTime! - """An identifier to refer to a specific instance of this type""" + """URL for the deposition preview image.""" + keyPhotoUrl: String = null + + """URL for the deposition thumbnail image.""" + keyPhotoThumbnailUrl: String = null + + """Numeric identifier (May change!)""" id: Int! } input DepositionUpdateInput { - """Title of a CryoET deposition.""" - depositionTitle: String + """Title for the deposition""" + title: String - """ - A short description of the deposition, similar to an abstract for a journal article or dataset. - """ - depositionDescription: String + """Description for the deposition""" + description: String - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String = null + """The publications related to this deposition""" + depositionPublications: String = null - """Comma-separated list of related database entries for the dataset.""" + """The related database entries to this deposition""" relatedDatabaseEntries: String = null - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was deposited""" depositionDate: DateTime - """The date a data item was received by the cryoET data portal.""" + """The date the deposition was released""" releaseDate: DateTime - """The date a piece of data was last modified on the cryoET data portal.""" + """The date the deposition was last modified""" lastModifiedDate: DateTime - """An identifier to refer to a specific instance of this type""" + """URL for the deposition preview image.""" + keyPhotoUrl: String = null + + """URL for the deposition thumbnail image.""" + keyPhotoThumbnailUrl: String = null + + """Numeric identifier (May change!)""" id: Int } @@ -4813,17 +4962,25 @@ input DepositionWhereClauseMutations { input DepositionTypeCreateInput { depositionId: ID = null + + """ + The type of data submitted as a part of this deposition (annotation, dataset, tomogram) + """ type: deposition_types_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input DepositionTypeUpdateInput { depositionId: ID = null + + """ + The type of data submitted as a part of this deposition (annotation, dataset, tomogram) + """ type: deposition_types_enum = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4859,7 +5016,7 @@ input FrameCreateInput { """Path to a directory containing data for this entity as an HTTPS url""" httpsPrefix: String! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4891,7 +5048,7 @@ input FrameUpdateInput { """Path to a directory containing data for this entity as an HTTPS url""" httpsPrefix: String - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4915,7 +5072,7 @@ input PerSectionParametersCreateInput { """Angle of ast""" astigmaticAngle: Float = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4935,7 +5092,7 @@ input PerSectionParametersUpdateInput { """Angle of ast""" astigmaticAngle: Float = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -4965,7 +5122,7 @@ input PerSectionAlignmentParametersCreateInput { """Tilt angle of the projection in degrees""" tiltAngle: Float = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -4991,7 +5148,7 @@ input PerSectionAlignmentParametersUpdateInput { """Tilt angle of the projection in degrees""" tiltAngle: Float = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -5000,36 +5157,36 @@ input PerSectionAlignmentParametersWhereClauseMutations { } input RunCreateInput { - """An author of a dataset""" + """Dataset that this run is a part of""" datasetId: ID! - """Name of a run""" + """Short name for this experiment run""" name: String! - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this run is contained""" s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """The HTTPS directory path where this run is contained url""" httpsPrefix: String! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input RunUpdateInput { - """An author of a dataset""" + """Dataset that this run is a part of""" datasetId: ID - """Name of a run""" + """Short name for this experiment run""" name: String - """Path to a directory containing data for this entity as an S3 url""" + """The S3 public bucket path where this run is contained""" s3Prefix: String - """Path to a directory containing data for this entity as an HTTPS url""" + """The HTTPS directory path where this run is contained url""" httpsPrefix: String - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -5072,12 +5229,12 @@ input TiltseriesCreateInput { httpsGainFile: String = null """Electron Microscope Accelerator voltage in volts""" - accelerationVoltage: Float! + accelerationVoltage: Int! """Spherical Aberration Constant of the objective lens in millimeters""" sphericalAberrationConstant: Float! - """Name of the microscope manufacturer""" + """Name of the microscope manufacturer (FEI, TFS, JEOL)""" microscopeManufacturer: tiltseries_microscope_manufacturer_enum! """Microscope model name""" @@ -5109,7 +5266,7 @@ input TiltseriesCreateInput { """Maximal tilt angle in degrees""" tiltMax: Float! - """Total tilt range from min to max in degrees""" + """Total tilt range in degrees""" tiltRange: Float! """Tilt step in degrees""" @@ -5145,16 +5302,16 @@ input TiltseriesCreateInput { """Whether this tilt series is aligned""" isAligned: Boolean! - """Pixel spacing for the tilt series""" + """Pixel spacing equal in both axes in angstroms""" pixelSpacing: Float! """Binning factor of the aligned tilt series""" - alignedTiltseriesBinning: Float = null + alignedTiltseriesBinning: Int = null """Number of frames associated with this tiltseries""" tiltseriesFramesCount: Int = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } @@ -5193,12 +5350,12 @@ input TiltseriesUpdateInput { httpsGainFile: String = null """Electron Microscope Accelerator voltage in volts""" - accelerationVoltage: Float + accelerationVoltage: Int """Spherical Aberration Constant of the objective lens in millimeters""" sphericalAberrationConstant: Float - """Name of the microscope manufacturer""" + """Name of the microscope manufacturer (FEI, TFS, JEOL)""" microscopeManufacturer: tiltseries_microscope_manufacturer_enum """Microscope model name""" @@ -5230,7 +5387,7 @@ input TiltseriesUpdateInput { """Maximal tilt angle in degrees""" tiltMax: Float - """Total tilt range from min to max in degrees""" + """Total tilt range in degrees""" tiltRange: Float """Tilt step in degrees""" @@ -5266,16 +5423,16 @@ input TiltseriesUpdateInput { """Whether this tilt series is aligned""" isAligned: Boolean - """Pixel spacing for the tilt series""" + """Pixel spacing equal in both axes in angstroms""" pixelSpacing: Float """Binning factor of the aligned tilt series""" - alignedTiltseriesBinning: Float = null + alignedTiltseriesBinning: Int = null """Number of frames associated with this tiltseries""" tiltseriesFramesCount: Int = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -5284,72 +5441,76 @@ input TiltseriesWhereClauseMutations { } input TomogramAuthorCreateInput { - """Metadata describing a tomogram.""" + """The tomogram this tomogram author is a part of""" tomogramId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int! - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String! - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the tomogram""" primaryAuthorStatus: Boolean = null } input TomogramAuthorUpdateInput { - """Metadata describing a tomogram.""" + """The tomogram this tomogram author is a part of""" tomogramId: ID = null - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int - """The order that the author is listed as in the associated publication""" + """The order in which the author appears in the publication""" authorListOrder: Int - """The ORCID identifier for the author.""" + """A unique, persistent identifier for researchers, provided by ORCID.""" orcid: String = null - """The full name of the author.""" + """Full name of an author (e.g. Jane Doe).""" name: String - """The email address of the author.""" + """Email address for this author""" email: String = null - """The name of the author's affiliation.""" + """Name of the institutions an author is affiliated with. Comma separated""" affiliationName: String = null - """The address of the author's affiliation.""" + """Address of the institution an author is affiliated with.""" affiliationAddress: String = null - """A Research Organization Registry (ROR) identifier.""" + """ + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + """ affiliationIdentifier: String = null - """Whether the author is a corresponding author.""" + """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean = null - """Whether the author is a primary author.""" + """Indicates whether an author is the main person creating the tomogram""" primaryAuthorStatus: Boolean = null } @@ -5358,34 +5519,44 @@ input TomogramAuthorWhereClauseMutations { } input TomogramVoxelSpacingCreateInput { + """The the run this tomogram voxel spacing is a part of""" runId: ID = null - """Voxel spacing equal in all three axes in angstroms""" + """The voxel spacing for the tomograms in this set in angstroms""" voxelSpacing: Float! - """Path to a directory containing data for this entity as an S3 url""" + """ + The S3 public bucket path where this tomogram voxel spacing is contained + """ s3Prefix: String! - """Path to a directory containing data for this entity as an HTTPS url""" + """ + The HTTPS directory path where this tomogram voxel spacing is contained + """ httpsPrefix: String! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input TomogramVoxelSpacingUpdateInput { + """The the run this tomogram voxel spacing is a part of""" runId: ID = null - """Voxel spacing equal in all three axes in angstroms""" + """The voxel spacing for the tomograms in this set in angstroms""" voxelSpacing: Float - """Path to a directory containing data for this entity as an S3 url""" + """ + The S3 public bucket path where this tomogram voxel spacing is contained + """ s3Prefix: String - """Path to a directory containing data for this entity as an HTTPS url""" + """ + The HTTPS directory path where this tomogram voxel spacing is contained + """ httpsPrefix: String - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } @@ -5396,6 +5567,8 @@ input TomogramVoxelSpacingWhereClauseMutations { input TomogramCreateInput { """Tiltseries Alignment""" alignmentId: ID = null + + """If the tomogram is part of a deposition, the related deposition""" depositionId: ID = null runId: ID = null @@ -5405,20 +5578,22 @@ input TomogramCreateInput { """Short name for this tomogram""" name: String = null - """Tomogram voxels in the x dimension""" + """Number of pixels in the 3D data fast axis""" sizeX: Float! - """Tomogram voxels in the y dimension""" + """Number of pixels in the 3D data medium axis""" sizeY: Float! - """Tomogram voxels in the z dimension""" + """ + Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + """ sizeZ: Float! """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float! """ - Whether the tomographic alignment was computed based on fiducial markers. + Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial """ fiducialAlignmentStatus: fiducial_alignment_status_enum! @@ -5437,7 +5612,9 @@ input TomogramCreateInput { """Name of software used for reconstruction""" reconstructionSoftware: String! - """whether this tomogram is canonical for the run""" + """ + Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + """ isCanonical: Boolean = null """S3 path to this tomogram in multiscale OME-Zarr format""" @@ -5485,13 +5662,15 @@ input TomogramCreateInput { """Whether this tomogram was generated per the portal's standards""" isStandardized: Boolean! - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int! } input TomogramUpdateInput { """Tiltseries Alignment""" alignmentId: ID = null + + """If the tomogram is part of a deposition, the related deposition""" depositionId: ID = null runId: ID = null @@ -5501,20 +5680,22 @@ input TomogramUpdateInput { """Short name for this tomogram""" name: String = null - """Tomogram voxels in the x dimension""" + """Number of pixels in the 3D data fast axis""" sizeX: Float - """Tomogram voxels in the y dimension""" + """Number of pixels in the 3D data medium axis""" sizeY: Float - """Tomogram voxels in the z dimension""" + """ + Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + """ sizeZ: Float """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float """ - Whether the tomographic alignment was computed based on fiducial markers. + Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial """ fiducialAlignmentStatus: fiducial_alignment_status_enum @@ -5533,7 +5714,9 @@ input TomogramUpdateInput { """Name of software used for reconstruction""" reconstructionSoftware: String - """whether this tomogram is canonical for the run""" + """ + Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + """ isCanonical: Boolean = null """S3 path to this tomogram in multiscale OME-Zarr format""" @@ -5581,7 +5764,7 @@ input TomogramUpdateInput { """Whether this tomogram was generated per the portal's standards""" isStandardized: Boolean - """An identifier to refer to a specific instance of this type""" + """Numeric identifier (May change!)""" id: Int } From 66e3767b81e776916e63ef1c67a16a36c45f92fa Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Wed, 18 Sep 2024 15:04:33 -0400 Subject: [PATCH 06/18] regen without sorting fields --- .../src/cryoet_data_portal/_models.py | 720 +++++++++--------- 1 file changed, 360 insertions(+), 360 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 793b69daa..920d7912c 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -25,114 +25,114 @@ class Alignment(Model): """Tiltseries Alignment Attributes: - affine_transformation_matrix (str): A placeholder for the affine transformation matrix. - alignment_type (str): Whether this a LOCAL or GLOBAL alignment + id (int): Numeric identifier (May change!) annotation_files (List[AnnotationFile]): The annotation files of this alignment + per_section_alignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment deposition (Deposition): The deposition this alignment is a part of deposition_id (int): None - id (int): Numeric identifier (May change!) - local_alignment_file (str): Path to the local alignment file - per_section_alignments (List[PerSectionAlignmentParameters]): The per section alignment parameters of this alignment - run (Run): The run this alignment is a part of - run_id (int): None - tilt_offset (float): Additional tilt offset in degrees tiltseries (TiltSeries): The tilt series this alignment is a part of tiltseries_id (int): None tomograms (List[Tomogram]): The tomograms of this alignment + run (Run): The run this alignment is a part of + run_id (int): None + alignment_type (str): Whether this a LOCAL or GLOBAL alignment volume_xdimension (float): X dimension of the reconstruction volume in angstrom - volume_xoffset (float): X shift of the reconstruction volume in angstrom volume_ydimension (float): Y dimension of the reconstruction volume in angstrom - volume_yoffset (float): Y shift of the reconstruction volume in angstrom volume_zdimension (float): Z dimension of the reconstruction volume in angstrom + volume_xoffset (float): X shift of the reconstruction volume in angstrom + volume_yoffset (float): Y shift of the reconstruction volume in angstrom volume_zoffset (float): Z shift of the reconstruction volume in angstrom x_rotation_offset (float): Additional X rotation of the reconstruction volume in degrees + tilt_offset (float): Additional tilt offset in degrees + local_alignment_file (str): Path to the local alignment file + affine_transformation_matrix (str): A placeholder for the affine transformation matrix. """ _gql_type: str = "Alignment" _gql_root_field: str = "alignments" - affine_transformation_matrix: str = StringField() - alignment_type: str = StringField() + id: int = IntField() annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") + per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - id: int = IntField() - local_alignment_file: str = StringField() - per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - tilt_offset: float = FloatField() tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") tiltseries_id: int = IntField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignmentId") + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + alignment_type: str = StringField() volume_xdimension: float = FloatField() - volume_xoffset: float = FloatField() volume_ydimension: float = FloatField() - volume_yoffset: float = FloatField() volume_zdimension: float = FloatField() + volume_xoffset: float = FloatField() + volume_yoffset: float = FloatField() volume_zoffset: float = FloatField() x_rotation_offset: float = FloatField() + tilt_offset: float = FloatField() + local_alignment_file: str = StringField() + affine_transformation_matrix: str = StringField() class Annotation(Model): """Metadata for an annotation Attributes: - annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. + id (int): Numeric identifier (May change!) + run (Run): The run this annotation is a part of + run_id (int): None annotation_shapes (List[AnnotationShape]): The annotation shapes of this annotation - annotation_software (str): Software used for generating this annotation authors (List[AnnotationAuthor]): The annotation authors of this annotation - confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive - confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly deposition (Deposition): The deposition this annotation is a part of - deposition_date (date): Date when an annotation set is initially received by the Data Portal. deposition_id (int): None - ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. - ground_truth_used (str): Annotation filename used as ground truth for precision and recall + s3_metadata_path (str): S3 path for the metadata json file for this annotation https_metadata_path (str): HTTPS path for the metadata json file for this annotation - id (int): Numeric identifier (May change!) - is_curator_recommended (bool): Data curator’s subjective choice as the best annotation of the same annotation object ID - last_modified_date (date): Date when an annotation was last modified in the Data Portal - method_type (str): The method type for generating the annotation (e.g. manual, hybrid, automated) - object_count (int): Number of objects identified - object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. + annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. + annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. object_id (str): Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) + object_description (str): A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state. object_state (str): Molecule state annotated (e.g. open, closed) + object_count (int): Number of objects identified + confidence_precision (float): Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive + confidence_recall (float): Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly + ground_truth_used (str): Annotation filename used as ground truth for precision and recall + annotation_software (str): Software used for generating this annotation + is_curator_recommended (bool): Data curator’s subjective choice as the best annotation of the same annotation object ID + method_type (str): The method type for generating the annotation (e.g. manual, hybrid, automated) + deposition_date (date): Date when an annotation set is initially received by the Data Portal. release_date (date): Date when annotation data is made public by the Data Portal. - run (Run): The run this annotation is a part of - run_id (int): None - s3_metadata_path (str): S3 path for the metadata json file for this annotation + last_modified_date (date): Date when an annotation was last modified in the Data Portal """ _gql_type: str = "Annotation" _gql_root_field: str = "annotations" - annotation_method: str = StringField() - annotation_publication: str = StringField() + id: int = IntField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") - annotation_software: str = StringField() authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") - confidence_precision: float = FloatField() - confidence_recall: float = FloatField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_date: date = DateField() deposition_id: int = IntField() - ground_truth_status: bool = BooleanField() - ground_truth_used: str = StringField() + s3_metadata_path: str = StringField() https_metadata_path: str = StringField() - id: int = IntField() - is_curator_recommended: bool = BooleanField() - last_modified_date: date = DateField() - method_type: str = StringField() - object_count: int = IntField() - object_description: str = StringField() + annotation_publication: str = StringField() + annotation_method: str = StringField() + ground_truth_status: bool = BooleanField() object_id: str = StringField() object_name: str = StringField() + object_description: str = StringField() object_state: str = StringField() + object_count: int = IntField() + confidence_precision: float = FloatField() + confidence_recall: float = FloatField() + ground_truth_used: str = StringField() + annotation_software: str = StringField() + is_curator_recommended: bool = BooleanField() + method_type: str = StringField() + deposition_date: date = DateField() release_date: date = DateField() - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - s3_metadata_path: str = StringField() + last_modified_date: date = DateField() def download( self, @@ -161,68 +161,68 @@ class AnnotationAuthor(Model): """Metadata for an annotation's authors Attributes: - affiliation_address (str): Address of the institution an annotator is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + id (int): Numeric identifier (May change!) annotation (Annotation): The annotation this annotation author is a part of annotation_id (int): None author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicates whether an annotator is the corresponding author - email (str): Email address for this author - id (int): Numeric identifier (May change!) - name (str): Full name of an annotation author (e.g. Jane Doe). orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + name (str): Full name of an annotation author (e.g. Jane Doe). + email (str): Email address for this author + affiliation_name (str): Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. + affiliation_address (str): Address of the institution an annotator is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + corresponding_author_status (bool): Indicates whether an annotator is the corresponding author primary_author_status (bool): Indicates whether an author is the main person executing the annotation, especially on manual annotation """ _gql_type: str = "AnnotationAuthor" _gql_root_field: str = "annotationAuthors" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() + id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") annotation_id: int = IntField() author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() - email: str = StringField() - id: int = IntField() - name: str = StringField() orcid: str = StringField() + name: str = StringField() + email: str = StringField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() class AnnotationFile(Model): """Metadata for files associated with an annotation Attributes: + id (int): Numeric identifier (May change!) alignment (Alignment): The alignment this annotation file is a part of alignment_id (int): None annotation_shape (AnnotationShape): The annotation shape this annotation file is a part of annotation_shape_id (int): None + tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of + tomogram_voxel_spacing_id (int): None format (str): File format for this file + s3_path (str): s3 path of the annotation file https_path (str): HTTPS path for this annotation file - id (int): Numeric identifier (May change!) is_visualization_default (bool): Data curator’s subjective choice of default annotation to display in visualization for an object - s3_path (str): s3 path of the annotation file source (str): The source type for the annotation file (dataset_author, community, or portal_standard) - tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of - tomogram_voxel_spacing_id (int): None """ _gql_type: str = "AnnotationFile" _gql_root_field: str = "annotationFiles" + id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") annotation_shape_id: int = IntField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() format: str = StringField() + s3_path: str = StringField() https_path: str = StringField() - id: int = IntField() is_visualization_default: bool = BooleanField() - s3_path: str = StringField() source: str = StringField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogram_voxel_spacing_id: int = IntField() def download(self, dest_path: Optional[str] = None): if self.format == "zarr": @@ -234,94 +234,94 @@ class AnnotationShape(Model): """Shapes associated with an annotation Attributes: + id (int): Numeric identifier (May change!) annotation (Annotation): The annotation this annotation shape is a part of - annotation_files (List[AnnotationFile]): The annotation files of this annotation shape annotation_id (int): None - id (int): Numeric identifier (May change!) + annotation_files (List[AnnotationFile]): The annotation files of this annotation shape shape_type (str): The shape of the annotation (SegmentationMask, OrientedPoint, Point, InstanceSegmentation, Mesh) """ _gql_type: str = "AnnotationShape" _gql_root_field: str = "annotationShapes" + id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") annotation_id: int = IntField() - id: int = IntField() + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") shape_type: str = StringField() class Dataset(Model): """A collection of imaging experiments on the same organism Attributes: - authors (List[DatasetAuthor]): The dataset authors of this dataset - cell_component_id (str): If the dataset focuses on a specific part of a cell, the subset is included here - cell_component_name (str): Name of the cellular component - cell_name (str): Name of the cell from which a biological sample used in a CryoET study is derived from. - cell_strain_id (str): Link to more information about the cell strain - cell_strain_name (str): Cell line or strain for the sample. - cell_type_id (str): Cell Ontology identifier for the cell type - dataset_publications (str): Comma-separated list of DOIs for publications associated with the dataset. + id (int): An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree deposition (Deposition): The deposition this dataset is a part of - deposition_date (date): Date when a dataset is initially received by the Data Portal. deposition_id (int): None - description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. funding_sources (List[DatasetFunding]): The dataset fundings of this dataset - grid_preparation (str): Describe Cryo-ET grid preparation. - https_prefix (str): The https directory path where this dataset is contained - id (int): An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - key_photo_thumbnail_url (str): URL for the thumbnail of preview image. - key_photo_url (str): URL for the dataset preview image. - last_modified_date (date): Date when a released dataset is last modified. + authors (List[DatasetAuthor]): The dataset authors of this dataset + runs (List[Run]): The runs of this dataset + title (str): Title of a CryoET dataset + description (str): A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. organism_name (str): Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens organism_taxid (int): NCBI taxonomy identifier for the organism, e.g. 9606 + tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. + tissue_id (str): UBERON identifier for the tissue + cell_name (str): Name of the cell from which a biological sample used in a CryoET study is derived from. + cell_type_id (str): Cell Ontology identifier for the cell type + cell_strain_name (str): Cell line or strain for the sample. + cell_strain_id (str): Link to more information about the cell strain + sample_type (str): Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + sample_preparation (str): Describe how the sample was prepared. + grid_preparation (str): Describe Cryo-ET grid preparation. other_setup (str): Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication - publications (str): Comma-separated list of DOIs for publications associated with the dataset. - related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + key_photo_url (str): URL for the dataset preview image. + key_photo_thumbnail_url (str): URL for the thumbnail of preview image. + cell_component_name (str): Name of the cellular component + cell_component_id (str): If the dataset focuses on a specific part of a cell, the subset is included here + deposition_date (date): Date when a dataset is initially received by the Data Portal. release_date (date): Date when a dataset is made available on the Data Portal. - runs (List[Run]): The runs of this dataset + last_modified_date (date): Date when a released dataset is last modified. + dataset_publications (str): Comma-separated list of DOIs for publications associated with the dataset. + related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. s3_prefix (str): The S3 public bucket path where this dataset is contained - sample_preparation (str): Describe how the sample was prepared. - sample_type (str): Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) - tissue_id (str): UBERON identifier for the tissue - tissue_name (str): Name of the tissue from which a biological sample used in a CryoET study is derived from. - title (str): Title of a CryoET dataset + https_prefix (str): The https directory path where this dataset is contained + publications (str): Comma-separated list of DOIs for publications associated with the dataset. """ _gql_type: str = "Dataset" _gql_root_field: str = "datasets" - authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") - cell_component_id: str = StringField() - cell_component_name: str = StringField() - cell_name: str = StringField() - cell_strain_id: str = StringField() - cell_strain_name: str = StringField() - cell_type_id: str = StringField() - dataset_publications: str = StringField() + id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_date: date = DateField() deposition_id: int = IntField() - description: str = StringField() funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") - grid_preparation: str = StringField() - https_prefix: str = StringField() - id: int = IntField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() - last_modified_date: date = DateField() + authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") + runs: List[Run] = ListRelationship("Run", "id", "datasetId") + title: str = StringField() + description: str = StringField() organism_name: str = StringField() organism_taxid: int = IntField() + tissue_name: str = StringField() + tissue_id: str = StringField() + cell_name: str = StringField() + cell_type_id: str = StringField() + cell_strain_name: str = StringField() + cell_strain_id: str = StringField() + sample_type: str = StringField() + sample_preparation: str = StringField() + grid_preparation: str = StringField() other_setup: str = StringField() - publications: str = StringField() - related_database_entries: str = StringField() + key_photo_url: str = StringField() + key_photo_thumbnail_url: str = StringField() + cell_component_name: str = StringField() + cell_component_id: str = StringField() + deposition_date: date = DateField() release_date: date = DateField() - runs: List[Run] = ListRelationship("Run", "id", "datasetId") + last_modified_date: date = DateField() + dataset_publications: str = StringField() + related_database_entries: str = StringField() s3_prefix: str = StringField() - sample_preparation: str = StringField() - sample_type: str = StringField() - tissue_id: str = StringField() - tissue_name: str = StringField() - title: str = StringField() + https_prefix: str = StringField() + publications: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this dataset. @@ -335,273 +335,273 @@ class DatasetAuthor(Model): """An author of a dataset Attributes: - affiliation_address (str): Address of the institution an author is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicates whether an author is the corresponding author + id (int): Numeric identifier (May change!) dataset (Dataset): The dataset this dataset author is a part of dataset_id (int): None - email (str): Email address for this author - id (int): Numeric identifier (May change!) - name (str): Full name of an author (e.g. Jane Doe). + author_list_order (int): The order in which the author appears in the publication orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + name (str): Full name of an author (e.g. Jane Doe). + email (str): Email address for this author + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated + affiliation_address (str): Address of the institution an author is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + corresponding_author_status (bool): Indicates whether an author is the corresponding author primary_author_status (bool): Indicates whether an author is the main person associated with the corresponding dataset """ _gql_type: str = "DatasetAuthor" _gql_root_field: str = "datasetAuthors" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() + id: int = IntField() dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") dataset_id: int = IntField() - email: str = StringField() - id: int = IntField() - name: str = StringField() + author_list_order: int = IntField() orcid: str = StringField() + name: str = StringField() + email: str = StringField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() class DatasetFunding(Model): """Metadata for a dataset's funding sources Attributes: + id (int): Numeric identifier (May change!) dataset (Dataset): The dataset this dataset funding is a part of dataset_id (int): None funding_agency_name (str): Name of the funding agency. grant_id (str): Grant identifier provided by the funding agency. - id (int): Numeric identifier (May change!) """ _gql_type: str = "DatasetFunding" _gql_root_field: str = "datasetFundedByThisSource" + id: int = IntField() dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") dataset_id: int = IntField() funding_agency_name: str = StringField() grant_id: str = StringField() - id: int = IntField() class Deposition(Model): """Deposition metadata Attributes: + id (int): Numeric identifier (May change!) + authors (List[DepositionAuthor]): The deposition authors of this deposition alignments (List[Alignment]): The alignments of this deposition annotations (List[Annotation]): The annotations of this deposition - authors (List[DepositionAuthor]): The deposition authors of this deposition datasets (List[Dataset]): The datasets of this deposition - deposition_date (date): The date the deposition was deposited - deposition_publications (str): The publications related to this deposition - deposition_types (List[DepositionType]): The deposition types of this deposition - description (str): Description for the deposition frames (List[Frame]): The frames of this deposition - id (int): Numeric identifier (May change!) - key_photo_thumbnail_url (str): URL for the deposition thumbnail image. - key_photo_url (str): URL for the deposition preview image. - last_modified_date (date): The date the deposition was last modified - related_database_entries (str): The related database entries to this deposition - release_date (date): The date the deposition was released tiltseries (List[TiltSeries]): The tilt series of this deposition - title (str): Title for the deposition tomograms (List[Tomogram]): The tomograms of this deposition + title (str): Title for the deposition + description (str): Description for the deposition + deposition_types (List[DepositionType]): The deposition types of this deposition + deposition_publications (str): The publications related to this deposition + related_database_entries (str): The related database entries to this deposition + deposition_date (date): The date the deposition was deposited + release_date (date): The date the deposition was released + last_modified_date (date): The date the deposition was last modified + key_photo_url (str): URL for the deposition preview image. + key_photo_thumbnail_url (str): URL for the deposition thumbnail image. """ _gql_type: str = "Deposition" _gql_root_field: str = "depositions" + id: int = IntField() + authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") alignments: List[Alignment] = ListRelationship("Alignment", "id", "depositionId") annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") - authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") - deposition_date: date = DateField() - deposition_publications: str = StringField() - deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "depositionId") - description: str = StringField() frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") - id: int = IntField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() - last_modified_date: date = DateField() - related_database_entries: str = StringField() - release_date: date = DateField() tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "depositionId") - title: str = StringField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") + title: str = StringField() + description: str = StringField() + deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "depositionId") + deposition_publications: str = StringField() + related_database_entries: str = StringField() + deposition_date: date = DateField() + release_date: date = DateField() + last_modified_date: date = DateField() + key_photo_url: str = StringField() + key_photo_thumbnail_url: str = StringField() class DepositionAuthor(Model): """Authors for a deposition Attributes: - affiliation_address (str): Address of the institution an author is affiliated with. - affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated - author_list_order (int): The order in which the author appears in the publication - corresponding_author_status (bool): Indicates whether an author is the corresponding author + id (int): Numeric identifier (May change!) deposition (Deposition): The deposition this deposition author is a part of deposition_id (int): None - email (str): Email address for this author - id (int): Numeric identifier (May change!) - name (str): Full name of a deposition author (e.g. Jane Doe). + author_list_order (int): The order in which the author appears in the publication orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + name (str): Full name of a deposition author (e.g. Jane Doe). + email (str): Email address for this author + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated + affiliation_address (str): Address of the institution an author is affiliated with. + affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). + corresponding_author_status (bool): Indicates whether an author is the corresponding author primary_author_status (bool): Indicates whether an author is the main person creating the deposition """ _gql_type: str = "DepositionAuthor" _gql_root_field: str = "depositionAuthors" - affiliation_address: str = StringField() - affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() - corresponding_author_status: bool = BooleanField() + id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - email: str = StringField() - id: int = IntField() - name: str = StringField() + author_list_order: int = IntField() orcid: str = StringField() + name: str = StringField() + email: str = StringField() + affiliation_name: str = StringField() + affiliation_address: str = StringField() + affiliation_identifier: str = StringField() + corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() class DepositionType(Model): """None Attributes: + id (int): Numeric identifier (May change!) deposition (Deposition): The deposition this deposition type is a part of deposition_id (int): None - id (int): Numeric identifier (May change!) type (str): The type of data submitted as a part of this deposition (annotation, dataset, tomogram) """ _gql_type: str = "DepositionType" _gql_root_field: str = "depositionTypes" + id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - id: int = IntField() type: str = StringField() class Frame(Model): """None Attributes: - acquisition_order (int): Frame's acquistion order within a tilt experiment + id (int): Numeric identifier (May change!) deposition (Deposition): The deposition this frame is a part of deposition_id (int): None - dose (float): The raw camera angle for a frame - https_gain_file (str): HTTPS path to the gain file for this frame - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url - id (int): Numeric identifier (May change!) - is_gain_corrected (bool): Whether this frame has been gain corrected per_section_parameters (List[PerSectionParameters]): The per section parameters of this frame - raw_angle (float): Camera angle for a frame run (Run): The run this frame is a part of run_id (int): None + raw_angle (float): Camera angle for a frame + acquisition_order (int): Frame's acquistion order within a tilt experiment + dose (float): The raw camera angle for a frame + is_gain_corrected (bool): Whether this frame has been gain corrected s3_gain_file (str): S3 path to the gain file for this frame + https_gain_file (str): HTTPS path to the gain file for this frame s3_prefix (str): Path to a directory containing data for this entity as an S3 url + https_prefix (str): Path to a directory containing data for this entity as an HTTPS url """ _gql_type: str = "Frame" _gql_root_field: str = "frames" - acquisition_order: int = IntField() + id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - dose: float = FloatField() - https_gain_file: str = StringField() - https_prefix: str = StringField() - id: int = IntField() - is_gain_corrected: bool = BooleanField() per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") - raw_angle: float = FloatField() run: Run = ItemRelationship("Run", "runId", "id") run_id: int = IntField() + raw_angle: float = FloatField() + acquisition_order: int = IntField() + dose: float = FloatField() + is_gain_corrected: bool = BooleanField() s3_gain_file: str = StringField() + https_gain_file: str = StringField() s3_prefix: str = StringField() + https_prefix: str = StringField() class PerSectionAlignmentParameters(Model): """Map alignment parameters to tilt series frames Attributes: + id (int): Numeric identifier (May change!) alignment (Alignment): The alignment this per section alignment parameters is a part of alignment_id (int): None - beam_tilt (float): Beam tilt during projection in degrees - id (int): Numeric identifier (May change!) - in_plane_rotation (float): In-plane rotation of the projection in degrees - tilt_angle (float): Tilt angle of the projection in degrees + z_index (int): z-index of the frame in the tiltseries x_offset (float): In-plane X-shift of the projection in angstrom y_offset (float): In-plane Y-shift of the projection in angstrom - z_index (int): z-index of the frame in the tiltseries + in_plane_rotation (float): In-plane rotation of the projection in degrees + beam_tilt (float): Beam tilt during projection in degrees + tilt_angle (float): Tilt angle of the projection in degrees """ _gql_type: str = "PerSectionAlignmentParameters" _gql_root_field: str = "perSectionAlignmentParameters" + id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() - beam_tilt: float = FloatField() - id: int = IntField() - in_plane_rotation: float = FloatField() - tilt_angle: float = FloatField() + z_index: int = IntField() x_offset: float = FloatField() y_offset: float = FloatField() - z_index: int = IntField() + in_plane_rotation: float = FloatField() + beam_tilt: float = FloatField() + tilt_angle: float = FloatField() class PerSectionParameters(Model): """Record how frames get mapped to Tiltseries Attributes: - astigmatic_angle (float): Angle of ast - astigmatism (float): Astigmatism amount for this frame - defocus (float): defocus amount + id (int): Numeric identifier (May change!) frame (Frame): The frame this per section parameters is a part of frame_id (int): None - id (int): Numeric identifier (May change!) tiltseries (TiltSeries): The tilt series this per section parameters is a part of tiltseries_id (int): None z_index (int): z-index of the frame in the tiltseries + defocus (float): defocus amount + astigmatism (float): Astigmatism amount for this frame + astigmatic_angle (float): Angle of ast """ _gql_type: str = "PerSectionParameters" _gql_root_field: str = "perSectionParameters" - astigmatic_angle: float = FloatField() - astigmatism: float = FloatField() - defocus: float = FloatField() + id: int = IntField() frame: Frame = ItemRelationship("Frame", "frameId", "id") frame_id: int = IntField() - id: int = IntField() tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") tiltseries_id: int = IntField() z_index: int = IntField() + defocus: float = FloatField() + astigmatism: float = FloatField() + astigmatic_angle: float = FloatField() class Run(Model): """None Attributes: + id (int): Numeric identifier (May change!) alignments (List[Alignment]): The alignments of this run annotations (List[Annotation]): The annotations of this run dataset (Dataset): The dataset this run is a part of dataset_id (int): None frames (List[Frame]): The frames of this run - https_prefix (str): The HTTPS directory path where this run is contained url - id (int): Numeric identifier (May change!) - name (str): Short name for this experiment run - s3_prefix (str): The S3 public bucket path where this run is contained tiltseries (List[TiltSeries]): The tilt series of this run - tomograms (List[Tomogram]): The tomograms of this run tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run + tomograms (List[Tomogram]): The tomograms of this run + name (str): Short name for this experiment run + s3_prefix (str): The S3 public bucket path where this run is contained + https_prefix (str): The HTTPS directory path where this run is contained url """ _gql_type: str = "Run" _gql_root_field: str = "runs" + id: int = IntField() alignments: List[Alignment] = ListRelationship("Alignment", "id", "runId") annotations: List[Annotation] = ListRelationship("Annotation", "id", "runId") dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") dataset_id: int = IntField() frames: List[Frame] = ListRelationship("Frame", "id", "runId") - https_prefix: str = StringField() - id: int = IntField() - name: str = StringField() - s3_prefix: str = StringField() tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "runId") - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") + name: str = StringField() + s3_prefix: str = StringField() + https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this run. @@ -621,93 +621,93 @@ class TiltSeries(Model): """None Attributes: - acceleration_voltage (int): Electron Microscope Accelerator voltage in volts - aligned_tiltseries_binning (int): Binning factor of the aligned tilt series - alignments (List[Alignment]): The alignments of this tilt series - binning_from_frames (float): Describes the binning factor from frames to tilt series file - camera_manufacturer (str): Name of the camera manufacturer - camera_model (str): Camera model name - data_acquisition_software (str): Software used to collect data - deposition (Deposition): The deposition this tilt series is a part of - deposition_id (int): None - https_angle_list (str): HTTPS path to the angle list file for this tiltseries - https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries - https_gain_file (str): HTTPS path to the gain file for this tiltseries - https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) - https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format id (int): Numeric identifier (May change!) - is_aligned (bool): Whether this tilt series is aligned - microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector - microscope_energy_filter (str): Energy filter setup used - microscope_image_corrector (str): Image corrector setup - microscope_model (str): Microscope model name - microscope_phase_plate (str): Phase plate configuration + alignments (List[Alignment]): The alignments of this tilt series per_section_parameters (List[PerSectionParameters]): The per section parameters of this tilt series - pixel_spacing (float): Pixel spacing equal in both axes in angstroms - related_empiar_entry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier run (Run): The run this tilt series is a part of run_id (int): None - s3_angle_list (str): S3 path to the angle list file for this tiltseries + deposition (Deposition): The deposition this tilt series is a part of + deposition_id (int): None + s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format + s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) + https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format + https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries + https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries + s3_angle_list (str): S3 path to the angle list file for this tiltseries + https_angle_list (str): HTTPS path to the angle list file for this tiltseries s3_gain_file (str): S3 path to the gain file for this tiltseries - s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) - s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format + https_gain_file (str): HTTPS path to the gain file for this tiltseries + acceleration_voltage (int): Electron Microscope Accelerator voltage in volts spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters - tilt_axis (float): Rotation angle in degrees - tilting_scheme (str): The order of stage tilting during acquisition of the data - tilt_max (float): Maximal tilt angle in degrees + microscope_model (str): Microscope model name + microscope_energy_filter (str): Energy filter setup used + microscope_phase_plate (str): Phase plate configuration + microscope_image_corrector (str): Image corrector setup + microscope_additional_info (str): Other microscope optical setup information, in addition to energy filter, phase plate and image corrector + camera_manufacturer (str): Name of the camera manufacturer + camera_model (str): Camera model name tilt_min (float): Minimal tilt angle in degrees + tilt_max (float): Maximal tilt angle in degrees tilt_range (float): Total tilt range in degrees - tiltseries_frames_count (int): Number of frames associated with this tiltseries - tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) tilt_step (float): Tilt step in degrees + tilting_scheme (str): The order of stage tilting during acquisition of the data + tilt_axis (float): Rotation angle in degrees total_flux (float): Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + data_acquisition_software (str): Software used to collect data + related_empiar_entry (str): If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + binning_from_frames (float): Describes the binning factor from frames to tilt series file + tilt_series_quality (int): Author assessment of tilt series quality within the dataset (1-5, 5 is best) + is_aligned (bool): Whether this tilt series is aligned + pixel_spacing (float): Pixel spacing equal in both axes in angstroms + aligned_tiltseries_binning (int): Binning factor of the aligned tilt series + tiltseries_frames_count (int): Number of frames associated with this tiltseries """ _gql_type: str = "Tiltseries" _gql_root_field: str = "tiltseries" - acceleration_voltage: int = IntField() - aligned_tiltseries_binning: int = IntField() - alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_seriesId") - binning_from_frames: float = FloatField() - camera_manufacturer: str = StringField() - camera_model: str = StringField() - data_acquisition_software: str = StringField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") - deposition_id: int = IntField() - https_angle_list: str = StringField() - https_collection_metadata: str = StringField() - https_gain_file: str = StringField() - https_mrc_file: str = StringField() - https_omezarr_dir: str = StringField() id: int = IntField() - is_aligned: bool = BooleanField() - microscope_additional_info: str = StringField() - microscope_energy_filter: str = StringField() - microscope_image_corrector: str = StringField() - microscope_model: str = StringField() - microscope_phase_plate: str = StringField() + alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_seriesId") per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_seriesId") - pixel_spacing: float = FloatField() - related_empiar_entry: str = StringField() run: Run = ItemRelationship("Run", "runId", "id") run_id: int = IntField() - s3_angle_list: str = StringField() + deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition_id: int = IntField() + s3_omezarr_dir: str = StringField() + s3_mrc_file: str = StringField() + https_omezarr_dir: str = StringField() + https_mrc_file: str = StringField() s3_collection_metadata: str = StringField() + https_collection_metadata: str = StringField() + s3_angle_list: str = StringField() + https_angle_list: str = StringField() s3_gain_file: str = StringField() - s3_mrc_file: str = StringField() - s3_omezarr_dir: str = StringField() + https_gain_file: str = StringField() + acceleration_voltage: int = IntField() spherical_aberration_constant: float = FloatField() - tilt_axis: float = FloatField() - tilting_scheme: str = StringField() - tilt_max: float = FloatField() + microscope_model: str = StringField() + microscope_energy_filter: str = StringField() + microscope_phase_plate: str = StringField() + microscope_image_corrector: str = StringField() + microscope_additional_info: str = StringField() + camera_manufacturer: str = StringField() + camera_model: str = StringField() tilt_min: float = FloatField() + tilt_max: float = FloatField() tilt_range: float = FloatField() - tiltseries_frames_count: int = IntField() - tilt_series_quality: int = IntField() tilt_step: float = FloatField() + tilting_scheme: str = StringField() + tilt_axis: float = FloatField() total_flux: float = FloatField() + data_acquisition_software: str = StringField() + related_empiar_entry: str = StringField() + binning_from_frames: float = FloatField() + tilt_series_quality: int = IntField() + is_aligned: bool = BooleanField() + pixel_spacing: float = FloatField() + aligned_tiltseries_binning: int = IntField() + tiltseries_frames_count: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries @@ -757,85 +757,85 @@ class Tomogram(Model): """Metadata describing a tomogram. Attributes: + id (int): Numeric identifier (May change!) alignment (Alignment): The alignment this tomogram is a part of alignment_id (int): None authors (List[TomogramAuthor]): The tomogram authors of this tomogram - ctf_corrected (bool): Whether this tomogram is CTF corrected deposition (Deposition): The deposition this tomogram is a part of deposition_id (int): None - fiducial_alignment_status (str): Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial - https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) - https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format - id (int): Numeric identifier (May change!) - is_canonical (bool): Is this tomogram considered the canonical tomogram for the run experiment? True=Yes - is_standardized (bool): Whether this tomogram was generated per the portal's standards - key_photo_thumbnail_url (str): URL for the thumbnail of key photo - key_photo_url (str): URL for the key photo + run (Run): The run this tomogram is a part of + run_id (int): None + tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of + tomogram_voxel_spacing_id (int): None name (str): Short name for this tomogram - neuroglancer_config (str): the compact json of neuroglancer config - offset_x (int): x offset data relative to the canonical tomogram in pixels - offset_y (int): y offset data relative to the canonical tomogram in pixels - offset_z (int): z offset data relative to the canonical tomogram in pixels + size_x (float): Number of pixels in the 3D data fast axis + size_y (float): Number of pixels in the 3D data medium axis + size_z (float): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + voxel_spacing (float): Voxel spacing equal in all three axes in angstroms + fiducial_alignment_status (str): Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + reconstruction_method (str): Describe reconstruction method (WBP, SART, SIRT) processing (str): Describe additional processing used to derive the tomogram + tomogram_version (float): Version of tomogram processing_software (str): Processing software used to derive the tomogram - reconstruction_method (str): Describe reconstruction method (WBP, SART, SIRT) reconstruction_software (str): Name of software used for reconstruction - run (Run): The run this tomogram is a part of - run_id (int): None - s3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) + is_canonical (bool): Is this tomogram considered the canonical tomogram for the run experiment? True=Yes s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format + https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format + s3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) + https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) scale0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram scale1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram scale2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram - size_x (float): Number of pixels in the 3D data fast axis - size_y (float): Number of pixels in the 3D data medium axis - size_z (float): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt - tomogram_version (float): Version of tomogram - tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of - tomogram_voxel_spacing_id (int): None - voxel_spacing (float): Voxel spacing equal in all three axes in angstroms + ctf_corrected (bool): Whether this tomogram is CTF corrected + offset_x (int): x offset data relative to the canonical tomogram in pixels + offset_y (int): y offset data relative to the canonical tomogram in pixels + offset_z (int): z offset data relative to the canonical tomogram in pixels + key_photo_url (str): URL for the key photo + key_photo_thumbnail_url (str): URL for the thumbnail of key photo + neuroglancer_config (str): the compact json of neuroglancer config + is_standardized (bool): Whether this tomogram was generated per the portal's standards """ _gql_type: str = "Tomogram" _gql_root_field: str = "tomograms" + id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") alignment_id: int = IntField() authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogramId") - ctf_corrected: bool = BooleanField() deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") deposition_id: int = IntField() - fiducial_alignment_status: str = StringField() - https_mrc_file: str = StringField() - https_omezarr_dir: str = StringField() - id: int = IntField() - is_canonical: bool = BooleanField() - is_standardized: bool = BooleanField() - key_photo_thumbnail_url: str = StringField() - key_photo_url: str = StringField() + run: Run = ItemRelationship("Run", "runId", "id") + run_id: int = IntField() + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing_id: int = IntField() name: str = StringField() - neuroglancer_config: str = StringField() - offset_x: int = IntField() - offset_y: int = IntField() - offset_z: int = IntField() + size_x: float = FloatField() + size_y: float = FloatField() + size_z: float = FloatField() + voxel_spacing: float = FloatField() + fiducial_alignment_status: str = StringField() + reconstruction_method: str = StringField() processing: str = StringField() + tomogram_version: float = FloatField() processing_software: str = StringField() - reconstruction_method: str = StringField() reconstruction_software: str = StringField() - run: Run = ItemRelationship("Run", "runId", "id") - run_id: int = IntField() - s3_mrc_file: str = StringField() + is_canonical: bool = BooleanField() s3_omezarr_dir: str = StringField() + https_omezarr_dir: str = StringField() + s3_mrc_file: str = StringField() + https_mrc_file: str = StringField() scale0_dimensions: str = StringField() scale1_dimensions: str = StringField() scale2_dimensions: str = StringField() - size_x: float = FloatField() - size_y: float = FloatField() - size_z: float = FloatField() - tomogram_version: float = FloatField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") - tomogram_voxel_spacing_id: int = IntField() - voxel_spacing: float = FloatField() + ctf_corrected: bool = BooleanField() + offset_x: int = IntField() + offset_y: int = IntField() + offset_z: int = IntField() + key_photo_url: str = StringField() + key_photo_thumbnail_url: str = StringField() + neuroglancer_config: str = StringField() + is_standardized: bool = BooleanField() def download_omezarr(self, dest_path: Optional[str] = None): """Download the OME-Zarr version of this tomogram @@ -875,60 +875,60 @@ class TomogramAuthor(Model): """Author of a tomogram Attributes: + id (int): Numeric identifier (May change!) + tomogram (Tomogram): The tomogram this tomogram author is a part of + tomogram_id (int): None + author_list_order (int): The order in which the author appears in the publication + orcid (str): A unique, persistent identifier for researchers, provided by ORCID. + name (str): Full name of an author (e.g. Jane Doe). + email (str): Email address for this author + affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated affiliation_address (str): Address of the institution an author is affiliated with. affiliation_identifier (str): A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - affiliation_name (str): Name of the institutions an author is affiliated with. Comma separated - author_list_order (int): The order in which the author appears in the publication corresponding_author_status (bool): Indicates whether an author is the corresponding author - email (str): Email address for this author - id (int): Numeric identifier (May change!) - name (str): Full name of an author (e.g. Jane Doe). - orcid (str): A unique, persistent identifier for researchers, provided by ORCID. primary_author_status (bool): Indicates whether an author is the main person creating the tomogram - tomogram (Tomogram): The tomogram this tomogram author is a part of - tomogram_id (int): None """ _gql_type: str = "TomogramAuthor" _gql_root_field: str = "tomogramAuthors" + id: int = IntField() + tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") + tomogram_id: int = IntField() + author_list_order: int = IntField() + orcid: str = StringField() + name: str = StringField() + email: str = StringField() + affiliation_name: str = StringField() affiliation_address: str = StringField() affiliation_identifier: str = StringField() - affiliation_name: str = StringField() - author_list_order: int = IntField() corresponding_author_status: bool = BooleanField() - email: str = StringField() - id: int = IntField() - name: str = StringField() - orcid: str = StringField() primary_author_status: bool = BooleanField() - tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") - tomogram_id: int = IntField() class TomogramVoxelSpacing(Model): """Voxel spacings for a run Attributes: - annotation_files (List[AnnotationFile]): The annotation files of this tomogram voxel spacing - https_prefix (str): The HTTPS directory path where this tomogram voxel spacing is contained id (int): Numeric identifier (May change!) + annotation_files (List[AnnotationFile]): The annotation files of this tomogram voxel spacing run (Run): The run this tomogram voxel spacing is a part of run_id (int): None - s3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing voxel_spacing (float): The voxel spacing for the tomograms in this set in angstroms + s3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained + https_prefix (str): The HTTPS directory path where this tomogram voxel spacing is contained """ _gql_type: str = "TomogramVoxelSpacing" _gql_root_field: str = "tomogramVoxelSpacings" - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") - https_prefix: str = StringField() id: int = IntField() + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") run: Run = ItemRelationship("Run", "runId", "id") run_id: int = IntField() - s3_prefix: str = StringField() tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") voxel_spacing: float = FloatField() + s3_prefix: str = StringField() + https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this tomogram voxel spacing. From 6fbc18b1fd23268e953c8a5770c7cbdaa75c07b8 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Wed, 18 Sep 2024 15:29:16 -0400 Subject: [PATCH 07/18] Remove unneeded field --- .../src/cryoet_data_portal/_models.py | 2 -- .../cryoet_data_portal/data/schema.graphql | 20 ------------------- 2 files changed, 22 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 920d7912c..91505be57 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -284,7 +284,6 @@ class Dataset(Model): related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. s3_prefix (str): The S3 public bucket path where this dataset is contained https_prefix (str): The https directory path where this dataset is contained - publications (str): Comma-separated list of DOIs for publications associated with the dataset. """ _gql_type: str = "Dataset" @@ -321,7 +320,6 @@ class Dataset(Model): related_database_entries: str = StringField() s3_prefix: str = StringField() https_prefix: str = StringField() - publications: str = StringField() def download_everything(self, dest_path: Optional[str] = None): """Download all of the data for this dataset. diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index eabe8ec94..99ba9a2ad 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -333,7 +333,6 @@ input DatasetWhereClause { s3Prefix: StrComparators httpsPrefix: StrComparators id: IntComparators - publications: StrComparators } input DepositionWhereClause { @@ -926,7 +925,6 @@ input DatasetOrderByClause { s3Prefix: orderBy httpsPrefix: orderBy id: orderBy - publications: orderBy } """Shapes associated with an annotation""" @@ -1374,7 +1372,6 @@ type DatasetGroupByOptions { s3Prefix: String httpsPrefix: String id: Int - publications: String } enum AlignmentCountColumns { @@ -1690,11 +1687,6 @@ type Dataset implements EntityInterface & Node { """The https directory path where this dataset is contained""" httpsPrefix: String! - - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String } """Deposition metadata""" @@ -2064,7 +2056,6 @@ type DatasetMinMaxColumns { s3Prefix: String httpsPrefix: String id: Int - publications: String } enum DatasetCountColumns { @@ -2098,7 +2089,6 @@ enum DatasetCountColumns { s3Prefix httpsPrefix id - publications } """A connection to a list of items.""" @@ -4697,11 +4687,6 @@ input DatasetCreateInput { An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree """ id: Int! - - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String = null } input DatasetUpdateInput { @@ -4805,11 +4790,6 @@ input DatasetUpdateInput { An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree """ id: Int - - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - publications: String = null } input DatasetWhereClauseMutations { From acb7d41ef85017993ed4322a76f0633073295b6e Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Wed, 18 Sep 2024 17:36:26 -0400 Subject: [PATCH 08/18] Last few fields. --- .../src/cryoet_data_portal/_codegen.py | 2 +- .../src/cryoet_data_portal/_models.py | 6 ++++-- .../src/cryoet_data_portal/data/schema.graphql | 18 +++++++++--------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index eee1b45a1..02fce4953 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -44,7 +44,7 @@ "deposition_types_enum": ("StringField()", "str"), "sample_type_enum": ("StringField()", "str"), "tiltseries_camer_acquire_mode_enum": ("StringField()", "str"), - "tiltseries_microscope_manufacturer": ("StringField()", "str"), + "tiltseries_microscope_manufacturer_enum": ("StringField()", "str"), "fiducial_alignment_status_enum": ("StringField()", "str"), "alignment_type_enum": ("StringField()", "str"), } diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 91505be57..3d05b72ab 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -638,6 +638,7 @@ class TiltSeries(Model): https_gain_file (str): HTTPS path to the gain file for this tiltseries acceleration_voltage (int): Electron Microscope Accelerator voltage in volts spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters + microscope_manufacturer (str): Name of the microscope manufacturer (FEI, TFS, JEOL) microscope_model (str): Microscope model name microscope_energy_filter (str): Energy filter setup used microscope_phase_plate (str): Phase plate configuration @@ -659,7 +660,7 @@ class TiltSeries(Model): is_aligned (bool): Whether this tilt series is aligned pixel_spacing (float): Pixel spacing equal in both axes in angstroms aligned_tiltseries_binning (int): Binning factor of the aligned tilt series - tiltseries_frames_count (int): Number of frames associated with this tiltseries + frames_count (int): Number of frames associated with this tiltseries """ _gql_type: str = "Tiltseries" @@ -684,6 +685,7 @@ class TiltSeries(Model): https_gain_file: str = StringField() acceleration_voltage: int = IntField() spherical_aberration_constant: float = FloatField() + microscope_manufacturer: str = StringField() microscope_model: str = StringField() microscope_energy_filter: str = StringField() microscope_phase_plate: str = StringField() @@ -705,7 +707,7 @@ class TiltSeries(Model): is_aligned: bool = BooleanField() pixel_spacing: float = FloatField() aligned_tiltseries_binning: int = IntField() - tiltseries_frames_count: int = IntField() + frames_count: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index 99ba9a2ad..721a63ec7 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -478,7 +478,7 @@ input TiltseriesWhereClause { isAligned: BoolComparators pixelSpacing: FloatComparators alignedTiltseriesBinning: IntComparators - tiltseriesFramesCount: IntComparators + framesCount: IntComparators id: IntComparators } @@ -885,7 +885,7 @@ input TiltseriesOrderByClause { isAligned: orderBy pixelSpacing: orderBy alignedTiltseriesBinning: orderBy - tiltseriesFramesCount: orderBy + framesCount: orderBy id: orderBy } @@ -1332,7 +1332,7 @@ type TiltseriesGroupByOptions { isAligned: Boolean pixelSpacing: Float alignedTiltseriesBinning: Int - tiltseriesFramesCount: Int + framesCount: Int id: Int } @@ -2375,7 +2375,7 @@ type Tiltseries implements EntityInterface & Node { alignedTiltseriesBinning: Int """Number of frames associated with this tiltseries""" - tiltseriesFramesCount: Int + framesCount: Int } input PerSectionParametersOrderByClause { @@ -2547,7 +2547,7 @@ type TiltseriesNumericalColumns { tiltSeriesQuality: Int pixelSpacing: Float alignedTiltseriesBinning: Int - tiltseriesFramesCount: Int + framesCount: Int id: Int } @@ -2584,7 +2584,7 @@ type TiltseriesMinMaxColumns { tiltSeriesQuality: Int pixelSpacing: Float alignedTiltseriesBinning: Int - tiltseriesFramesCount: Int + framesCount: Int id: Int } @@ -2627,7 +2627,7 @@ enum TiltseriesCountColumns { isAligned pixelSpacing alignedTiltseriesBinning - tiltseriesFramesCount + framesCount id } @@ -5289,7 +5289,7 @@ input TiltseriesCreateInput { alignedTiltseriesBinning: Int = null """Number of frames associated with this tiltseries""" - tiltseriesFramesCount: Int = null + framesCount: Int = null """Numeric identifier (May change!)""" id: Int! @@ -5410,7 +5410,7 @@ input TiltseriesUpdateInput { alignedTiltseriesBinning: Int = null """Number of frames associated with this tiltseries""" - tiltseriesFramesCount: Int = null + framesCount: Int = null """Numeric identifier (May change!)""" id: Int From bf9f2266162c0321a344509ab4f7c83a3c4e8375 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Thu, 19 Sep 2024 10:02:49 -0400 Subject: [PATCH 09/18] More schema changes. --- .../src/cryoet_data_portal/_models.py | 12 +++--- .../cryoet_data_portal/data/schema.graphql | 42 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 3d05b72ab..b061f7db8 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -768,9 +768,9 @@ class Tomogram(Model): tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this tomogram is a part of tomogram_voxel_spacing_id (int): None name (str): Short name for this tomogram - size_x (float): Number of pixels in the 3D data fast axis - size_y (float): Number of pixels in the 3D data medium axis - size_z (float): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + size_x (int): Number of pixels in the 3D data fast axis + size_y (int): Number of pixels in the 3D data medium axis + size_z (int): Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt voxel_spacing (float): Voxel spacing equal in all three axes in angstroms fiducial_alignment_status (str): Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial reconstruction_method (str): Describe reconstruction method (WBP, SART, SIRT) @@ -810,9 +810,9 @@ class Tomogram(Model): tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") tomogram_voxel_spacing_id: int = IntField() name: str = StringField() - size_x: float = FloatField() - size_y: float = FloatField() - size_z: float = FloatField() + size_x: int = IntField() + size_y: int = IntField() + size_z: int = IntField() voxel_spacing: float = FloatField() fiducial_alignment_status: str = StringField() reconstruction_method: str = StringField() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index 721a63ec7..9b0cae4b0 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -519,9 +519,9 @@ input TomogramWhereClause { run: RunWhereClause tomogramVoxelSpacing: TomogramVoxelSpacingWhereClause name: StrComparators - sizeX: FloatComparators - sizeY: FloatComparators - sizeZ: FloatComparators + sizeX: IntComparators + sizeY: IntComparators + sizeZ: IntComparators voxelSpacing: FloatComparators fiducialAlignmentStatus: Fiducial_alignment_status_enumEnumComparators reconstructionMethod: Tomogram_reconstruction_method_enumEnumComparators @@ -2686,15 +2686,15 @@ type Tomogram implements EntityInterface & Node { name: String """Number of pixels in the 3D data fast axis""" - sizeX: Float! + sizeX: Int! """Number of pixels in the 3D data medium axis""" - sizeY: Float! + sizeY: Int! """ Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt """ - sizeZ: Float! + sizeZ: Int! """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float! @@ -2936,9 +2936,9 @@ type TomogramGroupByOptions { run: RunGroupByOptions tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions name: String - sizeX: Float - sizeY: Float - sizeZ: Float + sizeX: Int + sizeY: Int + sizeZ: Int voxelSpacing: Float fiducialAlignmentStatus: fiducial_alignment_status_enum reconstructionMethod: tomogram_reconstruction_method_enum @@ -3135,9 +3135,9 @@ type TomogramAggregateFunctions { } type TomogramNumericalColumns { - sizeX: Float - sizeY: Float - sizeZ: Float + sizeX: Int + sizeY: Int + sizeZ: Int voxelSpacing: Float tomogramVersion: Float offsetX: Int @@ -3148,9 +3148,9 @@ type TomogramNumericalColumns { type TomogramMinMaxColumns { name: String - sizeX: Float - sizeY: Float - sizeZ: Float + sizeX: Int + sizeY: Int + sizeZ: Int voxelSpacing: Float tomogramVersion: Float processingSoftware: String @@ -5559,15 +5559,15 @@ input TomogramCreateInput { name: String = null """Number of pixels in the 3D data fast axis""" - sizeX: Float! + sizeX: Int! """Number of pixels in the 3D data medium axis""" - sizeY: Float! + sizeY: Int! """ Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt """ - sizeZ: Float! + sizeZ: Int! """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float! @@ -5661,15 +5661,15 @@ input TomogramUpdateInput { name: String = null """Number of pixels in the 3D data fast axis""" - sizeX: Float + sizeX: Int """Number of pixels in the 3D data medium axis""" - sizeY: Float + sizeY: Int """ Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt """ - sizeZ: Float + sizeZ: Int """Voxel spacing equal in all three axes in angstroms""" voxelSpacing: Float From 2ff1e0e5efc346dc40cbbce3652b51709738c039 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Mon, 30 Sep 2024 15:13:06 -0400 Subject: [PATCH 10/18] Checkpoint: improve tests. --- .../src/cryoet_data_portal/_codegen.py | 12 +- .../src/cryoet_data_portal/_gql_base.py | 2 +- .../src/cryoet_data_portal/_models.py | 120 +++++++++--------- .../cryoet_data_portal/data/schema.graphql | 68 ++++++---- .../tests/cryoet_data_portal | 1 + .../cryoet_data_portal/tests/test_codegen.py | 6 +- .../tests/test_downloads.py | 4 +- .../cryoet_data_portal/tests/test_filters.py | 2 +- .../tests/test_get_client.py | 24 ++-- client/python/cryoet_data_portal/tests/tmp.py | 21 +++ 10 files changed, 156 insertions(+), 104 deletions(-) create mode 120000 client/python/cryoet_data_portal/tests/cryoet_data_portal create mode 100644 client/python/cryoet_data_portal/tests/tmp.py diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index 02fce4953..95c432c00 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -53,24 +53,24 @@ """Maps GraphQL type names to model class names.""" GQL_TO_MODEL_TYPE = { "Alignment": "Alignment", + "Annotation": "Annotation", "AnnotationAuthor": "AnnotationAuthor", "AnnotationFile": "AnnotationFile", "AnnotationShape": "AnnotationShape", - "Annotation": "Annotation", + "Dataset": "Dataset", "DatasetAuthor": "DatasetAuthor", "DatasetFunding": "DatasetFunding", - "Dataset": "Dataset", + "Deposition": "Deposition", "DepositionAuthor": "DepositionAuthor", "DepositionType": "DepositionType", - "Deposition": "Deposition", "Frame": "Frame", "PerSectionAlignmentParameters": "PerSectionAlignmentParameters", "PerSectionParameters": "PerSectionParameters", "Run": "Run", "Tiltseries": "TiltSeries", + "Tomogram": "Tomogram", "TomogramAuthor": "TomogramAuthor", "TomogramVoxelSpacing": "TomogramVoxelSpacing", - "Tomogram": "Tomogram", } @@ -257,7 +257,7 @@ def _parse_model_field( name=name, description=f"The {model_name} this {source_model_name} is a part of", annotation_type=model, - default_value=f'ItemRelationship("{model}", "{model_field}Id", "id")', + default_value=f'ItemRelationship("{model}", "{model_field}_id", "id")', ) return None @@ -283,7 +283,7 @@ def _parse_model_list_field( name=name, description=f"The {of_model_name} of this {source_model_name}", annotation_type=f"List[{of_model}]", - default_value=f'ListRelationship("{of_model}", "id", "{source_field}Id")', + default_value=f'ListRelationship("{of_model}", "id", "{source_field}_id")', ) return None diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py index 0f4f5da49..2f63f8356 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py @@ -210,7 +210,7 @@ class Model: def __init__(self, client: Client, **kwargs): self._client = client for k in self._get_scalar_fields(): - value = getattr(self, k).convert(kwargs.get(k)) + value = getattr(self, k).convert(kwargs.get(to_camel(k))) setattr(self, k, value) def to_dict(self) -> Dict[str, Any]: diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index b061f7db8..3dbf3ace0 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -52,14 +52,14 @@ class Alignment(Model): _gql_root_field: str = "alignments" id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignmentId") - per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignmentId") - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignment_id") + per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignment_id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") + tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_series_id", "id") tiltseries_id: int = IntField() - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignmentId") - run: Run = ItemRelationship("Run", "runId", "id") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "alignment_id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() alignment_type: str = StringField() volume_xdimension: float = FloatField() @@ -87,6 +87,7 @@ class Annotation(Model): https_metadata_path (str): HTTPS path for the metadata json file for this annotation annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) + method_links (str): Provides links to information on the method used for generating annotation, comma separated ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. object_id (str): Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) @@ -108,16 +109,17 @@ class Annotation(Model): _gql_root_field: str = "annotations" id: int = IntField() - run: Run = ItemRelationship("Run", "runId", "id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotationId") - authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotationId") - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotation_id") + authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotation_id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() s3_metadata_path: str = StringField() https_metadata_path: str = StringField() annotation_publication: str = StringField() annotation_method: str = StringField() + method_links: str = StringField() ground_truth_status: bool = BooleanField() object_id: str = StringField() object_name: str = StringField() @@ -179,7 +181,7 @@ class AnnotationAuthor(Model): _gql_root_field: str = "annotationAuthors" id: int = IntField() - annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") + annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") annotation_id: int = IntField() author_list_order: int = IntField() orcid: str = StringField() @@ -212,11 +214,11 @@ class AnnotationFile(Model): _gql_root_field: str = "annotationFiles" id: int = IntField() - alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignment: Alignment = ItemRelationship("Alignment", "alignment_id", "id") alignment_id: int = IntField() - annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shapeId", "id") + annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shape_id", "id") annotation_shape_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacing_id", "id") tomogram_voxel_spacing_id: int = IntField() format: str = StringField() s3_path: str = StringField() @@ -245,9 +247,9 @@ class AnnotationShape(Model): _gql_root_field: str = "annotationShapes" id: int = IntField() - annotation: Annotation = ItemRelationship("Annotation", "annotationId", "id") + annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") annotation_id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shapeId") + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shape_id") shape_type: str = StringField() class Dataset(Model): """A collection of imaging experiments on the same organism @@ -290,11 +292,11 @@ class Dataset(Model): _gql_root_field: str = "datasets" id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "datasetId") - authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "datasetId") - runs: List[Run] = ListRelationship("Run", "id", "datasetId") + funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "dataset_id") + authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "dataset_id") + runs: List[Run] = ListRelationship("Run", "id", "dataset_id") title: str = StringField() description: str = StringField() organism_name: str = StringField() @@ -351,7 +353,7 @@ class DatasetAuthor(Model): _gql_root_field: str = "datasetAuthors" id: int = IntField() - dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") dataset_id: int = IntField() author_list_order: int = IntField() orcid: str = StringField() @@ -374,10 +376,10 @@ class DatasetFunding(Model): """ _gql_type: str = "DatasetFunding" - _gql_root_field: str = "datasetFundedByThisSource" + _gql_root_field: str = "datasetFunding" id: int = IntField() - dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") dataset_id: int = IntField() funding_agency_name: str = StringField() grant_id: str = StringField() @@ -409,16 +411,16 @@ class Deposition(Model): _gql_root_field: str = "depositions" id: int = IntField() - authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "depositionId") - alignments: List[Alignment] = ListRelationship("Alignment", "id", "depositionId") - annotations: List[Annotation] = ListRelationship("Annotation", "id", "depositionId") - datasets: List[Dataset] = ListRelationship("Dataset", "id", "depositionId") - frames: List[Frame] = ListRelationship("Frame", "id", "depositionId") - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "depositionId") - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "depositionId") + authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "deposition_id") + alignments: List[Alignment] = ListRelationship("Alignment", "id", "deposition_id") + annotations: List[Annotation] = ListRelationship("Annotation", "id", "deposition_id") + datasets: List[Dataset] = ListRelationship("Dataset", "id", "deposition_id") + frames: List[Frame] = ListRelationship("Frame", "id", "deposition_id") + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "deposition_id") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "deposition_id") title: str = StringField() description: str = StringField() - deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "depositionId") + deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "deposition_id") deposition_publications: str = StringField() related_database_entries: str = StringField() deposition_date: date = DateField() @@ -448,7 +450,7 @@ class DepositionAuthor(Model): _gql_root_field: str = "depositionAuthors" id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() author_list_order: int = IntField() orcid: str = StringField() @@ -473,7 +475,7 @@ class DepositionType(Model): _gql_root_field: str = "depositionTypes" id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() type: str = StringField() class Frame(Model): @@ -500,10 +502,10 @@ class Frame(Model): _gql_root_field: str = "frames" id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frameId") - run: Run = ItemRelationship("Run", "runId", "id") + per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frame_id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() raw_angle: float = FloatField() acquisition_order: int = IntField() @@ -532,7 +534,7 @@ class PerSectionAlignmentParameters(Model): _gql_root_field: str = "perSectionAlignmentParameters" id: int = IntField() - alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignment: Alignment = ItemRelationship("Alignment", "alignment_id", "id") alignment_id: int = IntField() z_index: int = IntField() x_offset: float = FloatField() @@ -559,9 +561,9 @@ class PerSectionParameters(Model): _gql_root_field: str = "perSectionParameters" id: int = IntField() - frame: Frame = ItemRelationship("Frame", "frameId", "id") + frame: Frame = ItemRelationship("Frame", "frame_id", "id") frame_id: int = IntField() - tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_seriesId", "id") + tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_series_id", "id") tiltseries_id: int = IntField() z_index: int = IntField() defocus: float = FloatField() @@ -589,14 +591,14 @@ class Run(Model): _gql_root_field: str = "runs" id: int = IntField() - alignments: List[Alignment] = ListRelationship("Alignment", "id", "runId") - annotations: List[Annotation] = ListRelationship("Annotation", "id", "runId") - dataset: Dataset = ItemRelationship("Dataset", "datasetId", "id") + alignments: List[Alignment] = ListRelationship("Alignment", "id", "run_id") + annotations: List[Annotation] = ListRelationship("Annotation", "id", "run_id") + dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") dataset_id: int = IntField() - frames: List[Frame] = ListRelationship("Frame", "id", "runId") - tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "runId") - tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "runId") - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "runId") + frames: List[Frame] = ListRelationship("Frame", "id", "run_id") + tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "run_id") + tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "run_id") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "run_id") name: str = StringField() s3_prefix: str = StringField() https_prefix: str = StringField() @@ -667,11 +669,11 @@ class TiltSeries(Model): _gql_root_field: str = "tiltseries" id: int = IntField() - alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_seriesId") - per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_seriesId") - run: Run = ItemRelationship("Run", "runId", "id") + alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_series_id") + per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_series_id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() s3_omezarr_dir: str = StringField() s3_mrc_file: str = StringField() @@ -800,14 +802,14 @@ class Tomogram(Model): _gql_root_field: str = "tomograms" id: int = IntField() - alignment: Alignment = ItemRelationship("Alignment", "alignmentId", "id") + alignment: Alignment = ItemRelationship("Alignment", "alignment_id", "id") alignment_id: int = IntField() - authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogramId") - deposition: Deposition = ItemRelationship("Deposition", "depositionId", "id") + authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogram_id") + deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - run: Run = ItemRelationship("Run", "runId", "id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacingId", "id") + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacing_id", "id") tomogram_voxel_spacing_id: int = IntField() name: str = StringField() size_x: int = IntField() @@ -893,7 +895,7 @@ class TomogramAuthor(Model): _gql_root_field: str = "tomogramAuthors" id: int = IntField() - tomogram: Tomogram = ItemRelationship("Tomogram", "tomogramId", "id") + tomogram: Tomogram = ItemRelationship("Tomogram", "tomogram_id", "id") tomogram_id: int = IntField() author_list_order: int = IntField() orcid: str = StringField() @@ -922,10 +924,10 @@ class TomogramVoxelSpacing(Model): _gql_root_field: str = "tomogramVoxelSpacings" id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacingId") - run: Run = ItemRelationship("Run", "runId", "id") + annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacing_id") + run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacingId") + tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacing_id") voxel_spacing: float = FloatField() s3_prefix: str = StringField() https_prefix: str = StringField() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index 9b0cae4b0..e96f61ad7 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -5,7 +5,7 @@ type Query { annotationShapes(where: AnnotationShapeWhereClause = null, orderBy: [AnnotationShapeOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationShape!]! annotations(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Annotation!]! datasetAuthors(where: DatasetAuthorWhereClause = null, orderBy: [DatasetAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetAuthor!]! - datasetFundedByThisSource(where: DatasetFundingWhereClause = null, orderBy: [DatasetFundingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetFunding!]! + datasetFunding(where: DatasetFundingWhereClause = null, orderBy: [DatasetFundingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DatasetFunding!]! datasets(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Dataset!]! depositionAuthors(where: DepositionAuthorWhereClause = null, orderBy: [DepositionAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DepositionAuthor!]! depositions(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Deposition!]! @@ -24,7 +24,7 @@ type Query { annotationShapesAggregate(where: AnnotationShapeWhereClause = null): AnnotationShapeAggregate! annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate! datasetAuthorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate! - datasetFundedByThisSourceAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate! + datasetFundingAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate! datasetsAggregate(where: DatasetWhereClause = null): DatasetAggregate! depositionAuthorsAggregate(where: DepositionAuthorWhereClause = null): DepositionAuthorAggregate! depositionsAggregate(where: DepositionWhereClause = null): DepositionAggregate! @@ -270,6 +270,7 @@ input AnnotationWhereClause { httpsMetadataPath: StrComparators annotationPublication: StrComparators annotationMethod: StrComparators + methodLinks: StrComparators groundTruthStatus: BoolComparators objectId: StrComparators objectName: StrComparators @@ -403,14 +404,10 @@ input StrComparators { } input BoolComparators { - _eq: Int - _neq: Int - _in: [Int!] - _nin: [Int!] - _gt: Int - _gte: Int - _lt: Int - _lte: Int + _eq: Boolean + _neq: Boolean + _in: [Boolean!] + _nin: [Boolean!] _is_null: Boolean } @@ -510,6 +507,7 @@ enum tiltseries_microscope_manufacturer_enum { FEI TFS JEOL + SIMULATED } input TomogramWhereClause { @@ -740,6 +738,7 @@ enum annotation_method_type_enum { manual automated hybrid + simulated } input Annotation_file_shape_type_enumEnumComparators { @@ -1022,6 +1021,11 @@ type Annotation implements EntityInterface & Node { """ annotationMethod: String! + """ + Provides links to information on the method used for generating annotation, comma separated + """ + methodLinks: String + """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -1420,6 +1424,7 @@ input AnnotationOrderByClause { httpsMetadataPath: orderBy annotationPublication: orderBy annotationMethod: orderBy + methodLinks: orderBy groundTruthStatus: orderBy objectId: orderBy objectName: orderBy @@ -1465,6 +1470,7 @@ type AnnotationMinMaxColumns { httpsMetadataPath: String annotationPublication: String annotationMethod: String + methodLinks: String objectId: String objectName: String objectDescription: String @@ -1487,6 +1493,7 @@ type AnnotationGroupByOptions { httpsMetadataPath: String annotationPublication: String annotationMethod: String + methodLinks: String groundTruthStatus: Boolean objectId: String objectName: String @@ -1514,6 +1521,7 @@ enum AnnotationCountColumns { httpsMetadataPath annotationPublication annotationMethod + methodLinks groundTruthStatus objectId objectName @@ -1542,7 +1550,7 @@ type Dataset implements EntityInterface & Node { """ id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int + depositionId: Int! fundingSources( where: DatasetFundingWhereClause = null orderBy: [DatasetFundingOrderByClause!] = [] @@ -1606,7 +1614,7 @@ type Dataset implements EntityInterface & Node { """ Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ - organismName: String! + organismName: String """NCBI taxonomy identifier for the organism, e.g. 9606""" organismTaxid: Int @@ -1887,7 +1895,7 @@ type DepositionAuthor implements EntityInterface & Node { """Numeric identifier (May change!)""" id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int + depositionId: Int! """The order in which the author appears in the publication""" authorListOrder: Int! @@ -2676,7 +2684,7 @@ type Tomogram implements EntityInterface & Node { ): TomogramAuthorConnection! authorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int + depositionId: Int! run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run runId: Int tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing @@ -3232,7 +3240,7 @@ type DepositionType implements EntityInterface & Node { """Numeric identifier (May change!)""" id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int + depositionId: Int! """ The type of data submitted as a part of this deposition (annotation, dataset, tomogram) @@ -4318,6 +4326,11 @@ input AnnotationCreateInput { """ annotationMethod: String! + """ + Provides links to information on the method used for generating annotation, comma separated + """ + methodLinks: String = null + """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -4403,6 +4416,11 @@ input AnnotationUpdateInput { """ annotationMethod: String + """ + Provides links to information on the method used for generating annotation, comma separated + """ + methodLinks: String = null + """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -4588,7 +4606,7 @@ input DatasetFundingWhereClauseMutations { input DatasetCreateInput { """Reference to the deposition this dataset is associated with""" - depositionId: ID = null + depositionId: ID! """Title of a CryoET dataset""" title: String! @@ -4601,7 +4619,7 @@ input DatasetCreateInput { """ Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ - organismName: String! + organismName: String = null """NCBI taxonomy identifier for the organism, e.g. 9606""" organismTaxid: Int = null @@ -4691,7 +4709,7 @@ input DatasetCreateInput { input DatasetUpdateInput { """Reference to the deposition this dataset is associated with""" - depositionId: ID = null + depositionId: ID """Title of a CryoET dataset""" title: String @@ -4704,7 +4722,7 @@ input DatasetUpdateInput { """ Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens """ - organismName: String + organismName: String = null """NCBI taxonomy identifier for the organism, e.g. 9606""" organismTaxid: Int = null @@ -4797,7 +4815,7 @@ input DatasetWhereClauseMutations { } input DepositionAuthorCreateInput { - depositionId: ID = null + depositionId: ID! """Numeric identifier (May change!)""" id: Int! @@ -4833,7 +4851,7 @@ input DepositionAuthorCreateInput { } input DepositionAuthorUpdateInput { - depositionId: ID = null + depositionId: ID """Numeric identifier (May change!)""" id: Int @@ -4941,7 +4959,7 @@ input DepositionWhereClauseMutations { } input DepositionTypeCreateInput { - depositionId: ID = null + depositionId: ID! """ The type of data submitted as a part of this deposition (annotation, dataset, tomogram) @@ -4953,7 +4971,7 @@ input DepositionTypeCreateInput { } input DepositionTypeUpdateInput { - depositionId: ID = null + depositionId: ID """ The type of data submitted as a part of this deposition (annotation, dataset, tomogram) @@ -5549,7 +5567,7 @@ input TomogramCreateInput { alignmentId: ID = null """If the tomogram is part of a deposition, the related deposition""" - depositionId: ID = null + depositionId: ID! runId: ID = null """Voxel spacings for a run""" @@ -5651,7 +5669,7 @@ input TomogramUpdateInput { alignmentId: ID = null """If the tomogram is part of a deposition, the related deposition""" - depositionId: ID = null + depositionId: ID runId: ID = null """Voxel spacings for a run""" diff --git a/client/python/cryoet_data_portal/tests/cryoet_data_portal b/client/python/cryoet_data_portal/tests/cryoet_data_portal new file mode 120000 index 000000000..d9f489f9d --- /dev/null +++ b/client/python/cryoet_data_portal/tests/cryoet_data_portal @@ -0,0 +1 @@ +../src/cryoet_data_portal \ No newline at end of file diff --git a/client/python/cryoet_data_portal/tests/test_codegen.py b/client/python/cryoet_data_portal/tests/test_codegen.py index 53cf362cc..21c732408 100644 --- a/client/python/cryoet_data_portal/tests/test_codegen.py +++ b/client/python/cryoet_data_portal/tests/test_codegen.py @@ -76,7 +76,8 @@ def test_write_models(tmp_path: Path): models = ( ModelInfo( name="TestDataset", - gql_name="test_datasets", + gql_type="test_datasets", + root_field="query", fields=( FieldInfo("id", "int", "IntField()"), FieldInfo("title", "str", "StringField()"), @@ -84,7 +85,8 @@ def test_write_models(tmp_path: Path): ), ModelInfo( name="TestRun", - gql_name="test_runs", + gql_type="test_runs", + root_field="query", fields=( FieldInfo("id", "int", "IntField()"), FieldInfo("name", "str", "StringField()"), diff --git a/client/python/cryoet_data_portal/tests/test_downloads.py b/client/python/cryoet_data_portal/tests/test_downloads.py index e400055a5..1e97867c2 100644 --- a/client/python/cryoet_data_portal/tests/test_downloads.py +++ b/client/python/cryoet_data_portal/tests/test_downloads.py @@ -7,7 +7,7 @@ Annotation, Dataset, Run, - Tiltseries, + TiltSeries, Tomogram, TomogramVoxelSpacing, ) @@ -132,7 +132,7 @@ def test_download_default_dir(tmp_dir, client) -> None: def test_tiltseries_downloaders(tmp_dir, client): - ts = Tiltseries.find(client, [Tiltseries.run.name == "RUN1"])[0] + ts = TiltSeries.find(client, [TiltSeries.run.name == "RUN1"])[0] assert ts ts.download_collection_metadata(tmp_dir) ts.download_angle_list(tmp_dir) diff --git a/client/python/cryoet_data_portal/tests/test_filters.py b/client/python/cryoet_data_portal/tests/test_filters.py index 518e37d28..3cd440d8a 100644 --- a/client/python/cryoet_data_portal/tests/test_filters.py +++ b/client/python/cryoet_data_portal/tests/test_filters.py @@ -39,6 +39,6 @@ def test_filter_on_object_raises_exceptions(client) -> None: # Make sure we can't filter on relationship fields directly match = "is an object and can't be compared directly." with pytest.raises(Exception, match=match): - Run.find(client, [Run.tomogram_voxel_spacings.annotations == 20001]) + Run.find(client, [Run.annotations == 20001]) with pytest.raises(Exception, match=match): Run.find(client, [Run.dataset == 20001]) diff --git a/client/python/cryoet_data_portal/tests/test_get_client.py b/client/python/cryoet_data_portal/tests/test_get_client.py index cc9e74acc..a1b054ef1 100644 --- a/client/python/cryoet_data_portal/tests/test_get_client.py +++ b/client/python/cryoet_data_portal/tests/test_get_client.py @@ -11,7 +11,7 @@ def test_relationships(client) -> None: depo = ds.deposition assert depo assert depo.authors.pop() - assert depo.dataset.pop() + assert depo.datasets.pop() assert depo.tomograms.pop() assert depo.annotations.pop() run = Run.find(client, [Run.dataset.id == ds.id]).pop() @@ -20,9 +20,13 @@ def test_relationships(client) -> None: vs = run.tomogram_voxel_spacings.pop() assert vs assert run.tiltseries.pop() - anno = vs.annotations.pop() + anno = run.annotations.pop() assert anno - assert anno.files.pop() + shape = anno.annotation_shapes.pop() + assert shape + afile = shape.annotation_files.pop() + assert afile + assert afile.tomogram_voxel_spacing assert anno.authors.pop() tomo = vs.tomograms.pop() assert tomo @@ -37,8 +41,9 @@ def test_relationships_reverse(client) -> None: run = Run.find(client, [Run.dataset.id == ds.id]).pop() ts = run.tiltseries.pop() vs = run.tomogram_voxel_spacings.pop() - anno = vs.annotations.pop() - anno_file = anno.files.pop() + anno = run.annotations.pop() + anno_shape = anno.annotation_shapes.pop() + anno_file = anno_shape.annotation_files.pop() anno_author = anno.authors.pop() tomo = vs.tomograms.pop() tomo_author = tomo.authors.pop() @@ -47,8 +52,9 @@ def test_relationships_reverse(client) -> None: assert tomo.tomogram_voxel_spacing assert tomo.deposition assert anno_author.annotation - assert anno_file.annotation - assert anno.tomogram_voxel_spacing + assert anno_file.annotation_shape + assert anno_file.tomogram_voxel_spacing + assert anno_shape.annotation assert anno.deposition assert vs.run assert ts.run @@ -58,7 +64,9 @@ def test_relationships_reverse(client) -> None: def test_item_relationship_with_missing_id(client: Client): - annos = Annotation.find(client, [Annotation.id == 45]) + annos = Annotation.find( + client, [Annotation.object_name == "Test Annotation Object Name"] + ) assert len(annos) == 1 anno = annos[0] diff --git a/client/python/cryoet_data_portal/tests/tmp.py b/client/python/cryoet_data_portal/tests/tmp.py new file mode 100644 index 000000000..022ef8d82 --- /dev/null +++ b/client/python/cryoet_data_portal/tests/tmp.py @@ -0,0 +1,21 @@ +from cryoet_data_portal import Client, Run, Tomogram + +# Instantiate a client, using the data portal GraphQL API by default +client = Client() + +# runs_list = Run.find(client, query_filters=[Run.name.ilike("%TS%"), Run.tomogram_voxel_spacings.tomograms.size_x > 900]) +runs_list = Run.find(client) +for run in runs_list: + print(run.name) + for vs in run.tomogram_voxel_spacings: + # for tomo in vs.tomograms: + # These tomograms may or may not be > 900 voxels wide because I didn't add another filter above! + tomos = Tomogram.find( + client, + query_filters=[ + Tomogram.tomogram_voxel_spacing.id == vs.id, + ], + ) + for tomo in tomos: + print(tomo.to_dict()) + print(run.to_dict()) From 7c6b1da3ebe23c3290e0a3097811f97aeabf823d Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Mon, 30 Sep 2024 17:17:04 -0400 Subject: [PATCH 11/18] Get tests to pass. --- .../src/cryoet_data_portal/_models.py | 46 +++++++++++----- .../cryoet_data_portal/data/schema.graphql | 53 ++++++++++++++----- .../templates/Annotation.jinja2 | 26 ++++++--- .../templates/TiltSeries.jinja2 | 2 +- .../templates/Tomogram.jinja2 | 18 +++++-- .../tests/test_downloads.py | 26 +++++---- .../tests/test_get_client.py | 9 ++++ 7 files changed, 130 insertions(+), 50 deletions(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 3dbf3ace0..2f1936e4f 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -136,6 +136,17 @@ class Annotation(Model): release_date: date = DateField() last_modified_date: date = DateField() + def download_metadata( + self, + dest_path: Optional[str] = None, + ): + """Download annotation metadata + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + download_https(self.https_metadata_path, dest_path) + def download( self, dest_path: Optional[str] = None, @@ -150,15 +161,16 @@ def download( format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ download_metadata = False - for file in self.files: - if format and file.format != format: - continue - if shape and file.shape_type != shape: + for anno_shape in self.annotation_shapes: + if shape and anno_shape.shape_type != shape: continue - file.download(dest_path) - download_metadata = True + for file in anno_shape.annotation_files: + if format and file.format != format: + continue + file.download(dest_path) + download_metadata = True if download_metadata: - download_https(self.https_metadata_path, dest_path) + self.download_metadata(dest_path) class AnnotationAuthor(Model): """Metadata for an annotation's authors @@ -753,7 +765,7 @@ def download_mrcfile( Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. """ - url = self.https_mrc_bin1 + url = self.https_mrc_file download_https(url, dest_path) class Tomogram(Model): """Metadata describing a tomogram. @@ -854,7 +866,7 @@ def download_mrcfile(self, dest_path: Optional[str] = None): Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. """ - url = self.https_mrc_scale0 + url = self.https_mrc_file download_https(url, dest_path) def download_all_annotations( @@ -870,9 +882,19 @@ def download_all_annotations( shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - vs = self.tomogram_voxel_spacing - for anno in vs.annotations: - anno.download(dest_path, format, shape) + filters = [AnnotationFile.tomogram_voxel_spacing_id == self.tomogram_voxel_spacing_id, AnnotationFile.alignment_id == self.alignment_id] + if shape: + filters.append(AnnotationFile.annotation_shape.shape_type == shape) + if format: + filters.append(AnnotationFile.format == format) + anno_files = AnnotationFile.find(self._client, filters) + downloaded_metadata = set([]) + for file in anno_files: + file.download(dest_path) + annotation_id = file.annotation_shape.annotation_id + if annotation_id not in downloaded_metadata: + downloaded_metadata.add(annotation_id) + file.annotation_shape.annotation.download_metadata(dest_path) class TomogramAuthor(Model): """Author of a tomogram diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index e96f61ad7..9e63c3eeb 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -225,9 +225,12 @@ input AlignmentWhereClause { annotationFiles: AnnotationFileWhereClause perSectionAlignments: PerSectionAlignmentParametersWhereClause deposition: DepositionWhereClause + depositionId: IntComparators tiltseries: TiltseriesWhereClause + tiltseriesId: IntComparators tomograms: TomogramWhereClause run: RunWhereClause + runId: IntComparators alignmentType: Alignment_type_enumEnumComparators volumeXDimension: FloatComparators volumeYDimension: FloatComparators @@ -244,8 +247,11 @@ input AlignmentWhereClause { input AnnotationFileWhereClause { alignment: AlignmentWhereClause + alignmentId: IntComparators annotationShape: AnnotationShapeWhereClause + annotationShapeId: IntComparators tomogramVoxelSpacing: TomogramVoxelSpacingWhereClause + tomogramVoxelSpacingId: IntComparators format: StrComparators s3Path: StrComparators httpsPath: StrComparators @@ -254,8 +260,21 @@ input AnnotationFileWhereClause { id: IntComparators } +input IntComparators { + _eq: Int + _neq: Int + _in: [Int!] + _nin: [Int!] + _gt: Int + _gte: Int + _lt: Int + _lte: Int + _is_null: Boolean +} + input AnnotationShapeWhereClause { annotation: AnnotationWhereClause + annotationId: IntComparators annotationFiles: AnnotationFileWhereClause shapeType: Annotation_file_shape_type_enumEnumComparators id: IntComparators @@ -263,9 +282,11 @@ input AnnotationShapeWhereClause { input AnnotationWhereClause { run: RunWhereClause + runId: IntComparators annotationShapes: AnnotationShapeWhereClause authors: AnnotationAuthorWhereClause deposition: DepositionWhereClause + depositionId: IntComparators s3MetadataPath: StrComparators httpsMetadataPath: StrComparators annotationPublication: StrComparators @@ -293,6 +314,7 @@ input RunWhereClause { alignments: AlignmentWhereClause annotations: AnnotationWhereClause dataset: DatasetWhereClause + datasetId: IntComparators frames: FrameWhereClause tiltseries: TiltseriesWhereClause tomogramVoxelSpacings: TomogramVoxelSpacingWhereClause @@ -305,6 +327,7 @@ input RunWhereClause { input DatasetWhereClause { deposition: DepositionWhereClause + depositionId: IntComparators fundingSources: DatasetFundingWhereClause authors: DatasetAuthorWhereClause runs: RunWhereClause @@ -359,6 +382,7 @@ input DepositionWhereClause { input DepositionAuthorWhereClause { deposition: DepositionWhereClause + depositionId: IntComparators id: IntComparators authorListOrder: IntComparators orcid: StrComparators @@ -371,18 +395,6 @@ input DepositionAuthorWhereClause { primaryAuthorStatus: BoolComparators } -input IntComparators { - _eq: Int - _neq: Int - _in: [Int!] - _nin: [Int!] - _gt: Int - _gte: Int - _lt: Int - _lte: Int - _is_null: Boolean -} - input StrComparators { _eq: String _neq: String @@ -413,8 +425,10 @@ input BoolComparators { input FrameWhereClause { deposition: DepositionWhereClause + depositionId: IntComparators perSectionParameters: PerSectionParametersWhereClause run: RunWhereClause + runId: IntComparators rawAngle: FloatComparators acquisitionOrder: IntComparators dose: FloatComparators @@ -428,7 +442,9 @@ input FrameWhereClause { input PerSectionParametersWhereClause { frame: FrameWhereClause + frameId: IntComparators tiltseries: TiltseriesWhereClause + tiltseriesId: IntComparators zIndex: IntComparators defocus: FloatComparators astigmatism: FloatComparators @@ -440,7 +456,9 @@ input TiltseriesWhereClause { alignments: AlignmentWhereClause perSectionParameters: PerSectionParametersWhereClause run: RunWhereClause + runId: IntComparators deposition: DepositionWhereClause + depositionId: IntComparators s3OmezarrDir: StrComparators s3MrcFile: StrComparators httpsOmezarrDir: StrComparators @@ -512,10 +530,14 @@ enum tiltseries_microscope_manufacturer_enum { input TomogramWhereClause { alignment: AlignmentWhereClause + alignmentId: IntComparators authors: TomogramAuthorWhereClause deposition: DepositionWhereClause + depositionId: IntComparators run: RunWhereClause + runId: IntComparators tomogramVoxelSpacing: TomogramVoxelSpacingWhereClause + tomogramVoxelSpacingId: IntComparators name: StrComparators sizeX: IntComparators sizeY: IntComparators @@ -548,6 +570,7 @@ input TomogramWhereClause { input TomogramAuthorWhereClause { tomogram: TomogramWhereClause + tomogramId: IntComparators id: IntComparators authorListOrder: IntComparators orcid: StrComparators @@ -563,6 +586,7 @@ input TomogramAuthorWhereClause { input TomogramVoxelSpacingWhereClause { annotationFiles: AnnotationFileWhereClause run: RunWhereClause + runId: IntComparators tomograms: TomogramWhereClause voxelSpacing: FloatComparators s3Prefix: StrComparators @@ -627,6 +651,7 @@ enum tomogram_processing_enum { input DepositionTypeWhereClause { deposition: DepositionWhereClause + depositionId: IntComparators type: Deposition_types_enumEnumComparators id: IntComparators } @@ -666,6 +691,7 @@ scalar DateTime input DatasetFundingWhereClause { dataset: DatasetWhereClause + datasetId: IntComparators fundingAgencyName: StrComparators grantId: StrComparators id: IntComparators @@ -673,6 +699,7 @@ input DatasetFundingWhereClause { input DatasetAuthorWhereClause { dataset: DatasetWhereClause + datasetId: IntComparators id: IntComparators authorListOrder: IntComparators orcid: StrComparators @@ -710,6 +737,7 @@ enum sample_type_enum { input AnnotationAuthorWhereClause { annotation: AnnotationWhereClause + annotationId: IntComparators id: IntComparators authorListOrder: IntComparators orcid: StrComparators @@ -781,6 +809,7 @@ enum annotation_file_source_enum { input PerSectionAlignmentParametersWhereClause { alignment: AlignmentWhereClause + alignmentId: IntComparators zIndex: IntComparators xOffset: FloatComparators yOffset: FloatComparators diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Annotation.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Annotation.jinja2 index a7b87fcee..2e589be0c 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Annotation.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Annotation.jinja2 @@ -1,5 +1,16 @@ {% include 'Model.jinja2' %} + def download_metadata( + self, + dest_path: Optional[str] = None, + ): + """Download annotation metadata + + Args: + dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. + """ + download_https(self.https_metadata_path, dest_path) + def download( self, dest_path: Optional[str] = None, @@ -14,12 +25,13 @@ format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ download_metadata = False - for file in self.files: - if format and file.format != format: - continue - if shape and file.shape_type != shape: + for anno_shape in self.annotation_shapes: + if shape and anno_shape.shape_type != shape: continue - file.download(dest_path) - download_metadata = True + for file in anno_shape.annotation_files: + if format and file.format != format: + continue + file.download(dest_path) + download_metadata = True if download_metadata: - download_https(self.https_metadata_path, dest_path) + self.download_metadata(dest_path) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/TiltSeries.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/TiltSeries.jinja2 index b89f4af7e..b76c57d61 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/TiltSeries.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/TiltSeries.jinja2 @@ -42,5 +42,5 @@ Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. """ - url = self.https_mrc_bin1 + url = self.https_mrc_file download_https(url, dest_path) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Tomogram.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Tomogram.jinja2 index fed38eb10..81852e1a3 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Tomogram.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Tomogram.jinja2 @@ -15,7 +15,7 @@ Args: dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. """ - url = self.https_mrc_scale0 + url = self.https_mrc_file download_https(url, dest_path) def download_all_annotations( @@ -31,6 +31,16 @@ shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - vs = self.tomogram_voxel_spacing - for anno in vs.annotations: - anno.download(dest_path, format, shape) + filters = [AnnotationFile.tomogram_voxel_spacing_id == self.tomogram_voxel_spacing_id, AnnotationFile.alignment_id == self.alignment_id] + if shape: + filters.append(AnnotationFile.annotation_shape.shape_type == shape) + if format: + filters.append(AnnotationFile.format == format) + anno_files = AnnotationFile.find(self._client, filters) + downloaded_metadata = set([]) + for file in anno_files: + file.download(dest_path) + annotation_id = file.annotation_shape.annotation_id + if annotation_id not in downloaded_metadata: + downloaded_metadata.add(annotation_id) + file.annotation_shape.annotation.download_metadata(dest_path) diff --git a/client/python/cryoet_data_portal/tests/test_downloads.py b/client/python/cryoet_data_portal/tests/test_downloads.py index 1e97867c2..3170bab6e 100644 --- a/client/python/cryoet_data_portal/tests/test_downloads.py +++ b/client/python/cryoet_data_portal/tests/test_downloads.py @@ -24,7 +24,7 @@ def test_download_annotations(tmp_dir, client) -> None: annos = Annotation.find( client, [ - Annotation.tomogram_voxel_spacing.run.name == "RUN2", + Annotation.run.name == "RUN2", Annotation.object_name.ilike("%ribosome%"), ], ) @@ -41,7 +41,7 @@ def test_download_tomo_annotations_with_shape_filter(tmp_dir, client) -> None: tomo = Tomogram.find( client, [ - Tomogram.tomogram_voxel_spacing.run.name == "RUN1", + Tomogram.run.name == "RUN1", ], )[0] assert tomo @@ -55,9 +55,9 @@ def test_download_all_annotations_including_zarr(tmp_dir, client) -> None: anno = Annotation.find( client, [ - Annotation.tomogram_voxel_spacing.run.dataset_id == 20001, - Annotation.tomogram_voxel_spacing.run.name == "RUN1", - Annotation.object_name == "Mitochondria", + Annotation.run.dataset_id == 20001, + Annotation.run.name == "RUN1", + Annotation.object_name == "Test Annotation Object Name", ], )[0] assert anno @@ -82,8 +82,8 @@ def test_download_relative_path(tmp_dir, client) -> None: tomo = Tomogram.find( client, [ - Tomogram.tomogram_voxel_spacing.run.dataset_id == 20001, - Tomogram.tomogram_voxel_spacing.run.name == "RUN2", + Tomogram.run.dataset_id == 20001, + Tomogram.run.name == "RUN2", ], )[0] assert tomo @@ -104,8 +104,8 @@ def test_download_without_path(tmp_dir, client) -> None: tomo = Tomogram.find( client, [ - Tomogram.tomogram_voxel_spacing.run.dataset_id == 20001, - Tomogram.tomogram_voxel_spacing.run.name == "RUN2", + Tomogram.run.dataset_id == 20001, + Tomogram.run.name == "RUN2", ], )[0] assert tomo @@ -123,7 +123,7 @@ def test_download_default_dir(tmp_dir, client) -> None: os.chdir(tmp_dir) tomo = Tomogram.find( client, - [Tomogram.tomogram_voxel_spacing.run.name == "RUN2"], + [Tomogram.run.name == "RUN2"], )[0] assert tomo tomo.download_all_annotations(None, "ndjson") @@ -136,12 +136,10 @@ def test_tiltseries_downloaders(tmp_dir, client): assert ts ts.download_collection_metadata(tmp_dir) ts.download_angle_list(tmp_dir) - ts.download_alignment_file(tmp_dir) ts.download_omezarr(tmp_dir) ts.download_mrcfile(tmp_dir) files = os.listdir(tmp_dir) assert set(files) == { - "RUN1.xf", "RUN1.rawtlt", "RUN1.mdoc", "RUN1_bin1.mrc", @@ -193,8 +191,8 @@ def test_tomogram_download(tmp_dir, client): tomo = Tomogram.find( client, [ - Tomogram.tomogram_voxel_spacing.run.name == "RUN2", - Tomogram.tomogram_voxel_spacing.run.dataset_id == 20001, + Tomogram.run.name == "RUN2", + Tomogram.run.dataset_id == 20001, ], )[0] assert tomo diff --git a/client/python/cryoet_data_portal/tests/test_get_client.py b/client/python/cryoet_data_portal/tests/test_get_client.py index a1b054ef1..d4ac18573 100644 --- a/client/python/cryoet_data_portal/tests/test_get_client.py +++ b/client/python/cryoet_data_portal/tests/test_get_client.py @@ -63,6 +63,15 @@ def test_relationships_reverse(client) -> None: assert run.dataset +def test_correct_number_of_related_objects(client: Client): + annos = Annotation.find( + client, [Annotation.object_name == "Test Annotation Object Name"] + ) + + assert len(annos) == 1 + assert len(annos[0].annotation_shapes) == 2 + + def test_item_relationship_with_missing_id(client: Client): annos = Annotation.find( client, [Annotation.object_name == "Test Annotation Object Name"] From 8ad5563d955e3cfeecfe71e40de776312cd50104 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Tue, 1 Oct 2024 16:52:54 -0400 Subject: [PATCH 12/18] Start updating ci for apiv2 --- client/python/cryoet_data_portal/Makefile | 31 +- .../tests/test_infra/get_deployment.sh | 10 + .../tests/test_infra/hasura/README.md | 35 - .../hasura/metadata/actions.graphql | 0 .../test_infra/hasura/metadata/actions.yaml | 6 - .../hasura/metadata/allow_list.yaml | 1 - .../hasura/metadata/api_limits.yaml | 1 - .../hasura/metadata/backend_configs.yaml | 1 - .../hasura/metadata/cron_triggers.yaml | 1 - .../tables/public_annotation_authors.yaml | 30 - .../tables/public_annotation_files.yaml | 20 - .../tables/public_annotations.yaml | 65 - .../tables/public_dataset_authors.yaml | 29 - .../tables/public_dataset_funding.yaml | 22 - .../tables/public_datasets.yaml | 75 - .../tables/public_deposition_authors.yaml | 24 - .../tables/public_depositions.yaml | 66 - .../cryoetdataportal/tables/public_runs.yaml | 38 - .../tables/public_tiltseries.yaml | 65 - .../tables/public_tomogram_authors.yaml | 28 - .../tables/public_tomogram_type.yaml | 21 - .../public_tomogram_voxel_spacings.yaml | 38 - .../tables/public_tomograms.yaml | 69 - .../cryoetdataportal/tables/tables.yaml | 14 - .../hasura/metadata/databases/databases.yaml | 9 - .../graphql_schema_introspection.yaml | 1 - .../hasura/metadata/inherited_roles.yaml | 1 - .../hasura/metadata/metrics_config.yaml | 1 - .../test_infra/hasura/metadata/network.yaml | 1 - .../hasura/metadata/opentelemetry.yaml | 1 - .../hasura/metadata/query_collections.yaml | 1 - .../hasura/metadata/remote_schemas.yaml | 1 - .../hasura/metadata/rest_endpoints.yaml | 1 - .../test_infra/hasura/metadata/version.yaml | 1 - .../0000000000000_init/up.sql | 2488 ----------------- .../0000000000001_data/up.sql | 84 - .../tests/test_infra/seed_moto.sh | 9 +- 37 files changed, 41 insertions(+), 3248 deletions(-) create mode 100755 client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/README.md delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.graphql delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/allow_list.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/api_limits.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/backend_configs.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/cron_triggers.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_authors.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_files.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotations.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_authors.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_funding.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_datasets.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_deposition_authors.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_depositions.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_runs.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tiltseries.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_authors.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_type.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_voxel_spacings.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomograms.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/tables.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/databases.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/graphql_schema_introspection.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/inherited_roles.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/metrics_config.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/network.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/opentelemetry.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/query_collections.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/remote_schemas.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/rest_endpoints.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/version.yaml delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000000_init/up.sql delete mode 100644 client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000001_data/up.sql diff --git a/client/python/cryoet_data_portal/Makefile b/client/python/cryoet_data_portal/Makefile index ba2ac330d..10249d937 100644 --- a/client/python/cryoet_data_portal/Makefile +++ b/client/python/cryoet_data_portal/Makefile @@ -1,11 +1,32 @@ +SHELL := /bin/bash + +export BACKEND_DIR=/tmp/cryoet-data-portal-backend-test-infra +.PHONY: set-api-version +set-api-version: + if [ ! -e $(BACKEND_DIR) ]; then git clone git@github.com:chanzuckerberg/cryoet-data-portal-backend.git $(BACKEND_DIR); fi + export STAGING_SHA=$$(python3 tests/test_infra/get_deployment.sh staging); \ + if [ -z $STAGING_SHA ]; then \ + echo "Setting backend to SHA: $${STAGING_SHA}"; \ + cd $(BACKEND_DIR); \ + git fetch; \ + git reset --hard $$STAGING_SHA; \ + else \ + echo "Could not get staging SHA!"; \ + exit 1; \ + fi + cd $(BACKEND_DIR) && make apiv2-init + .PHONY: test-infra -test-infra: - # Use force-recreate to handle re-initializing the database schema and data - # rather than maintaining incremental migrations. - # See the test_infra/hasura/README.md for more details. - cd tests && docker compose up -d --wait --wait-timeout 300 --force-recreate +test-infra: set-api-version + cp tests/test_infra/seed_db.py $(BACKEND_DIR)/apiv2/scripts + cd $(BACKEND_DIR) && docker compose run graphql-api python3 scripts/seed_db.py cd ./tests/test_infra/; ./seed_moto.sh +.PHONY: clean +clean: + if [ -e $(BACKEND_DIR) ]; then cd $(BACKEND_DIR); make clean; fi + rm -rf $(BACKEND_DIR) + .PHONY: coverage coverage: export AWS_REGION=us-west-2; \ diff --git a/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh b/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh new file mode 100755 index 000000000..5f12f01b8 --- /dev/null +++ b/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh @@ -0,0 +1,10 @@ +if [ $1 == 'staging' ]; then + # If there's a release-please branch, this is the file that controls staging versions! + RELEASE_SHA=$(curl -s "https://raw.githubusercontent.com/chanzuckerberg/cryoet-data-portal-backend/refs/heads/release-please--branches--main--components--apiv2/.infra/staging/values.yaml" | grep ' tag:' | head -n 1 | awk '{ print $2; }' | cut -d '-' -f 2) +fi +if [ -n "$RELEASE_SHA" ]; then + echo $RELEASE_SHA +else + # If this isn't staging, or we don't have an active release-please branch, fetch the appropriate hash from the `main` branch. + curl -s "https://raw.githubusercontent.com/chanzuckerberg/cryoet-data-portal-backend/refs/heads/main/.infra/$1/values.yaml" | grep ' tag:' | head -n 1 | awk '{ print $2; }' | cut -d '-' -f 2 +fi diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/README.md b/client/python/cryoet_data_portal/tests/test_infra/hasura/README.md deleted file mode 100644 index f99deef13..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/README.md +++ /dev/null @@ -1,35 +0,0 @@ -The hasura metadata and migrations need to be manually kept in sync with the definitions in the backend repo. - -# Metadata - -This can simply be copied over with a command like the following - -```shell -cp -r ~/src/cryoet-data-portal-backend/api_server/metadata . -``` - -# Migrations - -There should only be one table (cryoetdataportal) with two migrations. - -## Initialization - -The first init migration is created by dumping the schema from the test infrastructure defined in the cryoet data portal backend repo. - -Assuming that the postgres container in that repo is running (e.g. after running `make init`), you can run - -``` -pg_dump --host=localhost --port=5432 --dbname=cryoet --username=postgres --schema=public --schema-only --no-owner --no-tablespaces -f migrations/cryoetdataportal/0000000000000_init/up.sql -``` - -to dump the commands necessary to define that schema. You may have to manually remove a few lines to make this work with the test infrastructure defined here (e.g. by removing `CREATE SCHEMA public`). - -## Data definition - -The second data migration is manually maintained. - -It contains the commands to define fake data used for testing. - -The values here only matter with respect to any tests against the client. - -When defining new fake values, be creative and ideally avoid real values (e.g. actual author names from the portal). diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.graphql b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.graphql deleted file mode 100644 index e69de29bb..000000000 diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.yaml deleted file mode 100644 index 1edb4c2ff..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/actions.yaml +++ /dev/null @@ -1,6 +0,0 @@ -actions: [] -custom_types: - enums: [] - input_objects: [] - objects: [] - scalars: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/allow_list.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/allow_list.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/allow_list.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/api_limits.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/api_limits.yaml deleted file mode 100644 index 0967ef424..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/api_limits.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/backend_configs.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/backend_configs.yaml deleted file mode 100644 index 0967ef424..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/backend_configs.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/cron_triggers.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/cron_triggers.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/cron_triggers.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_authors.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_authors.yaml deleted file mode 100644 index 24bedd0b7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_authors.yaml +++ /dev/null @@ -1,30 +0,0 @@ -table: - name: annotation_authors - schema: public -object_relationships: - - name: annotation - using: - foreign_key_constraint_on: annotation_id -select_permissions: - - role: anonymous - permission: - columns: - - affiliation_address - - affiliation_identifier - - affiliation_name - - annotation_id - - author_list_order - - corresponding_author_status - - email - - id - - name - - orcid - - primary_annotator_status - - primary_author_status - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_files.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_files.yaml deleted file mode 100644 index 40217f667..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotation_files.yaml +++ /dev/null @@ -1,20 +0,0 @@ -table: - name: annotation_files - schema: public -object_relationships: - - name: annotation - using: - foreign_key_constraint_on: annotation_id -select_permissions: - - role: anonymous - permission: - columns: - - annotation_id - - format - - https_path - - id - - is_visualization_default - - s3_path - - shape_type - filter: {} - allow_aggregations: true diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotations.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotations.yaml deleted file mode 100644 index 8911f441b..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_annotations.yaml +++ /dev/null @@ -1,65 +0,0 @@ -table: - name: annotations - schema: public -object_relationships: - - name: deposition - using: - manual_configuration: - column_mapping: - deposition_id: id - insertion_order: null - remote_table: - name: depositions - schema: public - - name: tomogram_voxel_spacing - using: - foreign_key_constraint_on: tomogram_voxel_spacing_id -array_relationships: - - name: authors - using: - foreign_key_constraint_on: - column: annotation_id - table: - name: annotation_authors - schema: public - - name: files - using: - foreign_key_constraint_on: - column: annotation_id - table: - name: annotation_files - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - annotation_method - - annotation_publication - - annotation_software - - confidence_precision - - confidence_recall - - deposition_date - - deposition_id - - ground_truth_status - - ground_truth_used - - https_metadata_path - - id - - is_curator_recommended - - last_modified_date - - method_links - - method_type - - object_count - - object_description - - object_id - - object_name - - object_state - - release_date - - s3_metadata_path - - tomogram_voxel_spacing_id - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_authors.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_authors.yaml deleted file mode 100644 index 387a32921..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_authors.yaml +++ /dev/null @@ -1,29 +0,0 @@ -table: - name: dataset_authors - schema: public -object_relationships: - - name: dataset - using: - foreign_key_constraint_on: dataset_id -select_permissions: - - role: anonymous - permission: - columns: - - affiliation_address - - affiliation_identifier - - affiliation_name - - author_list_order - - corresponding_author_status - - dataset_id - - email - - id - - name - - orcid - - primary_author_status - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_funding.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_funding.yaml deleted file mode 100644 index 9b156781a..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_dataset_funding.yaml +++ /dev/null @@ -1,22 +0,0 @@ -table: - name: dataset_funding - schema: public -object_relationships: - - name: dataset - using: - foreign_key_constraint_on: dataset_id -select_permissions: - - role: anonymous - permission: - columns: - - dataset_id - - id - - grant_id - - funding_agency_name - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_datasets.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_datasets.yaml deleted file mode 100644 index 4bc2f3ad0..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_datasets.yaml +++ /dev/null @@ -1,75 +0,0 @@ -table: - name: datasets - schema: public -object_relationships: - - name: deposition - using: - manual_configuration: - column_mapping: - deposition_id: id - insertion_order: null - remote_table: - name: depositions - schema: public -array_relationships: - - name: authors - using: - foreign_key_constraint_on: - column: dataset_id - table: - name: dataset_authors - schema: public - - name: funding_sources - using: - foreign_key_constraint_on: - column: dataset_id - table: - name: dataset_funding - schema: public - - name: runs - using: - foreign_key_constraint_on: - column: dataset_id - table: - name: runs - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - cell_component_id - - cell_component_name - - cell_name - - cell_strain_id - - cell_strain_name - - cell_type_id - - dataset_citations - - dataset_publications - - deposition_date - - deposition_id - - description - - grid_preparation - - https_prefix - - id - - key_photo_thumbnail_url - - key_photo_url - - last_modified_date - - organism_name - - organism_taxid - - other_setup - - related_database_entries - - related_database_links - - release_date - - s3_prefix - - sample_preparation - - sample_type - - tissue_id - - tissue_name - - title - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_deposition_authors.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_deposition_authors.yaml deleted file mode 100644 index 80696cca3..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_deposition_authors.yaml +++ /dev/null @@ -1,24 +0,0 @@ -table: - name: deposition_authors - schema: public -object_relationships: - - name: deposition - using: - foreign_key_constraint_on: deposition_id -select_permissions: - - role: anonymous - permission: - columns: - - affiliation_address - - affiliation_identifier - - orcid - - email - - name - - corresponding_author_status - - primary_author_status - - affiliation_name - - id - - deposition_id - - author_list_order - filter: {} - allow_aggregations: true diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_depositions.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_depositions.yaml deleted file mode 100644 index 74690e0ac..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_depositions.yaml +++ /dev/null @@ -1,66 +0,0 @@ -table: - name: depositions - schema: public -array_relationships: - - name: annotations - using: - manual_configuration: - column_mapping: - id: deposition_id - insertion_order: null - remote_table: - name: annotations - schema: public - - name: authors - using: - foreign_key_constraint_on: - column: deposition_id - table: - name: deposition_authors - schema: public - - name: dataset - using: - manual_configuration: - column_mapping: - id: deposition_id - insertion_order: null - remote_table: - name: datasets - schema: public - - name: tiltseries - using: - manual_configuration: - column_mapping: - id: deposition_id - insertion_order: null - remote_table: - name: tiltseries - schema: public - - name: tomograms - using: - manual_configuration: - column_mapping: - id: deposition_id - insertion_order: null - remote_table: - name: tomograms - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - deposition_date - - deposition_publications - - deposition_types - - description - - https_prefix - - id - - key_photo_thumbnail_url - - key_photo_url - - last_modified_date - - related_database_entries - - release_date - - s3_prefix - - title - filter: {} - allow_aggregations: true diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_runs.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_runs.yaml deleted file mode 100644 index fc13949cc..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_runs.yaml +++ /dev/null @@ -1,38 +0,0 @@ -table: - name: runs - schema: public -object_relationships: - - name: dataset - using: - foreign_key_constraint_on: dataset_id -array_relationships: - - name: tiltseries - using: - foreign_key_constraint_on: - column: run_id - table: - name: tiltseries - schema: public - - name: tomogram_voxel_spacings - using: - foreign_key_constraint_on: - column: run_id - table: - name: tomogram_voxel_spacings - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - id - - dataset_id - - name - - https_prefix - - s3_prefix - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tiltseries.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tiltseries.yaml deleted file mode 100644 index f8983f901..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tiltseries.yaml +++ /dev/null @@ -1,65 +0,0 @@ -table: - name: tiltseries - schema: public -object_relationships: - - name: deposition - using: - manual_configuration: - column_mapping: - deposition_id: id - insertion_order: null - remote_table: - name: depositions - schema: public - - name: run - using: - foreign_key_constraint_on: run_id -select_permissions: - - role: anonymous - permission: - columns: - - acceleration_voltage - - aligned_tiltseries_binning - - binning_from_frames - - camera_manufacturer - - camera_model - - data_acquisition_software - - deposition_id - - frames_count - - https_alignment_file - - https_angle_list - - https_collection_metadata - - https_mrc_bin1 - - https_omezarr_dir - - id - - is_aligned - - microscope_additional_info - - microscope_energy_filter - - microscope_image_corrector - - microscope_manufacturer - - microscope_model - - microscope_phase_plate - - pixel_spacing - - related_empiar_entry - - run_id - - s3_alignment_file - - s3_angle_list - - s3_collection_metadata - - s3_mrc_bin1 - - s3_omezarr_dir - - spherical_aberration_constant - - tilt_axis - - tilt_max - - tilt_min - - tilt_range - - tilt_series_quality - - tilt_step - - tilting_scheme - - total_flux - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_authors.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_authors.yaml deleted file mode 100644 index 1c20ae567..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_authors.yaml +++ /dev/null @@ -1,28 +0,0 @@ -table: - name: tomogram_authors - schema: public -object_relationships: - - name: tomogram - using: - foreign_key_constraint_on: tomogram_id -select_permissions: - - role: anonymous - permission: - columns: - - affiliation_address - - affiliation_identifier - - affiliation_name - - author_list_order - - corresponding_author_status - - email - - id - - name - - orcid - - primary_author_status - - tomogram_id - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_type.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_type.yaml deleted file mode 100644 index e0c3b0e19..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_type.yaml +++ /dev/null @@ -1,21 +0,0 @@ -table: - name: tomogram_type - schema: public -is_enum: true -array_relationships: - - name: tomograms - using: - manual_configuration: - column_mapping: - value: type - insertion_order: null - remote_table: - name: tomograms - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - value - - description - filter: {} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_voxel_spacings.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_voxel_spacings.yaml deleted file mode 100644 index b212d32d8..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomogram_voxel_spacings.yaml +++ /dev/null @@ -1,38 +0,0 @@ -table: - name: tomogram_voxel_spacings - schema: public -object_relationships: - - name: run - using: - foreign_key_constraint_on: run_id -array_relationships: - - name: annotations - using: - foreign_key_constraint_on: - column: tomogram_voxel_spacing_id - table: - name: annotations - schema: public - - name: tomograms - using: - foreign_key_constraint_on: - column: tomogram_voxel_spacing_id - table: - name: tomograms - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - https_prefix - - id - - run_id - - s3_prefix - - voxel_spacing - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomograms.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomograms.yaml deleted file mode 100644 index d71eff736..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/public_tomograms.yaml +++ /dev/null @@ -1,69 +0,0 @@ -table: - name: tomograms - schema: public -object_relationships: - - name: deposition - using: - manual_configuration: - column_mapping: - deposition_id: id - insertion_order: null - remote_table: - name: depositions - schema: public - - name: tomogram_type - using: - foreign_key_constraint_on: type - - name: tomogram_voxel_spacing - using: - foreign_key_constraint_on: tomogram_voxel_spacing_id -array_relationships: - - name: authors - using: - foreign_key_constraint_on: - column: tomogram_id - table: - name: tomogram_authors - schema: public -select_permissions: - - role: anonymous - permission: - columns: - - affine_transformation_matrix - - ctf_corrected - - deposition_id - - fiducial_alignment_status - - https_mrc_scale0 - - https_omezarr_dir - - id - - is_canonical - - key_photo_thumbnail_url - - key_photo_url - - name - - neuroglancer_config - - offset_x - - offset_y - - offset_z - - processing - - processing_software - - reconstruction_method - - reconstruction_software - - s3_mrc_scale0 - - s3_omezarr_dir - - scale0_dimensions - - scale1_dimensions - - scale2_dimensions - - size_x - - size_y - - size_z - - tomogram_version - - tomogram_voxel_spacing_id - - type - - voxel_spacing - filter: {} - allow_aggregations: true - query_root_fields: - - select_aggregate - - select - - select_by_pk - subscription_root_fields: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/tables.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/tables.yaml deleted file mode 100644 index 7ce06caaf..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/cryoetdataportal/tables/tables.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- "!include public_annotation_authors.yaml" -- "!include public_annotation_files.yaml" -- "!include public_annotations.yaml" -- "!include public_dataset_authors.yaml" -- "!include public_dataset_funding.yaml" -- "!include public_datasets.yaml" -- "!include public_deposition_authors.yaml" -- "!include public_depositions.yaml" -- "!include public_runs.yaml" -- "!include public_tiltseries.yaml" -- "!include public_tomogram_authors.yaml" -- "!include public_tomogram_type.yaml" -- "!include public_tomogram_voxel_spacings.yaml" -- "!include public_tomograms.yaml" diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/databases.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/databases.yaml deleted file mode 100644 index 51d514f27..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/databases/databases.yaml +++ /dev/null @@ -1,9 +0,0 @@ -- name: cryoetdataportal - kind: postgres - configuration: - connection_info: - database_url: - from_env: HASURA_GRAPHQL_DATABASE_URL - isolation_level: read-committed - use_prepared_statements: false - tables: "!include cryoetdataportal/tables/tables.yaml" diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/graphql_schema_introspection.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/graphql_schema_introspection.yaml deleted file mode 100644 index 61a4dcac2..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/graphql_schema_introspection.yaml +++ /dev/null @@ -1 +0,0 @@ -disabled_for_roles: [] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/inherited_roles.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/inherited_roles.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/inherited_roles.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/metrics_config.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/metrics_config.yaml deleted file mode 100644 index 0967ef424..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/metrics_config.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/network.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/network.yaml deleted file mode 100644 index 0967ef424..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/network.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/opentelemetry.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/opentelemetry.yaml deleted file mode 100644 index 0967ef424..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/opentelemetry.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/query_collections.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/query_collections.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/query_collections.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/remote_schemas.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/remote_schemas.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/remote_schemas.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/rest_endpoints.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/rest_endpoints.yaml deleted file mode 100644 index fe51488c7..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/rest_endpoints.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/version.yaml b/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/version.yaml deleted file mode 100644 index 0a70affa4..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/metadata/version.yaml +++ /dev/null @@ -1 +0,0 @@ -version: 3 diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000000_init/up.sql b/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000000_init/up.sql deleted file mode 100644 index 54592f17d..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000000_init/up.sql +++ /dev/null @@ -1,2488 +0,0 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 14.2 (Debian 14.2-1.pgdg110+1) --- Dumped by pg_dump version 14.13 (Homebrew) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: annotation_authors; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.annotation_authors ( - id integer NOT NULL, - annotation_id integer NOT NULL, - name character varying NOT NULL, - orcid character varying, - corresponding_author_status boolean, - primary_annotator_status boolean, - email character varying, - affiliation_name character varying, - affiliation_address character varying, - affiliation_identifier character varying, - author_list_order integer, - primary_author_status boolean -); - - --- --- Name: TABLE annotation_authors; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.annotation_authors IS 'Metadata for an annotation''s authors'; - - --- --- Name: COLUMN annotation_authors.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.id IS 'Numeric identifier for this annotation author (this may change!)'; - - --- --- Name: COLUMN annotation_authors.annotation_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.annotation_id IS 'Reference to the annotation this author contributed to'; - - --- --- Name: COLUMN annotation_authors.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.name IS 'Full name of an annotation author (e.g. Jane Doe).'; - - --- --- Name: COLUMN annotation_authors.orcid; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.orcid IS 'A unique, persistent identifier for researchers, provided by ORCID.'; - - --- --- Name: COLUMN annotation_authors.corresponding_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.corresponding_author_status IS 'Indicating whether an annotator is the corresponding author (YES or NO)'; - - --- --- Name: COLUMN annotation_authors.primary_annotator_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.primary_annotator_status IS 'Indicating whether an annotator is the main person executing the annotation, especially on manual annotation (YES or NO)'; - - --- --- Name: COLUMN annotation_authors.email; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.email IS 'Email address for this author'; - - --- --- Name: COLUMN annotation_authors.affiliation_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.affiliation_name IS 'Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations.'; - - --- --- Name: COLUMN annotation_authors.affiliation_address; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.affiliation_address IS 'Address of the institution an annotator is affiliated with.'; - - --- --- Name: COLUMN annotation_authors.affiliation_identifier; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.affiliation_identifier IS 'A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR).'; - - --- --- Name: COLUMN annotation_authors.author_list_order; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.author_list_order IS 'The order in which the author appears in the publication'; - - --- --- Name: COLUMN annotation_authors.primary_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_authors.primary_author_status IS 'Indicating whether an author is the main person executing the annotation, especially on manual annotation (YES or NO)'; - - --- --- Name: annotation_authors_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.annotation_authors_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: annotation_authors_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.annotation_authors_id_seq OWNED BY public.annotation_authors.id; - - --- --- Name: annotation_files; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.annotation_files ( - id integer NOT NULL, - annotation_id integer NOT NULL, - shape_type character varying NOT NULL, - format character varying NOT NULL, - https_path character varying NOT NULL, - s3_path character varying NOT NULL, - is_visualization_default boolean DEFAULT false -); - - --- --- Name: TABLE annotation_files; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.annotation_files IS 'Metadata for an annotation file'; - - --- --- Name: COLUMN annotation_files.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.id IS 'Numeric identifier (May change!)'; - - --- --- Name: COLUMN annotation_files.annotation_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.annotation_id IS 'The ID of the annotation this file applies to'; - - --- --- Name: COLUMN annotation_files.shape_type; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.shape_type IS 'The type of the annotation'; - - --- --- Name: COLUMN annotation_files.format; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.format IS 'File format for this file'; - - --- --- Name: COLUMN annotation_files.https_path; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.https_path IS 'HTTPS path for this annotation file'; - - --- --- Name: COLUMN annotation_files.s3_path; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.s3_path IS 's3 path of the annotation file'; - - --- --- Name: COLUMN annotation_files.is_visualization_default; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotation_files.is_visualization_default IS 'Data curator’s subjective choice of default annotation to display in visualization for an object'; - - --- --- Name: annotation_files_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.annotation_files_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: annotation_files_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.annotation_files_id_seq OWNED BY public.annotation_files.id; - - --- --- Name: annotations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.annotations ( - id integer NOT NULL, - s3_metadata_path character varying NOT NULL, - https_metadata_path character varying NOT NULL, - deposition_date date NOT NULL, - release_date date NOT NULL, - last_modified_date date, - annotation_publication character varying, - annotation_method character varying NOT NULL, - ground_truth_status boolean NOT NULL, - object_name character varying NOT NULL, - object_id character varying NOT NULL, - object_description character varying, - object_state character varying, - object_count integer NOT NULL, - confidence_precision numeric, - confidence_recall numeric, - ground_truth_used character varying, - tomogram_voxel_spacing_id integer, - annotation_software character varying, - is_curator_recommended boolean DEFAULT false, - method_type character varying, - deposition_id integer, - method_links json -); - - --- --- Name: TABLE annotations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.annotations IS 'Metadata for an annotation'; - - --- --- Name: COLUMN annotations.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.id IS 'Numeric identifier (May change!)'; - - --- --- Name: COLUMN annotations.s3_metadata_path; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.s3_metadata_path IS 'S3 path for the metadata json file for this annotation'; - - --- --- Name: COLUMN annotations.https_metadata_path; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.https_metadata_path IS 'HTTPS path for the metadata json file for this annotation'; - - --- --- Name: COLUMN annotations.deposition_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.deposition_date IS 'Date when an annotation set is initially received by the Data Portal.'; - - --- --- Name: COLUMN annotations.release_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.release_date IS 'Date when annotation data is made public by the Data Portal.'; - - --- --- Name: COLUMN annotations.last_modified_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.last_modified_date IS 'Date when an annotation was last modified in the Data Portal'; - - --- --- Name: COLUMN annotations.annotation_publication; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.annotation_publication IS 'DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs.'; - - --- --- Name: COLUMN annotations.annotation_method; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.annotation_method IS 'Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching)'; - - --- --- Name: COLUMN annotations.ground_truth_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.ground_truth_status IS 'Whether an annotation is considered ground truth, as determined by the annotator.'; - - --- --- Name: COLUMN annotations.object_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.object_name IS 'Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane)'; - - --- --- Name: COLUMN annotations.object_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.object_id IS 'Gene Ontology Cellular Component identifier for the annotation object'; - - --- --- Name: COLUMN annotations.object_description; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.object_description IS 'A textual description of the annotation object, can be a longer description to include additional information not covered by the Annotation object name and state.'; - - --- --- Name: COLUMN annotations.object_state; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.object_state IS 'Molecule state annotated (e.g. open, closed)'; - - --- --- Name: COLUMN annotations.object_count; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.object_count IS 'Number of objects identified'; - - --- --- Name: COLUMN annotations.confidence_precision; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.confidence_precision IS 'Describe the confidence level of the annotation. Precision is defined as the % of annotation objects being true positive'; - - --- --- Name: COLUMN annotations.confidence_recall; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.confidence_recall IS 'Describe the confidence level of the annotation. Recall is defined as the % of true positives being annotated correctly'; - - --- --- Name: COLUMN annotations.ground_truth_used; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.ground_truth_used IS 'Annotation filename used as ground truth for precision and recall'; - - --- --- Name: COLUMN annotations.tomogram_voxel_spacing_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.tomogram_voxel_spacing_id IS 'The ID of the tomogram voxel spacing this annotation is part of'; - - --- --- Name: COLUMN annotations.annotation_software; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.annotation_software IS 'Software used for generating this annotation'; - - --- --- Name: COLUMN annotations.is_curator_recommended; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.is_curator_recommended IS 'Data curator’s subjective choice as the best annotation of the same annotation object ID'; - - --- --- Name: COLUMN annotations.method_type; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.method_type IS 'The method type for generating the annotation (e.g. manual, hybrid, automated)'; - - --- --- Name: COLUMN annotations.deposition_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.deposition_id IS 'If the annotation is part of a deposition, the related deposition''s id'; - - --- --- Name: COLUMN annotations.method_links; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.annotations.method_links IS 'Provides links that generates information on the method used for generating annotation'; - - --- --- Name: annotations_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.annotations_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: annotations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.annotations_id_seq OWNED BY public.annotations.id; - - --- --- Name: dataset_authors; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.dataset_authors ( - id integer NOT NULL, - name character varying NOT NULL, - orcid character varying, - corresponding_author_status boolean, - email character varying, - affiliation_name character varying, - affiliation_address character varying, - affiliation_identifier character varying, - dataset_id integer NOT NULL, - primary_author_status boolean, - author_list_order integer -); - - --- --- Name: TABLE dataset_authors; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.dataset_authors IS 'Metadata for authors of a dataset'; - - --- --- Name: COLUMN dataset_authors.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.id IS 'A numeric identifier for this author (May change!)'; - - --- --- Name: COLUMN dataset_authors.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.name IS 'Full name of a dataset author (e.g. Jane Doe).'; - - --- --- Name: COLUMN dataset_authors.orcid; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.orcid IS 'A unique, persistent identifier for researchers, provided by ORCID.'; - - --- --- Name: COLUMN dataset_authors.corresponding_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.corresponding_author_status IS 'Indicating whether an author is the corresponding author'; - - --- --- Name: COLUMN dataset_authors.email; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.email IS 'Email address for each author'; - - --- --- Name: COLUMN dataset_authors.affiliation_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.affiliation_name IS 'Name of the institutions an author is affiliated with. Comma separated'; - - --- --- Name: COLUMN dataset_authors.affiliation_address; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.affiliation_address IS 'Address of the institution an author is affiliated with.'; - - --- --- Name: COLUMN dataset_authors.affiliation_identifier; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.affiliation_identifier IS 'A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR).'; - - --- --- Name: COLUMN dataset_authors.dataset_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.dataset_id IS 'Numeric identifier for the dataset this author corresponds to'; - - --- --- Name: COLUMN dataset_authors.primary_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.primary_author_status IS 'Indicating whether an author is the main person associated with the corresponding dataset'; - - --- --- Name: COLUMN dataset_authors.author_list_order; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_authors.author_list_order IS 'The order in which the author appears in the publication'; - - --- --- Name: dataset_authors_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.dataset_authors_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: dataset_authors_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.dataset_authors_id_seq OWNED BY public.dataset_authors.id; - - --- --- Name: dataset_funding; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.dataset_funding ( - id integer NOT NULL, - dataset_id integer NOT NULL, - funding_agency_name character varying NOT NULL, - grant_id character varying -); - - --- --- Name: TABLE dataset_funding; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.dataset_funding IS 'Metadata for a dataset''s funding sources'; - - --- --- Name: COLUMN dataset_funding.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_funding.id IS 'A numeric identifier for this funding record (May change!)'; - - --- --- Name: COLUMN dataset_funding.dataset_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_funding.dataset_id IS 'Numeric identifier for the dataset this funding source corresponds to'; - - --- --- Name: COLUMN dataset_funding.funding_agency_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_funding.funding_agency_name IS 'Name of the funding agency.'; - - --- --- Name: COLUMN dataset_funding.grant_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.dataset_funding.grant_id IS 'Grant identifier provided by the funding agency.'; - - --- --- Name: dataset_funding_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.dataset_funding_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: dataset_funding_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.dataset_funding_id_seq OWNED BY public.dataset_funding.id; - - --- --- Name: datasets; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.datasets ( - id integer NOT NULL, - title character varying NOT NULL, - description character varying NOT NULL, - deposition_date date NOT NULL, - release_date date NOT NULL, - last_modified_date date, - related_database_entries character varying, - related_database_links character varying, - dataset_publications character varying, - dataset_citations character varying, - sample_type character varying NOT NULL, - organism_name character varying, - organism_taxid character varying, - tissue_name character varying, - tissue_id character varying, - cell_name character varying, - cell_type_id character varying, - cell_strain_name character varying, - cell_strain_id character varying, - sample_preparation character varying, - grid_preparation character varying, - other_setup character varying, - s3_prefix character varying NOT NULL, - https_prefix character varying NOT NULL, - key_photo_url character varying, - key_photo_thumbnail_url character varying, - cell_component_name character varying, - cell_component_id character varying, - deposition_id integer -); - - --- --- Name: TABLE datasets; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.datasets IS 'Metadata for a dataset'; - - --- --- Name: COLUMN datasets.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.id IS 'An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree'; - - --- --- Name: COLUMN datasets.title; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.title IS 'Title of a CryoET dataset'; - - --- --- Name: COLUMN datasets.description; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.description IS 'A short description of a CryoET dataset, similar to an abstract for a journal article or dataset.'; - - --- --- Name: COLUMN datasets.deposition_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.deposition_date IS 'Date when a dataset is initially received by the Data Portal.'; - - --- --- Name: COLUMN datasets.release_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.release_date IS 'Date when a dataset is made available on the Data Portal.'; - - --- --- Name: COLUMN datasets.last_modified_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.last_modified_date IS 'Date when a released dataset is last modified.'; - - --- --- Name: COLUMN datasets.related_database_entries; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.related_database_entries IS 'If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers.'; - - --- --- Name: COLUMN datasets.related_database_links; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.related_database_links IS 'If a CryoET dataset is also deposited into another database, e.g. EMPIAR, enter the database identifier here (e.g.https://www.ebi.ac.uk/empiar/EMPIAR-12345/). Use a comma to separate multiple links.'; - - --- --- Name: COLUMN datasets.dataset_publications; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.dataset_publications IS 'DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs.'; - - --- --- Name: COLUMN datasets.dataset_citations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.dataset_citations IS 'DOIs for publications that cite the dataset. Use a comma to separate multiple DOIs.'; - - --- --- Name: COLUMN datasets.sample_type; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.sample_type IS 'Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other)'; - - --- --- Name: COLUMN datasets.organism_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.organism_name IS 'Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens'; - - --- --- Name: COLUMN datasets.organism_taxid; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.organism_taxid IS 'NCBI taxonomy identifier for the organism, e.g. 9606'; - - --- --- Name: COLUMN datasets.tissue_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.tissue_name IS 'Name of the tissue from which a biological sample used in a CryoET study is derived from.'; - - --- --- Name: COLUMN datasets.tissue_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.tissue_id IS 'UBERON identifier for the tissue'; - - --- --- Name: COLUMN datasets.cell_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_name IS 'Name of the cell from which a biological sample used in a CryoET study is derived from.'; - - --- --- Name: COLUMN datasets.cell_type_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_type_id IS 'Cell Ontology identifier for the cell type'; - - --- --- Name: COLUMN datasets.cell_strain_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_strain_name IS 'Cell line or strain for the sample.'; - - --- --- Name: COLUMN datasets.cell_strain_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_strain_id IS 'Link to more information about the cell strain'; - - --- --- Name: COLUMN datasets.sample_preparation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.sample_preparation IS 'Describe how the sample was prepared.'; - - --- --- Name: COLUMN datasets.grid_preparation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.grid_preparation IS 'Describe Cryo-ET grid preparation.'; - - --- --- Name: COLUMN datasets.other_setup; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.other_setup IS 'Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication'; - - --- --- Name: COLUMN datasets.s3_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.s3_prefix IS 'The S3 public bucket path where this dataset is contained'; - - --- --- Name: COLUMN datasets.https_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.https_prefix IS 'The https directory path where this dataset is contained'; - - --- --- Name: COLUMN datasets.key_photo_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.key_photo_url IS 'URL for the dataset preview image.'; - - --- --- Name: COLUMN datasets.key_photo_thumbnail_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.key_photo_thumbnail_url IS 'URL for the thumbnail of preview image.'; - - --- --- Name: COLUMN datasets.cell_component_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_component_name IS 'Name of the cellular component'; - - --- --- Name: COLUMN datasets.cell_component_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.cell_component_id IS 'If the dataset focuses on a specific part of a cell, the subset is included here'; - - --- --- Name: COLUMN datasets.deposition_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.datasets.deposition_id IS 'Reference to the deposition this dataset is associated with'; - - --- --- Name: deposition_authors; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deposition_authors ( - id integer NOT NULL, - name character varying NOT NULL, - orcid character varying, - corresponding_author_status boolean DEFAULT false, - email character varying, - affiliation_name character varying, - affiliation_address character varying, - affiliation_identifier character varying, - deposition_id integer NOT NULL, - primary_author_status boolean DEFAULT false, - author_list_order integer NOT NULL -); - - --- --- Name: TABLE deposition_authors; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.deposition_authors IS 'Authors for a deposition'; - - --- --- Name: COLUMN deposition_authors.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.id IS 'Numeric identifier for this deposition author (this may change!)'; - - --- --- Name: COLUMN deposition_authors.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.name IS 'Full name of a deposition author (e.g. Jane Doe).'; - - --- --- Name: COLUMN deposition_authors.orcid; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.orcid IS 'A unique, persistent identifier for researchers, provided by ORCID.'; - - --- --- Name: COLUMN deposition_authors.corresponding_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.corresponding_author_status IS 'Indicates whether an author is the corresponding author'; - - --- --- Name: COLUMN deposition_authors.email; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.email IS 'Email address for this author'; - - --- --- Name: COLUMN deposition_authors.affiliation_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.affiliation_name IS 'Name of the institution an author is affiliated with.'; - - --- --- Name: COLUMN deposition_authors.affiliation_address; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.affiliation_address IS 'Address of the institution an author is affiliated with.'; - - --- --- Name: COLUMN deposition_authors.affiliation_identifier; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.affiliation_identifier IS 'A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR).'; - - --- --- Name: COLUMN deposition_authors.deposition_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.deposition_id IS 'Reference to the deposition this author contributed to'; - - --- --- Name: COLUMN deposition_authors.primary_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.primary_author_status IS 'Indicates whether an author is the main person creating the deposition'; - - --- --- Name: COLUMN deposition_authors.author_list_order; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposition_authors.author_list_order IS 'The order in which the author appears in the publication'; - - --- --- Name: deposition_authors_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deposition_authors_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deposition_authors_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deposition_authors_id_seq OWNED BY public.deposition_authors.id; - - --- --- Name: depositions; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.depositions ( - id integer NOT NULL, - title character varying NOT NULL, - description character varying NOT NULL, - deposition_date date NOT NULL, - release_date date NOT NULL, - last_modified_date date NOT NULL, - related_database_entries character varying, - deposition_publications character varying, - deposition_types character varying NOT NULL, - s3_prefix character varying, - https_prefix character varying, - key_photo_url character varying, - key_photo_thumbnail_url character varying -); - - --- --- Name: TABLE depositions; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.depositions IS 'Deposition metadata'; - - --- --- Name: COLUMN depositions.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.id IS 'Numeric identifier for this depositions'; - - --- --- Name: COLUMN depositions.title; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.title IS 'Title for the deposition'; - - --- --- Name: COLUMN depositions.description; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.description IS 'Description for the deposition'; - - --- --- Name: COLUMN depositions.deposition_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.deposition_date IS 'The date the deposition was deposited'; - - --- --- Name: COLUMN depositions.release_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.release_date IS 'The date the deposition was released'; - - --- --- Name: COLUMN depositions.last_modified_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.last_modified_date IS 'The date the deposition was last modified'; - - --- --- Name: COLUMN depositions.related_database_entries; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.related_database_entries IS 'The related database entries to this deposition'; - - --- --- Name: COLUMN depositions.deposition_publications; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.deposition_publications IS 'The publications related to this deposition'; - - --- --- Name: COLUMN depositions.deposition_types; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.deposition_types IS 'The types of data submitted as a part of this deposition'; - - --- --- Name: COLUMN depositions.s3_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.s3_prefix IS 'The S3 public bucket path where data about this deposition is contained'; - - --- --- Name: COLUMN depositions.https_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.https_prefix IS 'The https directory path where data about this deposition is contained'; - - --- --- Name: COLUMN depositions.key_photo_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.key_photo_url IS 'URL for the deposition preview image.'; - - --- --- Name: COLUMN depositions.key_photo_thumbnail_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.depositions.key_photo_thumbnail_url IS 'URL for the deposition thumbnail image.'; - - --- --- Name: depositions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.depositions_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: depositions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.depositions_id_seq OWNED BY public.depositions.id; - - --- --- Name: runs; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.runs ( - id integer NOT NULL, - dataset_id integer NOT NULL, - name character varying NOT NULL, - s3_prefix character varying NOT NULL, - https_prefix character varying NOT NULL -); - - --- --- Name: TABLE runs; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.runs IS 'Metadata for an experiment run'; - - --- --- Name: COLUMN runs.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.runs.id IS 'Numeric identifier (May change!)'; - - --- --- Name: COLUMN runs.dataset_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.runs.dataset_id IS 'Reference to the dataset this run is a part of'; - - --- --- Name: COLUMN runs.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.runs.name IS 'Short name for this experiment run'; - - --- --- Name: COLUMN runs.s3_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.runs.s3_prefix IS 'The S3 public bucket path where this dataset is contained'; - - --- --- Name: COLUMN runs.https_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.runs.https_prefix IS 'The HTTPS directory path where this dataset is contained'; - - --- --- Name: runs_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.runs_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: runs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.runs_id_seq OWNED BY public.runs.id; - - --- --- Name: tiltseries; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tiltseries ( - id integer NOT NULL, - run_id integer NOT NULL, - s3_mrc_bin1 character varying NOT NULL, - s3_omezarr_dir character varying NOT NULL, - https_mrc_bin1 character varying NOT NULL, - https_omezarr_dir character varying NOT NULL, - s3_collection_metadata character varying, - https_collection_metadata character varying, - s3_angle_list character varying, - https_angle_list character varying, - s3_alignment_file character varying, - https_alignment_file character varying, - acceleration_voltage integer NOT NULL, - spherical_aberration_constant numeric NOT NULL, - microscope_manufacturer character varying NOT NULL, - microscope_model character varying NOT NULL, - microscope_energy_filter character varying NOT NULL, - microscope_phase_plate character varying, - microscope_image_corrector character varying, - microscope_additional_info character varying, - camera_manufacturer character varying NOT NULL, - camera_model character varying NOT NULL, - tilt_min numeric NOT NULL, - tilt_max numeric NOT NULL, - tilt_range numeric NOT NULL, - tilt_step numeric NOT NULL, - tilting_scheme character varying NOT NULL, - tilt_axis numeric NOT NULL, - total_flux numeric NOT NULL, - data_acquisition_software character varying NOT NULL, - related_empiar_entry character varying, - binning_from_frames numeric, - tilt_series_quality integer NOT NULL, - is_aligned boolean DEFAULT false NOT NULL, - pixel_spacing numeric, - aligned_tiltseries_binning integer, - frames_count integer DEFAULT 0, - deposition_id integer -); - - --- --- Name: TABLE tiltseries; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.tiltseries IS 'Metadata about how a tilt series was generated, and locations of output files'; - - --- --- Name: COLUMN tiltseries.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.id IS 'Numeric identifier for this tilt series (this may change!)'; - - --- --- Name: COLUMN tiltseries.run_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.run_id IS 'The ID of the experimental run this tilt series is part of'; - - --- --- Name: COLUMN tiltseries.s3_mrc_bin1; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.s3_mrc_bin1 IS 'S3 path to this tiltseries in MRC format (no scaling)'; - - --- --- Name: COLUMN tiltseries.s3_omezarr_dir; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.s3_omezarr_dir IS 'S3 path to this tomogram in multiscale OME-Zarr format'; - - --- --- Name: COLUMN tiltseries.https_mrc_bin1; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.https_mrc_bin1 IS 'HTTPS path to this tiltseries in MRC format (no scaling)'; - - --- --- Name: COLUMN tiltseries.https_omezarr_dir; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.https_omezarr_dir IS 'HTTPS path to this tomogram in multiscale OME-Zarr format'; - - --- --- Name: COLUMN tiltseries.s3_collection_metadata; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.s3_collection_metadata IS 'S3 path to the collection metadata file for this tiltseries'; - - --- --- Name: COLUMN tiltseries.https_collection_metadata; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.https_collection_metadata IS 'HTTPS path to the collection metadata file for this tiltseries'; - - --- --- Name: COLUMN tiltseries.s3_angle_list; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.s3_angle_list IS 'S3 path to the angle list file for this tilt series'; - - --- --- Name: COLUMN tiltseries.https_angle_list; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.https_angle_list IS 'HTTPS path to the angle list file for this tiltseries'; - - --- --- Name: COLUMN tiltseries.s3_alignment_file; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.s3_alignment_file IS 'S3 path to the alignment file for this tilt series'; - - --- --- Name: COLUMN tiltseries.https_alignment_file; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.https_alignment_file IS 'HTTPS path to the alignment file for this tiltseries'; - - --- --- Name: COLUMN tiltseries.acceleration_voltage; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.acceleration_voltage IS 'Electron Microscope Accelerator voltage in volts'; - - --- --- Name: COLUMN tiltseries.spherical_aberration_constant; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.spherical_aberration_constant IS 'Spherical Aberration Constant of the objective lens in millimeters'; - - --- --- Name: COLUMN tiltseries.microscope_manufacturer; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_manufacturer IS 'Name of the microscope manufacturer'; - - --- --- Name: COLUMN tiltseries.microscope_model; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_model IS 'Microscope model name'; - - --- --- Name: COLUMN tiltseries.microscope_energy_filter; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_energy_filter IS 'Energy filter setup used'; - - --- --- Name: COLUMN tiltseries.microscope_phase_plate; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_phase_plate IS 'Phase plate configuration'; - - --- --- Name: COLUMN tiltseries.microscope_image_corrector; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_image_corrector IS 'Image corrector setup'; - - --- --- Name: COLUMN tiltseries.microscope_additional_info; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.microscope_additional_info IS 'Other microscope optical setup information, in addition to energy filter, phase plate and image corrector'; - - --- --- Name: COLUMN tiltseries.camera_manufacturer; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.camera_manufacturer IS 'Name of the camera manufacturer'; - - --- --- Name: COLUMN tiltseries.camera_model; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.camera_model IS 'Camera model name'; - - --- --- Name: COLUMN tiltseries.tilt_min; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_min IS 'Minimal tilt angle in degrees'; - - --- --- Name: COLUMN tiltseries.tilt_max; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_max IS 'Maximal tilt angle in degrees'; - - --- --- Name: COLUMN tiltseries.tilt_range; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_range IS 'Total tilt range in degrees'; - - --- --- Name: COLUMN tiltseries.tilt_step; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_step IS 'Tilt step in degrees'; - - --- --- Name: COLUMN tiltseries.tilting_scheme; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilting_scheme IS 'The order of stage tilting during acquisition of the data'; - - --- --- Name: COLUMN tiltseries.tilt_axis; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_axis IS 'Rotation angle in degrees'; - - --- --- Name: COLUMN tiltseries.total_flux; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.total_flux IS 'Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series'; - - --- --- Name: COLUMN tiltseries.data_acquisition_software; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.data_acquisition_software IS 'Software used to collect data'; - - --- --- Name: COLUMN tiltseries.related_empiar_entry; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.related_empiar_entry IS 'If a tilt series is deposited into EMPIAR, the EMPIAR dataset identifier'; - - --- --- Name: COLUMN tiltseries.binning_from_frames; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.binning_from_frames IS 'Describes the binning factor from frames to tilt series file'; - - --- --- Name: COLUMN tiltseries.tilt_series_quality; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.tilt_series_quality IS 'Author assessment of tilt series quality within the dataset (1-5, 5 is best)'; - - --- --- Name: COLUMN tiltseries.is_aligned; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.is_aligned IS 'Tilt series is aligned'; - - --- --- Name: COLUMN tiltseries.pixel_spacing; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.pixel_spacing IS 'Pixel spacing equal in both axes in angstroms'; - - --- --- Name: COLUMN tiltseries.aligned_tiltseries_binning; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.aligned_tiltseries_binning IS 'Binning factor of the aligned tilt series'; - - --- --- Name: COLUMN tiltseries.frames_count; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.frames_count IS 'Number of frames associated to the tilt series'; - - --- --- Name: COLUMN tiltseries.deposition_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tiltseries.deposition_id IS 'Reference to the deposition this tiltseries is associated with'; - - --- --- Name: tiltseries_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.tiltseries_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: tiltseries_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.tiltseries_id_seq OWNED BY public.tiltseries.id; - - --- --- Name: tomogram_authors; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tomogram_authors ( - id integer NOT NULL, - tomogram_id integer NOT NULL, - author_list_order integer NOT NULL, - name character varying NOT NULL, - orcid character varying, - corresponding_author_status boolean, - primary_author_status boolean, - email character varying, - affiliation_name character varying, - affiliation_address character varying, - affiliation_identifier character varying -); - - --- --- Name: TABLE tomogram_authors; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.tomogram_authors IS 'Metadata for a tomogram''s authors'; - - --- --- Name: COLUMN tomogram_authors.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.id IS 'Numeric identifier for this tomogram author (this may change!)'; - - --- --- Name: COLUMN tomogram_authors.tomogram_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.tomogram_id IS 'Reference to the tomogram this author contributed to'; - - --- --- Name: COLUMN tomogram_authors.author_list_order; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.author_list_order IS 'The order in which the author appears in the publication'; - - --- --- Name: COLUMN tomogram_authors.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.name IS 'Full name of an author (e.g. Jane Doe).'; - - --- --- Name: COLUMN tomogram_authors.orcid; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.orcid IS 'A unique, persistent identifier for researchers, provided by ORCID.'; - - --- --- Name: COLUMN tomogram_authors.corresponding_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.corresponding_author_status IS 'Indicating whether an author is the corresponding author (YES or NO)'; - - --- --- Name: COLUMN tomogram_authors.primary_author_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.primary_author_status IS 'Indicating whether an author is the main person creating the tomogram (YES or NO)'; - - --- --- Name: COLUMN tomogram_authors.email; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.email IS 'Email address for this author'; - - --- --- Name: COLUMN tomogram_authors.affiliation_name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.affiliation_name IS 'Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations.'; - - --- --- Name: COLUMN tomogram_authors.affiliation_address; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.affiliation_address IS 'Address of the institution an author is affiliated with.'; - - --- --- Name: COLUMN tomogram_authors.affiliation_identifier; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_authors.affiliation_identifier IS 'A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR).'; - - --- --- Name: tomogram_authors_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.tomogram_authors_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: tomogram_authors_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.tomogram_authors_id_seq OWNED BY public.tomogram_authors.id; - - --- --- Name: tomogram_type; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tomogram_type ( - value text NOT NULL, - description text -); - - --- --- Name: TABLE tomogram_type; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.tomogram_type IS 'The type of tomograms'; - - --- --- Name: tomogram_voxel_spacings; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tomogram_voxel_spacings ( - id integer NOT NULL, - run_id integer NOT NULL, - voxel_spacing numeric NOT NULL, - s3_prefix character varying, - https_prefix character varying -); - - --- --- Name: TABLE tomogram_voxel_spacings; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.tomogram_voxel_spacings IS 'Metadata for a given voxel spacing related to tomograms and annotations'; - - --- --- Name: COLUMN tomogram_voxel_spacings.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_voxel_spacings.id IS 'Numeric identifier (May change!)'; - - --- --- Name: COLUMN tomogram_voxel_spacings.run_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_voxel_spacings.run_id IS 'The ID of the run this tomogram voxel spacing is a part of'; - - --- --- Name: COLUMN tomogram_voxel_spacings.voxel_spacing; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_voxel_spacings.voxel_spacing IS 'The voxel spacing for the tomograms in this set in angstroms'; - - --- --- Name: COLUMN tomogram_voxel_spacings.s3_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_voxel_spacings.s3_prefix IS 'The S3 public bucket path where this tomogram voxel spacing is contained'; - - --- --- Name: COLUMN tomogram_voxel_spacings.https_prefix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomogram_voxel_spacings.https_prefix IS 'The HTTPS directory path where this tomogram voxel spacing is contained'; - - --- --- Name: tomogram_voxel_spacing_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.tomogram_voxel_spacing_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: tomogram_voxel_spacing_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.tomogram_voxel_spacing_id_seq OWNED BY public.tomogram_voxel_spacings.id; - - --- --- Name: tomograms; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.tomograms ( - id integer NOT NULL, - name character varying NOT NULL, - size_x integer NOT NULL, - size_y integer NOT NULL, - size_z integer NOT NULL, - voxel_spacing numeric NOT NULL, - fiducial_alignment_status character varying NOT NULL, - reconstruction_method character varying NOT NULL, - reconstruction_software character varying NOT NULL, - processing character varying NOT NULL, - processing_software character varying, - tomogram_version character varying NOT NULL, - is_canonical boolean, - s3_omezarr_dir character varying NOT NULL, - https_omezarr_dir character varying NOT NULL, - s3_mrc_scale0 character varying NOT NULL, - https_mrc_scale0 character varying NOT NULL, - scale0_dimensions character varying NOT NULL, - scale1_dimensions character varying NOT NULL, - scale2_dimensions character varying NOT NULL, - ctf_corrected boolean, - tomogram_voxel_spacing_id integer, - offset_x integer DEFAULT 0 NOT NULL, - offset_y integer DEFAULT 0 NOT NULL, - offset_z integer DEFAULT 0 NOT NULL, - affine_transformation_matrix numeric[], - key_photo_url character varying, - key_photo_thumbnail_url character varying, - neuroglancer_config character varying, - type text, - deposition_id integer -); - - --- --- Name: TABLE tomograms; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.tomograms IS 'Metadata for a tomogram'; - - --- --- Name: COLUMN tomograms.id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.id IS 'Numeric identifier for this tomogram (this may change!)'; - - --- --- Name: COLUMN tomograms.name; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.name IS 'Short name for this tomogram'; - - --- --- Name: COLUMN tomograms.size_x; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.size_x IS 'Number of pixels in the 3D data fast axis'; - - --- --- Name: COLUMN tomograms.size_y; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.size_y IS 'Number of pixels in the 3D data medium axis'; - - --- --- Name: COLUMN tomograms.size_z; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.size_z IS 'Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt'; - - --- --- Name: COLUMN tomograms.voxel_spacing; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.voxel_spacing IS 'Voxel spacing equal in all three axes in angstroms'; - - --- --- Name: COLUMN tomograms.fiducial_alignment_status; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.fiducial_alignment_status IS 'Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial'; - - --- --- Name: COLUMN tomograms.reconstruction_method; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.reconstruction_method IS 'Describe reconstruction method (Weighted back-projection, SART, SIRT)'; - - --- --- Name: COLUMN tomograms.reconstruction_software; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.reconstruction_software IS 'Name of software used for reconstruction'; - - --- --- Name: COLUMN tomograms.processing; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.processing IS 'Describe additional processing used to derive the tomogram'; - - --- --- Name: COLUMN tomograms.processing_software; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.processing_software IS 'Processing software used to derive the tomogram'; - - --- --- Name: COLUMN tomograms.tomogram_version; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.tomogram_version IS 'Version of tomogram using the same software and post-processing. Version of tomogram using the same software and post-processing. This will be presented as the latest version'; - - --- --- Name: COLUMN tomograms.is_canonical; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.is_canonical IS 'Is this tomogram considered the canonical tomogram for the run experiment? True=Yes'; - - --- --- Name: COLUMN tomograms.s3_omezarr_dir; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.s3_omezarr_dir IS 'S3 path to this tomogram in multiscale OME-Zarr format'; - - --- --- Name: COLUMN tomograms.https_omezarr_dir; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.https_omezarr_dir IS 'HTTPS path to this tomogram in multiscale OME-Zarr format'; - - --- --- Name: COLUMN tomograms.s3_mrc_scale0; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.s3_mrc_scale0 IS 'S3 path to this tomogram in MRC format (no scaling)'; - - --- --- Name: COLUMN tomograms.https_mrc_scale0; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.https_mrc_scale0 IS 'HTTPS path to this tomogram in MRC format (no scaling)'; - - --- --- Name: COLUMN tomograms.scale0_dimensions; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.scale0_dimensions IS 'comma separated x,y,z dimensions of the unscaled tomogram'; - - --- --- Name: COLUMN tomograms.scale1_dimensions; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.scale1_dimensions IS 'comma separated x,y,z dimensions of the scale1 tomogram'; - - --- --- Name: COLUMN tomograms.scale2_dimensions; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.scale2_dimensions IS 'comma separated x,y,z dimensions of the scale2 tomogram'; - - --- --- Name: COLUMN tomograms.ctf_corrected; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.ctf_corrected IS 'Whether this tomogram is CTF corrected'; - - --- --- Name: COLUMN tomograms.tomogram_voxel_spacing_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.tomogram_voxel_spacing_id IS 'The ID of the tomogram voxel spacing this tomogram is part of'; - - --- --- Name: COLUMN tomograms.offset_x; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.offset_x IS 'x offset data relative to the canonical tomogram in pixels'; - - --- --- Name: COLUMN tomograms.offset_y; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.offset_y IS 'y offset data relative to the canonical tomogram in pixels'; - - --- --- Name: COLUMN tomograms.offset_z; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.offset_z IS 'z offset data relative to the canonical tomogram in pixels'; - - --- --- Name: COLUMN tomograms.affine_transformation_matrix; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.affine_transformation_matrix IS 'The flip or rotation transformation of this author submitted tomogram is indicated here'; - - --- --- Name: COLUMN tomograms.key_photo_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.key_photo_url IS 'URL for the key photo'; - - --- --- Name: COLUMN tomograms.key_photo_thumbnail_url; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.key_photo_thumbnail_url IS 'URL for the thumbnail of key photo'; - - --- --- Name: COLUMN tomograms.neuroglancer_config; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.neuroglancer_config IS 'the compact json of neuroglancer config'; - - --- --- Name: COLUMN tomograms.type; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.type IS 'Tomogram purpose (ex: CANONICAL)'; - - --- --- Name: COLUMN tomograms.deposition_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.tomograms.deposition_id IS 'If the tomogram is part of a deposition, the related deposition''s id'; - - --- --- Name: tomograms_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.tomograms_id_seq - AS integer - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: tomograms_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.tomograms_id_seq OWNED BY public.tomograms.id; - - --- --- Name: annotation_authors id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_authors ALTER COLUMN id SET DEFAULT nextval('public.annotation_authors_id_seq'::regclass); - - --- --- Name: annotation_files id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_files ALTER COLUMN id SET DEFAULT nextval('public.annotation_files_id_seq'::regclass); - - --- --- Name: annotations id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotations ALTER COLUMN id SET DEFAULT nextval('public.annotations_id_seq'::regclass); - - --- --- Name: dataset_authors id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_authors ALTER COLUMN id SET DEFAULT nextval('public.dataset_authors_id_seq'::regclass); - - --- --- Name: dataset_funding id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_funding ALTER COLUMN id SET DEFAULT nextval('public.dataset_funding_id_seq'::regclass); - - --- --- Name: deposition_authors id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposition_authors ALTER COLUMN id SET DEFAULT nextval('public.deposition_authors_id_seq'::regclass); - - --- --- Name: depositions id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.depositions ALTER COLUMN id SET DEFAULT nextval('public.depositions_id_seq'::regclass); - - --- --- Name: runs id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.runs ALTER COLUMN id SET DEFAULT nextval('public.runs_id_seq'::regclass); - - --- --- Name: tiltseries id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tiltseries ALTER COLUMN id SET DEFAULT nextval('public.tiltseries_id_seq'::regclass); - - --- --- Name: tomogram_authors id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_authors ALTER COLUMN id SET DEFAULT nextval('public.tomogram_authors_id_seq'::regclass); - - --- --- Name: tomogram_voxel_spacings id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_voxel_spacings ALTER COLUMN id SET DEFAULT nextval('public.tomogram_voxel_spacing_id_seq'::regclass); - - --- --- Name: tomograms id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomograms ALTER COLUMN id SET DEFAULT nextval('public.tomograms_id_seq'::regclass); - - --- --- Name: annotation_authors annotation_authors_annotation_id_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_authors - ADD CONSTRAINT annotation_authors_annotation_id_name_key UNIQUE (annotation_id, name); - - --- --- Name: annotation_authors annotation_authors_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_authors - ADD CONSTRAINT annotation_authors_pkey PRIMARY KEY (id); - - --- --- Name: annotation_files annotation_files_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_files - ADD CONSTRAINT annotation_files_pkey PRIMARY KEY (id); - - --- --- Name: annotation_files annotation_files_shape_type_annotation_id_format_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_files - ADD CONSTRAINT annotation_files_shape_type_annotation_id_format_key UNIQUE (shape_type, annotation_id, format); - - --- --- Name: annotations annotations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT annotations_pkey PRIMARY KEY (id); - - --- --- Name: dataset_authors dataset_authors_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_authors - ADD CONSTRAINT dataset_authors_pkey PRIMARY KEY (id); - - --- --- Name: dataset_funding dataset_funding_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_funding - ADD CONSTRAINT dataset_funding_pkey PRIMARY KEY (id); - - --- --- Name: datasets datasets_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.datasets - ADD CONSTRAINT datasets_pkey PRIMARY KEY (id); - - --- --- Name: deposition_authors deposition_authors_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposition_authors - ADD CONSTRAINT deposition_authors_pkey PRIMARY KEY (id); - - --- --- Name: depositions depositions_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.depositions - ADD CONSTRAINT depositions_pkey PRIMARY KEY (id); - - --- --- Name: runs runs_dataset_id_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.runs - ADD CONSTRAINT runs_dataset_id_name_key UNIQUE (dataset_id, name); - - --- --- Name: runs runs_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.runs - ADD CONSTRAINT runs_pkey PRIMARY KEY (id); - - --- --- Name: tiltseries tiltseries_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tiltseries - ADD CONSTRAINT tiltseries_pkey PRIMARY KEY (id); - - --- --- Name: tomogram_authors tomogram_authors_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_authors - ADD CONSTRAINT tomogram_authors_pkey PRIMARY KEY (id); - - --- --- Name: tomogram_authors tomogram_authors_tomogram_id_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_authors - ADD CONSTRAINT tomogram_authors_tomogram_id_name_key UNIQUE (tomogram_id, name); - - --- --- Name: tomogram_type tomogram_type_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_type - ADD CONSTRAINT tomogram_type_pkey PRIMARY KEY (value); - - --- --- Name: tomogram_voxel_spacings tomogram_voxel_spacing_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_voxel_spacings - ADD CONSTRAINT tomogram_voxel_spacing_pkey PRIMARY KEY (id); - - --- --- Name: tomograms tomograms_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomograms - ADD CONSTRAINT tomograms_pkey PRIMARY KEY (id); - - --- --- Name: annotation_files_annotation_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX annotation_files_annotation_id ON public.annotation_files USING btree (annotation_id); - - --- --- Name: annotation_method; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX annotation_method ON public.annotations USING btree (annotation_method); - - --- --- Name: annotations_deposition_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX annotations_deposition_id ON public.annotations USING btree (deposition_id); - - --- --- Name: annotations_tomogram_voxel_spacing; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX annotations_tomogram_voxel_spacing ON public.annotations USING btree (tomogram_voxel_spacing_id); - - --- --- Name: dataset_authors_dataset; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX dataset_authors_dataset ON public.dataset_authors USING btree (dataset_id); - - --- --- Name: dataset_deposition_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX dataset_deposition_id ON public.datasets USING btree (deposition_id); - - --- --- Name: dataset_funding_dataset; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX dataset_funding_dataset ON public.dataset_funding USING btree (dataset_id); - - --- --- Name: depositions_type; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX depositions_type ON public.depositions USING btree (deposition_types); - - --- --- Name: tiltseries_deposition_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tiltseries_deposition_id ON public.tiltseries USING btree (deposition_id); - - --- --- Name: tiltseries_run; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tiltseries_run ON public.tiltseries USING btree (run_id); - - --- --- Name: tomogram_voxel_spacing_run; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tomogram_voxel_spacing_run ON public.tomogram_voxel_spacings USING btree (run_id); - - --- --- Name: tomograms_deposition_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tomograms_deposition_id ON public.tomograms USING btree (deposition_id); - - --- --- Name: tomograms_tomogram_voxel_spacing_id; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX tomograms_tomogram_voxel_spacing_id ON public.tomograms USING btree (tomogram_voxel_spacing_id); - - --- --- Name: annotation_authors annotation_authors_annotation_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_authors - ADD CONSTRAINT annotation_authors_annotation_id_fkey FOREIGN KEY (annotation_id) REFERENCES public.annotations(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: annotation_files annotation_files_annotation_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotation_files - ADD CONSTRAINT annotation_files_annotation_id_fkey FOREIGN KEY (annotation_id) REFERENCES public.annotations(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: annotations annotations_tomogram_voxel_spacing_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.annotations - ADD CONSTRAINT annotations_tomogram_voxel_spacing_id_fkey FOREIGN KEY (tomogram_voxel_spacing_id) REFERENCES public.tomogram_voxel_spacings(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: dataset_authors dataset_authors_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_authors - ADD CONSTRAINT dataset_authors_dataset_id_fkey FOREIGN KEY (dataset_id) REFERENCES public.datasets(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: dataset_funding dataset_funding_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.dataset_funding - ADD CONSTRAINT dataset_funding_dataset_id_fkey FOREIGN KEY (dataset_id) REFERENCES public.datasets(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: deposition_authors deposition_authors_deposition_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposition_authors - ADD CONSTRAINT deposition_authors_deposition_id_fkey FOREIGN KEY (deposition_id) REFERENCES public.depositions(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: runs runs_dataset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.runs - ADD CONSTRAINT runs_dataset_id_fkey FOREIGN KEY (dataset_id) REFERENCES public.datasets(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: tiltseries tiltseries_run_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tiltseries - ADD CONSTRAINT tiltseries_run_id_fkey FOREIGN KEY (run_id) REFERENCES public.runs(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: tomogram_authors tomogram_authors_tomogram_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_authors - ADD CONSTRAINT tomogram_authors_tomogram_id_fkey FOREIGN KEY (tomogram_id) REFERENCES public.tomograms(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: tomogram_voxel_spacings tomogram_voxel_spacing_run_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomogram_voxel_spacings - ADD CONSTRAINT tomogram_voxel_spacing_run_id_fkey FOREIGN KEY (run_id) REFERENCES public.runs(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: tomograms tomograms_tomogram_voxel_spacing_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomograms - ADD CONSTRAINT tomograms_tomogram_voxel_spacing_id_fkey FOREIGN KEY (tomogram_voxel_spacing_id) REFERENCES public.tomogram_voxel_spacings(id) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- Name: tomograms tomograms_type_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.tomograms - ADD CONSTRAINT tomograms_type_fkey FOREIGN KEY (type) REFERENCES public.tomogram_type(value) ON UPDATE RESTRICT ON DELETE RESTRICT; - - --- --- PostgreSQL database dump complete --- diff --git a/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000001_data/up.sql b/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000001_data/up.sql deleted file mode 100644 index 29268ff79..000000000 --- a/client/python/cryoet_data_portal/tests/test_infra/hasura/migrations/cryoetdataportal/0000000000001_data/up.sql +++ /dev/null @@ -1,84 +0,0 @@ -INSERT INTO public.tomogram_type VALUES ('CANONICAL', NULL); -INSERT INTO public.tomogram_type VALUES ('UNKNOWN', NULL); - -INSERT INTO public.datasets VALUES (20001, 'Test Dataset 1', 'Description 1', '2023-04-01', '2023-06-01', '2023-06-01', NULL, NULL, 'EMPIAR-99990, EMD-12345, EMD-12346, 10.1101/2022.01.01.111111', NULL, 'organism', 'Test Bacteria 1', '5555', NULL, NULL, '', '', NULL, 'http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=8888', 'Sample Prep 1', 'Grid Prep 1', NULL, 's3://test-public-bucket/20001/', 'http://localhost:4444/20001/', NULL, NULL, NULL, NULL, 300); -INSERT INTO public.datasets VALUES (20002, 'Test Dataset 2', 'Description 2', '2023-02-01', '2023-06-21', '2023-06-22', NULL, NULL, 'EMPIAR-99991, 10.1101/2022.01.01.22222', NULL, 'organism', 'Test Virus 2', '6666', NULL, NULL, '', '', NULL, 'http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=7777', 'Sample Prep 2', 'Grid Prep 2', NULL, 's3://test-public-bucket/20002/', 'http://localhost:4444/20002/', NULL, NULL, NULL, NULL, 301); - -INSERT INTO public.dataset_funding VALUES (1, 20001, 'Grant For dataset1', '11111'); -INSERT INTO public.dataset_funding VALUES (2, 20002, 'Grant For dataset2', '22222'); - -INSERT INTO public.dataset_authors VALUES (1, 'Author 1', NULL, false, NULL, NULL, NULL, NULL, 20001, true, NULL); -INSERT INTO public.dataset_authors VALUES (2, 'Author 2', '0000-2222-9999-8888', false, NULL, NULL, NULL, NULL, 20001, true, NULL); -INSERT INTO public.dataset_authors VALUES (3, 'Author 3', NULL, false, NULL, NULL, NULL, NULL, 20002, true, NULL); -INSERT INTO public.dataset_authors VALUES (4, 'Author 4', '4444-2222-9999-8888', false, NULL, NULL, NULL, NULL, 20002, true, NULL); - -INSERT INTO public.runs VALUES (1, 20001, 'RUN1', 's3://test-public-bucket/20001/RUN1/', 'http://localhost:4444/20001/RUN1/'); -INSERT INTO public.runs VALUES (2, 20001, 'RUN2', 's3://test-public-bucket/20001/RUN2/', 'http://localhost:4444/20001/RUN2/'); -INSERT INTO public.runs VALUES (3, 20002, 'RUN001', 's3://test-public-bucket/20002/RUN001/', 'http://localhost:4444/20002/RUN001/'); -INSERT INTO public.runs VALUES (4, 20002, 'RUN002', 's3://test-public-bucket/20002/RUN002/', 'http://localhost:4444/20002/RUN002/'); - -INSERT INTO public.tomogram_voxel_spacings VALUES (4, 1, 13.48, 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/'); -INSERT INTO public.tomogram_voxel_spacings VALUES (5, 2, 7.56, 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/'); -INSERT INTO public.tomogram_voxel_spacings VALUES (6, 3, 7.56, 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/', 'http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/'); -INSERT INTO public.tomogram_voxel_spacings VALUES (7, 4, 13.48, 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/'); - -INSERT INTO public.annotations VALUES (40, 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-mitochondria-1.0.json', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-mitochondria-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Mitochondria', 'GO:0000000', NULL, NULL, 16, NULL, NULL, NULL, 4, NULL, true, NULL, 300, NULL); -INSERT INTO public.annotations VALUES (41, 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-ribosome-1.0.json', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-ribosome-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Ribosome', 'GO:000000A', NULL, NULL, 16, NULL, NULL, NULL, 4, NULL, true, NULL, 300, NULL); -INSERT INTO public.annotations VALUES (42, 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/author2-ribosome-1.0.json', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/author2-ribosome-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Ribosome', 'GO:000000A', NULL, NULL, 16, NULL, NULL, NULL, 5, NULL, true, NULL, 300, NULL); -INSERT INTO public.annotations VALUES (43, 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/author3-ribosome-1.0.json', 'http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/author3-ribosome-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Ribosome', 'GO:000000A', NULL, NULL, 16, NULL, NULL, NULL, 6, NULL, true, NULL, 301, NULL); -INSERT INTO public.annotations VALUES (44, 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-ribosome-1.0.json', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-ribosome-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Ribosome', 'GO:000000A', NULL, NULL, 16, NULL, NULL, NULL, 7, NULL, true, NULL, 301, NULL); --- The following annotation has a NULL deposition_id to help test that the client can handle that missing value. -INSERT INTO public.annotations VALUES (45, 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-spike-1.0.json', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-spike-1.0.json', '2023-04-01', '2023-06-01', '2023-06-01', 'EMPIAR-77777', 'Manual', true, 'Spike Protein', 'GO:000000A', NULL, NULL, 16, NULL, NULL, NULL, 7, NULL, true, NULL, NULL, NULL); - -INSERT INTO public.annotation_authors VALUES (50, 40, 'Author 1', '0000-0000-0000-0007', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (51, 40, 'Author 2', '0000-0000-0000-0008', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (52, 41, 'Author 1', '0000-0000-0000-0007', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (53, 41, 'Author 2', '0000-0000-0000-0008', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (54, 42, 'Author 3', '0000-0000-0000-0039', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (55, 42, 'Author 4', '0000-0000-0000-0049', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (56, 43, 'Author 5', '0000-0000-0000-0059', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (57, 44, 'Author 6', '0000-0000-0000-0069', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (58, 45, 'Author 7', '0000-0000-0000-0079', false, true, NULL, NULL, NULL, NULL, NULL); -INSERT INTO public.annotation_authors VALUES (59, 45, 'Author 8', '0000-0000-0000-0089', false, true, NULL, NULL, NULL, NULL, NULL); - - -INSERT INTO public.annotation_files VALUES (70, 40, 'OrientedPoint', 'ndjson', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.ndjson', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.ndjson'); -INSERT INTO public.annotation_files VALUES (71, 40, 'SegmentationMask', 'mrc', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.mrc', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.mrc'); -INSERT INTO public.annotation_files VALUES (72, 40, 'SegmentationMask', 'zarr', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.zarr', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.zarr'); -INSERT INTO public.annotation_files VALUES (73, 41, 'Point', 'ndjson', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson'); -INSERT INTO public.annotation_files VALUES (74, 41, 'SegmentationMask', 'mrc', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc'); -INSERT INTO public.annotation_files VALUES (75, 41, 'SegmentationMask', 'zarr', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr'); -INSERT INTO public.annotation_files VALUES (76, 42, 'OrientedPoint', 'ndjson', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson', 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson'); -INSERT INTO public.annotation_files VALUES (77, 42, 'SegmentationMask', 'mrc', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc', 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc'); -INSERT INTO public.annotation_files VALUES (78, 42, 'SegmentationMask', 'zarr', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr', 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr'); -INSERT INTO public.annotation_files VALUES (79, 43, 'OrientedPoint', 'ndjson', 'http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson', 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson'); -INSERT INTO public.annotation_files VALUES (80, 44, 'SegmentationMask', 'zarr', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr', 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr'); -INSERT INTO public.annotation_files VALUES (81, 44, 'SegmentationMask', 'mrc', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc', 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc'); -INSERT INTO public.annotation_files VALUES (82, 45, 'Point', 'ndjson', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.json', 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.json'); - -INSERT INTO public.tiltseries VALUES (11, 1, 's3://test-public-bucket/20001/RUN1/TiltSeries/RUN1_bin1.mrc', 's3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.zarr', 'http://localhost:4444/20001/RUN1/TiltSeries/RUN1_bin1.mrc', 'http://localhost:4444/20001/RUN1/TiltSeries/RUN1.zarr', 's3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.mdoc', 'http://localhost:4444/20001/RUN1/TiltSeries/RUN1.mdoc', 's3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.rawtlt', 'http://localhost:4444/20001/RUN1/TiltSeries/RUN1.rawtlt', 's3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.xf', 'http://localhost:4444/20001/RUN1/TiltSeries/RUN1.xf', 300000, 2.7, 'MicroCorp', 'MicroZap5000', 'PhaseOTron', 'None', 'None', NULL, 'FancyCam', 'Sharpshooter', -30.0, 30.0, 60.0, 2.0, 'Dose symmetric from 0.0 degrees', 84.7, 122.0, 'Software1', NULL, 1.0, 5, false, NULL, NULL, 0, 300); -INSERT INTO public.tiltseries VALUES (12, 2, 's3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.mrc', 's3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.zarr', 'http://localhost:4444/20001/RUN2/TiltSeries/RUN2.mrc', 'http://localhost:4444/20001/RUN2/TiltSeries/RUN2.zarr', 's3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.mdoc', 'http://localhost:4444/20001/RUN2/TiltSeries/RUN2.mdoc', 's3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.rawtlt', 'http://localhost:4444/20001/RUN2/TiltSeries/RUN2.rawtlt', 's3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.xf', 'http://localhost:4444/20001/RUN2/TiltSeries/RUN2.xf', 300000, 2.7, 'MicroCorp', 'MicroZap5000', 'PhaseOTron', 'None', 'None', NULL, 'FancyCam', 'Sharpshooter', -30.0, 30.0, 60.0, 2.0, 'Dose symmetric from 0.0 degrees', 84.7, 122.0, 'Software1', NULL, 1.0, 5, false, NULL, NULL, 0, 300); -INSERT INTO public.tiltseries VALUES (13, 3, 's3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.mrc', 's3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.zarr', 'http://localhost:4444/20002/RUN001/TiltSeries/RUN001.mrc', 'http://localhost:4444/20002/RUN001/TiltSeries/RUN001.zarr', 's3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.mdoc', 'http://localhost:4444/20002/RUN001/TiltSeries/RUN001.mdoc', 's3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.rawtlt', 'http://localhost:4444/20002/RUN001/TiltSeries/RUN001.rawtlt', 's3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.xf', 'http://localhost:4444/20002/RUN001/TiltSeries/RUN001.xf', 300000, 2.7, 'MicroCorp', 'MicroZap5000', 'PhaseOTron', 'None', 'None', NULL, 'FancyCam', 'Sharpshooter', -30.0, 30.0, 60.0, 2.0, 'Dose symmetric from 0.0 degrees', 84.7, 122.0, 'Software1', NULL, 1.0, 5, false, NULL, NULL, 0, 301); -INSERT INTO public.tiltseries VALUES (14, 4, 's3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.mrc', 's3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.zarr', 'http://localhost:4444/20002/RUN002/TiltSeries/RUN002.mrc', 'http://localhost:4444/20002/RUN002/TiltSeries/RUN002.zarr', 's3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.mdoc', 'http://localhost:4444/20002/RUN002/TiltSeries/RUN002.mdoc', 's3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.rawtlt', 'http://localhost:4444/20002/RUN002/TiltSeries/RUN002.rawtlt', 's3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.xf', 'http://localhost:4444/20002/RUN002/TiltSeries/RUN002.xf', 300000, 2.7, 'MicroCorp', 'MicroZap5000', 'PhaseOTron', 'None', 'None', NULL, 'FancyCam', 'Sharpshooter', -30.0, 30.0, 60.0, 2.0, 'Dose symmetric from 0.0 degrees', 84.7, 122.0, 'Software1', NULL, 1.0, 5, false, NULL, NULL, 0, 301); - -INSERT INTO public.tomograms VALUES (31, 'RUN1', 960, 928, 500, 13.48, 'NON_FIDUCIAL', 'Weighted back projection', 'SW1', 'raw', NULL, '1', true, 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.zarr', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.zarr', 's3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.mrc', 'http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.mrc', '960,928,500', '480,464,250', '240,232,125', false, 4, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 300); -INSERT INTO public.tomograms VALUES (32, 'RUN2', 960, 928, 500, 13.48, 'NON_FIDUCIAL', 'Weighted back projection', 'SW1', 'raw', NULL, '1', true, 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.zarr', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.zarr', 's3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.mrc', 'http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.mrc', '960,928,500', '480,464,250', '240,232,125', false, 5, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 300); -INSERT INTO public.tomograms VALUES (33, 'RUN001', 960, 928, 500, 13.48, 'NON_FIDUCIAL', 'Weighted back projection', 'SW1', 'raw', NULL, '1', true, 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.zarr', 'http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.zarr', 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.mrc', 's3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.mrc', '960,928,500', '480,464,250', '240,232,125', false, 6, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 301); -INSERT INTO public.tomograms VALUES (34, 'RUN002', 960, 928, 500, 13.48, 'NON_FIDUCIAL', 'Weighted back projection', 'SW1', 'raw', NULL, '1', true, 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.zarr', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.zarr', 's3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.mrc', 'http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.mrc', '960,928,500', '480,464,250', '240,232,125', false, 7, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 301); - -INSERT INTO public.tomogram_authors VALUES (91, 31, 1, 'Bob Bobberson', '03234234234', true, false, 'bob@bobberson.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (92, 31, 2, 'Rob Robberson', '44444234234', false, false, 'rob@robberson.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (93, 32, 1, 'Alexis Alexei', '03234999994', false, false, 'lex@lexis.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (94, 32, 2, 'Chad Chadders', '44444888834', false, false, 'chad@cheddar.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (95, 33, 1, 'Kate Kateey', '33334999994', false, false, 'kate@katey.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (96, 33, 2, 'May Mayabell', '55554888834', false, true, 'may@mayabell.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (97, 34, 1, 'Hal Hallow', '11111999994', true, false, 'hal@hallow.com', NULL, NULL, NULL); -INSERT INTO public.tomogram_authors VALUES (98, 34, 2, 'Marc Marker', '66666888834', false, true, 'marc@marker.com', NULL, NULL, NULL); - -INSERT INTO public.depositions VALUES (300, 'Deposition1', 'The first deposition', '2023-04-01', '2023-06-01', '2023-06-01', '', '', 'dataset', 's3://test-public-bucket/depositions_metadata/300/', 'https://files.cryoetdataportal.cziscience.com/depositions_metadata/300/'); -INSERT INTO public.depositions VALUES (301, 'Deposition2', 'The second deposition', '2023-05-01', '2023-07-01', '2023-07-01', '', '', 'dataset', 's3://test-public-bucket/depositions_metadata/301/', 'https://files.cryoetdataportal.cziscience.com/depositions_metadata/301/'); - -INSERT INTO public.deposition_authors VALUES (111, 'Hal Hallow', '1111-1111-1111-1111', true, 'hal@hallow.com', NULL, NULL, NULL, 300, true, 1); -INSERT INTO public.deposition_authors VALUES (112, 'Marc Marker', '2222-2222-2222-2222', false, 'marc@marker.com', NULL, NULL, NULL, 300, false, 2); -INSERT INTO public.deposition_authors VALUES (113, 'Alexis Alexei', '3333-3333-3333-3333', true, 'alexis@alexei.com', NULL, NULL, NULL, 301, true, 1); -INSERT INTO public.deposition_authors VALUES (114, 'Chad Chadders', '4444-4444-4444-4444', false, 'chad@chadders.com', NULL, NULL, NULL, 301, false, 2); diff --git a/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh b/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh index 57536a62e..ff8e6c850 100755 --- a/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh +++ b/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh @@ -2,14 +2,15 @@ # Script to seed moto server; runs outside the motoserver container for development -aws="aws --endpoint-url=http://localhost:4000" +aws="aws --endpoint-url=http://localhost:5566" export AWS_ACCESS_KEY_ID=test export AWS_SECRET_ACCESS_KEY=test export AWS_REGION=us-west-2 -# Create dev bucket but don't error if it already exists -test_file=test_file -echo test_data > $test_file +# Wipe out the bucket so we can start fresh. +$aws s3api delete-bucket --bucket $bucket_1 2>/dev/null || /bin/true + +# Create dev bucket but don't error if it already exists (and it shouldn't exist) bucket_1=test-public-bucket $aws s3api head-bucket --bucket $bucket_1 2>/dev/null || $aws s3 mb s3://$bucket_1 From 041769b3431b200e508737b16ba342bdd052d09d Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Tue, 1 Oct 2024 17:29:30 -0400 Subject: [PATCH 13/18] Update CI to use the latest `staging` api service to run tests against. --- client/python/cryoet_data_portal/Makefile | 8 +- .../tests/docker-compose.yml | 56 --- .../tests/test_infra/get_deployment.sh | 3 +- .../tests/test_infra/seed_db.py | 445 ++++++++++++++++++ .../tests/test_infra/seed_moto.sh | 2 +- 5 files changed, 452 insertions(+), 62 deletions(-) delete mode 100644 client/python/cryoet_data_portal/tests/docker-compose.yml create mode 100644 client/python/cryoet_data_portal/tests/test_infra/seed_db.py diff --git a/client/python/cryoet_data_portal/Makefile b/client/python/cryoet_data_portal/Makefile index 10249d937..98027bd9b 100644 --- a/client/python/cryoet_data_portal/Makefile +++ b/client/python/cryoet_data_portal/Makefile @@ -4,8 +4,8 @@ export BACKEND_DIR=/tmp/cryoet-data-portal-backend-test-infra .PHONY: set-api-version set-api-version: if [ ! -e $(BACKEND_DIR) ]; then git clone git@github.com:chanzuckerberg/cryoet-data-portal-backend.git $(BACKEND_DIR); fi - export STAGING_SHA=$$(python3 tests/test_infra/get_deployment.sh staging); \ - if [ -z $STAGING_SHA ]; then \ + export STAGING_SHA=$$(./tests/test_infra/get_deployment.sh staging); \ + if [ -n "$${STAGING_SHA}" ]; then \ echo "Setting backend to SHA: $${STAGING_SHA}"; \ cd $(BACKEND_DIR); \ git fetch; \ @@ -32,7 +32,7 @@ coverage: export AWS_REGION=us-west-2; \ export AWS_ACCESS_KEY_ID=test; \ export AWS_SECRET_ACCESS_KEY=test; \ - export BOTO_ENDPOINT_URL=http://localhost:4000; \ + export BOTO_ENDPOINT_URL=http://localhost:5566; \ export BOTO_SIGNATURE_VERSION=s3v4; \ coverage run --parallel-mode -m pytest -v -rP --durations=20 ./tests/ @@ -41,7 +41,7 @@ test: export AWS_REGION=us-west-2; \ export AWS_ACCESS_KEY_ID=test; \ export AWS_SECRET_ACCESS_KEY=test; \ - export BOTO_ENDPOINT_URL=http://localhost:4000; \ + export BOTO_ENDPOINT_URL=http://localhost:5566; \ export BOTO_SIGNATURE_VERSION=s3v4; \ pytest -vvv -s . $(TEST) diff --git a/client/python/cryoet_data_portal/tests/docker-compose.yml b/client/python/cryoet_data_portal/tests/docker-compose.yml deleted file mode 100644 index 9618bc6cb..000000000 --- a/client/python/cryoet_data_portal/tests/docker-compose.yml +++ /dev/null @@ -1,56 +0,0 @@ -version: "3.8" - -services: - nginx: - image: nginx - ports: - - "4444:80" - volumes: - - ./test_infra/test_files:/usr/share/nginx/html - motoserver: - image: motoserver/moto:4.1.0 - ports: - - "4000:4000" - environment: - - MOTO_PORT=4000 - - S3_IGNORE_SUBDOMAIN_BUCKETNAME=True - volumes: - - ./bin:/moto/bin - db: - image: postgres:14.2 - healthcheck: - test: ['CMD', 'pg_isready', '-d', 'cryoetdataportal', '-U', 'postgres'] - environment: - POSTGRES_DB: cryoetdataportal - POSTGRES_PASSWORD: postgres - POSTGRES_USER: postgres - # The postgres image declares a mounted volume at /var/lib/postgresql/data - # by default, which means that the data in that directory is difficult to - # snapshot and export. Here, we're telling Postgres to use this (non-mounted) - # directory as its storage location instead so it works with our db snapshot - # workflow. - PGDATA: /var/lib/cryoetdataportal/data - volumes: - - ./test_infra:/test_infra - ports: - - '5432:5432' - graphql-engine: - image: hasura/graphql-engine:v2.25.1.cli-migrations-v3 - ports: - - "8080:8080" - restart: always - volumes: - - ./test_infra/hasura/migrations:/hasura-migrations - - ./test_infra/hasura/metadata:/hasura-metadata - environment: - ## postgres database to store Hasura metadata - HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgres@db:5432/cryoetdataportal - HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:postgres@db:5432/cryoetdataportal - HASURA_GRAPHQL_ENABLE_CONSOLE: "true" - HASURA_GRAPHQL_DEV_MODE: "true" - HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log - healthcheck: - test: timeout 1s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1 - depends_on: - db: - condition: service_healthy diff --git a/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh b/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh index 5f12f01b8..e815b17dc 100755 --- a/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh +++ b/client/python/cryoet_data_portal/tests/test_infra/get_deployment.sh @@ -1,4 +1,5 @@ -if [ $1 == 'staging' ]; then +#!/bin/bash +if [ "$1" = 'staging' ]; then # If there's a release-please branch, this is the file that controls staging versions! RELEASE_SHA=$(curl -s "https://raw.githubusercontent.com/chanzuckerberg/cryoet-data-portal-backend/refs/heads/release-please--branches--main--components--apiv2/.infra/staging/values.yaml" | grep ' tag:' | head -n 1 | awk '{ print $2; }' | cut -d '-' -f 2) fi diff --git a/client/python/cryoet_data_portal/tests/test_infra/seed_db.py b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py new file mode 100644 index 000000000..0a572a3fc --- /dev/null +++ b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py @@ -0,0 +1,445 @@ +""" +Populate the database with mock data for local development +""" + +import factory.random + +from platformics.database.connect import init_sync_db +from platformics.settings import CLISettings +from platformics.test_infra.factories.base import FileFactory, SessionStorage +from test_infra.factories.alignment import AlignmentFactory +from test_infra.factories.annotation import AnnotationFactory +from test_infra.factories.annotation_author import AnnotationAuthorFactory +from test_infra.factories.annotation_file import AnnotationFileFactory +from test_infra.factories.annotation_shape import AnnotationShapeFactory +from test_infra.factories.dataset import DatasetFactory +from test_infra.factories.dataset_author import DatasetAuthorFactory +from test_infra.factories.dataset_funding import DatasetFundingFactory +from test_infra.factories.deposition import DepositionFactory +from test_infra.factories.deposition_author import DepositionAuthorFactory +from test_infra.factories.run import RunFactory +from test_infra.factories.tiltseries import TiltseriesFactory +from test_infra.factories.tomogram import TomogramFactory +from test_infra.factories.tomogram_author import TomogramAuthorFactory +from test_infra.factories.tomogram_voxel_spacing import TomogramVoxelSpacingFactory + + +def use_factoryboy() -> None: + """ + Use factoryboy to create mock data + """ + settings = CLISettings.model_validate({}) + app_db = init_sync_db(settings.SYNC_DB_URI) + session = app_db.session() + SessionStorage.set_session(session) + factory.random.reseed_random(1234567) + + # create some datasets with multiple runs + dep1 = DepositionFactory(id=99999) + dep2 = DepositionFactory(id=88888) + + DepositionAuthorFactory.create(deposition=dep1, author_list_order=1) + DepositionAuthorFactory.create(deposition=dep1, author_list_order=2) + DepositionAuthorFactory.create(deposition=dep2, author_list_order=1) + DepositionAuthorFactory.create(deposition=dep2, author_list_order=2) + DepositionAuthorFactory.create(deposition=dep2, author_list_order=3) + + ds1 = DatasetFactory( + id=20001, + deposition=dep1, + s3_prefix="s3://test-public-bucket/20001/", + https_prefix="http://localhost:4444/20001/", + ) + ds2 = DatasetFactory( + id=20002, + deposition=dep2, + s3_prefix="s3://test-public-bucket/20002/", + https_prefix="http://localhost:4444/20002/", + ) + + DatasetFundingFactory(dataset=ds1, funding_agency_name="Grant For dataset1") + DatasetFundingFactory(dataset=ds2, funding_agency_name="Grant For dataset2") + + DatasetAuthorFactory(dataset=ds1, name="Author 1", primary_author_status=True) + DatasetAuthorFactory(dataset=ds1, name="Author 2", corresponding_author_status=True, orcid="0000-2222-9999-8888") + DatasetAuthorFactory(dataset=ds2, name="Author 3", primary_author_status=True) + DatasetAuthorFactory(dataset=ds2, name="Author 4", corresponding_author_status=True, orcid="4444-2222-9999-8888") + + r1 = RunFactory.create( + dataset=ds1, + name="RUN1", + s3_prefix="s3://test-public-bucket/20001/RUN1/", + https_prefix="http://localhost:4444/20001/RUN1/", + ) + r2 = RunFactory.create( + dataset=ds1, + name="RUN2", + s3_prefix="s3://test-public-bucket/20001/RUN2/", + https_prefix="http://localhost:4444/20001/RUN2/", + ) + r3 = RunFactory.create( + dataset=ds2, + name="RUN001", + s3_prefix="s3://test-public-bucket/20002/RUN001/", + https_prefix="http://localhost:4444/20002/RUN001/", + ) + r4 = RunFactory.create( + dataset=ds2, + name="RUN002", + s3_prefix="s3://test-public-bucket/20002/RUN002/", + https_prefix="http://localhost:4444/20002/RUN002/", + ) + + ts1 = TiltseriesFactory.create( + run=r1, + deposition=dep1, + s3_mrc_file="s3://test-public-bucket/20001/RUN1/TiltSeries/RUN1_bin1.mrc", + s3_omezarr_dir="s3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.zarr", + https_mrc_file="http://localhost:4444/20001/RUN1/TiltSeries/RUN1_bin1.mrc", + https_omezarr_dir="http://localhost:4444/20001/RUN1/TiltSeries/RUN1.zarr", + s3_collection_metadata="s3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.mdoc", + https_collection_metadata="http://localhost:4444/20001/RUN1/TiltSeries/RUN1.mdoc", + s3_angle_list="s3://test-public-bucket/20001/RUN1/TiltSeries/RUN1.rawtlt", + https_angle_list="http://localhost:4444/20001/RUN1/TiltSeries/RUN1.rawtlt", + ) + ts2 = TiltseriesFactory.create( + run=r2, + deposition=dep1, + s3_mrc_file="s3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.mrc", + s3_omezarr_dir="s3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.zarr", + https_mrc_file="http://localhost:4444/20001/RUN2/TiltSeries/RUN2.mrc", + https_omezarr_dir="http://localhost:4444/20001/RUN2/TiltSeries/RUN2.zarr", + s3_collection_metadata="s3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.mdoc", + https_collection_metadata="http://localhost:4444/20001/RUN2/TiltSeries/RUN2.mdoc", + s3_angle_list="s3://test-public-bucket/20001/RUN2/TiltSeries/RUN2.rawtlt", + https_angle_list="http://localhost:4444/20001/RUN2/TiltSeries/RUN2.rawtlt", + ) + ts3 = TiltseriesFactory.create( + run=r3, + deposition=dep2, + s3_mrc_file="s3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.mrc", + s3_omezarr_dir="s3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.zarr", + https_mrc_file="http://localhost:4444/20002/RUN001/TiltSeries/RUN001.mrc", + https_omezarr_dir="http://localhost:4444/20002/RUN001/TiltSeries/RUN001.zarr", + s3_collection_metadata="s3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.mdoc", + https_collection_metadata="http://localhost:4444/20002/RUN001/TiltSeries/RUN001.mdoc", + s3_angle_list="s3://test-public-bucket/20002/RUN001/TiltSeries/RUN001.rawtlt", + https_angle_list="http://localhost:4444/20002/RUN001/TiltSeries/RUN001.rawtlt", + ) + ts4 = TiltseriesFactory.create( + run=r4, + deposition=dep2, + s3_mrc_file="s3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.mrc", + s3_omezarr_dir="s3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.zarr", + https_mrc_file="http://localhost:4444/20002/RUN002/TiltSeries/RUN002.mrc", + https_omezarr_dir="http://localhost:4444/20002/RUN002/TiltSeries/RUN002.zarr", + s3_collection_metadata="s3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.mdoc", + https_collection_metadata="http://localhost:4444/20002/RUN002/TiltSeries/RUN002.mdoc", + s3_angle_list="s3://test-public-bucket/20002/RUN002/TiltSeries/RUN002.rawtlt", + https_angle_list="http://localhost:4444/20002/RUN002/TiltSeries/RUN002.rawtlt", + ) + + al1 = AlignmentFactory.create(deposition=dep1, run=r1, tiltseries=ts1) + al2 = AlignmentFactory.create(deposition=dep1, run=r2, tiltseries=ts2) + al3 = AlignmentFactory.create(deposition=dep1, run=r3, tiltseries=ts3) + al4 = AlignmentFactory.create(deposition=dep1, run=r4, tiltseries=ts4) + + tvs4 = TomogramVoxelSpacingFactory.create( + run=r1, + voxel_spacing=13.48, + s3_prefix="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/", + https_prefix="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/", + ) + tvs5 = TomogramVoxelSpacingFactory.create( + run=r2, + voxel_spacing=7.56, + s3_prefix="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/", + https_prefix="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/", + ) + tvs6 = TomogramVoxelSpacingFactory.create( + run=r3, + voxel_spacing=7.56, + s3_prefix="s3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/", + https_prefix="http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/", + ) + tvs7 = TomogramVoxelSpacingFactory.create( + run=r4, + voxel_spacing=13.48, + s3_prefix="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/", + https_prefix="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/", + ) + + a40 = AnnotationFactory.create( + run=r1, + deposition=None, # Explicitly testing empty deposition_id! + s3_metadata_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-mitochondria-1.0.json", + https_metadata_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-mitochondria-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Test Annotation Object Name", + object_id="GO:0000000", + ) + a41 = AnnotationFactory.create( + run=r1, + deposition=dep1, + s3_metadata_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-ribosome-1.0.json", + https_metadata_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/author1-ribosome-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Ribosome", + object_id="GO:000000A", + ) + + a42 = AnnotationFactory.create( + run=r2, + deposition=dep1, + s3_metadata_path="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/author2-ribosome-1.0.json", + https_metadata_path="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/author2-ribosome-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Ribosome", + object_id="GO:000000A", + ) + a43 = AnnotationFactory.create( + run=r3, + deposition=dep2, + s3_metadata_path="s3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/author3-ribosome-1.0.json", + https_metadata_path="http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/author3-ribosome-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Ribosome", + object_id="GO:000000A", + ) + a44 = AnnotationFactory.create( + run=r4, + deposition=dep2, + s3_metadata_path="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-ribosome-1.0.json", + https_metadata_path="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-ribosome-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Ribosome", + object_id="GO:000000A", + ) + a45 = AnnotationFactory.create( + run=r4, + deposition=dep2, + s3_metadata_path="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-spike-1.0.json", + https_metadata_path="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/author4-spike-1.0.json", + deposition_date="2023-04-01", + release_date="2023-06-01", + annotation_publication="EMPIAR-77777", + annotation_method="Manual", + is_curator_recommended=True, + object_name="Spike Protein", + object_id="GO:000000A", + ) + + AnnotationAuthorFactory.create(annotation=a40, name="Author 1", orcid="0000-0000-0000-0007") + AnnotationAuthorFactory.create(annotation=a40, name="Author 2", orcid="0000-0000-0000-0008") + AnnotationAuthorFactory.create(annotation=a41, name="Author 1", orcid="0000-0000-0000-0007") + AnnotationAuthorFactory.create(annotation=a41, name="Author 2", orcid="0000-0000-0000-0008") + AnnotationAuthorFactory.create(annotation=a42, name="Author 3", orcid="0000-0000-0000-0039") + AnnotationAuthorFactory.create(annotation=a42, name="Author 4", orcid="0000-0000-0000-0049") + AnnotationAuthorFactory.create(annotation=a43, name="Author 5", orcid="0000-0000-0000-0059") + AnnotationAuthorFactory.create(annotation=a44, name="Author 6", orcid="0000-0000-0000-0069") + AnnotationAuthorFactory.create(annotation=a45, name="Author 7", orcid="0000-0000-0000-0079") + AnnotationAuthorFactory.create(annotation=a45, name="Author 8", orcid="0000-0000-0000-0089") + + as40op = AnnotationShapeFactory.create(annotation=a40, shape_type="OrientedPoint") + as40sm = AnnotationShapeFactory.create(annotation=a40, shape_type="SegmentationMask") + as41pt = AnnotationShapeFactory.create(annotation=a41, shape_type="Point") + as41sm = AnnotationShapeFactory.create(annotation=a41, shape_type="SegmentationMask") + as42op = AnnotationShapeFactory.create(annotation=a42, shape_type="OrientedPoint") + as42sm = AnnotationShapeFactory.create(annotation=a42, shape_type="SegmentationMask") + as43op = AnnotationShapeFactory.create(annotation=a43, shape_type="OrientedPoint") + as44sm = AnnotationShapeFactory.create(annotation=a44, shape_type="SegmentationMask") + as45pt = AnnotationShapeFactory.create(annotation=a45, shape_type="Point") + + AnnotationFileFactory.create( + annotation_shape=as40op, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="ndjson", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.ndjson", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.ndjson", + ) + AnnotationFileFactory.create( + annotation_shape=as40sm, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="mrc", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.mrc", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.mrc", + ) + AnnotationFileFactory.create( + annotation_shape=as40sm, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="zarr", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.zarr", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/mitochondria.zarr", + ) + + AnnotationFileFactory.create( + annotation_shape=as41pt, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="ndjson", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson", + ) + AnnotationFileFactory.create( + annotation_shape=as41sm, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="mrc", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc", + ) + AnnotationFileFactory.create( + annotation_shape=as41sm, + alignment=al1, + tomogram_voxel_spacing=tvs4, + format="zarr", + https_path="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr", + s3_path="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr", + ) + + AnnotationFileFactory.create( + annotation_shape=as42op, + alignment=al2, + tomogram_voxel_spacing=tvs5, + format="ndjson", + https_path="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson", + s3_path="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson", + ) + AnnotationFileFactory.create( + annotation_shape=as42sm, + alignment=al2, + tomogram_voxel_spacing=tvs5, + format="mrc", + https_path="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc", + s3_path="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc", + ) + AnnotationFileFactory.create( + annotation_shape=as42sm, + alignment=al2, + tomogram_voxel_spacing=tvs5, + format="zarr", + https_path="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr", + s3_path="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr", + ) + + AnnotationFileFactory.create( + annotation_shape=as43op, + alignment=al3, + tomogram_voxel_spacing=tvs6, + format="ndjson", + https_path="http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/Annotations/ribosome.ndjson", + s3_path="s3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing13.48/Annotations/ribosome.ndjson", + ) + + AnnotationFileFactory.create( + annotation_shape=as44sm, + alignment=al4, + tomogram_voxel_spacing=tvs7, + format="zarr", + https_path="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.zarr", + s3_path="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.zarr", + ) + AnnotationFileFactory.create( + annotation_shape=as44sm, + alignment=al4, + tomogram_voxel_spacing=tvs7, + format="mrc", + https_path="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.mrc", + s3_path="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.mrc", + ) + + AnnotationFileFactory.create( + annotation_shape=as45pt, + alignment=al4, + tomogram_voxel_spacing=tvs7, + format="ndjson", + https_path="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing7.56/Annotations/ribosome.json", + s3_path="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/Annotations/ribosome.json", + ) + + tomo1 = TomogramFactory.create( + name="RUN1", + run=r1, + alignment=al1, + tomogram_voxel_spacing=tvs4, + deposition=dep1, + s3_omezarr_dir="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.zarr", + https_omezarr_dir="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.zarr", + s3_mrc_file="s3://test-public-bucket/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.mrc", + https_mrc_file="http://localhost:4444/20001/RUN1/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN1.mrc", + ) + tomo2 = TomogramFactory.create( + name="RUN2", + run=r2, + alignment=al2, + tomogram_voxel_spacing=tvs5, + deposition=dep1, + s3_omezarr_dir="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.zarr", + https_omezarr_dir="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.zarr", + s3_mrc_file="s3://test-public-bucket/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.mrc", + https_mrc_file="http://localhost:4444/20001/RUN2/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN2.mrc", + ) + tomo3 = TomogramFactory.create( + name="RUN001", + run=r3, + alignment=al3, + tomogram_voxel_spacing=tvs6, + deposition=dep2, + s3_omezarr_dir="s3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.zarr", + https_omezarr_dir="http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.zarr", + s3_mrc_file="s3://test-public-bucket/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.mrc", + https_mrc_file="http://localhost:4444/20002/RUN001/TomogramVoxelSpacing7.56/CanonicalTomogram/RUN001.mrc", + ) + tomo4 = TomogramFactory.create( + name="RUN002", + run=r4, + alignment=al4, + tomogram_voxel_spacing=tvs7, + deposition=dep2, + s3_omezarr_dir="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.zarr", + https_omezarr_dir="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.zarr", + s3_mrc_file="s3://test-public-bucket/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.mrc", + https_mrc_file="http://localhost:4444/20002/RUN002/TomogramVoxelSpacing13.48/CanonicalTomogram/RUN002.mrc", + ) + + TomogramAuthorFactory.create(tomogram=tomo1, author_list_order=1) + TomogramAuthorFactory.create(tomogram=tomo1, author_list_order=2) + TomogramAuthorFactory.create(tomogram=tomo2, author_list_order=1) + TomogramAuthorFactory.create(tomogram=tomo2, author_list_order=2) + TomogramAuthorFactory.create(tomogram=tomo3, author_list_order=1) + TomogramAuthorFactory.create(tomogram=tomo3, author_list_order=2) + TomogramAuthorFactory.create(tomogram=tomo4, author_list_order=1) + TomogramAuthorFactory.create(tomogram=tomo4, author_list_order=2) + + FileFactory.update_file_ids() + + session.commit() + + +if __name__ == "__main__": + print("Seeding database") + use_factoryboy() + print("Seeding complete") diff --git a/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh b/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh index ff8e6c850..47040108c 100755 --- a/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh +++ b/client/python/cryoet_data_portal/tests/test_infra/seed_moto.sh @@ -8,7 +8,7 @@ export AWS_SECRET_ACCESS_KEY=test export AWS_REGION=us-west-2 # Wipe out the bucket so we can start fresh. -$aws s3api delete-bucket --bucket $bucket_1 2>/dev/null || /bin/true +$aws s3api delete-bucket --bucket $bucket_1 2>/dev/null || true # Create dev bucket but don't error if it already exists (and it shouldn't exist) bucket_1=test-public-bucket From 0f6435f2517db3eb5ca5f3e28de89877c1d7064d Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Thu, 17 Oct 2024 11:33:49 -0400 Subject: [PATCH 14/18] Update schema to reflect prod. --- .../python/cryoet_data_portal/pyproject.toml | 53 +- .../src/cryoet_data_portal/__init__.py | 24 +- .../src/cryoet_data_portal/_client.py | 6 +- .../src/cryoet_data_portal/_codegen.py | 49 +- .../src/cryoet_data_portal/_gql_base.py | 38 +- .../src/cryoet_data_portal/_models.py | 390 +- .../cryoet_data_portal/data/schema.graphql | 4434 +++++++++-------- .../templates/Header.jinja2 | 1 + .../tests/test_get_client.py | 4 +- .../tests/test_infra/seed_db.py | 75 +- 10 files changed, 2799 insertions(+), 2275 deletions(-) diff --git a/client/python/cryoet_data_portal/pyproject.toml b/client/python/cryoet_data_portal/pyproject.toml index 0d000ada7..34bd018b3 100644 --- a/client/python/cryoet_data_portal/pyproject.toml +++ b/client/python/cryoet_data_portal/pyproject.toml @@ -7,32 +7,33 @@ name = "cryoet_data_portal" version = "3.1.0" description = "API Client to facilitate the use of the CryoET Portal. For more information about the API and the project visit https://github.com/chanzuckerberg/cryoet-data-portal/" authors = [ - { name = "Chan Zuckerberg Initiative", email = "cryoetdataportal@chanzuckerberg.com" } + { name = "Chan Zuckerberg Initiative", email = "cryoetdataportal@chanzuckerberg.com" }, ] license = { text = "MIT" } readme = "README.md" requires-python = ">= 3.7" classifiers = [ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "Intended Audience :: Information Technology", - "Intended Audience :: Science/Research", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python", - "Topic :: Scientific/Engineering :: Bio-Informatics", - "Operating System :: POSIX :: Linux", - "Operating System :: MacOS :: MacOS X", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Scientific/Engineering :: Bio-Informatics", + "Operating System :: POSIX :: Linux", + "Operating System :: MacOS :: MacOS X", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", ] -dependencies= [ - "requests", - "boto3", - "deepmerge", - "gql[requests]", - "tqdm", +dependencies = [ + "requests", + "boto3", + "deepmerge", + "gql[requests]", + "tqdm", + "strcase", ] [project.urls] @@ -42,8 +43,12 @@ documentation = "https://chanzuckerberg.github.io/cryoet-data-portal/python-api. [tool.setuptools.packages.find] where = ["src"] -include = ["cryoet_data_portal*"] # package names should match these glob patterns (["*"] by default) -exclude = ["tests*"] # exclude packages matching these glob patterns (empty by default) +include = [ + "cryoet_data_portal*", +] # package names should match these glob patterns (["*"] by default) +exclude = [ + "tests*", +] # exclude packages matching these glob patterns (empty by default) [tool.setuptools_scm] root = "../../.." @@ -55,6 +60,4 @@ warn_unreachable = true strict = true [tool.pytest.ini_options] -markers = [ - "expensive: too expensive to run regularly or in CI", -] +markers = ["expensive: too expensive to run regularly or in CI"] diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py index 2e6271938..8e9ee17ae 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/__init__.py @@ -7,23 +7,26 @@ from ._client import Client from ._models import ( Alignment, + Annotation, AnnotationAuthor, AnnotationFile, + AnnotationMethodLink, AnnotationShape, - Annotation, + Dataset, DatasetAuthor, DatasetFunding, - Dataset, - DepositionAuthor, Deposition, + DepositionAuthor, + DepositionType, Frame, + FrameAcquisitionFile, + GainFile, PerSectionAlignmentParameters, - PerSectionParameters, Run, TiltSeries, + Tomogram, TomogramAuthor, TomogramVoxelSpacing, - Tomogram, ) __version__ = "3.1.0" @@ -31,18 +34,21 @@ __all__ = [ "Client", "Alignment", + "Annotation", "AnnotationAuthor", "AnnotationFile", + "AnnotationMethodLink", "AnnotationShape", - "Annotation", + "Dataset", "DatasetAuthor", "DatasetFunding", - "Dataset", - "DepositionAuthor", "Deposition", + "DepositionAuthor", + "DepositionType", "Frame", + "FrameAcquisitionFile", + "GainFile", "PerSectionAlignmentParameters", - "PerSectionParameters", "Run", "TiltSeries", "TomogramAuthor", diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py index b8e7b96f7..5c142b859 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py @@ -8,7 +8,7 @@ from cryoet_data_portal._constants import USER_AGENT -DEFAULT_URL = "http://localhost:9009/graphql" +DEFAULT_URL = "https://graphql.cryoetdataportal.czscience.com/graphql" class Client: @@ -47,7 +47,7 @@ def __init__(self, url: Optional[str] = None): self.ds = DSLSchema(self.client.schema) def build_query( - self, cls, root_field: str, gql_class_name: str, query_filters=None + self, cls, root_field: str, gql_class_name: str, query_filters=None, ): ds = self.ds query_filters = {} if not query_filters else {"where": query_filters} @@ -68,7 +68,7 @@ def find(self, cls, query_filters=None): gql_type = cls._get_gql_type() gql_root = cls._get_gql_root_field() response = self.client.execute( - self.build_query(cls, gql_root, gql_type, query_filters) + self.build_query(cls, gql_root, gql_type, query_filters), ) return [cls(self, **item) for item in response[gql_root]] diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py index 95c432c00..eb64de521 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_codegen.py @@ -1,11 +1,11 @@ """This module generates model code from the GraphQL schema.""" import logging -import re from dataclasses import dataclass from pathlib import Path from typing import Optional, Tuple, Union +import strcase from gql import Client from gql.transport.requests import RequestsHTTPTransport from graphql import ( @@ -19,8 +19,8 @@ GraphQLSchema, GraphQLType, build_schema, - print_schema, get_named_type, + print_schema, ) from jinja2 import Environment, FileSystemLoader @@ -35,17 +35,18 @@ "DateTime": ("DateField()", "date"), "numeric": ("FloatField()", "float"), "_numeric": ("StringField()", "str"), - "tomogram_type_enum": ("StringField()", "str"), - "tomogram_processing_enum": ("StringField()", "str"), - "tomogram_reconstruction_method_enum": ("StringField()", "str"), "annotation_file_source_enum": ("StringField()", "str"), + "alignment_method_type_enum": ("StringField()", "str"), "annotation_method_type_enum": ("StringField()", "str"), "annotation_file_shape_type_enum": ("StringField()", "str"), + "annotation_method_link_type_enum": ("StringField()", "str"), "deposition_types_enum": ("StringField()", "str"), "sample_type_enum": ("StringField()", "str"), - "tiltseries_camer_acquire_mode_enum": ("StringField()", "str"), + "tiltseries_camera_acquire_mode_enum": ("StringField()", "str"), "tiltseries_microscope_manufacturer_enum": ("StringField()", "str"), "fiducial_alignment_status_enum": ("StringField()", "str"), + "tomogram_processing_enum": ("StringField()", "str"), + "tomogram_reconstruction_method_enum": ("StringField()", "str"), "alignment_type_enum": ("StringField()", "str"), } @@ -56,6 +57,7 @@ "Annotation": "Annotation", "AnnotationAuthor": "AnnotationAuthor", "AnnotationFile": "AnnotationFile", + "AnnotationMethodLink": "AnnotationMethodLink", "AnnotationShape": "AnnotationShape", "Dataset": "Dataset", "DatasetAuthor": "DatasetAuthor", @@ -64,8 +66,9 @@ "DepositionAuthor": "DepositionAuthor", "DepositionType": "DepositionType", "Frame": "Frame", + "FrameAcquisitionFile": "FrameAcquisitionFile", + "GainFile": "GainFile", "PerSectionAlignmentParameters": "PerSectionAlignmentParameters", - "PerSectionParameters": "PerSectionParameters", "Run": "Run", "Tiltseries": "TiltSeries", "Tomogram": "Tomogram", @@ -213,6 +216,8 @@ def _parse_field( ) -> Optional[FieldInfo]: logging.debug("_parse_field: %s, %s", name, field) field_type = _maybe_unwrap_non_null(field.type) + if isinstance(field_type, GraphQLList): + return _parse_gql_list_field(name, field.description, field_type) if field_type.name.endswith("Connection"): # TODO can we clean this up? return _parse_model_list_field(gql_type, name, field_type) if isinstance(field_type, GraphQLObjectType) and ( @@ -224,6 +229,22 @@ def _parse_field( return None +# TODO - we only support list[list[float]] fields right now, +# so this method is overly simplistic. +def _parse_gql_list_field( + name: str, + description: Optional[str], + field_type: GraphQLList, +) -> Optional[FieldInfo]: + logging.debug("_parse_gql_list_field: %s", field_type) + return FieldInfo( + name=name, + description=description, + annotation_type="List[List[float]]", + default_value="ListField()", + ) + + def _parse_scalar_field( name: str, description: Optional[str], @@ -249,7 +270,7 @@ def _parse_model_field( logging.debug("_parse_model_field: %s", field_type) model = GQL_TO_MODEL_TYPE.get(field_type.name) if model is not None: - model_field = _camel_to_snake_case(model) + model_field = strcase.to_snake(model) model_name = _camel_to_space_case(model) source_model = GQL_TO_MODEL_TYPE[gql_type.name] source_model_name = _camel_to_space_case(source_model) @@ -269,14 +290,14 @@ def _parse_model_list_field( ) -> Optional[FieldInfo]: logging.debug("_parse_model_list_field: %s", field_type) of_type = get_named_type( - get_named_type(field_type.fields["edges"].type).fields["node"].type + get_named_type(field_type.fields["edges"].type).fields["node"].type, ) if not isinstance(of_type, GraphQLNamedType): return None of_model = GQL_TO_MODEL_TYPE.get(of_type.name) if of_model is not None: source_model = GQL_TO_MODEL_TYPE[gql_type.name] - source_field = _camel_to_snake_case(source_model) + source_field = strcase.to_snake(source_model) source_model_name = _camel_to_space_case(source_model) of_model_name = _space_case_to_plural(_camel_to_space_case(of_model)) return FieldInfo( @@ -294,12 +315,8 @@ def _maybe_unwrap_non_null(field_type: GraphQLType) -> GraphQLType: return field_type -def _camel_to_snake_case(name: str) -> str: - return re.sub("(?!^)([A-Z]+)", r"_\1", name).lower() - - def _camel_to_space_case(name: str) -> str: - return _camel_to_snake_case(name).replace("_", " ") + return strcase.to_snake(name).replace("_", " ") def _space_case_to_plural(name: str) -> str: @@ -315,7 +332,7 @@ def _load_jinja_environment() -> Environment: lstrip_blocks=True, keep_trailing_newline=True, ) - env.filters["to_snake"] = _camel_to_snake_case + env.filters["to_snake"] = strcase.to_snake return env diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py index 2f63f8356..74f975938 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py @@ -1,24 +1,14 @@ import functools -import re from datetime import datetime from importlib import import_module from typing import Any, Dict, Iterable, Optional +import strcase from deepmerge import always_merger from ._client import Client -def to_camel(txt: str | list[str]): - if isinstance(txt, list): - return [to_camel(item) for item in txt] - return txt[0] + txt.title().replace("_", "")[1:] - - -def to_snake(name: str) -> str: - return re.sub("(?!^)([A-Z]+)", r"_\1", name).lower() - - class GQLExpression: def __init__(self, field: "GQLField", operator, value: Optional[Any]): self.field = field @@ -91,7 +81,7 @@ def is_relationship(self): return False def to_gql(self): - return to_camel(self._name) + return strcase.to_lower_camel(self._name) class BaseField(GQLField): @@ -103,10 +93,16 @@ def convert(self, value): return value -class StringField(BaseField): ... +class ListField(BaseField): + ... + + +class StringField(BaseField): + ... -class IntField(BaseField): ... +class IntField(BaseField): + ... class DateField(BaseField): @@ -115,10 +111,12 @@ def convert(self, value): return datetime.fromisoformat(value) -class BooleanField(BaseField): ... +class BooleanField(BaseField): + ... -class FloatField(BaseField): ... +class FloatField(BaseField): + ... class QueryChain(GQLField): @@ -140,7 +138,7 @@ def get_related_class(self): return self.__current_query.get_related_class() def to_gql(self): - return to_camel(self.__name) + return strcase.to_lower_camel(self.__name) class Relationship(GQLField): @@ -193,7 +191,7 @@ def __get__(self, obj, obj_class=None): if obj is None: return self source_field = getattr(obj, self.source_field) - dest_field = getattr(self.related_class, to_snake(self.dest_field)) + dest_field = getattr(self.related_class, strcase.to_snake(self.dest_field)) res = self.related_class.find( obj._client, [dest_field == source_field], @@ -210,7 +208,7 @@ class Model: def __init__(self, client: Client, **kwargs): self._client = client for k in self._get_scalar_fields(): - value = getattr(self, k).convert(kwargs.get(to_camel(k))) + value = getattr(self, k).convert(kwargs.get(strcase.to_lower_camel(k))) setattr(self, k, value) def to_dict(self) -> Dict[str, Any]: @@ -229,7 +227,7 @@ def _get_scalar_fields(cls): @classmethod @functools.lru_cache(maxsize=32) def _get_gql_fields(cls): - return [to_camel(item) for item in cls._get_scalar_fields()] + return [strcase.to_lower_camel(item) for item in cls._get_scalar_fields()] @classmethod @functools.lru_cache(maxsize=32) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py index 2f1936e4f..19521bfd0 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_models.py @@ -17,10 +17,13 @@ FloatField, IntField, ItemRelationship, + ListField, ListRelationship, Model, StringField, ) + + class Alignment(Model): """Tiltseries Alignment @@ -36,24 +39,35 @@ class Alignment(Model): run (Run): The run this alignment is a part of run_id (int): None alignment_type (str): Whether this a LOCAL or GLOBAL alignment - volume_xdimension (float): X dimension of the reconstruction volume in angstrom - volume_ydimension (float): Y dimension of the reconstruction volume in angstrom - volume_zdimension (float): Z dimension of the reconstruction volume in angstrom - volume_xoffset (float): X shift of the reconstruction volume in angstrom - volume_yoffset (float): Y shift of the reconstruction volume in angstrom - volume_zoffset (float): Z shift of the reconstruction volume in angstrom + alignment_method (str): The method used to create this alignment + volume_x_dimension (float): X dimension of the reconstruction volume in angstrom + volume_y_dimension (float): Y dimension of the reconstruction volume in angstrom + volume_z_dimension (float): Z dimension of the reconstruction volume in angstrom + volume_x_offset (float): X shift of the reconstruction volume in angstrom + volume_y_offset (float): Y shift of the reconstruction volume in angstrom + volume_z_offset (float): Z shift of the reconstruction volume in angstrom x_rotation_offset (float): Additional X rotation of the reconstruction volume in degrees tilt_offset (float): Additional tilt offset in degrees - local_alignment_file (str): Path to the local alignment file affine_transformation_matrix (str): A placeholder for the affine transformation matrix. + s_3_alignment_metadata (str): S3 path to the metadata file for this alignment + https_alignment_metadata (str): HTTPS url to the metadata file for this alignment + is_portal_standard (bool): Whether this is the portal standard alignment """ _gql_type: str = "Alignment" _gql_root_field: str = "alignments" id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "alignment_id") - per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship("PerSectionAlignmentParameters", "id", "alignment_id") + annotation_files: List[AnnotationFile] = ListRelationship( + "AnnotationFile", + "id", + "alignment_id", + ) + per_section_alignments: List[PerSectionAlignmentParameters] = ListRelationship( + "PerSectionAlignmentParameters", + "id", + "alignment_id", + ) deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_series_id", "id") @@ -62,16 +76,21 @@ class Alignment(Model): run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() alignment_type: str = StringField() - volume_xdimension: float = FloatField() - volume_ydimension: float = FloatField() - volume_zdimension: float = FloatField() - volume_xoffset: float = FloatField() - volume_yoffset: float = FloatField() - volume_zoffset: float = FloatField() + alignment_method: str = StringField() + volume_x_dimension: float = FloatField() + volume_y_dimension: float = FloatField() + volume_z_dimension: float = FloatField() + volume_x_offset: float = FloatField() + volume_y_offset: float = FloatField() + volume_z_offset: float = FloatField() x_rotation_offset: float = FloatField() tilt_offset: float = FloatField() - local_alignment_file: str = StringField() affine_transformation_matrix: str = StringField() + s_3_alignment_metadata: str = StringField() + https_alignment_metadata: str = StringField() + is_portal_standard: bool = BooleanField() + + class Annotation(Model): """Metadata for an annotation @@ -80,14 +99,14 @@ class Annotation(Model): run (Run): The run this annotation is a part of run_id (int): None annotation_shapes (List[AnnotationShape]): The annotation shapes of this annotation + method_links (List[AnnotationMethodLink]): The annotation method links of this annotation authors (List[AnnotationAuthor]): The annotation authors of this annotation deposition (Deposition): The deposition this annotation is a part of deposition_id (int): None - s3_metadata_path (str): S3 path for the metadata json file for this annotation + s_3_metadata_path (str): S3 path for the metadata json file for this annotation https_metadata_path (str): HTTPS path for the metadata json file for this annotation annotation_publication (str): DOIs for publications that describe the dataset. Use a comma to separate multiple DOIs. annotation_method (str): Describe how the annotation is made (e.g. Manual, crYoLO, Positive Unlabeled Learning, template matching) - method_links (str): Provides links to information on the method used for generating annotation, comma separated ground_truth_status (bool): Whether an annotation is considered ground truth, as determined by the annotator. object_id (str): Gene Ontology Cellular Component identifier or UniProtKB accession for the annotation object. object_name (str): Name of the object being annotated (e.g. ribosome, nuclear pore complex, actin filament, membrane) @@ -111,15 +130,27 @@ class Annotation(Model): id: int = IntField() run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - annotation_shapes: List[AnnotationShape] = ListRelationship("AnnotationShape", "id", "annotation_id") - authors: List[AnnotationAuthor] = ListRelationship("AnnotationAuthor", "id", "annotation_id") + annotation_shapes: List[AnnotationShape] = ListRelationship( + "AnnotationShape", + "id", + "annotation_id", + ) + method_links: List[AnnotationMethodLink] = ListRelationship( + "AnnotationMethodLink", + "id", + "annotation_id", + ) + authors: List[AnnotationAuthor] = ListRelationship( + "AnnotationAuthor", + "id", + "annotation_id", + ) deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - s3_metadata_path: str = StringField() + s_3_metadata_path: str = StringField() https_metadata_path: str = StringField() annotation_publication: str = StringField() annotation_method: str = StringField() - method_links: str = StringField() ground_truth_status: bool = BooleanField() object_id: str = StringField() object_name: str = StringField() @@ -171,6 +202,8 @@ def download( download_metadata = True if download_metadata: self.download_metadata(dest_path) + + class AnnotationAuthor(Model): """Metadata for an annotation's authors @@ -204,6 +237,8 @@ class AnnotationAuthor(Model): affiliation_identifier: str = StringField() corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() + + class AnnotationFile(Model): """Metadata for files associated with an annotation @@ -216,7 +251,7 @@ class AnnotationFile(Model): tomogram_voxel_spacing (TomogramVoxelSpacing): The tomogram voxel spacing this annotation file is a part of tomogram_voxel_spacing_id (int): None format (str): File format for this file - s3_path (str): s3 path of the annotation file + s_3_path (str): s3 path of the annotation file https_path (str): HTTPS path for this annotation file is_visualization_default (bool): Data curator’s subjective choice of default annotation to display in visualization for an object source (str): The source type for the annotation file (dataset_author, community, or portal_standard) @@ -228,12 +263,20 @@ class AnnotationFile(Model): id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignment_id", "id") alignment_id: int = IntField() - annotation_shape: AnnotationShape = ItemRelationship("AnnotationShape", "annotation_shape_id", "id") + annotation_shape: AnnotationShape = ItemRelationship( + "AnnotationShape", + "annotation_shape_id", + "id", + ) annotation_shape_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacing_id", "id") + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship( + "TomogramVoxelSpacing", + "tomogram_voxel_spacing_id", + "id", + ) tomogram_voxel_spacing_id: int = IntField() format: str = StringField() - s3_path: str = StringField() + s_3_path: str = StringField() https_path: str = StringField() is_visualization_default: bool = BooleanField() source: str = StringField() @@ -244,6 +287,31 @@ def download(self, dest_path: Optional[str] = None): download_directory(self.s3_path, recursive_prefix, dest_path) else: download_https(self.https_path, dest_path) + + +class AnnotationMethodLink(Model): + """A set of links to models, source code, documentation, etc referenced by annotation method + + Attributes: + id (int): Numeric identifier (May change!) + annotation (Annotation): The annotation this annotation method link is a part of + annotation_id (int): None + link_type (str): Type of link (e.g. model, source code, documentation) + name (str): user readable name of the resource + link (str): URL to the resource + """ + + _gql_type: str = "AnnotationMethodLink" + _gql_root_field: str = "annotationMethodLinks" + + id: int = IntField() + annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") + annotation_id: int = IntField() + link_type: str = StringField() + name: str = StringField() + link: str = StringField() + + class AnnotationShape(Model): """Shapes associated with an annotation @@ -261,8 +329,14 @@ class AnnotationShape(Model): id: int = IntField() annotation: Annotation = ItemRelationship("Annotation", "annotation_id", "id") annotation_id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "annotation_shape_id") + annotation_files: List[AnnotationFile] = ListRelationship( + "AnnotationFile", + "id", + "annotation_shape_id", + ) shape_type: str = StringField() + + class Dataset(Model): """A collection of imaging experiments on the same organism @@ -296,7 +370,7 @@ class Dataset(Model): last_modified_date (date): Date when a released dataset is last modified. dataset_publications (str): Comma-separated list of DOIs for publications associated with the dataset. related_database_entries (str): If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - s3_prefix (str): The S3 public bucket path where this dataset is contained + s_3_prefix (str): The S3 public bucket path where this dataset is contained https_prefix (str): The https directory path where this dataset is contained """ @@ -306,7 +380,11 @@ class Dataset(Model): id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - funding_sources: List[DatasetFunding] = ListRelationship("DatasetFunding", "id", "dataset_id") + funding_sources: List[DatasetFunding] = ListRelationship( + "DatasetFunding", + "id", + "dataset_id", + ) authors: List[DatasetAuthor] = ListRelationship("DatasetAuthor", "id", "dataset_id") runs: List[Run] = ListRelationship("Run", "id", "dataset_id") title: str = StringField() @@ -332,7 +410,7 @@ class Dataset(Model): last_modified_date: date = DateField() dataset_publications: str = StringField() related_database_entries: str = StringField() - s3_prefix: str = StringField() + s_3_prefix: str = StringField() https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): @@ -343,6 +421,8 @@ def download_everything(self, dest_path: Optional[str] = None): """ recursive_prefix = "/".join(self.s3_prefix.strip("/").split("/")[:-1]) + "/" download_directory(self.s3_prefix, recursive_prefix, dest_path) + + class DatasetAuthor(Model): """An author of a dataset @@ -376,6 +456,8 @@ class DatasetAuthor(Model): affiliation_identifier: str = StringField() corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() + + class DatasetFunding(Model): """Metadata for a dataset's funding sources @@ -395,6 +477,8 @@ class DatasetFunding(Model): dataset_id: int = IntField() funding_agency_name: str = StringField() grant_id: str = StringField() + + class Deposition(Model): """Deposition metadata @@ -423,16 +507,28 @@ class Deposition(Model): _gql_root_field: str = "depositions" id: int = IntField() - authors: List[DepositionAuthor] = ListRelationship("DepositionAuthor", "id", "deposition_id") + authors: List[DepositionAuthor] = ListRelationship( + "DepositionAuthor", + "id", + "deposition_id", + ) alignments: List[Alignment] = ListRelationship("Alignment", "id", "deposition_id") - annotations: List[Annotation] = ListRelationship("Annotation", "id", "deposition_id") + annotations: List[Annotation] = ListRelationship( + "Annotation", + "id", + "deposition_id", + ) datasets: List[Dataset] = ListRelationship("Dataset", "id", "deposition_id") frames: List[Frame] = ListRelationship("Frame", "id", "deposition_id") tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "deposition_id") tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "deposition_id") title: str = StringField() description: str = StringField() - deposition_types: List[DepositionType] = ListRelationship("DepositionType", "id", "deposition_id") + deposition_types: List[DepositionType] = ListRelationship( + "DepositionType", + "id", + "deposition_id", + ) deposition_publications: str = StringField() related_database_entries: str = StringField() deposition_date: date = DateField() @@ -440,6 +536,8 @@ class Deposition(Model): last_modified_date: date = DateField() key_photo_url: str = StringField() key_photo_thumbnail_url: str = StringField() + + class DepositionAuthor(Model): """Authors for a deposition @@ -473,6 +571,8 @@ class DepositionAuthor(Model): affiliation_identifier: str = StringField() corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() + + class DepositionType(Model): """None @@ -490,6 +590,8 @@ class DepositionType(Model): deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() type: str = StringField() + + class Frame(Model): """None @@ -497,17 +599,14 @@ class Frame(Model): id (int): Numeric identifier (May change!) deposition (Deposition): The deposition this frame is a part of deposition_id (int): None - per_section_parameters (List[PerSectionParameters]): The per section parameters of this frame run (Run): The run this frame is a part of run_id (int): None raw_angle (float): Camera angle for a frame acquisition_order (int): Frame's acquistion order within a tilt experiment dose (float): The raw camera angle for a frame is_gain_corrected (bool): Whether this frame has been gain corrected - s3_gain_file (str): S3 path to the gain file for this frame - https_gain_file (str): HTTPS path to the gain file for this frame - s3_prefix (str): Path to a directory containing data for this entity as an S3 url - https_prefix (str): Path to a directory containing data for this entity as an HTTPS url + s_3_frame_path (str): S3 path to the frame file + https_frame_path (str): HTTPS path to the frame file """ _gql_type: str = "Frame" @@ -516,17 +615,58 @@ class Frame(Model): id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "frame_id") run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() raw_angle: float = FloatField() acquisition_order: int = IntField() dose: float = FloatField() is_gain_corrected: bool = BooleanField() - s3_gain_file: str = StringField() - https_gain_file: str = StringField() - s3_prefix: str = StringField() - https_prefix: str = StringField() + s_3_frame_path: str = StringField() + https_frame_path: str = StringField() + + +class FrameAcquisitionFile(Model): + """References to files containing more information about frame acquisition + + Attributes: + id (int): Numeric identifier (May change!) + run (Run): The run this frame acquisition file is a part of + run_id (int): None + s_3_mdoc_path (str): Path to the frame acquisition mdoc file in s3 + https_mdoc_path (str): Path to the frame acquisition mdoc file as an https url + """ + + _gql_type: str = "FrameAcquisitionFile" + _gql_root_field: str = "frameAcquisitionFiles" + + id: int = IntField() + run: Run = ItemRelationship("Run", "run_id", "id") + run_id: int = IntField() + s_3_mdoc_path: str = StringField() + https_mdoc_path: str = StringField() + + +class GainFile(Model): + """Gain values for frames in this run + + Attributes: + id (int): Numeric identifier (May change!) + run (Run): The run this gain file is a part of + run_id (int): None + s_3_file_path (str): Path to the file in s3 + https_file_path (str): Path to the file as an https url + """ + + _gql_type: str = "GainFile" + _gql_root_field: str = "gainFiles" + + id: int = IntField() + run: Run = ItemRelationship("Run", "run_id", "id") + run_id: int = IntField() + s_3_file_path: str = StringField() + https_file_path: str = StringField() + + class PerSectionAlignmentParameters(Model): """Map alignment parameters to tilt series frames @@ -537,8 +677,8 @@ class PerSectionAlignmentParameters(Model): z_index (int): z-index of the frame in the tiltseries x_offset (float): In-plane X-shift of the projection in angstrom y_offset (float): In-plane Y-shift of the projection in angstrom - in_plane_rotation (float): In-plane rotation of the projection in degrees - beam_tilt (float): Beam tilt during projection in degrees + volume_x_rotation (float): X-axis rotation in degrees + in_plane_rotation (List[List[float]]): In-plane rotation of the projection in degrees tilt_angle (float): Tilt angle of the projection in degrees """ @@ -551,36 +691,11 @@ class PerSectionAlignmentParameters(Model): z_index: int = IntField() x_offset: float = FloatField() y_offset: float = FloatField() - in_plane_rotation: float = FloatField() - beam_tilt: float = FloatField() + volume_x_rotation: float = FloatField() + in_plane_rotation: List[List[float]] = ListField() tilt_angle: float = FloatField() -class PerSectionParameters(Model): - """Record how frames get mapped to Tiltseries - - Attributes: - id (int): Numeric identifier (May change!) - frame (Frame): The frame this per section parameters is a part of - frame_id (int): None - tiltseries (TiltSeries): The tilt series this per section parameters is a part of - tiltseries_id (int): None - z_index (int): z-index of the frame in the tiltseries - defocus (float): defocus amount - astigmatism (float): Astigmatism amount for this frame - astigmatic_angle (float): Angle of ast - """ - _gql_type: str = "PerSectionParameters" - _gql_root_field: str = "perSectionParameters" - id: int = IntField() - frame: Frame = ItemRelationship("Frame", "frame_id", "id") - frame_id: int = IntField() - tiltseries: TiltSeries = ItemRelationship("TiltSeries", "tilt_series_id", "id") - tiltseries_id: int = IntField() - z_index: int = IntField() - defocus: float = FloatField() - astigmatism: float = FloatField() - astigmatic_angle: float = FloatField() class Run(Model): """None @@ -591,11 +706,13 @@ class Run(Model): dataset (Dataset): The dataset this run is a part of dataset_id (int): None frames (List[Frame]): The frames of this run + gain_files (List[GainFile]): The gain files of this run + frame_acquisition_files (List[FrameAcquisitionFile]): The frame acquisition files of this run tiltseries (List[TiltSeries]): The tilt series of this run tomogram_voxel_spacings (List[TomogramVoxelSpacing]): The tomogram voxel spacings of this run tomograms (List[Tomogram]): The tomograms of this run name (str): Short name for this experiment run - s3_prefix (str): The S3 public bucket path where this run is contained + s_3_prefix (str): The S3 public bucket path where this run is contained https_prefix (str): The HTTPS directory path where this run is contained url """ @@ -608,11 +725,21 @@ class Run(Model): dataset: Dataset = ItemRelationship("Dataset", "dataset_id", "id") dataset_id: int = IntField() frames: List[Frame] = ListRelationship("Frame", "id", "run_id") + gain_files: List[GainFile] = ListRelationship("GainFile", "id", "run_id") + frame_acquisition_files: List[FrameAcquisitionFile] = ListRelationship( + "FrameAcquisitionFile", + "id", + "run_id", + ) tiltseries: List[TiltSeries] = ListRelationship("TiltSeries", "id", "run_id") - tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship("TomogramVoxelSpacing", "id", "run_id") + tomogram_voxel_spacings: List[TomogramVoxelSpacing] = ListRelationship( + "TomogramVoxelSpacing", + "id", + "run_id", + ) tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "run_id") name: str = StringField() - s3_prefix: str = StringField() + s_3_prefix: str = StringField() https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): @@ -629,27 +756,24 @@ def download_frames(self, dest_path: Optional[str] = None): self.s3_prefix, dest_path, ) + + class TiltSeries(Model): """None Attributes: id (int): Numeric identifier (May change!) alignments (List[Alignment]): The alignments of this tilt series - per_section_parameters (List[PerSectionParameters]): The per section parameters of this tilt series run (Run): The run this tilt series is a part of run_id (int): None deposition (Deposition): The deposition this tilt series is a part of deposition_id (int): None - s3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format - s3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) + s_3_omezarr_dir (str): S3 path to this tiltseries in multiscale OME-Zarr format + s_3_mrc_file (str): S3 path to this tiltseries in MRC format (no scaling) https_omezarr_dir (str): HTTPS path to this tiltseries in multiscale OME-Zarr format https_mrc_file (str): HTTPS path to this tiltseries in MRC format (no scaling) - s3_collection_metadata (str): S3 path to the collection metadata file for this tiltseries - https_collection_metadata (str): HTTPS path to the collection metadata file for this tiltseries - s3_angle_list (str): S3 path to the angle list file for this tiltseries + s_3_angle_list (str): S3 path to the angle list file for this tiltseries https_angle_list (str): HTTPS path to the angle list file for this tiltseries - s3_gain_file (str): S3 path to the gain file for this tiltseries - https_gain_file (str): HTTPS path to the gain file for this tiltseries acceleration_voltage (int): Electron Microscope Accelerator voltage in volts spherical_aberration_constant (float): Spherical Aberration Constant of the objective lens in millimeters microscope_manufacturer (str): Name of the microscope manufacturer (FEI, TFS, JEOL) @@ -674,7 +798,6 @@ class TiltSeries(Model): is_aligned (bool): Whether this tilt series is aligned pixel_spacing (float): Pixel spacing equal in both axes in angstroms aligned_tiltseries_binning (int): Binning factor of the aligned tilt series - frames_count (int): Number of frames associated with this tiltseries """ _gql_type: str = "Tiltseries" @@ -682,21 +805,16 @@ class TiltSeries(Model): id: int = IntField() alignments: List[Alignment] = ListRelationship("Alignment", "id", "tilt_series_id") - per_section_parameters: List[PerSectionParameters] = ListRelationship("PerSectionParameters", "id", "tilt_series_id") run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() - s3_omezarr_dir: str = StringField() - s3_mrc_file: str = StringField() + s_3_omezarr_dir: str = StringField() + s_3_mrc_file: str = StringField() https_omezarr_dir: str = StringField() https_mrc_file: str = StringField() - s3_collection_metadata: str = StringField() - https_collection_metadata: str = StringField() - s3_angle_list: str = StringField() + s_3_angle_list: str = StringField() https_angle_list: str = StringField() - s3_gain_file: str = StringField() - https_gain_file: str = StringField() acceleration_voltage: int = IntField() spherical_aberration_constant: float = FloatField() microscope_manufacturer: str = StringField() @@ -721,7 +839,6 @@ class TiltSeries(Model): is_aligned: bool = BooleanField() pixel_spacing: float = FloatField() aligned_tiltseries_binning: int = IntField() - frames_count: int = IntField() def download_collection_metadata(self, dest_path: Optional[str] = None): """Download the collection metadata for this tiltseries @@ -767,6 +884,8 @@ def download_mrcfile( """ url = self.https_mrc_file download_https(url, dest_path) + + class Tomogram(Model): """Metadata describing a tomogram. @@ -792,14 +911,16 @@ class Tomogram(Model): tomogram_version (float): Version of tomogram processing_software (str): Processing software used to derive the tomogram reconstruction_software (str): Name of software used for reconstruction - is_canonical (bool): Is this tomogram considered the canonical tomogram for the run experiment? True=Yes - s3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format + is_portal_standard (bool): whether this tomogram adheres to portal standards + is_author_submitted (bool): Whether this tomogram was submitted by the author of the dataset it belongs to. + is_visualization_default (bool): Data curator’s subjective choice of default tomogram to display in visualization for a run + s_3_omezarr_dir (str): S3 path to this tomogram in multiscale OME-Zarr format https_omezarr_dir (str): HTTPS path to this tomogram in multiscale OME-Zarr format - s3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) + s_3_mrc_file (str): S3 path to this tomogram in MRC format (no scaling) https_mrc_file (str): HTTPS path to this tomogram in MRC format (no scaling) - scale0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram - scale1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram - scale2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram + scale_0_dimensions (str): comma separated x,y,z dimensions of the unscaled tomogram + scale_1_dimensions (str): comma separated x,y,z dimensions of the scale1 tomogram + scale_2_dimensions (str): comma separated x,y,z dimensions of the scale2 tomogram ctf_corrected (bool): Whether this tomogram is CTF corrected offset_x (int): x offset data relative to the canonical tomogram in pixels offset_y (int): y offset data relative to the canonical tomogram in pixels @@ -807,7 +928,11 @@ class Tomogram(Model): key_photo_url (str): URL for the key photo key_photo_thumbnail_url (str): URL for the thumbnail of key photo neuroglancer_config (str): the compact json of neuroglancer config - is_standardized (bool): Whether this tomogram was generated per the portal's standards + publications (str): Comma-separated list of DOIs for publications associated with the tomogram. + related_database_entries (str): If a CryoET tomogram is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + deposition_date (date): The date a data item was received by the cryoET data portal. + release_date (date): The date a data item was received by the cryoET data portal. + last_modified_date (date): The date a piece of data was last modified on the cryoET data portal. """ _gql_type: str = "Tomogram" @@ -816,12 +941,20 @@ class Tomogram(Model): id: int = IntField() alignment: Alignment = ItemRelationship("Alignment", "alignment_id", "id") alignment_id: int = IntField() - authors: List[TomogramAuthor] = ListRelationship("TomogramAuthor", "id", "tomogram_id") + authors: List[TomogramAuthor] = ListRelationship( + "TomogramAuthor", + "id", + "tomogram_id", + ) deposition: Deposition = ItemRelationship("Deposition", "deposition_id", "id") deposition_id: int = IntField() run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship("TomogramVoxelSpacing", "tomogram_voxel_spacing_id", "id") + tomogram_voxel_spacing: TomogramVoxelSpacing = ItemRelationship( + "TomogramVoxelSpacing", + "tomogram_voxel_spacing_id", + "id", + ) tomogram_voxel_spacing_id: int = IntField() name: str = StringField() size_x: int = IntField() @@ -834,14 +967,16 @@ class Tomogram(Model): tomogram_version: float = FloatField() processing_software: str = StringField() reconstruction_software: str = StringField() - is_canonical: bool = BooleanField() - s3_omezarr_dir: str = StringField() + is_portal_standard: bool = BooleanField() + is_author_submitted: bool = BooleanField() + is_visualization_default: bool = BooleanField() + s_3_omezarr_dir: str = StringField() https_omezarr_dir: str = StringField() - s3_mrc_file: str = StringField() + s_3_mrc_file: str = StringField() https_mrc_file: str = StringField() - scale0_dimensions: str = StringField() - scale1_dimensions: str = StringField() - scale2_dimensions: str = StringField() + scale_0_dimensions: str = StringField() + scale_1_dimensions: str = StringField() + scale_2_dimensions: str = StringField() ctf_corrected: bool = BooleanField() offset_x: int = IntField() offset_y: int = IntField() @@ -849,7 +984,11 @@ class Tomogram(Model): key_photo_url: str = StringField() key_photo_thumbnail_url: str = StringField() neuroglancer_config: str = StringField() - is_standardized: bool = BooleanField() + publications: str = StringField() + related_database_entries: str = StringField() + deposition_date: date = DateField() + release_date: date = DateField() + last_modified_date: date = DateField() def download_omezarr(self, dest_path: Optional[str] = None): """Download the OME-Zarr version of this tomogram @@ -882,19 +1021,24 @@ def download_all_annotations( shape (Optional[str], optional): Choose a specific shape type to download (e.g.: OrientedPoint, SegmentationMask) format (Optional[str], optional): Choose a specific file format to download (e.g.: mrc, ndjson) """ - filters = [AnnotationFile.tomogram_voxel_spacing_id == self.tomogram_voxel_spacing_id, AnnotationFile.alignment_id == self.alignment_id] + filters = [ + AnnotationFile.tomogram_voxel_spacing_id == self.tomogram_voxel_spacing_id, + AnnotationFile.alignment_id == self.alignment_id, + ] if shape: filters.append(AnnotationFile.annotation_shape.shape_type == shape) if format: filters.append(AnnotationFile.format == format) anno_files = AnnotationFile.find(self._client, filters) - downloaded_metadata = set([]) + downloaded_metadata = set() for file in anno_files: file.download(dest_path) annotation_id = file.annotation_shape.annotation_id if annotation_id not in downloaded_metadata: downloaded_metadata.add(annotation_id) file.annotation_shape.annotation.download_metadata(dest_path) + + class TomogramAuthor(Model): """Author of a tomogram @@ -928,6 +1072,8 @@ class TomogramAuthor(Model): affiliation_identifier: str = StringField() corresponding_author_status: bool = BooleanField() primary_author_status: bool = BooleanField() + + class TomogramVoxelSpacing(Model): """Voxel spacings for a run @@ -938,7 +1084,7 @@ class TomogramVoxelSpacing(Model): run_id (int): None tomograms (List[Tomogram]): The tomograms of this tomogram voxel spacing voxel_spacing (float): The voxel spacing for the tomograms in this set in angstroms - s3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained + s_3_prefix (str): The S3 public bucket path where this tomogram voxel spacing is contained https_prefix (str): The HTTPS directory path where this tomogram voxel spacing is contained """ @@ -946,12 +1092,20 @@ class TomogramVoxelSpacing(Model): _gql_root_field: str = "tomogramVoxelSpacings" id: int = IntField() - annotation_files: List[AnnotationFile] = ListRelationship("AnnotationFile", "id", "tomogram_voxel_spacing_id") + annotation_files: List[AnnotationFile] = ListRelationship( + "AnnotationFile", + "id", + "tomogram_voxel_spacing_id", + ) run: Run = ItemRelationship("Run", "run_id", "id") run_id: int = IntField() - tomograms: List[Tomogram] = ListRelationship("Tomogram", "id", "tomogram_voxel_spacing_id") + tomograms: List[Tomogram] = ListRelationship( + "Tomogram", + "id", + "tomogram_voxel_spacing_id", + ) voxel_spacing: float = FloatField() - s3_prefix: str = StringField() + s_3_prefix: str = StringField() https_prefix: str = StringField() def download_everything(self, dest_path: Optional[str] = None): @@ -961,10 +1115,13 @@ def download_everything(self, dest_path: Optional[str] = None): dest_path (Optional[str], optional): Choose a destination directory. Defaults to $CWD. """ download_directory(self.s3_prefix, self.run.s3_prefix, dest_path) + + Alignment.setup() Annotation.setup() AnnotationAuthor.setup() AnnotationFile.setup() +AnnotationMethodLink.setup() AnnotationShape.setup() Dataset.setup() DatasetAuthor.setup() @@ -973,8 +1130,9 @@ def download_everything(self, dest_path: Optional[str] = None): DepositionAuthor.setup() DepositionType.setup() Frame.setup() +FrameAcquisitionFile.setup() +GainFile.setup() PerSectionAlignmentParameters.setup() -PerSectionParameters.setup() Run.setup() TiltSeries.setup() Tomogram.setup() diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql index 9e63c3eeb..22f23c00f 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/data/schema.graphql @@ -1,4 +1,6 @@ type Query { + gainFiles(where: GainFileWhereClause = null, orderBy: [GainFileOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [GainFile!]! + frameAcquisitionFiles(where: FrameAcquisitionFileWhereClause = null, orderBy: [FrameAcquisitionFileOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [FrameAcquisitionFile!]! alignments(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Alignment!]! annotationAuthors(where: AnnotationAuthorWhereClause = null, orderBy: [AnnotationAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationAuthor!]! annotationFiles(where: AnnotationFileWhereClause = null, orderBy: [AnnotationFileOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationFile!]! @@ -11,13 +13,15 @@ type Query { depositions(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Deposition!]! depositionTypes(where: DepositionTypeWhereClause = null, orderBy: [DepositionTypeOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [DepositionType!]! frames(where: FrameWhereClause = null, orderBy: [FrameOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Frame!]! - perSectionParameters(where: PerSectionParametersWhereClause = null, orderBy: [PerSectionParametersOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [PerSectionParameters!]! perSectionAlignmentParameters(where: PerSectionAlignmentParametersWhereClause = null, orderBy: [PerSectionAlignmentParametersOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [PerSectionAlignmentParameters!]! runs(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Run!]! tiltseries(where: TiltseriesWhereClause = null, orderBy: [TiltseriesOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Tiltseries!]! tomogramAuthors(where: TomogramAuthorWhereClause = null, orderBy: [TomogramAuthorOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [TomogramAuthor!]! tomogramVoxelSpacings(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [TomogramVoxelSpacing!]! tomograms(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [Tomogram!]! + annotationMethodLinks(where: AnnotationMethodLinkWhereClause = null, orderBy: [AnnotationMethodLinkOrderByClause!] = [], limitOffset: LimitOffsetClause = null): [AnnotationMethodLink!]! + gainFilesAggregate(where: GainFileWhereClause = null): GainFileAggregate! + frameAcquisitionFilesAggregate(where: FrameAcquisitionFileWhereClause = null): FrameAcquisitionFileAggregate! alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate! annotationAuthorsAggregate(where: AnnotationAuthorWhereClause = null): AnnotationAuthorAggregate! annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate! @@ -30,13 +34,234 @@ type Query { depositionsAggregate(where: DepositionWhereClause = null): DepositionAggregate! depositionTypesAggregate(where: DepositionTypeWhereClause = null): DepositionTypeAggregate! framesAggregate(where: FrameWhereClause = null): FrameAggregate! - perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate! perSectionAlignmentParametersAggregate(where: PerSectionAlignmentParametersWhereClause = null): PerSectionAlignmentParametersAggregate! runsAggregate(where: RunWhereClause = null): RunAggregate! tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate! tomogramAuthorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate! tomogramVoxelSpacingsAggregate(where: TomogramVoxelSpacingWhereClause = null): TomogramVoxelSpacingAggregate! tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate! + annotationMethodLinksAggregate(where: AnnotationMethodLinkWhereClause = null): AnnotationMethodLinkAggregate! +} + +"""Gain values for frames in this run""" +type GainFile implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int! + + """Path to the file in s3""" + s3FilePath: String! + + """Path to the file as an https url""" + httpsFilePath: String! +} + +interface EntityInterface implements Node { + """The Globally Unique ID of this object""" + _id: GlobalID! +} + +"""An object with a Globally Unique ID""" +interface Node { + """The Globally Unique ID of this object""" + _id: GlobalID! +} + +""" +The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. +""" +scalar GlobalID + +type Run implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + alignments( + where: AlignmentWhereClause = null + orderBy: [AlignmentOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AlignmentConnection! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate + annotations( + where: AnnotationWhereClause = null + orderBy: [AnnotationOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationConnection! + annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int! + frames( + where: FrameWhereClause = null + orderBy: [FrameOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): FrameConnection! + framesAggregate(where: FrameWhereClause = null): FrameAggregate + gainFiles( + where: GainFileWhereClause = null + orderBy: [GainFileOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): GainFileConnection! + gainFilesAggregate(where: GainFileWhereClause = null): GainFileAggregate + frameAcquisitionFiles( + where: FrameAcquisitionFileWhereClause = null + orderBy: [FrameAcquisitionFileOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): FrameAcquisitionFileConnection! + frameAcquisitionFilesAggregate(where: FrameAcquisitionFileWhereClause = null): FrameAcquisitionFileAggregate + tiltseries( + where: TiltseriesWhereClause = null + orderBy: [TiltseriesOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TiltseriesConnection! + tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate + tomogramVoxelSpacings( + where: TomogramVoxelSpacingWhereClause = null + orderBy: [TomogramVoxelSpacingOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramVoxelSpacingConnection! + tomogramVoxelSpacingsAggregate(where: TomogramVoxelSpacingWhereClause = null): TomogramVoxelSpacingAggregate + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate + + """Short name for this experiment run""" + name: String! + + """The S3 public bucket path where this run is contained""" + s3Prefix: String! + + """The HTTPS directory path where this run is contained url""" + httpsPrefix: String! +} + +"""A connection to a list of items.""" +type AlignmentConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [AlignmentEdge!]! +} + +"""Information to aid in pagination.""" +type PageInfo { + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! + + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! + + """When paginating backwards, the cursor to continue.""" + startCursor: String + + """When paginating forwards, the cursor to continue.""" + endCursor: String +} + +"""An edge in a connection.""" +type AlignmentEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: Alignment! } """Tiltseries Alignment""" @@ -107,6 +332,9 @@ type Alignment implements EntityInterface & Node { """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum + """The method used to create this alignment""" + alignmentMethod: alignment_method_type_enum + """X dimension of the reconstruction volume in angstrom""" volumeXDimension: Float @@ -131,28 +359,18 @@ type Alignment implements EntityInterface & Node { """Additional tilt offset in degrees""" tiltOffset: Float - """Path to the local alignment file""" - localAlignmentFile: String - """A placeholder for the affine transformation matrix.""" affineTransformationMatrix: String -} -interface EntityInterface implements Node { - """The Globally Unique ID of this object""" - _id: GlobalID! -} + """S3 path to the metadata file for this alignment""" + s3AlignmentMetadata: String -"""An object with a Globally Unique ID""" -interface Node { - """The Globally Unique ID of this object""" - _id: GlobalID! -} + """HTTPS url to the metadata file for this alignment""" + httpsAlignmentMetadata: String -""" -The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. -""" -scalar GlobalID + """Whether this is the portal standard alignment""" + isPortalStandard: Boolean +} """A connection to a list of items.""" type AnnotationFileConnection { @@ -163,21 +381,6 @@ type AnnotationFileConnection { edges: [AnnotationFileEdge!]! } -"""Information to aid in pagination.""" -type PageInfo { - """When paginating forwards, are there more items?""" - hasNextPage: Boolean! - - """When paginating backwards, are there more items?""" - hasPreviousPage: Boolean! - - """When paginating backwards, the cursor to continue.""" - startCursor: String - - """When paginating forwards, the cursor to continue.""" - endCursor: String -} - """An edge in a connection.""" type AnnotationFileEdge { """A cursor for use in pagination""" @@ -232,6 +435,7 @@ input AlignmentWhereClause { run: RunWhereClause runId: IntComparators alignmentType: Alignment_type_enumEnumComparators + alignmentMethod: Alignment_method_type_enumEnumComparators volumeXDimension: FloatComparators volumeYDimension: FloatComparators volumeZDimension: FloatComparators @@ -240,8 +444,10 @@ input AlignmentWhereClause { volumeZOffset: FloatComparators xRotationOffset: FloatComparators tiltOffset: FloatComparators - localAlignmentFile: StrComparators affineTransformationMatrix: StrComparators + s3AlignmentMetadata: StrComparators + httpsAlignmentMetadata: StrComparators + isPortalStandard: BoolComparators id: IntComparators } @@ -284,6 +490,7 @@ input AnnotationWhereClause { run: RunWhereClause runId: IntComparators annotationShapes: AnnotationShapeWhereClause + methodLinks: AnnotationMethodLinkWhereClause authors: AnnotationAuthorWhereClause deposition: DepositionWhereClause depositionId: IntComparators @@ -291,7 +498,6 @@ input AnnotationWhereClause { httpsMetadataPath: StrComparators annotationPublication: StrComparators annotationMethod: StrComparators - methodLinks: StrComparators groundTruthStatus: BoolComparators objectId: StrComparators objectName: StrComparators @@ -316,6 +522,8 @@ input RunWhereClause { dataset: DatasetWhereClause datasetId: IntComparators frames: FrameWhereClause + gainFiles: GainFileWhereClause + frameAcquisitionFiles: FrameAcquisitionFileWhereClause tiltseries: TiltseriesWhereClause tomogramVoxelSpacings: TomogramVoxelSpacingWhereClause tomograms: TomogramWhereClause @@ -426,35 +634,31 @@ input BoolComparators { input FrameWhereClause { deposition: DepositionWhereClause depositionId: IntComparators - perSectionParameters: PerSectionParametersWhereClause run: RunWhereClause runId: IntComparators rawAngle: FloatComparators acquisitionOrder: IntComparators dose: FloatComparators isGainCorrected: BoolComparators - s3GainFile: StrComparators - httpsGainFile: StrComparators - s3Prefix: StrComparators - httpsPrefix: StrComparators + s3FramePath: StrComparators + httpsFramePath: StrComparators id: IntComparators } -input PerSectionParametersWhereClause { - frame: FrameWhereClause - frameId: IntComparators - tiltseries: TiltseriesWhereClause - tiltseriesId: IntComparators - zIndex: IntComparators - defocus: FloatComparators - astigmatism: FloatComparators - astigmaticAngle: FloatComparators - id: IntComparators +input FloatComparators { + _eq: Float + _neq: Float + _in: [Float!] + _nin: [Float!] + _gt: Float + _gte: Float + _lt: Float + _lte: Float + _is_null: Boolean } input TiltseriesWhereClause { alignments: AlignmentWhereClause - perSectionParameters: PerSectionParametersWhereClause run: RunWhereClause runId: IntComparators deposition: DepositionWhereClause @@ -463,12 +667,8 @@ input TiltseriesWhereClause { s3MrcFile: StrComparators httpsOmezarrDir: StrComparators httpsMrcFile: StrComparators - s3CollectionMetadata: StrComparators - httpsCollectionMetadata: StrComparators s3AngleList: StrComparators httpsAngleList: StrComparators - s3GainFile: StrComparators - httpsGainFile: StrComparators accelerationVoltage: IntComparators sphericalAberrationConstant: FloatComparators microscopeManufacturer: Tiltseries_microscope_manufacturer_enumEnumComparators @@ -493,22 +693,9 @@ input TiltseriesWhereClause { isAligned: BoolComparators pixelSpacing: FloatComparators alignedTiltseriesBinning: IntComparators - framesCount: IntComparators id: IntComparators } -input FloatComparators { - _eq: Float - _neq: Float - _in: [Float!] - _nin: [Float!] - _gt: Float - _gte: Float - _lt: Float - _lte: Float - _is_null: Boolean -} - input Tiltseries_microscope_manufacturer_enumEnumComparators { _eq: tiltseries_microscope_manufacturer_enum _neq: tiltseries_microscope_manufacturer_enum @@ -549,7 +736,9 @@ input TomogramWhereClause { tomogramVersion: FloatComparators processingSoftware: StrComparators reconstructionSoftware: StrComparators - isCanonical: BoolComparators + isPortalStandard: BoolComparators + isAuthorSubmitted: BoolComparators + isVisualizationDefault: BoolComparators s3OmezarrDir: StrComparators httpsOmezarrDir: StrComparators s3MrcFile: StrComparators @@ -564,8 +753,12 @@ input TomogramWhereClause { keyPhotoUrl: StrComparators keyPhotoThumbnailUrl: StrComparators neuroglancerConfig: StrComparators - isStandardized: BoolComparators + publications: StrComparators + relatedDatabaseEntries: StrComparators id: IntComparators + depositionDate: DatetimeComparators + releaseDate: DatetimeComparators + lastModifiedDate: DatetimeComparators } input TomogramAuthorWhereClause { @@ -649,6 +842,21 @@ enum tomogram_processing_enum { raw } +input DatetimeComparators { + _eq: DateTime + _neq: DateTime + _in: [DateTime!] + _nin: [DateTime!] + _gt: DateTime + _gte: DateTime + _lt: DateTime + _lte: DateTime + _is_null: Boolean +} + +"""Date with time (isoformat)""" +scalar DateTime + input DepositionTypeWhereClause { deposition: DepositionWhereClause depositionId: IntComparators @@ -674,21 +882,6 @@ enum deposition_types_enum { tomogram } -input DatetimeComparators { - _eq: DateTime - _neq: DateTime - _in: [DateTime!] - _nin: [DateTime!] - _gt: DateTime - _gte: DateTime - _lt: DateTime - _lte: DateTime - _is_null: Boolean -} - -"""Date with time (isoformat)""" -scalar DateTime - input DatasetFundingWhereClause { dataset: DatasetWhereClause datasetId: IntComparators @@ -735,6 +928,51 @@ enum sample_type_enum { other } +input GainFileWhereClause { + run: RunWhereClause + runId: IntComparators + s3FilePath: StrComparators + httpsFilePath: StrComparators + id: IntComparators +} + +input FrameAcquisitionFileWhereClause { + run: RunWhereClause + runId: IntComparators + s3MdocPath: StrComparators + httpsMdocPath: StrComparators + id: IntComparators +} + +input AnnotationMethodLinkWhereClause { + annotation: AnnotationWhereClause + annotationId: IntComparators + linkType: Annotation_method_link_type_enumEnumComparators + name: StrComparators + link: StrComparators + id: IntComparators +} + +input Annotation_method_link_type_enumEnumComparators { + _eq: annotation_method_link_type_enum + _neq: annotation_method_link_type_enum + _in: [annotation_method_link_type_enum!] + _nin: [annotation_method_link_type_enum!] + _gt: annotation_method_link_type_enum + _gte: annotation_method_link_type_enum + _lt: annotation_method_link_type_enum + _lte: annotation_method_link_type_enum + _is_null: Boolean +} + +enum annotation_method_link_type_enum { + documentation + models_weights + other + source_code + website +} + input AnnotationAuthorWhereClause { annotation: AnnotationWhereClause annotationId: IntComparators @@ -813,8 +1051,7 @@ input PerSectionAlignmentParametersWhereClause { zIndex: IntComparators xOffset: FloatComparators yOffset: FloatComparators - inPlaneRotation: FloatComparators - beamTilt: FloatComparators + volumeXRotation: FloatComparators tiltAngle: FloatComparators id: IntComparators } @@ -836,11 +1073,30 @@ enum alignment_type_enum { GLOBAL } +input Alignment_method_type_enumEnumComparators { + _eq: alignment_method_type_enum + _neq: alignment_method_type_enum + _in: [alignment_method_type_enum!] + _nin: [alignment_method_type_enum!] + _gt: alignment_method_type_enum + _gte: alignment_method_type_enum + _lt: alignment_method_type_enum + _lte: alignment_method_type_enum + _is_null: Boolean +} + +enum alignment_method_type_enum { + projection_matching + patch_tracking + fiducial_based +} + input AlignmentOrderByClause { deposition: DepositionOrderByClause tiltseries: TiltseriesOrderByClause run: RunOrderByClause alignmentType: orderBy + alignmentMethod: orderBy volumeXDimension: orderBy volumeYDimension: orderBy volumeZDimension: orderBy @@ -849,8 +1105,10 @@ input AlignmentOrderByClause { volumeZOffset: orderBy xRotationOffset: orderBy tiltOffset: orderBy - localAlignmentFile: orderBy affineTransformationMatrix: orderBy + s3AlignmentMetadata: orderBy + httpsAlignmentMetadata: orderBy + isPortalStandard: orderBy id: orderBy } @@ -883,12 +1141,8 @@ input TiltseriesOrderByClause { s3MrcFile: orderBy httpsOmezarrDir: orderBy httpsMrcFile: orderBy - s3CollectionMetadata: orderBy - httpsCollectionMetadata: orderBy s3AngleList: orderBy httpsAngleList: orderBy - s3GainFile: orderBy - httpsGainFile: orderBy accelerationVoltage: orderBy sphericalAberrationConstant: orderBy microscopeManufacturer: orderBy @@ -913,7 +1167,6 @@ input TiltseriesOrderByClause { isAligned: orderBy pixelSpacing: orderBy alignedTiltseriesBinning: orderBy - framesCount: orderBy id: orderBy } @@ -1014,6 +1267,23 @@ type Annotation implements EntityInterface & Node { last: Int = null ): AnnotationShapeConnection! annotationShapesAggregate(where: AnnotationShapeWhereClause = null): AnnotationShapeAggregate + methodLinks( + where: AnnotationMethodLinkWhereClause = null + orderBy: [AnnotationMethodLinkOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationMethodLinkConnection! + methodLinksAggregate(where: AnnotationMethodLinkWhereClause = null): AnnotationMethodLinkAggregate authors( where: AnnotationAuthorWhereClause = null orderBy: [AnnotationAuthorOrderByClause!] = [] @@ -1050,11 +1320,6 @@ type Annotation implements EntityInterface & Node { """ annotationMethod: String! - """ - Provides links to information on the method used for generating annotation, comma separated - """ - methodLinks: String - """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -1117,255 +1382,106 @@ type Annotation implements EntityInterface & Node { lastModifiedDate: DateTime! } -type Run implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """Numeric identifier (May change!)""" - id: Int! - alignments( - where: AlignmentWhereClause = null - orderBy: [AlignmentOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): AlignmentConnection! - alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate - annotations( - where: AnnotationWhereClause = null - orderBy: [AnnotationOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): AnnotationConnection! - annotationsAggregate(where: AnnotationWhereClause = null): AnnotationAggregate - dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset - datasetId: Int! - frames( - where: FrameWhereClause = null - orderBy: [FrameOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): FrameConnection! - framesAggregate(where: FrameWhereClause = null): FrameAggregate - tiltseries( - where: TiltseriesWhereClause = null - orderBy: [TiltseriesOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): TiltseriesConnection! - tiltseriesAggregate(where: TiltseriesWhereClause = null): TiltseriesAggregate - tomogramVoxelSpacings( - where: TomogramVoxelSpacingWhereClause = null - orderBy: [TomogramVoxelSpacingOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): TomogramVoxelSpacingConnection! - tomogramVoxelSpacingsAggregate(where: TomogramVoxelSpacingWhereClause = null): TomogramVoxelSpacingAggregate - tomograms( - where: TomogramWhereClause = null - orderBy: [TomogramOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): TomogramConnection! - tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate - - """Short name for this experiment run""" - name: String! - - """The S3 public bucket path where this run is contained""" - s3Prefix: String! - - """The HTTPS directory path where this run is contained url""" - httpsPrefix: String! -} - """A connection to a list of items.""" -type AlignmentConnection { +type AnnotationShapeConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [AlignmentEdge!]! + edges: [AnnotationShapeEdge!]! } """An edge in a connection.""" -type AlignmentEdge { +type AnnotationShapeEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: Alignment! + node: AnnotationShape! } -type AlignmentAggregate { - aggregate: [AlignmentAggregateFunctions!] +input AnnotationShapeOrderByClause { + annotation: AnnotationOrderByClause + shapeType: orderBy + id: orderBy } -type AlignmentAggregateFunctions { - sum: AlignmentNumericalColumns - avg: AlignmentNumericalColumns - stddev: AlignmentNumericalColumns - variance: AlignmentNumericalColumns - min: AlignmentMinMaxColumns - max: AlignmentMinMaxColumns - groupBy: AlignmentGroupByOptions - count(distinct: Boolean = false, columns: AlignmentCountColumns = null): Int +input AnnotationOrderByClause { + run: RunOrderByClause + deposition: DepositionOrderByClause + s3MetadataPath: orderBy + httpsMetadataPath: orderBy + annotationPublication: orderBy + annotationMethod: orderBy + groundTruthStatus: orderBy + objectId: orderBy + objectName: orderBy + objectDescription: orderBy + objectState: orderBy + objectCount: orderBy + confidencePrecision: orderBy + confidenceRecall: orderBy + groundTruthUsed: orderBy + annotationSoftware: orderBy + isCuratorRecommended: orderBy + methodType: orderBy + depositionDate: orderBy + releaseDate: orderBy + lastModifiedDate: orderBy + id: orderBy } -type AlignmentNumericalColumns { - volumeXDimension: Float - volumeYDimension: Float - volumeZDimension: Float - volumeXOffset: Float - volumeYOffset: Float - volumeZOffset: Float - xRotationOffset: Float - tiltOffset: Float - id: Int +type AnnotationShapeAggregate { + aggregate: [AnnotationShapeAggregateFunctions!] } -type AlignmentMinMaxColumns { - volumeXDimension: Float - volumeYDimension: Float - volumeZDimension: Float - volumeXOffset: Float - volumeYOffset: Float - volumeZOffset: Float - xRotationOffset: Float - tiltOffset: Float - localAlignmentFile: String - affineTransformationMatrix: String +type AnnotationShapeAggregateFunctions { + sum: AnnotationShapeNumericalColumns + avg: AnnotationShapeNumericalColumns + stddev: AnnotationShapeNumericalColumns + variance: AnnotationShapeNumericalColumns + min: AnnotationShapeMinMaxColumns + max: AnnotationShapeMinMaxColumns + groupBy: AnnotationShapeGroupByOptions + count(distinct: Boolean = false, columns: AnnotationShapeCountColumns = null): Int +} + +type AnnotationShapeNumericalColumns { id: Int } -type AlignmentGroupByOptions { - deposition: DepositionGroupByOptions - tiltseries: TiltseriesGroupByOptions - run: RunGroupByOptions - alignmentType: alignment_type_enum - volumeXDimension: Float - volumeYDimension: Float - volumeZDimension: Float - volumeXOffset: Float - volumeYOffset: Float - volumeZOffset: Float - xRotationOffset: Float - tiltOffset: Float - localAlignmentFile: String - affineTransformationMatrix: String +type AnnotationShapeMinMaxColumns { id: Int } -type DepositionGroupByOptions { - title: String - description: String - depositionPublications: String - relatedDatabaseEntries: String - depositionDate: DateTime - releaseDate: DateTime - lastModifiedDate: DateTime - keyPhotoUrl: String - keyPhotoThumbnailUrl: String +type AnnotationShapeGroupByOptions { + annotation: AnnotationGroupByOptions + shapeType: annotation_file_shape_type_enum id: Int } -type TiltseriesGroupByOptions { +type AnnotationGroupByOptions { run: RunGroupByOptions deposition: DepositionGroupByOptions - s3OmezarrDir: String - s3MrcFile: String - httpsOmezarrDir: String - httpsMrcFile: String - s3CollectionMetadata: String - httpsCollectionMetadata: String - s3AngleList: String - httpsAngleList: String - s3GainFile: String - httpsGainFile: String - accelerationVoltage: Int - sphericalAberrationConstant: Float - microscopeManufacturer: tiltseries_microscope_manufacturer_enum - microscopeModel: String - microscopeEnergyFilter: String - microscopePhasePlate: String - microscopeImageCorrector: String - microscopeAdditionalInfo: String - cameraManufacturer: String - cameraModel: String - tiltMin: Float - tiltMax: Float - tiltRange: Float - tiltStep: Float - tiltingScheme: String - tiltAxis: Float - totalFlux: Float - dataAcquisitionSoftware: String - relatedEmpiarEntry: String - binningFromFrames: Float - tiltSeriesQuality: Int - isAligned: Boolean - pixelSpacing: Float - alignedTiltseriesBinning: Int - framesCount: Int + s3MetadataPath: String + httpsMetadataPath: String + annotationPublication: String + annotationMethod: String + groundTruthStatus: Boolean + objectId: String + objectName: String + objectDescription: String + objectState: String + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float + groundTruthUsed: String + annotationSoftware: String + isCuratorRecommended: Boolean + methodType: annotation_method_type_enum + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime id: Int } @@ -1407,323 +1523,248 @@ type DatasetGroupByOptions { id: Int } -enum AlignmentCountColumns { +type DepositionGroupByOptions { + title: String + description: String + depositionPublications: String + relatedDatabaseEntries: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + id: Int +} + +enum AnnotationShapeCountColumns { + annotation annotationFiles - perSectionAlignments - deposition - tiltseries - tomograms - run - alignmentType - volumeXDimension - volumeYDimension - volumeZDimension - volumeXOffset - volumeYOffset - volumeZOffset - xRotationOffset - tiltOffset - localAlignmentFile - affineTransformationMatrix + shapeType id } """A connection to a list of items.""" -type AnnotationConnection { +type AnnotationMethodLinkConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [AnnotationEdge!]! + edges: [AnnotationMethodLinkEdge!]! } """An edge in a connection.""" -type AnnotationEdge { +type AnnotationMethodLinkEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: Annotation! + node: AnnotationMethodLink! } -input AnnotationOrderByClause { - run: RunOrderByClause - deposition: DepositionOrderByClause - s3MetadataPath: orderBy - httpsMetadataPath: orderBy - annotationPublication: orderBy - annotationMethod: orderBy - methodLinks: orderBy - groundTruthStatus: orderBy - objectId: orderBy - objectName: orderBy - objectDescription: orderBy - objectState: orderBy - objectCount: orderBy - confidencePrecision: orderBy - confidenceRecall: orderBy - groundTruthUsed: orderBy - annotationSoftware: orderBy - isCuratorRecommended: orderBy - methodType: orderBy - depositionDate: orderBy - releaseDate: orderBy - lastModifiedDate: orderBy +""" +A set of links to models, source code, documentation, etc referenced by annotation method +""" +type AnnotationMethodLink implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation + annotationId: Int + + """Type of link (e.g. model, source code, documentation)""" + linkType: annotation_method_link_type_enum! + + """user readable name of the resource""" + name: String + + """URL to the resource""" + link: String! +} + +input AnnotationMethodLinkOrderByClause { + annotation: AnnotationOrderByClause + linkType: orderBy + name: orderBy + link: orderBy id: orderBy } -type AnnotationAggregate { - aggregate: [AnnotationAggregateFunctions!] +type AnnotationMethodLinkAggregate { + aggregate: [AnnotationMethodLinkAggregateFunctions!] } -type AnnotationAggregateFunctions { - sum: AnnotationNumericalColumns - avg: AnnotationNumericalColumns - stddev: AnnotationNumericalColumns - variance: AnnotationNumericalColumns - min: AnnotationMinMaxColumns - max: AnnotationMinMaxColumns - groupBy: AnnotationGroupByOptions - count(distinct: Boolean = false, columns: AnnotationCountColumns = null): Int +type AnnotationMethodLinkAggregateFunctions { + sum: AnnotationMethodLinkNumericalColumns + avg: AnnotationMethodLinkNumericalColumns + stddev: AnnotationMethodLinkNumericalColumns + variance: AnnotationMethodLinkNumericalColumns + min: AnnotationMethodLinkMinMaxColumns + max: AnnotationMethodLinkMinMaxColumns + groupBy: AnnotationMethodLinkGroupByOptions + count(distinct: Boolean = false, columns: AnnotationMethodLinkCountColumns = null): Int } -type AnnotationNumericalColumns { - objectCount: Int - confidencePrecision: Float - confidenceRecall: Float +type AnnotationMethodLinkNumericalColumns { id: Int } -type AnnotationMinMaxColumns { - s3MetadataPath: String - httpsMetadataPath: String - annotationPublication: String - annotationMethod: String - methodLinks: String - objectId: String - objectName: String - objectDescription: String - objectState: String - objectCount: Int - confidencePrecision: Float - confidenceRecall: Float - groundTruthUsed: String - annotationSoftware: String - depositionDate: DateTime - releaseDate: DateTime - lastModifiedDate: DateTime +type AnnotationMethodLinkMinMaxColumns { + name: String + link: String id: Int } -type AnnotationGroupByOptions { - run: RunGroupByOptions - deposition: DepositionGroupByOptions - s3MetadataPath: String - httpsMetadataPath: String - annotationPublication: String - annotationMethod: String - methodLinks: String - groundTruthStatus: Boolean - objectId: String - objectName: String - objectDescription: String - objectState: String - objectCount: Int - confidencePrecision: Float - confidenceRecall: Float - groundTruthUsed: String - annotationSoftware: String - isCuratorRecommended: Boolean - methodType: annotation_method_type_enum - depositionDate: DateTime - releaseDate: DateTime - lastModifiedDate: DateTime +type AnnotationMethodLinkGroupByOptions { + annotation: AnnotationGroupByOptions + linkType: annotation_method_link_type_enum + name: String + link: String id: Int } -enum AnnotationCountColumns { - run - annotationShapes - authors - deposition - s3MetadataPath - httpsMetadataPath - annotationPublication - annotationMethod - methodLinks - groundTruthStatus - objectId - objectName - objectDescription - objectState - objectCount - confidencePrecision - confidenceRecall - groundTruthUsed - annotationSoftware - isCuratorRecommended - methodType - depositionDate - releaseDate - lastModifiedDate +enum AnnotationMethodLinkCountColumns { + annotation + linkType + name + link id } -"""A collection of imaging experiments on the same organism""" -type Dataset implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """ - An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree - """ - id: Int! - deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int! - fundingSources( - where: DatasetFundingWhereClause = null - orderBy: [DatasetFundingOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): DatasetFundingConnection! - fundingSourcesAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate - authors( - where: DatasetAuthorWhereClause = null - orderBy: [DatasetAuthorOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): DatasetAuthorConnection! - authorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate - runs( - where: RunWhereClause = null - orderBy: [RunOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null - - """Returns the items in the list that come after the specified cursor.""" - after: String = null - - """Returns the first n items from the list.""" - first: Int = null - - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): RunConnection! - runsAggregate(where: RunWhereClause = null): RunAggregate - - """Title of a CryoET dataset""" - title: String! +"""A connection to a list of items.""" +type AnnotationAuthorConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """ - A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. - """ - description: String! + """Contains the nodes in this connection""" + edges: [AnnotationAuthorEdge!]! +} - """ - Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens - """ - organismName: String +"""An edge in a connection.""" +type AnnotationAuthorEdge { + """A cursor for use in pagination""" + cursor: String! - """NCBI taxonomy identifier for the organism, e.g. 9606""" - organismTaxid: Int + """The item at the end of the edge""" + node: AnnotationAuthor! +} - """ - Name of the tissue from which a biological sample used in a CryoET study is derived from. - """ - tissueName: String +"""Metadata for an annotation's authors""" +type AnnotationAuthor implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! - """UBERON identifier for the tissue""" - tissueId: String + """Numeric identifier (May change!)""" + id: Int! + annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation + annotationId: Int - """ - Name of the cell from which a biological sample used in a CryoET study is derived from. - """ - cellName: String + """The order in which the author appears in the publication""" + authorListOrder: Int! - """Cell Ontology identifier for the cell type""" - cellTypeId: String + """A unique, persistent identifier for researchers, provided by ORCID.""" + orcid: String - """Cell line or strain for the sample.""" - cellStrainName: String + """Full name of an annotation author (e.g. Jane Doe).""" + name: String! - """Link to more information about the cell strain""" - cellStrainId: String + """Email address for this author""" + email: String """ - Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. """ - sampleType: sample_type_enum - - """Describe how the sample was prepared.""" - samplePreparation: String + affiliationName: String - """Describe Cryo-ET grid preparation.""" - gridPreparation: String + """Address of the institution an annotator is affiliated with.""" + affiliationAddress: String """ - Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). """ - otherSetup: String - - """URL for the dataset preview image.""" - keyPhotoUrl: String - - """URL for the thumbnail of preview image.""" - keyPhotoThumbnailUrl: String + affiliationIdentifier: String - """Name of the cellular component""" - cellComponentName: String + """Indicates whether an annotator is the corresponding author""" + correspondingAuthorStatus: Boolean """ - If the dataset focuses on a specific part of a cell, the subset is included here + Indicates whether an author is the main person executing the annotation, especially on manual annotation """ - cellComponentId: String + primaryAuthorStatus: Boolean +} - """Date when a dataset is initially received by the Data Portal.""" - depositionDate: DateTime! +input AnnotationAuthorOrderByClause { + annotation: AnnotationOrderByClause + id: orderBy + authorListOrder: orderBy + orcid: orderBy + name: orderBy + email: orderBy + affiliationName: orderBy + affiliationAddress: orderBy + affiliationIdentifier: orderBy + correspondingAuthorStatus: orderBy + primaryAuthorStatus: orderBy +} - """Date when a dataset is made available on the Data Portal.""" - releaseDate: DateTime! +type AnnotationAuthorAggregate { + aggregate: [AnnotationAuthorAggregateFunctions!] +} - """Date when a released dataset is last modified.""" - lastModifiedDate: DateTime! +type AnnotationAuthorAggregateFunctions { + sum: AnnotationAuthorNumericalColumns + avg: AnnotationAuthorNumericalColumns + stddev: AnnotationAuthorNumericalColumns + variance: AnnotationAuthorNumericalColumns + min: AnnotationAuthorMinMaxColumns + max: AnnotationAuthorMinMaxColumns + groupBy: AnnotationAuthorGroupByOptions + count(distinct: Boolean = false, columns: AnnotationAuthorCountColumns = null): Int +} - """ - Comma-separated list of DOIs for publications associated with the dataset. - """ - datasetPublications: String +type AnnotationAuthorNumericalColumns { + id: Int + authorListOrder: Int +} - """ - If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. - """ - relatedDatabaseEntries: String +type AnnotationAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} - """The S3 public bucket path where this dataset is contained""" - s3Prefix: String! +type AnnotationAuthorGroupByOptions { + annotation: AnnotationGroupByOptions + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean +} - """The https directory path where this dataset is contained""" - httpsPrefix: String! +enum AnnotationAuthorCountColumns { + annotation + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus } """Deposition metadata""" @@ -2029,134 +2070,249 @@ enum DepositionAuthorCountColumns { primaryAuthorStatus } -"""A connection to a list of items.""" -type DatasetConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! - - """Contains the nodes in this connection""" - edges: [DatasetEdge!]! +type AlignmentAggregate { + aggregate: [AlignmentAggregateFunctions!] +} + +type AlignmentAggregateFunctions { + sum: AlignmentNumericalColumns + avg: AlignmentNumericalColumns + stddev: AlignmentNumericalColumns + variance: AlignmentNumericalColumns + min: AlignmentMinMaxColumns + max: AlignmentMinMaxColumns + groupBy: AlignmentGroupByOptions + count(distinct: Boolean = false, columns: AlignmentCountColumns = null): Int +} + +type AlignmentNumericalColumns { + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + id: Int +} + +type AlignmentMinMaxColumns { + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + affineTransformationMatrix: String + s3AlignmentMetadata: String + httpsAlignmentMetadata: String + id: Int +} + +type AlignmentGroupByOptions { + deposition: DepositionGroupByOptions + tiltseries: TiltseriesGroupByOptions + run: RunGroupByOptions + alignmentType: alignment_type_enum + alignmentMethod: alignment_method_type_enum + volumeXDimension: Float + volumeYDimension: Float + volumeZDimension: Float + volumeXOffset: Float + volumeYOffset: Float + volumeZOffset: Float + xRotationOffset: Float + tiltOffset: Float + affineTransformationMatrix: String + s3AlignmentMetadata: String + httpsAlignmentMetadata: String + isPortalStandard: Boolean + id: Int +} + +type TiltseriesGroupByOptions { + run: RunGroupByOptions + deposition: DepositionGroupByOptions + s3OmezarrDir: String + s3MrcFile: String + httpsOmezarrDir: String + httpsMrcFile: String + s3AngleList: String + httpsAngleList: String + accelerationVoltage: Int + sphericalAberrationConstant: Float + microscopeManufacturer: tiltseries_microscope_manufacturer_enum + microscopeModel: String + microscopeEnergyFilter: String + microscopePhasePlate: String + microscopeImageCorrector: String + microscopeAdditionalInfo: String + cameraManufacturer: String + cameraModel: String + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltingScheme: String + tiltAxis: Float + totalFlux: Float + dataAcquisitionSoftware: String + relatedEmpiarEntry: String + binningFromFrames: Float + tiltSeriesQuality: Int + isAligned: Boolean + pixelSpacing: Float + alignedTiltseriesBinning: Int + id: Int +} + +enum AlignmentCountColumns { + annotationFiles + perSectionAlignments + deposition + tiltseries + tomograms + run + alignmentType + alignmentMethod + volumeXDimension + volumeYDimension + volumeZDimension + volumeXOffset + volumeYOffset + volumeZOffset + xRotationOffset + tiltOffset + affineTransformationMatrix + s3AlignmentMetadata + httpsAlignmentMetadata + isPortalStandard + id +} + +"""A connection to a list of items.""" +type AnnotationConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [AnnotationEdge!]! } """An edge in a connection.""" -type DatasetEdge { +type AnnotationEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: Dataset! + node: Annotation! } -type DatasetAggregate { - aggregate: [DatasetAggregateFunctions!] +type AnnotationAggregate { + aggregate: [AnnotationAggregateFunctions!] } -type DatasetAggregateFunctions { - sum: DatasetNumericalColumns - avg: DatasetNumericalColumns - stddev: DatasetNumericalColumns - variance: DatasetNumericalColumns - min: DatasetMinMaxColumns - max: DatasetMinMaxColumns - groupBy: DatasetGroupByOptions - count(distinct: Boolean = false, columns: DatasetCountColumns = null): Int +type AnnotationAggregateFunctions { + sum: AnnotationNumericalColumns + avg: AnnotationNumericalColumns + stddev: AnnotationNumericalColumns + variance: AnnotationNumericalColumns + min: AnnotationMinMaxColumns + max: AnnotationMinMaxColumns + groupBy: AnnotationGroupByOptions + count(distinct: Boolean = false, columns: AnnotationCountColumns = null): Int } -type DatasetNumericalColumns { - organismTaxid: Int +type AnnotationNumericalColumns { + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float id: Int } -type DatasetMinMaxColumns { - title: String - description: String - organismName: String - organismTaxid: Int - tissueName: String - tissueId: String - cellName: String - cellTypeId: String - cellStrainName: String - cellStrainId: String - samplePreparation: String - gridPreparation: String - otherSetup: String - keyPhotoUrl: String - keyPhotoThumbnailUrl: String - cellComponentName: String - cellComponentId: String +type AnnotationMinMaxColumns { + s3MetadataPath: String + httpsMetadataPath: String + annotationPublication: String + annotationMethod: String + objectId: String + objectName: String + objectDescription: String + objectState: String + objectCount: Int + confidencePrecision: Float + confidenceRecall: Float + groundTruthUsed: String + annotationSoftware: String depositionDate: DateTime releaseDate: DateTime lastModifiedDate: DateTime - datasetPublications: String - relatedDatabaseEntries: String - s3Prefix: String - httpsPrefix: String id: Int } -enum DatasetCountColumns { - deposition - fundingSources +enum AnnotationCountColumns { + run + annotationShapes + methodLinks authors - runs - title - description - organismName - organismTaxid - tissueName - tissueId - cellName - cellTypeId - cellStrainName - cellStrainId - sampleType - samplePreparation - gridPreparation - otherSetup - keyPhotoUrl - keyPhotoThumbnailUrl - cellComponentName - cellComponentId + deposition + s3MetadataPath + httpsMetadataPath + annotationPublication + annotationMethod + groundTruthStatus + objectId + objectName + objectDescription + objectState + objectCount + confidencePrecision + confidenceRecall + groundTruthUsed + annotationSoftware + isCuratorRecommended + methodType depositionDate releaseDate lastModifiedDate - datasetPublications - relatedDatabaseEntries - s3Prefix - httpsPrefix id } """A connection to a list of items.""" -type FrameConnection { +type DatasetConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [FrameEdge!]! + edges: [DatasetEdge!]! } """An edge in a connection.""" -type FrameEdge { +type DatasetEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: Frame! + node: Dataset! } -type Frame implements EntityInterface & Node { +"""A collection of imaging experiments on the same organism""" +type Dataset implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! - """Numeric identifier (May change!)""" + """ + An identifier for a CryoET dataset, assigned by the Data Portal. Used to identify the dataset as the directory name in data tree + """ id: Int! deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int - perSectionParameters( - where: PerSectionParametersWhereClause = null - orderBy: [PerSectionParametersOrderByClause!] = [] + depositionId: Int! + fundingSources( + where: DatasetFundingWhereClause = null + orderBy: [DatasetFundingOrderByClause!] = [] """Returns the items in the list that come before the specified cursor.""" before: String = null @@ -2169,102 +2325,11 @@ type Frame implements EntityInterface & Node { """Returns the items in the list that come after the specified cursor.""" last: Int = null - ): PerSectionParametersConnection! - perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate - run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run - runId: Int - - """Camera angle for a frame""" - rawAngle: Float! - - """Frame's acquistion order within a tilt experiment""" - acquisitionOrder: Int - - """The raw camera angle for a frame""" - dose: Float! - - """Whether this frame has been gain corrected""" - isGainCorrected: Boolean - - """S3 path to the gain file for this frame""" - s3GainFile: String - - """HTTPS path to the gain file for this frame""" - httpsGainFile: String - - """Path to a directory containing data for this entity as an S3 url""" - s3Prefix: String! - - """Path to a directory containing data for this entity as an HTTPS url""" - httpsPrefix: String! -} - -"""A connection to a list of items.""" -type PerSectionParametersConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! - - """Contains the nodes in this connection""" - edges: [PerSectionParametersEdge!]! -} - -"""An edge in a connection.""" -type PerSectionParametersEdge { - """A cursor for use in pagination""" - cursor: String! - - """The item at the end of the edge""" - node: PerSectionParameters! -} - -"""Record how frames get mapped to Tiltseries""" -type PerSectionParameters implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """Numeric identifier (May change!)""" - id: Int! - frame(where: FrameWhereClause = null, orderBy: [FrameOrderByClause!] = []): Frame - frameId: Int! - tiltseries(where: TiltseriesWhereClause = null, orderBy: [TiltseriesOrderByClause!] = []): Tiltseries - tiltseriesId: Int! - - """z-index of the frame in the tiltseries""" - zIndex: Int! - - """defocus amount""" - defocus: Float - - """Astigmatism amount for this frame""" - astigmatism: Float - - """Angle of ast""" - astigmaticAngle: Float -} - -input FrameOrderByClause { - deposition: DepositionOrderByClause - run: RunOrderByClause - rawAngle: orderBy - acquisitionOrder: orderBy - dose: orderBy - isGainCorrected: orderBy - s3GainFile: orderBy - httpsGainFile: orderBy - s3Prefix: orderBy - httpsPrefix: orderBy - id: orderBy -} - -type Tiltseries implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """Numeric identifier (May change!)""" - id: Int! - alignments( - where: AlignmentWhereClause = null - orderBy: [AlignmentOrderByClause!] = [] + ): DatasetFundingConnection! + fundingSourcesAggregate(where: DatasetFundingWhereClause = null): DatasetFundingAggregate + authors( + where: DatasetAuthorWhereClause = null + orderBy: [DatasetAuthorOrderByClause!] = [] """Returns the items in the list that come before the specified cursor.""" before: String = null @@ -2277,11 +2342,11 @@ type Tiltseries implements EntityInterface & Node { """Returns the items in the list that come after the specified cursor.""" last: Int = null - ): AlignmentConnection! - alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate - perSectionParameters( - where: PerSectionParametersWhereClause = null - orderBy: [PerSectionParametersOrderByClause!] = [] + ): DatasetAuthorConnection! + authorsAggregate(where: DatasetAuthorWhereClause = null): DatasetAuthorAggregate + runs( + where: RunWhereClause = null + orderBy: [RunOrderByClause!] = [] """Returns the items in the list that come before the specified cursor.""" before: String = null @@ -2294,622 +2359,246 @@ type Tiltseries implements EntityInterface & Node { """Returns the items in the list that come after the specified cursor.""" last: Int = null - ): PerSectionParametersConnection! - perSectionParametersAggregate(where: PerSectionParametersWhereClause = null): PerSectionParametersAggregate - run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run - runId: Int! - deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int - - """S3 path to this tiltseries in multiscale OME-Zarr format""" - s3OmezarrDir: String - - """S3 path to this tiltseries in MRC format (no scaling)""" - s3MrcFile: String - - """HTTPS path to this tiltseries in multiscale OME-Zarr format""" - httpsOmezarrDir: String - - """HTTPS path to this tiltseries in MRC format (no scaling)""" - httpsMrcFile: String + ): RunConnection! + runsAggregate(where: RunWhereClause = null): RunAggregate - """S3 path to the collection metadata file for this tiltseries""" - s3CollectionMetadata: String + """Title of a CryoET dataset""" + title: String! - """HTTPS path to the collection metadata file for this tiltseries""" - httpsCollectionMetadata: String + """ + A short description of a CryoET dataset, similar to an abstract for a journal article or dataset. + """ + description: String! - """S3 path to the angle list file for this tiltseries""" - s3AngleList: String + """ + Name of the organism from which a biological sample used in a CryoET study is derived from, e.g. homo sapiens + """ + organismName: String - """HTTPS path to the angle list file for this tiltseries""" - httpsAngleList: String + """NCBI taxonomy identifier for the organism, e.g. 9606""" + organismTaxid: Int - """S3 path to the gain file for this tiltseries""" - s3GainFile: String + """ + Name of the tissue from which a biological sample used in a CryoET study is derived from. + """ + tissueName: String - """HTTPS path to the gain file for this tiltseries""" - httpsGainFile: String + """UBERON identifier for the tissue""" + tissueId: String - """Electron Microscope Accelerator voltage in volts""" - accelerationVoltage: Int! + """ + Name of the cell from which a biological sample used in a CryoET study is derived from. + """ + cellName: String - """Spherical Aberration Constant of the objective lens in millimeters""" - sphericalAberrationConstant: Float! + """Cell Ontology identifier for the cell type""" + cellTypeId: String - """Name of the microscope manufacturer (FEI, TFS, JEOL)""" - microscopeManufacturer: tiltseries_microscope_manufacturer_enum! + """Cell line or strain for the sample.""" + cellStrainName: String - """Microscope model name""" - microscopeModel: String! + """Link to more information about the cell strain""" + cellStrainId: String - """Energy filter setup used""" - microscopeEnergyFilter: String! + """ + Type of samples used in a CryoET study. (cell, tissue, organism, intact organelle, in-vitro mixture, in-silico synthetic data, other) + """ + sampleType: sample_type_enum - """Phase plate configuration""" - microscopePhasePlate: String + """Describe how the sample was prepared.""" + samplePreparation: String - """Image corrector setup""" - microscopeImageCorrector: String + """Describe Cryo-ET grid preparation.""" + gridPreparation: String """ - Other microscope optical setup information, in addition to energy filter, phase plate and image corrector + Describe other setup not covered by sample preparation or grid preparation that may make this dataset unique in the same publication """ - microscopeAdditionalInfo: String - - """Name of the camera manufacturer""" - cameraManufacturer: String! + otherSetup: String - """Camera model name""" - cameraModel: String! + """URL for the dataset preview image.""" + keyPhotoUrl: String - """Minimal tilt angle in degrees""" - tiltMin: Float! + """URL for the thumbnail of preview image.""" + keyPhotoThumbnailUrl: String - """Maximal tilt angle in degrees""" - tiltMax: Float! + """Name of the cellular component""" + cellComponentName: String - """Total tilt range in degrees""" - tiltRange: Float! + """ + If the dataset focuses on a specific part of a cell, the subset is included here + """ + cellComponentId: String - """Tilt step in degrees""" - tiltStep: Float! + """Date when a dataset is initially received by the Data Portal.""" + depositionDate: DateTime! - """The order of stage tilting during acquisition of the data""" - tiltingScheme: String! + """Date when a dataset is made available on the Data Portal.""" + releaseDate: DateTime! - """Rotation angle in degrees""" - tiltAxis: Float! + """Date when a released dataset is last modified.""" + lastModifiedDate: DateTime! """ - Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + Comma-separated list of DOIs for publications associated with the dataset. """ - totalFlux: Float! - - """Software used to collect data""" - dataAcquisitionSoftware: String! + datasetPublications: String """ - If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + If a CryoET dataset is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. """ - relatedEmpiarEntry: String + relatedDatabaseEntries: String - """Describes the binning factor from frames to tilt series file""" - binningFromFrames: Float + """The S3 public bucket path where this dataset is contained""" + s3Prefix: String! - """ - Author assessment of tilt series quality within the dataset (1-5, 5 is best) - """ - tiltSeriesQuality: Int! + """The https directory path where this dataset is contained""" + httpsPrefix: String! +} - """Whether this tilt series is aligned""" - isAligned: Boolean! +"""A connection to a list of items.""" +type DatasetFundingConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Pixel spacing equal in both axes in angstroms""" - pixelSpacing: Float! + """Contains the nodes in this connection""" + edges: [DatasetFundingEdge!]! +} - """Binning factor of the aligned tilt series""" - alignedTiltseriesBinning: Int +"""An edge in a connection.""" +type DatasetFundingEdge { + """A cursor for use in pagination""" + cursor: String! - """Number of frames associated with this tiltseries""" - framesCount: Int + """The item at the end of the edge""" + node: DatasetFunding! } -input PerSectionParametersOrderByClause { - frame: FrameOrderByClause - tiltseries: TiltseriesOrderByClause - zIndex: orderBy - defocus: orderBy - astigmatism: orderBy - astigmaticAngle: orderBy - id: orderBy -} +"""Metadata for a dataset's funding sources""" +type DatasetFunding implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! -type PerSectionParametersAggregate { - aggregate: [PerSectionParametersAggregateFunctions!] -} + """Numeric identifier (May change!)""" + id: Int! + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int -type PerSectionParametersAggregateFunctions { - sum: PerSectionParametersNumericalColumns - avg: PerSectionParametersNumericalColumns - stddev: PerSectionParametersNumericalColumns - variance: PerSectionParametersNumericalColumns - min: PerSectionParametersMinMaxColumns - max: PerSectionParametersMinMaxColumns - groupBy: PerSectionParametersGroupByOptions - count(distinct: Boolean = false, columns: PerSectionParametersCountColumns = null): Int -} + """Name of the funding agency.""" + fundingAgencyName: String -type PerSectionParametersNumericalColumns { - zIndex: Int - defocus: Float - astigmatism: Float - astigmaticAngle: Float - id: Int + """Grant identifier provided by the funding agency.""" + grantId: String } -type PerSectionParametersMinMaxColumns { - zIndex: Int - defocus: Float - astigmatism: Float - astigmaticAngle: Float - id: Int +input DatasetFundingOrderByClause { + dataset: DatasetOrderByClause + fundingAgencyName: orderBy + grantId: orderBy + id: orderBy } -type PerSectionParametersGroupByOptions { - frame: FrameGroupByOptions - tiltseries: TiltseriesGroupByOptions - zIndex: Int - defocus: Float - astigmatism: Float - astigmaticAngle: Float - id: Int -} - -type FrameGroupByOptions { - deposition: DepositionGroupByOptions - run: RunGroupByOptions - rawAngle: Float - acquisitionOrder: Int - dose: Float - isGainCorrected: Boolean - s3GainFile: String - httpsGainFile: String - s3Prefix: String - httpsPrefix: String - id: Int -} - -enum PerSectionParametersCountColumns { - frame - tiltseries - zIndex - defocus - astigmatism - astigmaticAngle - id -} - -type FrameAggregate { - aggregate: [FrameAggregateFunctions!] -} - -type FrameAggregateFunctions { - sum: FrameNumericalColumns - avg: FrameNumericalColumns - stddev: FrameNumericalColumns - variance: FrameNumericalColumns - min: FrameMinMaxColumns - max: FrameMinMaxColumns - groupBy: FrameGroupByOptions - count(distinct: Boolean = false, columns: FrameCountColumns = null): Int +type DatasetFundingAggregate { + aggregate: [DatasetFundingAggregateFunctions!] } -type FrameNumericalColumns { - rawAngle: Float - acquisitionOrder: Int - dose: Float - id: Int +type DatasetFundingAggregateFunctions { + sum: DatasetFundingNumericalColumns + avg: DatasetFundingNumericalColumns + stddev: DatasetFundingNumericalColumns + variance: DatasetFundingNumericalColumns + min: DatasetFundingMinMaxColumns + max: DatasetFundingMinMaxColumns + groupBy: DatasetFundingGroupByOptions + count(distinct: Boolean = false, columns: DatasetFundingCountColumns = null): Int } -type FrameMinMaxColumns { - rawAngle: Float - acquisitionOrder: Int - dose: Float - s3GainFile: String - httpsGainFile: String - s3Prefix: String - httpsPrefix: String +type DatasetFundingNumericalColumns { id: Int } -enum FrameCountColumns { - deposition - perSectionParameters - run - rawAngle - acquisitionOrder - dose - isGainCorrected - s3GainFile - httpsGainFile - s3Prefix - httpsPrefix - id -} - -"""A connection to a list of items.""" -type TiltseriesConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! - - """Contains the nodes in this connection""" - edges: [TiltseriesEdge!]! -} - -"""An edge in a connection.""" -type TiltseriesEdge { - """A cursor for use in pagination""" - cursor: String! - - """The item at the end of the edge""" - node: Tiltseries! -} - -type TiltseriesAggregate { - aggregate: [TiltseriesAggregateFunctions!] -} - -type TiltseriesAggregateFunctions { - sum: TiltseriesNumericalColumns - avg: TiltseriesNumericalColumns - stddev: TiltseriesNumericalColumns - variance: TiltseriesNumericalColumns - min: TiltseriesMinMaxColumns - max: TiltseriesMinMaxColumns - groupBy: TiltseriesGroupByOptions - count(distinct: Boolean = false, columns: TiltseriesCountColumns = null): Int -} - -type TiltseriesNumericalColumns { - accelerationVoltage: Int - sphericalAberrationConstant: Float - tiltMin: Float - tiltMax: Float - tiltRange: Float - tiltStep: Float - tiltAxis: Float - totalFlux: Float - binningFromFrames: Float - tiltSeriesQuality: Int - pixelSpacing: Float - alignedTiltseriesBinning: Int - framesCount: Int +type DatasetFundingMinMaxColumns { + fundingAgencyName: String + grantId: String id: Int } -type TiltseriesMinMaxColumns { - s3OmezarrDir: String - s3MrcFile: String - httpsOmezarrDir: String - httpsMrcFile: String - s3CollectionMetadata: String - httpsCollectionMetadata: String - s3AngleList: String - httpsAngleList: String - s3GainFile: String - httpsGainFile: String - accelerationVoltage: Int - sphericalAberrationConstant: Float - microscopeModel: String - microscopeEnergyFilter: String - microscopePhasePlate: String - microscopeImageCorrector: String - microscopeAdditionalInfo: String - cameraManufacturer: String - cameraModel: String - tiltMin: Float - tiltMax: Float - tiltRange: Float - tiltStep: Float - tiltingScheme: String - tiltAxis: Float - totalFlux: Float - dataAcquisitionSoftware: String - relatedEmpiarEntry: String - binningFromFrames: Float - tiltSeriesQuality: Int - pixelSpacing: Float - alignedTiltseriesBinning: Int - framesCount: Int +type DatasetFundingGroupByOptions { + dataset: DatasetGroupByOptions + fundingAgencyName: String + grantId: String id: Int } -enum TiltseriesCountColumns { - alignments - perSectionParameters - run - deposition - s3OmezarrDir - s3MrcFile - httpsOmezarrDir - httpsMrcFile - s3CollectionMetadata - httpsCollectionMetadata - s3AngleList - httpsAngleList - s3GainFile - httpsGainFile - accelerationVoltage - sphericalAberrationConstant - microscopeManufacturer - microscopeModel - microscopeEnergyFilter - microscopePhasePlate - microscopeImageCorrector - microscopeAdditionalInfo - cameraManufacturer - cameraModel - tiltMin - tiltMax - tiltRange - tiltStep - tiltingScheme - tiltAxis - totalFlux - dataAcquisitionSoftware - relatedEmpiarEntry - binningFromFrames - tiltSeriesQuality - isAligned - pixelSpacing - alignedTiltseriesBinning - framesCount +enum DatasetFundingCountColumns { + dataset + fundingAgencyName + grantId id } """A connection to a list of items.""" -type TomogramConnection { +type DatasetAuthorConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [TomogramEdge!]! + edges: [DatasetAuthorEdge!]! } """An edge in a connection.""" -type TomogramEdge { +type DatasetAuthorEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: Tomogram! + node: DatasetAuthor! } -"""Metadata describing a tomogram.""" -type Tomogram implements EntityInterface & Node { +"""An author of a dataset""" +type DatasetAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! """Numeric identifier (May change!)""" id: Int! - alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment - alignmentId: Int - authors( - where: TomogramAuthorWhereClause = null - orderBy: [TomogramAuthorOrderByClause!] = [] - - """Returns the items in the list that come before the specified cursor.""" - before: String = null + dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset + datasetId: Int - """Returns the items in the list that come after the specified cursor.""" - after: String = null + """The order in which the author appears in the publication""" + authorListOrder: Int! - """Returns the first n items from the list.""" - first: Int = null + """A unique, persistent identifier for researchers, provided by ORCID.""" + orcid: String - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): TomogramAuthorConnection! - authorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate - deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition - depositionId: Int! - run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run - runId: Int - tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing - tomogramVoxelSpacingId: Int + """Full name of an author (e.g. Jane Doe).""" + name: String! - """Short name for this tomogram""" - name: String + """Email address for this author""" + email: String - """Number of pixels in the 3D data fast axis""" - sizeX: Int! + """Name of the institutions an author is affiliated with. Comma separated""" + affiliationName: String - """Number of pixels in the 3D data medium axis""" - sizeY: Int! + """Address of the institution an author is affiliated with.""" + affiliationAddress: String """ - Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt + A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). """ - sizeZ: Int! + affiliationIdentifier: String - """Voxel spacing equal in all three axes in angstroms""" - voxelSpacing: Float! + """Indicates whether an author is the corresponding author""" + correspondingAuthorStatus: Boolean """ - Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + Indicates whether an author is the main person associated with the corresponding dataset """ - fiducialAlignmentStatus: fiducial_alignment_status_enum! + primaryAuthorStatus: Boolean +} - """Describe reconstruction method (WBP, SART, SIRT)""" - reconstructionMethod: tomogram_reconstruction_method_enum! - - """Describe additional processing used to derive the tomogram""" - processing: tomogram_processing_enum! - - """Version of tomogram""" - tomogramVersion: Float - - """Processing software used to derive the tomogram""" - processingSoftware: String - - """Name of software used for reconstruction""" - reconstructionSoftware: String! - - """ - Is this tomogram considered the canonical tomogram for the run experiment? True=Yes - """ - isCanonical: Boolean - - """S3 path to this tomogram in multiscale OME-Zarr format""" - s3OmezarrDir: String - - """HTTPS path to this tomogram in multiscale OME-Zarr format""" - httpsOmezarrDir: String - - """S3 path to this tomogram in MRC format (no scaling)""" - s3MrcFile: String - - """HTTPS path to this tomogram in MRC format (no scaling)""" - httpsMrcFile: String - - """comma separated x,y,z dimensions of the unscaled tomogram""" - scale0Dimensions: String - - """comma separated x,y,z dimensions of the scale1 tomogram""" - scale1Dimensions: String - - """comma separated x,y,z dimensions of the scale2 tomogram""" - scale2Dimensions: String - - """Whether this tomogram is CTF corrected""" - ctfCorrected: Boolean - - """x offset data relative to the canonical tomogram in pixels""" - offsetX: Int! - - """y offset data relative to the canonical tomogram in pixels""" - offsetY: Int! - - """z offset data relative to the canonical tomogram in pixels""" - offsetZ: Int! - - """URL for the key photo""" - keyPhotoUrl: String - - """URL for the thumbnail of key photo""" - keyPhotoThumbnailUrl: String - - """the compact json of neuroglancer config""" - neuroglancerConfig: String - - """Whether this tomogram was generated per the portal's standards""" - isStandardized: Boolean! -} - -"""A connection to a list of items.""" -type TomogramAuthorConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! - - """Contains the nodes in this connection""" - edges: [TomogramAuthorEdge!]! -} - -"""An edge in a connection.""" -type TomogramAuthorEdge { - """A cursor for use in pagination""" - cursor: String! - - """The item at the end of the edge""" - node: TomogramAuthor! -} - -"""Author of a tomogram""" -type TomogramAuthor implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """Numeric identifier (May change!)""" - id: Int! - tomogram(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = []): Tomogram - tomogramId: Int - - """The order in which the author appears in the publication""" - authorListOrder: Int! - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """Full name of an author (e.g. Jane Doe).""" - name: String! - - """Email address for this author""" - email: String - - """Name of the institutions an author is affiliated with. Comma separated""" - affiliationName: String - - """Address of the institution an author is affiliated with.""" - affiliationAddress: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliationIdentifier: String - - """Indicates whether an author is the corresponding author""" - correspondingAuthorStatus: Boolean - - """Indicates whether an author is the main person creating the tomogram""" - primaryAuthorStatus: Boolean -} - -input TomogramOrderByClause { - alignment: AlignmentOrderByClause - deposition: DepositionOrderByClause - run: RunOrderByClause - tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause - name: orderBy - sizeX: orderBy - sizeY: orderBy - sizeZ: orderBy - voxelSpacing: orderBy - fiducialAlignmentStatus: orderBy - reconstructionMethod: orderBy - processing: orderBy - tomogramVersion: orderBy - processingSoftware: orderBy - reconstructionSoftware: orderBy - isCanonical: orderBy - s3OmezarrDir: orderBy - httpsOmezarrDir: orderBy - s3MrcFile: orderBy - httpsMrcFile: orderBy - scale0Dimensions: orderBy - scale1Dimensions: orderBy - scale2Dimensions: orderBy - ctfCorrected: orderBy - offsetX: orderBy - offsetY: orderBy - offsetZ: orderBy - keyPhotoUrl: orderBy - keyPhotoThumbnailUrl: orderBy - neuroglancerConfig: orderBy - isStandardized: orderBy - id: orderBy -} - -input TomogramVoxelSpacingOrderByClause { - run: RunOrderByClause - voxelSpacing: orderBy - s3Prefix: orderBy - httpsPrefix: orderBy - id: orderBy -} - -input TomogramAuthorOrderByClause { - tomogram: TomogramOrderByClause +input DatasetAuthorOrderByClause { + dataset: DatasetOrderByClause id: orderBy authorListOrder: orderBy orcid: orderBy @@ -2922,27 +2611,27 @@ input TomogramAuthorOrderByClause { primaryAuthorStatus: orderBy } -type TomogramAuthorAggregate { - aggregate: [TomogramAuthorAggregateFunctions!] +type DatasetAuthorAggregate { + aggregate: [DatasetAuthorAggregateFunctions!] } -type TomogramAuthorAggregateFunctions { - sum: TomogramAuthorNumericalColumns - avg: TomogramAuthorNumericalColumns - stddev: TomogramAuthorNumericalColumns - variance: TomogramAuthorNumericalColumns - min: TomogramAuthorMinMaxColumns - max: TomogramAuthorMinMaxColumns - groupBy: TomogramAuthorGroupByOptions - count(distinct: Boolean = false, columns: TomogramAuthorCountColumns = null): Int +type DatasetAuthorAggregateFunctions { + sum: DatasetAuthorNumericalColumns + avg: DatasetAuthorNumericalColumns + stddev: DatasetAuthorNumericalColumns + variance: DatasetAuthorNumericalColumns + min: DatasetAuthorMinMaxColumns + max: DatasetAuthorMinMaxColumns + groupBy: DatasetAuthorGroupByOptions + count(distinct: Boolean = false, columns: DatasetAuthorCountColumns = null): Int } -type TomogramAuthorNumericalColumns { +type DatasetAuthorNumericalColumns { id: Int authorListOrder: Int } -type TomogramAuthorMinMaxColumns { +type DatasetAuthorMinMaxColumns { id: Int authorListOrder: Int orcid: String @@ -2953,8 +2642,8 @@ type TomogramAuthorMinMaxColumns { affiliationIdentifier: String } -type TomogramAuthorGroupByOptions { - tomogram: TomogramGroupByOptions +type DatasetAuthorGroupByOptions { + dataset: DatasetGroupByOptions id: Int authorListOrder: Int orcid: String @@ -2967,51 +2656,8 @@ type TomogramAuthorGroupByOptions { primaryAuthorStatus: Boolean } -type TomogramGroupByOptions { - alignment: AlignmentGroupByOptions - deposition: DepositionGroupByOptions - run: RunGroupByOptions - tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions - name: String - sizeX: Int - sizeY: Int - sizeZ: Int - voxelSpacing: Float - fiducialAlignmentStatus: fiducial_alignment_status_enum - reconstructionMethod: tomogram_reconstruction_method_enum - processing: tomogram_processing_enum - tomogramVersion: Float - processingSoftware: String - reconstructionSoftware: String - isCanonical: Boolean - s3OmezarrDir: String - httpsOmezarrDir: String - s3MrcFile: String - httpsMrcFile: String - scale0Dimensions: String - scale1Dimensions: String - scale2Dimensions: String - ctfCorrected: Boolean - offsetX: Int - offsetY: Int - offsetZ: Int - keyPhotoUrl: String - keyPhotoThumbnailUrl: String - neuroglancerConfig: String - isStandardized: Boolean - id: Int -} - -type TomogramVoxelSpacingGroupByOptions { - run: RunGroupByOptions - voxelSpacing: Float - s3Prefix: String - httpsPrefix: String - id: Int -} - -enum TomogramAuthorCountColumns { - tomogram +enum DatasetAuthorCountColumns { + dataset id authorListOrder orcid @@ -3024,35 +2670,289 @@ enum TomogramAuthorCountColumns { primaryAuthorStatus } -"""Voxel spacings for a run""" -type TomogramVoxelSpacing implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! +"""A connection to a list of items.""" +type RunConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! - """Numeric identifier (May change!)""" - id: Int! - annotationFiles( - where: AnnotationFileWhereClause = null - orderBy: [AnnotationFileOrderByClause!] = [] + """Contains the nodes in this connection""" + edges: [RunEdge!]! +} - """Returns the items in the list that come before the specified cursor.""" - before: String = null +"""An edge in a connection.""" +type RunEdge { + """A cursor for use in pagination""" + cursor: String! - """Returns the items in the list that come after the specified cursor.""" - after: String = null + """The item at the end of the edge""" + node: Run! +} - """Returns the first n items from the list.""" - first: Int = null +type RunAggregate { + aggregate: [RunAggregateFunctions!] +} - """Returns the items in the list that come after the specified cursor.""" - last: Int = null - ): AnnotationFileConnection! - annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate +type RunAggregateFunctions { + sum: RunNumericalColumns + avg: RunNumericalColumns + stddev: RunNumericalColumns + variance: RunNumericalColumns + min: RunMinMaxColumns + max: RunMinMaxColumns + groupBy: RunGroupByOptions + count(distinct: Boolean = false, columns: RunCountColumns = null): Int +} + +type RunNumericalColumns { + id: Int +} + +type RunMinMaxColumns { + name: String + s3Prefix: String + httpsPrefix: String + id: Int +} + +enum RunCountColumns { + alignments + annotations + dataset + frames + gainFiles + frameAcquisitionFiles + tiltseries + tomogramVoxelSpacings + tomograms + name + s3Prefix + httpsPrefix + id +} + +type DatasetAggregate { + aggregate: [DatasetAggregateFunctions!] +} + +type DatasetAggregateFunctions { + sum: DatasetNumericalColumns + avg: DatasetNumericalColumns + stddev: DatasetNumericalColumns + variance: DatasetNumericalColumns + min: DatasetMinMaxColumns + max: DatasetMinMaxColumns + groupBy: DatasetGroupByOptions + count(distinct: Boolean = false, columns: DatasetCountColumns = null): Int +} + +type DatasetNumericalColumns { + organismTaxid: Int + id: Int +} + +type DatasetMinMaxColumns { + title: String + description: String + organismName: String + organismTaxid: Int + tissueName: String + tissueId: String + cellName: String + cellTypeId: String + cellStrainName: String + cellStrainId: String + samplePreparation: String + gridPreparation: String + otherSetup: String + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + cellComponentName: String + cellComponentId: String + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime + datasetPublications: String + relatedDatabaseEntries: String + s3Prefix: String + httpsPrefix: String + id: Int +} + +enum DatasetCountColumns { + deposition + fundingSources + authors + runs + title + description + organismName + organismTaxid + tissueName + tissueId + cellName + cellTypeId + cellStrainName + cellStrainId + sampleType + samplePreparation + gridPreparation + otherSetup + keyPhotoUrl + keyPhotoThumbnailUrl + cellComponentName + cellComponentId + depositionDate + releaseDate + lastModifiedDate + datasetPublications + relatedDatabaseEntries + s3Prefix + httpsPrefix + id +} + +"""A connection to a list of items.""" +type FrameConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [FrameEdge!]! +} + +"""An edge in a connection.""" +type FrameEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: Frame! +} + +type Frame implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int! run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run - runId: Int - tomograms( - where: TomogramWhereClause = null - orderBy: [TomogramOrderByClause!] = [] + runId: Int! + + """Camera angle for a frame""" + rawAngle: Float + + """Frame's acquistion order within a tilt experiment""" + acquisitionOrder: Int + + """The raw camera angle for a frame""" + dose: Float + + """Whether this frame has been gain corrected""" + isGainCorrected: Boolean + + """S3 path to the frame file""" + s3FramePath: String! + + """HTTPS path to the frame file""" + httpsFramePath: String! +} + +input FrameOrderByClause { + deposition: DepositionOrderByClause + run: RunOrderByClause + rawAngle: orderBy + acquisitionOrder: orderBy + dose: orderBy + isGainCorrected: orderBy + s3FramePath: orderBy + httpsFramePath: orderBy + id: orderBy +} + +type FrameAggregate { + aggregate: [FrameAggregateFunctions!] +} + +type FrameAggregateFunctions { + sum: FrameNumericalColumns + avg: FrameNumericalColumns + stddev: FrameNumericalColumns + variance: FrameNumericalColumns + min: FrameMinMaxColumns + max: FrameMinMaxColumns + groupBy: FrameGroupByOptions + count(distinct: Boolean = false, columns: FrameCountColumns = null): Int +} + +type FrameNumericalColumns { + rawAngle: Float + acquisitionOrder: Int + dose: Float + id: Int +} + +type FrameMinMaxColumns { + rawAngle: Float + acquisitionOrder: Int + dose: Float + s3FramePath: String + httpsFramePath: String + id: Int +} + +type FrameGroupByOptions { + deposition: DepositionGroupByOptions + run: RunGroupByOptions + rawAngle: Float + acquisitionOrder: Int + dose: Float + isGainCorrected: Boolean + s3FramePath: String + httpsFramePath: String + id: Int +} + +enum FrameCountColumns { + deposition + run + rawAngle + acquisitionOrder + dose + isGainCorrected + s3FramePath + httpsFramePath + id +} + +"""A connection to a list of items.""" +type TiltseriesConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [TiltseriesEdge!]! +} + +"""An edge in a connection.""" +type TiltseriesEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: Tiltseries! +} + +type Tiltseries implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + alignments( + where: AlignmentWhereClause = null + orderBy: [AlignmentOrderByClause!] = [] """Returns the items in the list that come before the specified cursor.""" before: String = null @@ -3065,367 +2965,402 @@ type TomogramVoxelSpacing implements EntityInterface & Node { """Returns the items in the list that come after the specified cursor.""" last: Int = null - ): TomogramConnection! - tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate + ): AlignmentConnection! + alignmentsAggregate(where: AlignmentWhereClause = null): AlignmentAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int - """The voxel spacing for the tomograms in this set in angstroms""" - voxelSpacing: Float! + """S3 path to this tiltseries in multiscale OME-Zarr format""" + s3OmezarrDir: String - """ - The S3 public bucket path where this tomogram voxel spacing is contained - """ - s3Prefix: String! + """S3 path to this tiltseries in MRC format (no scaling)""" + s3MrcFile: String + + """HTTPS path to this tiltseries in multiscale OME-Zarr format""" + httpsOmezarrDir: String + + """HTTPS path to this tiltseries in MRC format (no scaling)""" + httpsMrcFile: String + + """S3 path to the angle list file for this tiltseries""" + s3AngleList: String + + """HTTPS path to the angle list file for this tiltseries""" + httpsAngleList: String + + """Electron Microscope Accelerator voltage in volts""" + accelerationVoltage: Int! + + """Spherical Aberration Constant of the objective lens in millimeters""" + sphericalAberrationConstant: Float! + + """Name of the microscope manufacturer (FEI, TFS, JEOL)""" + microscopeManufacturer: tiltseries_microscope_manufacturer_enum! + + """Microscope model name""" + microscopeModel: String! + + """Energy filter setup used""" + microscopeEnergyFilter: String! + + """Phase plate configuration""" + microscopePhasePlate: String + + """Image corrector setup""" + microscopeImageCorrector: String """ - The HTTPS directory path where this tomogram voxel spacing is contained + Other microscope optical setup information, in addition to energy filter, phase plate and image corrector """ - httpsPrefix: String! -} + microscopeAdditionalInfo: String -input AnnotationFileOrderByClause { - alignment: AlignmentOrderByClause - annotationShape: AnnotationShapeOrderByClause - tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause - format: orderBy - s3Path: orderBy - httpsPath: orderBy - isVisualizationDefault: orderBy - source: orderBy - id: orderBy -} + """Name of the camera manufacturer""" + cameraManufacturer: String! -input AnnotationShapeOrderByClause { - annotation: AnnotationOrderByClause - shapeType: orderBy - id: orderBy -} + """Camera model name""" + cameraModel: String! -type AnnotationFileAggregate { - aggregate: [AnnotationFileAggregateFunctions!] -} + """Minimal tilt angle in degrees""" + tiltMin: Float! -type AnnotationFileAggregateFunctions { - sum: AnnotationFileNumericalColumns - avg: AnnotationFileNumericalColumns - stddev: AnnotationFileNumericalColumns - variance: AnnotationFileNumericalColumns - min: AnnotationFileMinMaxColumns - max: AnnotationFileMinMaxColumns - groupBy: AnnotationFileGroupByOptions - count(distinct: Boolean = false, columns: AnnotationFileCountColumns = null): Int -} + """Maximal tilt angle in degrees""" + tiltMax: Float! -type AnnotationFileNumericalColumns { - id: Int -} + """Total tilt range in degrees""" + tiltRange: Float! -type AnnotationFileMinMaxColumns { - format: String - s3Path: String - httpsPath: String - id: Int -} + """Tilt step in degrees""" + tiltStep: Float! -type AnnotationFileGroupByOptions { - alignment: AlignmentGroupByOptions - annotationShape: AnnotationShapeGroupByOptions - tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions - format: String - s3Path: String - httpsPath: String - isVisualizationDefault: Boolean - source: annotation_file_source_enum - id: Int -} + """The order of stage tilting during acquisition of the data""" + tiltingScheme: String! -type AnnotationShapeGroupByOptions { - annotation: AnnotationGroupByOptions - shapeType: annotation_file_shape_type_enum - id: Int -} + """Rotation angle in degrees""" + tiltAxis: Float! -enum AnnotationFileCountColumns { - alignment - annotationShape - tomogramVoxelSpacing - format - s3Path - httpsPath - isVisualizationDefault - source - id + """ + Number of Electrons reaching the specimen in a square Angstrom area for the entire tilt series + """ + totalFlux: Float! + + """Software used to collect data""" + dataAcquisitionSoftware: String! + + """ + If a tilt series is deposited into EMPIAR, enter the EMPIAR dataset identifier + """ + relatedEmpiarEntry: String + + """Describes the binning factor from frames to tilt series file""" + binningFromFrames: Float + + """ + Author assessment of tilt series quality within the dataset (1-5, 5 is best) + """ + tiltSeriesQuality: Int! + + """Whether this tilt series is aligned""" + isAligned: Boolean! + + """Pixel spacing equal in both axes in angstroms""" + pixelSpacing: Float! + + """Binning factor of the aligned tilt series""" + alignedTiltseriesBinning: Int } -type TomogramAggregate { - aggregate: [TomogramAggregateFunctions!] +type TiltseriesAggregate { + aggregate: [TiltseriesAggregateFunctions!] } -type TomogramAggregateFunctions { - sum: TomogramNumericalColumns - avg: TomogramNumericalColumns - stddev: TomogramNumericalColumns - variance: TomogramNumericalColumns - min: TomogramMinMaxColumns - max: TomogramMinMaxColumns - groupBy: TomogramGroupByOptions - count(distinct: Boolean = false, columns: TomogramCountColumns = null): Int +type TiltseriesAggregateFunctions { + sum: TiltseriesNumericalColumns + avg: TiltseriesNumericalColumns + stddev: TiltseriesNumericalColumns + variance: TiltseriesNumericalColumns + min: TiltseriesMinMaxColumns + max: TiltseriesMinMaxColumns + groupBy: TiltseriesGroupByOptions + count(distinct: Boolean = false, columns: TiltseriesCountColumns = null): Int } -type TomogramNumericalColumns { - sizeX: Int - sizeY: Int - sizeZ: Int - voxelSpacing: Float - tomogramVersion: Float - offsetX: Int - offsetY: Int - offsetZ: Int +type TiltseriesNumericalColumns { + accelerationVoltage: Int + sphericalAberrationConstant: Float + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltAxis: Float + totalFlux: Float + binningFromFrames: Float + tiltSeriesQuality: Int + pixelSpacing: Float + alignedTiltseriesBinning: Int id: Int } -type TomogramMinMaxColumns { - name: String - sizeX: Int - sizeY: Int - sizeZ: Int - voxelSpacing: Float - tomogramVersion: Float - processingSoftware: String - reconstructionSoftware: String +type TiltseriesMinMaxColumns { s3OmezarrDir: String - httpsOmezarrDir: String s3MrcFile: String + httpsOmezarrDir: String httpsMrcFile: String - scale0Dimensions: String - scale1Dimensions: String - scale2Dimensions: String - offsetX: Int - offsetY: Int - offsetZ: Int - keyPhotoUrl: String - keyPhotoThumbnailUrl: String - neuroglancerConfig: String + s3AngleList: String + httpsAngleList: String + accelerationVoltage: Int + sphericalAberrationConstant: Float + microscopeModel: String + microscopeEnergyFilter: String + microscopePhasePlate: String + microscopeImageCorrector: String + microscopeAdditionalInfo: String + cameraManufacturer: String + cameraModel: String + tiltMin: Float + tiltMax: Float + tiltRange: Float + tiltStep: Float + tiltingScheme: String + tiltAxis: Float + totalFlux: Float + dataAcquisitionSoftware: String + relatedEmpiarEntry: String + binningFromFrames: Float + tiltSeriesQuality: Int + pixelSpacing: Float + alignedTiltseriesBinning: Int id: Int } -enum TomogramCountColumns { - alignment - authors - deposition +enum TiltseriesCountColumns { + alignments run - tomogramVoxelSpacing - name - sizeX - sizeY - sizeZ - voxelSpacing - fiducialAlignmentStatus - reconstructionMethod - processing - tomogramVersion - processingSoftware - reconstructionSoftware - isCanonical + deposition s3OmezarrDir - httpsOmezarrDir s3MrcFile + httpsOmezarrDir httpsMrcFile - scale0Dimensions - scale1Dimensions - scale2Dimensions - ctfCorrected - offsetX - offsetY - offsetZ - keyPhotoUrl - keyPhotoThumbnailUrl - neuroglancerConfig - isStandardized + s3AngleList + httpsAngleList + accelerationVoltage + sphericalAberrationConstant + microscopeManufacturer + microscopeModel + microscopeEnergyFilter + microscopePhasePlate + microscopeImageCorrector + microscopeAdditionalInfo + cameraManufacturer + cameraModel + tiltMin + tiltMax + tiltRange + tiltStep + tiltingScheme + tiltAxis + totalFlux + dataAcquisitionSoftware + relatedEmpiarEntry + binningFromFrames + tiltSeriesQuality + isAligned + pixelSpacing + alignedTiltseriesBinning id } """A connection to a list of items.""" -type DepositionTypeConnection { +type TomogramConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [DepositionTypeEdge!]! + edges: [TomogramEdge!]! } """An edge in a connection.""" -type DepositionTypeEdge { +type TomogramEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: DepositionType! + node: Tomogram! } -type DepositionType implements EntityInterface & Node { +"""Metadata describing a tomogram.""" +type Tomogram implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! """Numeric identifier (May change!)""" id: Int! + alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment + alignmentId: Int + authors( + where: TomogramAuthorWhereClause = null + orderBy: [TomogramAuthorOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramAuthorConnection! + authorsAggregate(where: TomogramAuthorWhereClause = null): TomogramAuthorAggregate deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition depositionId: Int! + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int + tomogramVoxelSpacing(where: TomogramVoxelSpacingWhereClause = null, orderBy: [TomogramVoxelSpacingOrderByClause!] = []): TomogramVoxelSpacing + tomogramVoxelSpacingId: Int + + """Short name for this tomogram""" + name: String + + """Number of pixels in the 3D data fast axis""" + sizeX: Int! + + """Number of pixels in the 3D data medium axis""" + sizeY: Int! """ - The type of data submitted as a part of this deposition (annotation, dataset, tomogram) + Number of pixels in the 3D data slow axis. This is the image projection direction at zero stage tilt """ - type: deposition_types_enum -} + sizeZ: Int! -input DepositionTypeOrderByClause { - deposition: DepositionOrderByClause - type: orderBy - id: orderBy -} + """Voxel spacing equal in all three axes in angstroms""" + voxelSpacing: Float! -type DepositionTypeAggregate { - aggregate: [DepositionTypeAggregateFunctions!] -} + """ + Fiducial Alignment status: True = aligned with fiducial False = aligned without fiducial + """ + fiducialAlignmentStatus: fiducial_alignment_status_enum! -type DepositionTypeAggregateFunctions { - sum: DepositionTypeNumericalColumns - avg: DepositionTypeNumericalColumns - stddev: DepositionTypeNumericalColumns - variance: DepositionTypeNumericalColumns - min: DepositionTypeMinMaxColumns - max: DepositionTypeMinMaxColumns - groupBy: DepositionTypeGroupByOptions - count(distinct: Boolean = false, columns: DepositionTypeCountColumns = null): Int -} + """Describe reconstruction method (WBP, SART, SIRT)""" + reconstructionMethod: tomogram_reconstruction_method_enum! -type DepositionTypeNumericalColumns { - id: Int -} + """Describe additional processing used to derive the tomogram""" + processing: tomogram_processing_enum! -type DepositionTypeMinMaxColumns { - id: Int -} + """Version of tomogram""" + tomogramVersion: Float -type DepositionTypeGroupByOptions { - deposition: DepositionGroupByOptions - type: deposition_types_enum - id: Int -} + """Processing software used to derive the tomogram""" + processingSoftware: String -enum DepositionTypeCountColumns { - deposition - type - id -} + """Name of software used for reconstruction""" + reconstructionSoftware: String! -"""A connection to a list of items.""" -type DatasetFundingConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! + """whether this tomogram adheres to portal standards""" + isPortalStandard: Boolean - """Contains the nodes in this connection""" - edges: [DatasetFundingEdge!]! -} + """ + Whether this tomogram was submitted by the author of the dataset it belongs to. + """ + isAuthorSubmitted: Boolean -"""An edge in a connection.""" -type DatasetFundingEdge { - """A cursor for use in pagination""" - cursor: String! + """ + Data curator’s subjective choice of default tomogram to display in visualization for a run + """ + isVisualizationDefault: Boolean - """The item at the end of the edge""" - node: DatasetFunding! -} + """S3 path to this tomogram in multiscale OME-Zarr format""" + s3OmezarrDir: String -"""Metadata for a dataset's funding sources""" -type DatasetFunding implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! + """HTTPS path to this tomogram in multiscale OME-Zarr format""" + httpsOmezarrDir: String - """Numeric identifier (May change!)""" - id: Int! - dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset - datasetId: Int + """S3 path to this tomogram in MRC format (no scaling)""" + s3MrcFile: String - """Name of the funding agency.""" - fundingAgencyName: String + """HTTPS path to this tomogram in MRC format (no scaling)""" + httpsMrcFile: String - """Grant identifier provided by the funding agency.""" - grantId: String -} + """comma separated x,y,z dimensions of the unscaled tomogram""" + scale0Dimensions: String -input DatasetFundingOrderByClause { - dataset: DatasetOrderByClause - fundingAgencyName: orderBy - grantId: orderBy - id: orderBy -} + """comma separated x,y,z dimensions of the scale1 tomogram""" + scale1Dimensions: String -type DatasetFundingAggregate { - aggregate: [DatasetFundingAggregateFunctions!] -} + """comma separated x,y,z dimensions of the scale2 tomogram""" + scale2Dimensions: String -type DatasetFundingAggregateFunctions { - sum: DatasetFundingNumericalColumns - avg: DatasetFundingNumericalColumns - stddev: DatasetFundingNumericalColumns - variance: DatasetFundingNumericalColumns - min: DatasetFundingMinMaxColumns - max: DatasetFundingMinMaxColumns - groupBy: DatasetFundingGroupByOptions - count(distinct: Boolean = false, columns: DatasetFundingCountColumns = null): Int -} + """Whether this tomogram is CTF corrected""" + ctfCorrected: Boolean -type DatasetFundingNumericalColumns { - id: Int -} + """x offset data relative to the canonical tomogram in pixels""" + offsetX: Int! -type DatasetFundingMinMaxColumns { - fundingAgencyName: String - grantId: String - id: Int -} + """y offset data relative to the canonical tomogram in pixels""" + offsetY: Int! + + """z offset data relative to the canonical tomogram in pixels""" + offsetZ: Int! + + """URL for the key photo""" + keyPhotoUrl: String + + """URL for the thumbnail of key photo""" + keyPhotoThumbnailUrl: String + + """the compact json of neuroglancer config""" + neuroglancerConfig: String + + """ + Comma-separated list of DOIs for publications associated with the tomogram. + """ + publications: String + + """ + If a CryoET tomogram is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ + relatedDatabaseEntries: String -type DatasetFundingGroupByOptions { - dataset: DatasetGroupByOptions - fundingAgencyName: String - grantId: String - id: Int -} + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime -enum DatasetFundingCountColumns { - dataset - fundingAgencyName - grantId - id + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime + + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime } """A connection to a list of items.""" -type DatasetAuthorConnection { +type TomogramAuthorConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [DatasetAuthorEdge!]! + edges: [TomogramAuthorEdge!]! } """An edge in a connection.""" -type DatasetAuthorEdge { +type TomogramAuthorEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: DatasetAuthor! + node: TomogramAuthor! } -"""An author of a dataset""" -type DatasetAuthor implements EntityInterface & Node { +"""Author of a tomogram""" +type TomogramAuthor implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! """Numeric identifier (May change!)""" id: Int! - dataset(where: DatasetWhereClause = null, orderBy: [DatasetOrderByClause!] = []): Dataset - datasetId: Int + tomogram(where: TomogramWhereClause = null, orderBy: [TomogramOrderByClause!] = []): Tomogram + tomogramId: Int """The order in which the author appears in the publication""" authorListOrder: Int! @@ -3453,14 +3388,61 @@ type DatasetAuthor implements EntityInterface & Node { """Indicates whether an author is the corresponding author""" correspondingAuthorStatus: Boolean - """ - Indicates whether an author is the main person associated with the corresponding dataset - """ + """Indicates whether an author is the main person creating the tomogram""" primaryAuthorStatus: Boolean } -input DatasetAuthorOrderByClause { - dataset: DatasetOrderByClause +input TomogramOrderByClause { + alignment: AlignmentOrderByClause + deposition: DepositionOrderByClause + run: RunOrderByClause + tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause + name: orderBy + sizeX: orderBy + sizeY: orderBy + sizeZ: orderBy + voxelSpacing: orderBy + fiducialAlignmentStatus: orderBy + reconstructionMethod: orderBy + processing: orderBy + tomogramVersion: orderBy + processingSoftware: orderBy + reconstructionSoftware: orderBy + isPortalStandard: orderBy + isAuthorSubmitted: orderBy + isVisualizationDefault: orderBy + s3OmezarrDir: orderBy + httpsOmezarrDir: orderBy + s3MrcFile: orderBy + httpsMrcFile: orderBy + scale0Dimensions: orderBy + scale1Dimensions: orderBy + scale2Dimensions: orderBy + ctfCorrected: orderBy + offsetX: orderBy + offsetY: orderBy + offsetZ: orderBy + keyPhotoUrl: orderBy + keyPhotoThumbnailUrl: orderBy + neuroglancerConfig: orderBy + publications: orderBy + relatedDatabaseEntries: orderBy + id: orderBy + depositionDate: orderBy + releaseDate: orderBy + lastModifiedDate: orderBy +} + +input TomogramVoxelSpacingOrderByClause { + run: RunOrderByClause + voxelSpacing: orderBy + s3Prefix: orderBy + httpsPrefix: orderBy + id: orderBy +} + +input TomogramAuthorOrderByClause { + tomogram: TomogramOrderByClause id: orderBy authorListOrder: orderBy orcid: orderBy @@ -3473,473 +3455,719 @@ input DatasetAuthorOrderByClause { primaryAuthorStatus: orderBy } -type DatasetAuthorAggregate { - aggregate: [DatasetAuthorAggregateFunctions!] +type TomogramAuthorAggregate { + aggregate: [TomogramAuthorAggregateFunctions!] +} + +type TomogramAuthorAggregateFunctions { + sum: TomogramAuthorNumericalColumns + avg: TomogramAuthorNumericalColumns + stddev: TomogramAuthorNumericalColumns + variance: TomogramAuthorNumericalColumns + min: TomogramAuthorMinMaxColumns + max: TomogramAuthorMinMaxColumns + groupBy: TomogramAuthorGroupByOptions + count(distinct: Boolean = false, columns: TomogramAuthorCountColumns = null): Int +} + +type TomogramAuthorNumericalColumns { + id: Int + authorListOrder: Int +} + +type TomogramAuthorMinMaxColumns { + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String +} + +type TomogramAuthorGroupByOptions { + tomogram: TomogramGroupByOptions + id: Int + authorListOrder: Int + orcid: String + name: String + email: String + affiliationName: String + affiliationAddress: String + affiliationIdentifier: String + correspondingAuthorStatus: Boolean + primaryAuthorStatus: Boolean +} + +type TomogramGroupByOptions { + alignment: AlignmentGroupByOptions + deposition: DepositionGroupByOptions + run: RunGroupByOptions + tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions + name: String + sizeX: Int + sizeY: Int + sizeZ: Int + voxelSpacing: Float + fiducialAlignmentStatus: fiducial_alignment_status_enum + reconstructionMethod: tomogram_reconstruction_method_enum + processing: tomogram_processing_enum + tomogramVersion: Float + processingSoftware: String + reconstructionSoftware: String + isPortalStandard: Boolean + isAuthorSubmitted: Boolean + isVisualizationDefault: Boolean + s3OmezarrDir: String + httpsOmezarrDir: String + s3MrcFile: String + httpsMrcFile: String + scale0Dimensions: String + scale1Dimensions: String + scale2Dimensions: String + ctfCorrected: Boolean + offsetX: Int + offsetY: Int + offsetZ: Int + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + neuroglancerConfig: String + publications: String + relatedDatabaseEntries: String + id: Int + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime +} + +type TomogramVoxelSpacingGroupByOptions { + run: RunGroupByOptions + voxelSpacing: Float + s3Prefix: String + httpsPrefix: String + id: Int +} + +enum TomogramAuthorCountColumns { + tomogram + id + authorListOrder + orcid + name + email + affiliationName + affiliationAddress + affiliationIdentifier + correspondingAuthorStatus + primaryAuthorStatus +} + +"""Voxel spacings for a run""" +type TomogramVoxelSpacing implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + annotationFiles( + where: AnnotationFileWhereClause = null + orderBy: [AnnotationFileOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): AnnotationFileConnection! + annotationFilesAggregate(where: AnnotationFileWhereClause = null): AnnotationFileAggregate + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int + tomograms( + where: TomogramWhereClause = null + orderBy: [TomogramOrderByClause!] = [] + + """Returns the items in the list that come before the specified cursor.""" + before: String = null + + """Returns the items in the list that come after the specified cursor.""" + after: String = null + + """Returns the first n items from the list.""" + first: Int = null + + """Returns the items in the list that come after the specified cursor.""" + last: Int = null + ): TomogramConnection! + tomogramsAggregate(where: TomogramWhereClause = null): TomogramAggregate + + """The voxel spacing for the tomograms in this set in angstroms""" + voxelSpacing: Float! + + """ + The S3 public bucket path where this tomogram voxel spacing is contained + """ + s3Prefix: String! + + """ + The HTTPS directory path where this tomogram voxel spacing is contained + """ + httpsPrefix: String! +} + +input AnnotationFileOrderByClause { + alignment: AlignmentOrderByClause + annotationShape: AnnotationShapeOrderByClause + tomogramVoxelSpacing: TomogramVoxelSpacingOrderByClause + format: orderBy + s3Path: orderBy + httpsPath: orderBy + isVisualizationDefault: orderBy + source: orderBy + id: orderBy +} + +type AnnotationFileAggregate { + aggregate: [AnnotationFileAggregateFunctions!] } -type DatasetAuthorAggregateFunctions { - sum: DatasetAuthorNumericalColumns - avg: DatasetAuthorNumericalColumns - stddev: DatasetAuthorNumericalColumns - variance: DatasetAuthorNumericalColumns - min: DatasetAuthorMinMaxColumns - max: DatasetAuthorMinMaxColumns - groupBy: DatasetAuthorGroupByOptions - count(distinct: Boolean = false, columns: DatasetAuthorCountColumns = null): Int +type AnnotationFileAggregateFunctions { + sum: AnnotationFileNumericalColumns + avg: AnnotationFileNumericalColumns + stddev: AnnotationFileNumericalColumns + variance: AnnotationFileNumericalColumns + min: AnnotationFileMinMaxColumns + max: AnnotationFileMinMaxColumns + groupBy: AnnotationFileGroupByOptions + count(distinct: Boolean = false, columns: AnnotationFileCountColumns = null): Int } -type DatasetAuthorNumericalColumns { +type AnnotationFileNumericalColumns { id: Int - authorListOrder: Int } -type DatasetAuthorMinMaxColumns { +type AnnotationFileMinMaxColumns { + format: String + s3Path: String + httpsPath: String id: Int - authorListOrder: Int - orcid: String - name: String - email: String - affiliationName: String - affiliationAddress: String - affiliationIdentifier: String } -type DatasetAuthorGroupByOptions { - dataset: DatasetGroupByOptions +type AnnotationFileGroupByOptions { + alignment: AlignmentGroupByOptions + annotationShape: AnnotationShapeGroupByOptions + tomogramVoxelSpacing: TomogramVoxelSpacingGroupByOptions + format: String + s3Path: String + httpsPath: String + isVisualizationDefault: Boolean + source: annotation_file_source_enum id: Int - authorListOrder: Int - orcid: String - name: String - email: String - affiliationName: String - affiliationAddress: String - affiliationIdentifier: String - correspondingAuthorStatus: Boolean - primaryAuthorStatus: Boolean } -enum DatasetAuthorCountColumns { - dataset +enum AnnotationFileCountColumns { + alignment + annotationShape + tomogramVoxelSpacing + format + s3Path + httpsPath + isVisualizationDefault + source id - authorListOrder - orcid - name - email - affiliationName - affiliationAddress - affiliationIdentifier - correspondingAuthorStatus - primaryAuthorStatus -} - -"""A connection to a list of items.""" -type RunConnection { - """Pagination data for this connection""" - pageInfo: PageInfo! - - """Contains the nodes in this connection""" - edges: [RunEdge!]! -} - -"""An edge in a connection.""" -type RunEdge { - """A cursor for use in pagination""" - cursor: String! - - """The item at the end of the edge""" - node: Run! } -type RunAggregate { - aggregate: [RunAggregateFunctions!] +type TomogramAggregate { + aggregate: [TomogramAggregateFunctions!] } -type RunAggregateFunctions { - sum: RunNumericalColumns - avg: RunNumericalColumns - stddev: RunNumericalColumns - variance: RunNumericalColumns - min: RunMinMaxColumns - max: RunMinMaxColumns - groupBy: RunGroupByOptions - count(distinct: Boolean = false, columns: RunCountColumns = null): Int +type TomogramAggregateFunctions { + sum: TomogramNumericalColumns + avg: TomogramNumericalColumns + stddev: TomogramNumericalColumns + variance: TomogramNumericalColumns + min: TomogramMinMaxColumns + max: TomogramMinMaxColumns + groupBy: TomogramGroupByOptions + count(distinct: Boolean = false, columns: TomogramCountColumns = null): Int } -type RunNumericalColumns { +type TomogramNumericalColumns { + sizeX: Int + sizeY: Int + sizeZ: Int + voxelSpacing: Float + tomogramVersion: Float + offsetX: Int + offsetY: Int + offsetZ: Int id: Int } -type RunMinMaxColumns { +type TomogramMinMaxColumns { name: String - s3Prefix: String - httpsPrefix: String + sizeX: Int + sizeY: Int + sizeZ: Int + voxelSpacing: Float + tomogramVersion: Float + processingSoftware: String + reconstructionSoftware: String + s3OmezarrDir: String + httpsOmezarrDir: String + s3MrcFile: String + httpsMrcFile: String + scale0Dimensions: String + scale1Dimensions: String + scale2Dimensions: String + offsetX: Int + offsetY: Int + offsetZ: Int + keyPhotoUrl: String + keyPhotoThumbnailUrl: String + neuroglancerConfig: String + publications: String + relatedDatabaseEntries: String id: Int + depositionDate: DateTime + releaseDate: DateTime + lastModifiedDate: DateTime } -enum RunCountColumns { - alignments - annotations - dataset - frames - tiltseries - tomogramVoxelSpacings - tomograms +enum TomogramCountColumns { + alignment + authors + deposition + run + tomogramVoxelSpacing name - s3Prefix - httpsPrefix + sizeX + sizeY + sizeZ + voxelSpacing + fiducialAlignmentStatus + reconstructionMethod + processing + tomogramVersion + processingSoftware + reconstructionSoftware + isPortalStandard + isAuthorSubmitted + isVisualizationDefault + s3OmezarrDir + httpsOmezarrDir + s3MrcFile + httpsMrcFile + scale0Dimensions + scale1Dimensions + scale2Dimensions + ctfCorrected + offsetX + offsetY + offsetZ + keyPhotoUrl + keyPhotoThumbnailUrl + neuroglancerConfig + publications + relatedDatabaseEntries id + depositionDate + releaseDate + lastModifiedDate } """A connection to a list of items.""" -type TomogramVoxelSpacingConnection { +type DepositionTypeConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [TomogramVoxelSpacingEdge!]! + edges: [DepositionTypeEdge!]! } """An edge in a connection.""" -type TomogramVoxelSpacingEdge { +type DepositionTypeEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: TomogramVoxelSpacing! + node: DepositionType! } -type TomogramVoxelSpacingAggregate { - aggregate: [TomogramVoxelSpacingAggregateFunctions!] +type DepositionType implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + deposition(where: DepositionWhereClause = null, orderBy: [DepositionOrderByClause!] = []): Deposition + depositionId: Int! + + """ + The type of data submitted as a part of this deposition (annotation, dataset, tomogram) + """ + type: deposition_types_enum } -type TomogramVoxelSpacingAggregateFunctions { - sum: TomogramVoxelSpacingNumericalColumns - avg: TomogramVoxelSpacingNumericalColumns - stddev: TomogramVoxelSpacingNumericalColumns - variance: TomogramVoxelSpacingNumericalColumns - min: TomogramVoxelSpacingMinMaxColumns - max: TomogramVoxelSpacingMinMaxColumns - groupBy: TomogramVoxelSpacingGroupByOptions - count(distinct: Boolean = false, columns: TomogramVoxelSpacingCountColumns = null): Int +input DepositionTypeOrderByClause { + deposition: DepositionOrderByClause + type: orderBy + id: orderBy +} + +type DepositionTypeAggregate { + aggregate: [DepositionTypeAggregateFunctions!] +} + +type DepositionTypeAggregateFunctions { + sum: DepositionTypeNumericalColumns + avg: DepositionTypeNumericalColumns + stddev: DepositionTypeNumericalColumns + variance: DepositionTypeNumericalColumns + min: DepositionTypeMinMaxColumns + max: DepositionTypeMinMaxColumns + groupBy: DepositionTypeGroupByOptions + count(distinct: Boolean = false, columns: DepositionTypeCountColumns = null): Int } -type TomogramVoxelSpacingNumericalColumns { - voxelSpacing: Float +type DepositionTypeNumericalColumns { id: Int } -type TomogramVoxelSpacingMinMaxColumns { - voxelSpacing: Float - s3Prefix: String - httpsPrefix: String +type DepositionTypeMinMaxColumns { id: Int } -enum TomogramVoxelSpacingCountColumns { - annotationFiles - run - tomograms - voxelSpacing - s3Prefix - httpsPrefix +type DepositionTypeGroupByOptions { + deposition: DepositionGroupByOptions + type: deposition_types_enum + id: Int +} + +enum DepositionTypeCountColumns { + deposition + type id } """A connection to a list of items.""" -type AnnotationShapeConnection { +type PerSectionAlignmentParametersConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [AnnotationShapeEdge!]! + edges: [PerSectionAlignmentParametersEdge!]! } """An edge in a connection.""" -type AnnotationShapeEdge { +type PerSectionAlignmentParametersEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: AnnotationShape! + node: PerSectionAlignmentParameters! } -type AnnotationShapeAggregate { - aggregate: [AnnotationShapeAggregateFunctions!] +"""Map alignment parameters to tilt series frames""" +type PerSectionAlignmentParameters implements EntityInterface & Node { + """The Globally Unique ID of this object""" + _id: GlobalID! + + """Numeric identifier (May change!)""" + id: Int! + alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment + alignmentId: Int! + + """z-index of the frame in the tiltseries""" + zIndex: Int! + + """In-plane X-shift of the projection in angstrom""" + xOffset: Float + + """In-plane Y-shift of the projection in angstrom""" + yOffset: Float + + """X-axis rotation in degrees""" + volumeXRotation: Float + + """In-plane rotation of the projection in degrees""" + inPlaneRotation: [[Float!]!] + + """Tilt angle of the projection in degrees""" + tiltAngle: Float } -type AnnotationShapeAggregateFunctions { - sum: AnnotationShapeNumericalColumns - avg: AnnotationShapeNumericalColumns - stddev: AnnotationShapeNumericalColumns - variance: AnnotationShapeNumericalColumns - min: AnnotationShapeMinMaxColumns - max: AnnotationShapeMinMaxColumns - groupBy: AnnotationShapeGroupByOptions - count(distinct: Boolean = false, columns: AnnotationShapeCountColumns = null): Int +input PerSectionAlignmentParametersOrderByClause { + alignment: AlignmentOrderByClause + zIndex: orderBy + xOffset: orderBy + yOffset: orderBy + volumeXRotation: orderBy + inPlaneRotation: orderBy + tiltAngle: orderBy + id: orderBy } -type AnnotationShapeNumericalColumns { +type PerSectionAlignmentParametersAggregate { + aggregate: [PerSectionAlignmentParametersAggregateFunctions!] +} + +type PerSectionAlignmentParametersAggregateFunctions { + sum: PerSectionAlignmentParametersNumericalColumns + avg: PerSectionAlignmentParametersNumericalColumns + stddev: PerSectionAlignmentParametersNumericalColumns + variance: PerSectionAlignmentParametersNumericalColumns + min: PerSectionAlignmentParametersMinMaxColumns + max: PerSectionAlignmentParametersMinMaxColumns + groupBy: PerSectionAlignmentParametersGroupByOptions + count(distinct: Boolean = false, columns: PerSectionAlignmentParametersCountColumns = null): Int +} + +type PerSectionAlignmentParametersNumericalColumns { + zIndex: Int + xOffset: Float + yOffset: Float + volumeXRotation: Float + tiltAngle: Float id: Int } -type AnnotationShapeMinMaxColumns { +type PerSectionAlignmentParametersMinMaxColumns { + zIndex: Int + xOffset: Float + yOffset: Float + volumeXRotation: Float + tiltAngle: Float id: Int } -enum AnnotationShapeCountColumns { - annotation - annotationFiles - shapeType +type PerSectionAlignmentParametersGroupByOptions { + alignment: AlignmentGroupByOptions + zIndex: Int + xOffset: Float + yOffset: Float + volumeXRotation: Float + inPlaneRotation: [[Float!]!] + tiltAngle: Float + id: Int +} + +enum PerSectionAlignmentParametersCountColumns { + alignment + zIndex + xOffset + yOffset + volumeXRotation + inPlaneRotation + tiltAngle id } """A connection to a list of items.""" -type AnnotationAuthorConnection { +type GainFileConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [AnnotationAuthorEdge!]! + edges: [GainFileEdge!]! } """An edge in a connection.""" -type AnnotationAuthorEdge { +type GainFileEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: AnnotationAuthor! + node: GainFile! } -"""Metadata for an annotation's authors""" -type AnnotationAuthor implements EntityInterface & Node { - """The Globally Unique ID of this object""" - _id: GlobalID! - - """Numeric identifier (May change!)""" - id: Int! - annotation(where: AnnotationWhereClause = null, orderBy: [AnnotationOrderByClause!] = []): Annotation - annotationId: Int - - """The order in which the author appears in the publication""" - authorListOrder: Int! - - """A unique, persistent identifier for researchers, provided by ORCID.""" - orcid: String - - """Full name of an annotation author (e.g. Jane Doe).""" - name: String! - - """Email address for this author""" - email: String - - """ - Name of the institution an annotator is affiliated with. Sometimes, one annotator may have multiple affiliations. - """ - affiliationName: String - - """Address of the institution an annotator is affiliated with.""" - affiliationAddress: String - - """ - A unique identifier assigned to the affiliated institution by The Research Organization Registry (ROR). - """ - affiliationIdentifier: String - - """Indicates whether an annotator is the corresponding author""" - correspondingAuthorStatus: Boolean - - """ - Indicates whether an author is the main person executing the annotation, especially on manual annotation - """ - primaryAuthorStatus: Boolean -} - -input AnnotationAuthorOrderByClause { - annotation: AnnotationOrderByClause +input GainFileOrderByClause { + run: RunOrderByClause + s3FilePath: orderBy + httpsFilePath: orderBy id: orderBy - authorListOrder: orderBy - orcid: orderBy - name: orderBy - email: orderBy - affiliationName: orderBy - affiliationAddress: orderBy - affiliationIdentifier: orderBy - correspondingAuthorStatus: orderBy - primaryAuthorStatus: orderBy } -type AnnotationAuthorAggregate { - aggregate: [AnnotationAuthorAggregateFunctions!] +type GainFileAggregate { + aggregate: [GainFileAggregateFunctions!] } -type AnnotationAuthorAggregateFunctions { - sum: AnnotationAuthorNumericalColumns - avg: AnnotationAuthorNumericalColumns - stddev: AnnotationAuthorNumericalColumns - variance: AnnotationAuthorNumericalColumns - min: AnnotationAuthorMinMaxColumns - max: AnnotationAuthorMinMaxColumns - groupBy: AnnotationAuthorGroupByOptions - count(distinct: Boolean = false, columns: AnnotationAuthorCountColumns = null): Int +type GainFileAggregateFunctions { + sum: GainFileNumericalColumns + avg: GainFileNumericalColumns + stddev: GainFileNumericalColumns + variance: GainFileNumericalColumns + min: GainFileMinMaxColumns + max: GainFileMinMaxColumns + groupBy: GainFileGroupByOptions + count(distinct: Boolean = false, columns: GainFileCountColumns = null): Int } -type AnnotationAuthorNumericalColumns { +type GainFileNumericalColumns { id: Int - authorListOrder: Int } -type AnnotationAuthorMinMaxColumns { +type GainFileMinMaxColumns { + s3FilePath: String + httpsFilePath: String id: Int - authorListOrder: Int - orcid: String - name: String - email: String - affiliationName: String - affiliationAddress: String - affiliationIdentifier: String } -type AnnotationAuthorGroupByOptions { - annotation: AnnotationGroupByOptions +type GainFileGroupByOptions { + run: RunGroupByOptions + s3FilePath: String + httpsFilePath: String id: Int - authorListOrder: Int - orcid: String - name: String - email: String - affiliationName: String - affiliationAddress: String - affiliationIdentifier: String - correspondingAuthorStatus: Boolean - primaryAuthorStatus: Boolean } -enum AnnotationAuthorCountColumns { - annotation +enum GainFileCountColumns { + run + s3FilePath + httpsFilePath id - authorListOrder - orcid - name - email - affiliationName - affiliationAddress - affiliationIdentifier - correspondingAuthorStatus - primaryAuthorStatus } """A connection to a list of items.""" -type PerSectionAlignmentParametersConnection { +type FrameAcquisitionFileConnection { """Pagination data for this connection""" pageInfo: PageInfo! """Contains the nodes in this connection""" - edges: [PerSectionAlignmentParametersEdge!]! + edges: [FrameAcquisitionFileEdge!]! } """An edge in a connection.""" -type PerSectionAlignmentParametersEdge { +type FrameAcquisitionFileEdge { """A cursor for use in pagination""" cursor: String! """The item at the end of the edge""" - node: PerSectionAlignmentParameters! + node: FrameAcquisitionFile! } -"""Map alignment parameters to tilt series frames""" -type PerSectionAlignmentParameters implements EntityInterface & Node { +""" +References to files containing more information about frame acquisition +""" +type FrameAcquisitionFile implements EntityInterface & Node { """The Globally Unique ID of this object""" _id: GlobalID! """Numeric identifier (May change!)""" id: Int! - alignment(where: AlignmentWhereClause = null, orderBy: [AlignmentOrderByClause!] = []): Alignment - alignmentId: Int! + run(where: RunWhereClause = null, orderBy: [RunOrderByClause!] = []): Run + runId: Int - """z-index of the frame in the tiltseries""" - zIndex: Int! + """Path to the frame acquisition mdoc file in s3""" + s3MdocPath: String! - """In-plane X-shift of the projection in angstrom""" - xOffset: Float + """Path to the frame acquisition mdoc file as an https url""" + httpsMdocPath: String! +} - """In-plane Y-shift of the projection in angstrom""" - yOffset: Float +input FrameAcquisitionFileOrderByClause { + run: RunOrderByClause + s3MdocPath: orderBy + httpsMdocPath: orderBy + id: orderBy +} + +type FrameAcquisitionFileAggregate { + aggregate: [FrameAcquisitionFileAggregateFunctions!] +} + +type FrameAcquisitionFileAggregateFunctions { + sum: FrameAcquisitionFileNumericalColumns + avg: FrameAcquisitionFileNumericalColumns + stddev: FrameAcquisitionFileNumericalColumns + variance: FrameAcquisitionFileNumericalColumns + min: FrameAcquisitionFileMinMaxColumns + max: FrameAcquisitionFileMinMaxColumns + groupBy: FrameAcquisitionFileGroupByOptions + count(distinct: Boolean = false, columns: FrameAcquisitionFileCountColumns = null): Int +} + +type FrameAcquisitionFileNumericalColumns { + id: Int +} - """In-plane rotation of the projection in degrees""" - inPlaneRotation: Float +type FrameAcquisitionFileMinMaxColumns { + s3MdocPath: String + httpsMdocPath: String + id: Int +} - """Beam tilt during projection in degrees""" - beamTilt: Float +type FrameAcquisitionFileGroupByOptions { + run: RunGroupByOptions + s3MdocPath: String + httpsMdocPath: String + id: Int +} - """Tilt angle of the projection in degrees""" - tiltAngle: Float +enum FrameAcquisitionFileCountColumns { + run + s3MdocPath + httpsMdocPath + id } -input PerSectionAlignmentParametersOrderByClause { - alignment: AlignmentOrderByClause - zIndex: orderBy - xOffset: orderBy - yOffset: orderBy - inPlaneRotation: orderBy - beamTilt: orderBy - tiltAngle: orderBy - id: orderBy +"""A connection to a list of items.""" +type TomogramVoxelSpacingConnection { + """Pagination data for this connection""" + pageInfo: PageInfo! + + """Contains the nodes in this connection""" + edges: [TomogramVoxelSpacingEdge!]! } -type PerSectionAlignmentParametersAggregate { - aggregate: [PerSectionAlignmentParametersAggregateFunctions!] +"""An edge in a connection.""" +type TomogramVoxelSpacingEdge { + """A cursor for use in pagination""" + cursor: String! + + """The item at the end of the edge""" + node: TomogramVoxelSpacing! } -type PerSectionAlignmentParametersAggregateFunctions { - sum: PerSectionAlignmentParametersNumericalColumns - avg: PerSectionAlignmentParametersNumericalColumns - stddev: PerSectionAlignmentParametersNumericalColumns - variance: PerSectionAlignmentParametersNumericalColumns - min: PerSectionAlignmentParametersMinMaxColumns - max: PerSectionAlignmentParametersMinMaxColumns - groupBy: PerSectionAlignmentParametersGroupByOptions - count(distinct: Boolean = false, columns: PerSectionAlignmentParametersCountColumns = null): Int +type TomogramVoxelSpacingAggregate { + aggregate: [TomogramVoxelSpacingAggregateFunctions!] } -type PerSectionAlignmentParametersNumericalColumns { - zIndex: Int - xOffset: Float - yOffset: Float - inPlaneRotation: Float - beamTilt: Float - tiltAngle: Float - id: Int +type TomogramVoxelSpacingAggregateFunctions { + sum: TomogramVoxelSpacingNumericalColumns + avg: TomogramVoxelSpacingNumericalColumns + stddev: TomogramVoxelSpacingNumericalColumns + variance: TomogramVoxelSpacingNumericalColumns + min: TomogramVoxelSpacingMinMaxColumns + max: TomogramVoxelSpacingMinMaxColumns + groupBy: TomogramVoxelSpacingGroupByOptions + count(distinct: Boolean = false, columns: TomogramVoxelSpacingCountColumns = null): Int } -type PerSectionAlignmentParametersMinMaxColumns { - zIndex: Int - xOffset: Float - yOffset: Float - inPlaneRotation: Float - beamTilt: Float - tiltAngle: Float +type TomogramVoxelSpacingNumericalColumns { + voxelSpacing: Float id: Int } -type PerSectionAlignmentParametersGroupByOptions { - alignment: AlignmentGroupByOptions - zIndex: Int - xOffset: Float - yOffset: Float - inPlaneRotation: Float - beamTilt: Float - tiltAngle: Float +type TomogramVoxelSpacingMinMaxColumns { + voxelSpacing: Float + s3Prefix: String + httpsPrefix: String id: Int } -enum PerSectionAlignmentParametersCountColumns { - alignment - zIndex - xOffset - yOffset - inPlaneRotation - beamTilt - tiltAngle +enum TomogramVoxelSpacingCountColumns { + annotationFiles + run + tomograms + voxelSpacing + s3Prefix + httpsPrefix id } @@ -4002,6 +4230,12 @@ enum DepositionCountColumns { } type Mutation { + createGainFile(input: GainFileCreateInput!): GainFile! + updateGainFile(input: GainFileUpdateInput!, where: GainFileWhereClauseMutations!): [GainFile!]! + deleteGainFile(where: GainFileWhereClauseMutations!): [GainFile!]! + createFrameAcquisitionFile(input: FrameAcquisitionFileCreateInput!): FrameAcquisitionFile! + updateFrameAcquisitionFile(input: FrameAcquisitionFileUpdateInput!, where: FrameAcquisitionFileWhereClauseMutations!): [FrameAcquisitionFile!]! + deleteFrameAcquisitionFile(where: FrameAcquisitionFileWhereClauseMutations!): [FrameAcquisitionFile!]! createAlignment(input: AlignmentCreateInput!): Alignment! updateAlignment(input: AlignmentUpdateInput!, where: AlignmentWhereClauseMutations!): [Alignment!]! deleteAlignment(where: AlignmentWhereClauseMutations!): [Alignment!]! @@ -4038,9 +4272,6 @@ type Mutation { createFrame(input: FrameCreateInput!): Frame! updateFrame(input: FrameUpdateInput!, where: FrameWhereClauseMutations!): [Frame!]! deleteFrame(where: FrameWhereClauseMutations!): [Frame!]! - createPerSectionParameters(input: PerSectionParametersCreateInput!): PerSectionParameters! - updatePerSectionParameters(input: PerSectionParametersUpdateInput!, where: PerSectionParametersWhereClauseMutations!): [PerSectionParameters!]! - deletePerSectionParameters(where: PerSectionParametersWhereClauseMutations!): [PerSectionParameters!]! createPerSectionAlignmentParameters(input: PerSectionAlignmentParametersCreateInput!): PerSectionAlignmentParameters! updatePerSectionAlignmentParameters(input: PerSectionAlignmentParametersUpdateInput!, where: PerSectionAlignmentParametersWhereClauseMutations!): [PerSectionAlignmentParameters!]! deletePerSectionAlignmentParameters(where: PerSectionAlignmentParametersWhereClauseMutations!): [PerSectionAlignmentParameters!]! @@ -4059,6 +4290,69 @@ type Mutation { createTomogram(input: TomogramCreateInput!): Tomogram! updateTomogram(input: TomogramUpdateInput!, where: TomogramWhereClauseMutations!): [Tomogram!]! deleteTomogram(where: TomogramWhereClauseMutations!): [Tomogram!]! + createAnnotationMethodLink(input: AnnotationMethodLinkCreateInput!): AnnotationMethodLink! + updateAnnotationMethodLink(input: AnnotationMethodLinkUpdateInput!, where: AnnotationMethodLinkWhereClauseMutations!): [AnnotationMethodLink!]! + deleteAnnotationMethodLink(where: AnnotationMethodLinkWhereClauseMutations!): [AnnotationMethodLink!]! +} + +input GainFileCreateInput { + runId: ID! + + """Path to the file in s3""" + s3FilePath: String! + + """Path to the file as an https url""" + httpsFilePath: String! + + """Numeric identifier (May change!)""" + id: Int! +} + +input GainFileUpdateInput { + runId: ID + + """Path to the file in s3""" + s3FilePath: String + + """Path to the file as an https url""" + httpsFilePath: String + + """Numeric identifier (May change!)""" + id: Int +} + +input GainFileWhereClauseMutations { + id: IntComparators +} + +input FrameAcquisitionFileCreateInput { + runId: ID = null + + """Path to the frame acquisition mdoc file in s3""" + s3MdocPath: String! + + """Path to the frame acquisition mdoc file as an https url""" + httpsMdocPath: String! + + """Numeric identifier (May change!)""" + id: Int! +} + +input FrameAcquisitionFileUpdateInput { + runId: ID = null + + """Path to the frame acquisition mdoc file in s3""" + s3MdocPath: String + + """Path to the frame acquisition mdoc file as an https url""" + httpsMdocPath: String + + """Numeric identifier (May change!)""" + id: Int +} + +input FrameAcquisitionFileWhereClauseMutations { + id: IntComparators } input AlignmentCreateInput { @@ -4069,6 +4363,9 @@ input AlignmentCreateInput { """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum = null + """The method used to create this alignment""" + alignmentMethod: alignment_method_type_enum = null + """X dimension of the reconstruction volume in angstrom""" volumeXDimension: Float = null @@ -4093,12 +4390,18 @@ input AlignmentCreateInput { """Additional tilt offset in degrees""" tiltOffset: Float = null - """Path to the local alignment file""" - localAlignmentFile: String = null - """A placeholder for the affine transformation matrix.""" affineTransformationMatrix: String = null + """S3 path to the metadata file for this alignment""" + s3AlignmentMetadata: String = null + + """HTTPS url to the metadata file for this alignment""" + httpsAlignmentMetadata: String = null + + """Whether this is the portal standard alignment""" + isPortalStandard: Boolean = null + """Numeric identifier (May change!)""" id: Int! } @@ -4111,6 +4414,9 @@ input AlignmentUpdateInput { """Whether this a LOCAL or GLOBAL alignment""" alignmentType: alignment_type_enum = null + """The method used to create this alignment""" + alignmentMethod: alignment_method_type_enum = null + """X dimension of the reconstruction volume in angstrom""" volumeXDimension: Float = null @@ -4135,12 +4441,18 @@ input AlignmentUpdateInput { """Additional tilt offset in degrees""" tiltOffset: Float = null - """Path to the local alignment file""" - localAlignmentFile: String = null - """A placeholder for the affine transformation matrix.""" affineTransformationMatrix: String = null + """S3 path to the metadata file for this alignment""" + s3AlignmentMetadata: String = null + + """HTTPS url to the metadata file for this alignment""" + httpsAlignmentMetadata: String = null + + """Whether this is the portal standard alignment""" + isPortalStandard: Boolean = null + """Numeric identifier (May change!)""" id: Int } @@ -4355,11 +4667,6 @@ input AnnotationCreateInput { """ annotationMethod: String! - """ - Provides links to information on the method used for generating annotation, comma separated - """ - methodLinks: String = null - """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -4445,11 +4752,6 @@ input AnnotationUpdateInput { """ annotationMethod: String - """ - Provides links to information on the method used for generating annotation, comma separated - """ - methodLinks: String = null - """ Whether an annotation is considered ground truth, as determined by the annotator. """ @@ -5016,64 +5318,52 @@ input DepositionTypeWhereClauseMutations { } input FrameCreateInput { - depositionId: ID = null - runId: ID = null + depositionId: ID! + runId: ID! """Camera angle for a frame""" - rawAngle: Float! + rawAngle: Float = null """Frame's acquistion order within a tilt experiment""" acquisitionOrder: Int = null """The raw camera angle for a frame""" - dose: Float! + dose: Float = null """Whether this frame has been gain corrected""" isGainCorrected: Boolean = null - """S3 path to the gain file for this frame""" - s3GainFile: String = null - - """HTTPS path to the gain file for this frame""" - httpsGainFile: String = null + """S3 path to the frame file""" + s3FramePath: String! - """Path to a directory containing data for this entity as an S3 url""" - s3Prefix: String! - - """Path to a directory containing data for this entity as an HTTPS url""" - httpsPrefix: String! + """HTTPS path to the frame file""" + httpsFramePath: String! """Numeric identifier (May change!)""" id: Int! } input FrameUpdateInput { - depositionId: ID = null - runId: ID = null + depositionId: ID + runId: ID """Camera angle for a frame""" - rawAngle: Float + rawAngle: Float = null """Frame's acquistion order within a tilt experiment""" acquisitionOrder: Int = null """The raw camera angle for a frame""" - dose: Float + dose: Float = null """Whether this frame has been gain corrected""" isGainCorrected: Boolean = null - """S3 path to the gain file for this frame""" - s3GainFile: String = null - - """HTTPS path to the gain file for this frame""" - httpsGainFile: String = null - - """Path to a directory containing data for this entity as an S3 url""" - s3Prefix: String + """S3 path to the frame file""" + s3FramePath: String - """Path to a directory containing data for this entity as an HTTPS url""" - httpsPrefix: String + """HTTPS path to the frame file""" + httpsFramePath: String """Numeric identifier (May change!)""" id: Int @@ -5083,50 +5373,6 @@ input FrameWhereClauseMutations { id: IntComparators } -input PerSectionParametersCreateInput { - frameId: ID! - tiltseriesId: ID! - - """z-index of the frame in the tiltseries""" - zIndex: Int! - - """defocus amount""" - defocus: Float = null - - """Astigmatism amount for this frame""" - astigmatism: Float = null - - """Angle of ast""" - astigmaticAngle: Float = null - - """Numeric identifier (May change!)""" - id: Int! -} - -input PerSectionParametersUpdateInput { - frameId: ID - tiltseriesId: ID - - """z-index of the frame in the tiltseries""" - zIndex: Int - - """defocus amount""" - defocus: Float = null - - """Astigmatism amount for this frame""" - astigmatism: Float = null - - """Angle of ast""" - astigmaticAngle: Float = null - - """Numeric identifier (May change!)""" - id: Int -} - -input PerSectionParametersWhereClauseMutations { - id: IntComparators -} - input PerSectionAlignmentParametersCreateInput { """Tiltseries Alignment""" alignmentId: ID! @@ -5140,11 +5386,11 @@ input PerSectionAlignmentParametersCreateInput { """In-plane Y-shift of the projection in angstrom""" yOffset: Float = null - """In-plane rotation of the projection in degrees""" - inPlaneRotation: Float = null + """X-axis rotation in degrees""" + volumeXRotation: Float = null - """Beam tilt during projection in degrees""" - beamTilt: Float = null + """In-plane rotation of the projection in degrees""" + inPlaneRotation: [[Float!]!] = null """Tilt angle of the projection in degrees""" tiltAngle: Float = null @@ -5166,11 +5412,11 @@ input PerSectionAlignmentParametersUpdateInput { """In-plane Y-shift of the projection in angstrom""" yOffset: Float = null - """In-plane rotation of the projection in degrees""" - inPlaneRotation: Float = null + """X-axis rotation in degrees""" + volumeXRotation: Float = null - """Beam tilt during projection in degrees""" - beamTilt: Float = null + """In-plane rotation of the projection in degrees""" + inPlaneRotation: [[Float!]!] = null """Tilt angle of the projection in degrees""" tiltAngle: Float = null @@ -5237,24 +5483,12 @@ input TiltseriesCreateInput { """HTTPS path to this tiltseries in MRC format (no scaling)""" httpsMrcFile: String = null - """S3 path to the collection metadata file for this tiltseries""" - s3CollectionMetadata: String = null - - """HTTPS path to the collection metadata file for this tiltseries""" - httpsCollectionMetadata: String = null - """S3 path to the angle list file for this tiltseries""" s3AngleList: String = null """HTTPS path to the angle list file for this tiltseries""" httpsAngleList: String = null - """S3 path to the gain file for this tiltseries""" - s3GainFile: String = null - - """HTTPS path to the gain file for this tiltseries""" - httpsGainFile: String = null - """Electron Microscope Accelerator voltage in volts""" accelerationVoltage: Int! @@ -5335,9 +5569,6 @@ input TiltseriesCreateInput { """Binning factor of the aligned tilt series""" alignedTiltseriesBinning: Int = null - """Number of frames associated with this tiltseries""" - framesCount: Int = null - """Numeric identifier (May change!)""" id: Int! } @@ -5358,24 +5589,12 @@ input TiltseriesUpdateInput { """HTTPS path to this tiltseries in MRC format (no scaling)""" httpsMrcFile: String = null - """S3 path to the collection metadata file for this tiltseries""" - s3CollectionMetadata: String = null - - """HTTPS path to the collection metadata file for this tiltseries""" - httpsCollectionMetadata: String = null - """S3 path to the angle list file for this tiltseries""" s3AngleList: String = null """HTTPS path to the angle list file for this tiltseries""" httpsAngleList: String = null - """S3 path to the gain file for this tiltseries""" - s3GainFile: String = null - - """HTTPS path to the gain file for this tiltseries""" - httpsGainFile: String = null - """Electron Microscope Accelerator voltage in volts""" accelerationVoltage: Int @@ -5456,9 +5675,6 @@ input TiltseriesUpdateInput { """Binning factor of the aligned tilt series""" alignedTiltseriesBinning: Int = null - """Number of frames associated with this tiltseries""" - framesCount: Int = null - """Numeric identifier (May change!)""" id: Int } @@ -5639,10 +5855,18 @@ input TomogramCreateInput { """Name of software used for reconstruction""" reconstructionSoftware: String! + """whether this tomogram adheres to portal standards""" + isPortalStandard: Boolean = null + + """ + Whether this tomogram was submitted by the author of the dataset it belongs to. + """ + isAuthorSubmitted: Boolean = null + """ - Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + Data curator’s subjective choice of default tomogram to display in visualization for a run """ - isCanonical: Boolean = null + isVisualizationDefault: Boolean = null """S3 path to this tomogram in multiscale OME-Zarr format""" s3OmezarrDir: String = null @@ -5686,11 +5910,27 @@ input TomogramCreateInput { """the compact json of neuroglancer config""" neuroglancerConfig: String = null - """Whether this tomogram was generated per the portal's standards""" - isStandardized: Boolean! + """ + Comma-separated list of DOIs for publications associated with the tomogram. + """ + publications: String = null + + """ + If a CryoET tomogram is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ + relatedDatabaseEntries: String = null """Numeric identifier (May change!)""" id: Int! + + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime = null + + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime = null + + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime = null } input TomogramUpdateInput { @@ -5741,10 +5981,18 @@ input TomogramUpdateInput { """Name of software used for reconstruction""" reconstructionSoftware: String + """whether this tomogram adheres to portal standards""" + isPortalStandard: Boolean = null + + """ + Whether this tomogram was submitted by the author of the dataset it belongs to. + """ + isAuthorSubmitted: Boolean = null + """ - Is this tomogram considered the canonical tomogram for the run experiment? True=Yes + Data curator’s subjective choice of default tomogram to display in visualization for a run """ - isCanonical: Boolean = null + isVisualizationDefault: Boolean = null """S3 path to this tomogram in multiscale OME-Zarr format""" s3OmezarrDir: String = null @@ -5788,13 +6036,67 @@ input TomogramUpdateInput { """the compact json of neuroglancer config""" neuroglancerConfig: String = null - """Whether this tomogram was generated per the portal's standards""" - isStandardized: Boolean + """ + Comma-separated list of DOIs for publications associated with the tomogram. + """ + publications: String = null + + """ + If a CryoET tomogram is also deposited into another database, enter the database identifier here (e.g. EMPIAR-11445). Use a comma to separate multiple identifiers. + """ + relatedDatabaseEntries: String = null """Numeric identifier (May change!)""" id: Int + + """The date a data item was received by the cryoET data portal.""" + depositionDate: DateTime = null + + """The date a data item was received by the cryoET data portal.""" + releaseDate: DateTime = null + + """The date a piece of data was last modified on the cryoET data portal.""" + lastModifiedDate: DateTime = null } input TomogramWhereClauseMutations { id: IntComparators -} \ No newline at end of file +} + +input AnnotationMethodLinkCreateInput { + """Reference to annotation this link applies to""" + annotationId: ID = null + + """Type of link (e.g. model, source code, documentation)""" + linkType: annotation_method_link_type_enum! + + """user readable name of the resource""" + name: String = null + + """URL to the resource""" + link: String! + + """Numeric identifier (May change!)""" + id: Int! +} + +input AnnotationMethodLinkUpdateInput { + """Reference to annotation this link applies to""" + annotationId: ID = null + + """Type of link (e.g. model, source code, documentation)""" + linkType: annotation_method_link_type_enum + + """user readable name of the resource""" + name: String = null + + """URL to the resource""" + link: String + + """Numeric identifier (May change!)""" + id: Int +} + +input AnnotationMethodLinkWhereClauseMutations { + id: IntComparators +} diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Header.jinja2 b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Header.jinja2 index 1dcdf42ae..4121a7a84 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Header.jinja2 +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/templates/Header.jinja2 @@ -20,4 +20,5 @@ from cryoet_data_portal._gql_base import ( ListRelationship, Model, StringField, + ListField, ) diff --git a/client/python/cryoet_data_portal/tests/test_get_client.py b/client/python/cryoet_data_portal/tests/test_get_client.py index d4ac18573..b4d8ac27f 100644 --- a/client/python/cryoet_data_portal/tests/test_get_client.py +++ b/client/python/cryoet_data_portal/tests/test_get_client.py @@ -65,7 +65,7 @@ def test_relationships_reverse(client) -> None: def test_correct_number_of_related_objects(client: Client): annos = Annotation.find( - client, [Annotation.object_name == "Test Annotation Object Name"] + client, [Annotation.object_name == "Test Annotation Object Name"], ) assert len(annos) == 1 @@ -74,7 +74,7 @@ def test_correct_number_of_related_objects(client: Client): def test_item_relationship_with_missing_id(client: Client): annos = Annotation.find( - client, [Annotation.object_name == "Test Annotation Object Name"] + client, [Annotation.object_name == "Test Annotation Object Name"], ) assert len(annos) == 1 diff --git a/client/python/cryoet_data_portal/tests/test_infra/seed_db.py b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py index 0a572a3fc..722d5886f 100644 --- a/client/python/cryoet_data_portal/tests/test_infra/seed_db.py +++ b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py @@ -3,7 +3,6 @@ """ import factory.random - from platformics.database.connect import init_sync_db from platformics.settings import CLISettings from platformics.test_infra.factories.base import FileFactory, SessionStorage @@ -21,7 +20,9 @@ from test_infra.factories.tiltseries import TiltseriesFactory from test_infra.factories.tomogram import TomogramFactory from test_infra.factories.tomogram_author import TomogramAuthorFactory -from test_infra.factories.tomogram_voxel_spacing import TomogramVoxelSpacingFactory +from test_infra.factories.tomogram_voxel_spacing import ( + TomogramVoxelSpacingFactory, +) def use_factoryboy() -> None: @@ -61,9 +62,19 @@ def use_factoryboy() -> None: DatasetFundingFactory(dataset=ds2, funding_agency_name="Grant For dataset2") DatasetAuthorFactory(dataset=ds1, name="Author 1", primary_author_status=True) - DatasetAuthorFactory(dataset=ds1, name="Author 2", corresponding_author_status=True, orcid="0000-2222-9999-8888") + DatasetAuthorFactory( + dataset=ds1, + name="Author 2", + corresponding_author_status=True, + orcid="0000-2222-9999-8888", + ) DatasetAuthorFactory(dataset=ds2, name="Author 3", primary_author_status=True) - DatasetAuthorFactory(dataset=ds2, name="Author 4", corresponding_author_status=True, orcid="4444-2222-9999-8888") + DatasetAuthorFactory( + dataset=ds2, + name="Author 4", + corresponding_author_status=True, + orcid="4444-2222-9999-8888", + ) r1 = RunFactory.create( dataset=ds1, @@ -249,25 +260,53 @@ def use_factoryboy() -> None: object_id="GO:000000A", ) - AnnotationAuthorFactory.create(annotation=a40, name="Author 1", orcid="0000-0000-0000-0007") - AnnotationAuthorFactory.create(annotation=a40, name="Author 2", orcid="0000-0000-0000-0008") - AnnotationAuthorFactory.create(annotation=a41, name="Author 1", orcid="0000-0000-0000-0007") - AnnotationAuthorFactory.create(annotation=a41, name="Author 2", orcid="0000-0000-0000-0008") - AnnotationAuthorFactory.create(annotation=a42, name="Author 3", orcid="0000-0000-0000-0039") - AnnotationAuthorFactory.create(annotation=a42, name="Author 4", orcid="0000-0000-0000-0049") - AnnotationAuthorFactory.create(annotation=a43, name="Author 5", orcid="0000-0000-0000-0059") - AnnotationAuthorFactory.create(annotation=a44, name="Author 6", orcid="0000-0000-0000-0069") - AnnotationAuthorFactory.create(annotation=a45, name="Author 7", orcid="0000-0000-0000-0079") - AnnotationAuthorFactory.create(annotation=a45, name="Author 8", orcid="0000-0000-0000-0089") + AnnotationAuthorFactory.create( + annotation=a40, name="Author 1", orcid="0000-0000-0000-0007", + ) + AnnotationAuthorFactory.create( + annotation=a40, name="Author 2", orcid="0000-0000-0000-0008", + ) + AnnotationAuthorFactory.create( + annotation=a41, name="Author 1", orcid="0000-0000-0000-0007", + ) + AnnotationAuthorFactory.create( + annotation=a41, name="Author 2", orcid="0000-0000-0000-0008", + ) + AnnotationAuthorFactory.create( + annotation=a42, name="Author 3", orcid="0000-0000-0000-0039", + ) + AnnotationAuthorFactory.create( + annotation=a42, name="Author 4", orcid="0000-0000-0000-0049", + ) + AnnotationAuthorFactory.create( + annotation=a43, name="Author 5", orcid="0000-0000-0000-0059", + ) + AnnotationAuthorFactory.create( + annotation=a44, name="Author 6", orcid="0000-0000-0000-0069", + ) + AnnotationAuthorFactory.create( + annotation=a45, name="Author 7", orcid="0000-0000-0000-0079", + ) + AnnotationAuthorFactory.create( + annotation=a45, name="Author 8", orcid="0000-0000-0000-0089", + ) as40op = AnnotationShapeFactory.create(annotation=a40, shape_type="OrientedPoint") - as40sm = AnnotationShapeFactory.create(annotation=a40, shape_type="SegmentationMask") + as40sm = AnnotationShapeFactory.create( + annotation=a40, shape_type="SegmentationMask", + ) as41pt = AnnotationShapeFactory.create(annotation=a41, shape_type="Point") - as41sm = AnnotationShapeFactory.create(annotation=a41, shape_type="SegmentationMask") + as41sm = AnnotationShapeFactory.create( + annotation=a41, shape_type="SegmentationMask", + ) as42op = AnnotationShapeFactory.create(annotation=a42, shape_type="OrientedPoint") - as42sm = AnnotationShapeFactory.create(annotation=a42, shape_type="SegmentationMask") + as42sm = AnnotationShapeFactory.create( + annotation=a42, shape_type="SegmentationMask", + ) as43op = AnnotationShapeFactory.create(annotation=a43, shape_type="OrientedPoint") - as44sm = AnnotationShapeFactory.create(annotation=a44, shape_type="SegmentationMask") + as44sm = AnnotationShapeFactory.create( + annotation=a44, shape_type="SegmentationMask", + ) as45pt = AnnotationShapeFactory.create(annotation=a45, shape_type="Point") AnnotationFileFactory.create( From cf871d89c99934d66d997944c9d6db8f2b2f5bc3 Mon Sep 17 00:00:00 2001 From: Jessica Gadling Date: Thu, 17 Oct 2024 11:44:04 -0400 Subject: [PATCH 15/18] Lint. --- client/python/cryoet_data_portal/Makefile | 2 +- .../src/cryoet_data_portal/_client.py | 6 +- .../tests/test_get_client.py | 6 +- .../tests/test_infra/seed_db.py | 56 +++++++++++++------ client/python/cryoet_data_portal/tests/tmp.py | 21 ------- 5 files changed, 50 insertions(+), 41 deletions(-) delete mode 100644 client/python/cryoet_data_portal/tests/tmp.py diff --git a/client/python/cryoet_data_portal/Makefile b/client/python/cryoet_data_portal/Makefile index 98027bd9b..201ae2dd1 100644 --- a/client/python/cryoet_data_portal/Makefile +++ b/client/python/cryoet_data_portal/Makefile @@ -3,7 +3,7 @@ SHELL := /bin/bash export BACKEND_DIR=/tmp/cryoet-data-portal-backend-test-infra .PHONY: set-api-version set-api-version: - if [ ! -e $(BACKEND_DIR) ]; then git clone git@github.com:chanzuckerberg/cryoet-data-portal-backend.git $(BACKEND_DIR); fi + if [ ! -e $(BACKEND_DIR) ]; then git clone https://github.com/chanzuckerberg/cryoet-data-portal-backend.git $(BACKEND_DIR); fi export STAGING_SHA=$$(./tests/test_infra/get_deployment.sh staging); \ if [ -n "$${STAGING_SHA}" ]; then \ echo "Setting backend to SHA: $${STAGING_SHA}"; \ diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py index 5c142b859..788243666 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py @@ -47,7 +47,11 @@ def __init__(self, url: Optional[str] = None): self.ds = DSLSchema(self.client.schema) def build_query( - self, cls, root_field: str, gql_class_name: str, query_filters=None, + self, + cls, + root_field: str, + gql_class_name: str, + query_filters=None, ): ds = self.ds query_filters = {} if not query_filters else {"where": query_filters} diff --git a/client/python/cryoet_data_portal/tests/test_get_client.py b/client/python/cryoet_data_portal/tests/test_get_client.py index b4d8ac27f..ba4adccd8 100644 --- a/client/python/cryoet_data_portal/tests/test_get_client.py +++ b/client/python/cryoet_data_portal/tests/test_get_client.py @@ -65,7 +65,8 @@ def test_relationships_reverse(client) -> None: def test_correct_number_of_related_objects(client: Client): annos = Annotation.find( - client, [Annotation.object_name == "Test Annotation Object Name"], + client, + [Annotation.object_name == "Test Annotation Object Name"], ) assert len(annos) == 1 @@ -74,7 +75,8 @@ def test_correct_number_of_related_objects(client: Client): def test_item_relationship_with_missing_id(client: Client): annos = Annotation.find( - client, [Annotation.object_name == "Test Annotation Object Name"], + client, + [Annotation.object_name == "Test Annotation Object Name"], ) assert len(annos) == 1 diff --git a/client/python/cryoet_data_portal/tests/test_infra/seed_db.py b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py index 722d5886f..93b3fded9 100644 --- a/client/python/cryoet_data_portal/tests/test_infra/seed_db.py +++ b/client/python/cryoet_data_portal/tests/test_infra/seed_db.py @@ -261,51 +261,75 @@ def use_factoryboy() -> None: ) AnnotationAuthorFactory.create( - annotation=a40, name="Author 1", orcid="0000-0000-0000-0007", + annotation=a40, + name="Author 1", + orcid="0000-0000-0000-0007", ) AnnotationAuthorFactory.create( - annotation=a40, name="Author 2", orcid="0000-0000-0000-0008", + annotation=a40, + name="Author 2", + orcid="0000-0000-0000-0008", ) AnnotationAuthorFactory.create( - annotation=a41, name="Author 1", orcid="0000-0000-0000-0007", + annotation=a41, + name="Author 1", + orcid="0000-0000-0000-0007", ) AnnotationAuthorFactory.create( - annotation=a41, name="Author 2", orcid="0000-0000-0000-0008", + annotation=a41, + name="Author 2", + orcid="0000-0000-0000-0008", ) AnnotationAuthorFactory.create( - annotation=a42, name="Author 3", orcid="0000-0000-0000-0039", + annotation=a42, + name="Author 3", + orcid="0000-0000-0000-0039", ) AnnotationAuthorFactory.create( - annotation=a42, name="Author 4", orcid="0000-0000-0000-0049", + annotation=a42, + name="Author 4", + orcid="0000-0000-0000-0049", ) AnnotationAuthorFactory.create( - annotation=a43, name="Author 5", orcid="0000-0000-0000-0059", + annotation=a43, + name="Author 5", + orcid="0000-0000-0000-0059", ) AnnotationAuthorFactory.create( - annotation=a44, name="Author 6", orcid="0000-0000-0000-0069", + annotation=a44, + name="Author 6", + orcid="0000-0000-0000-0069", ) AnnotationAuthorFactory.create( - annotation=a45, name="Author 7", orcid="0000-0000-0000-0079", + annotation=a45, + name="Author 7", + orcid="0000-0000-0000-0079", ) AnnotationAuthorFactory.create( - annotation=a45, name="Author 8", orcid="0000-0000-0000-0089", + annotation=a45, + name="Author 8", + orcid="0000-0000-0000-0089", ) as40op = AnnotationShapeFactory.create(annotation=a40, shape_type="OrientedPoint") as40sm = AnnotationShapeFactory.create( - annotation=a40, shape_type="SegmentationMask", + annotation=a40, + shape_type="SegmentationMask", ) as41pt = AnnotationShapeFactory.create(annotation=a41, shape_type="Point") as41sm = AnnotationShapeFactory.create( - annotation=a41, shape_type="SegmentationMask", + annotation=a41, + shape_type="SegmentationMask", ) as42op = AnnotationShapeFactory.create(annotation=a42, shape_type="OrientedPoint") as42sm = AnnotationShapeFactory.create( - annotation=a42, shape_type="SegmentationMask", + annotation=a42, + shape_type="SegmentationMask", ) as43op = AnnotationShapeFactory.create(annotation=a43, shape_type="OrientedPoint") as44sm = AnnotationShapeFactory.create( - annotation=a44, shape_type="SegmentationMask", + annotation=a44, + shape_type="SegmentationMask", ) as45pt = AnnotationShapeFactory.create(annotation=a45, shape_type="Point") @@ -479,6 +503,6 @@ def use_factoryboy() -> None: if __name__ == "__main__": - print("Seeding database") + print("Seeding database") # noqa use_factoryboy() - print("Seeding complete") + print("Seeding complete") # noqa diff --git a/client/python/cryoet_data_portal/tests/tmp.py b/client/python/cryoet_data_portal/tests/tmp.py deleted file mode 100644 index 022ef8d82..000000000 --- a/client/python/cryoet_data_portal/tests/tmp.py +++ /dev/null @@ -1,21 +0,0 @@ -from cryoet_data_portal import Client, Run, Tomogram - -# Instantiate a client, using the data portal GraphQL API by default -client = Client() - -# runs_list = Run.find(client, query_filters=[Run.name.ilike("%TS%"), Run.tomogram_voxel_spacings.tomograms.size_x > 900]) -runs_list = Run.find(client) -for run in runs_list: - print(run.name) - for vs in run.tomogram_voxel_spacings: - # for tomo in vs.tomograms: - # These tomograms may or may not be > 900 voxels wide because I didn't add another filter above! - tomos = Tomogram.find( - client, - query_filters=[ - Tomogram.tomogram_voxel_spacing.id == vs.id, - ], - ) - for tomo in tomos: - print(tomo.to_dict()) - print(run.to_dict()) From ad50024b9ba535e9702edc2f1196c04dc54848ba Mon Sep 17 00:00:00 2001 From: uermel Date: Fri, 18 Oct 2024 11:19:03 -0700 Subject: [PATCH 16/18] include setuptools-scm to make pip installable from github. --- client/python/cryoet_data_portal/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/python/cryoet_data_portal/pyproject.toml b/client/python/cryoet_data_portal/pyproject.toml index 34bd018b3..f978d9194 100644 --- a/client/python/cryoet_data_portal/pyproject.toml +++ b/client/python/cryoet_data_portal/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=64"] +requires = ["setuptools>=64","setuptools-scm"] build-backend = "setuptools.build_meta" [project] From ecdee93134fe9b07c76d77b66382dab039c9a973 Mon Sep 17 00:00:00 2001 From: uermel Date: Fri, 18 Oct 2024 11:19:40 -0700 Subject: [PATCH 17/18] fix converting list of string to camelcase --- .../cryoet_data_portal/src/cryoet_data_portal/_gql_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py index 74f975938..ecc9d834e 100644 --- a/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py +++ b/client/python/cryoet_data_portal/src/cryoet_data_portal/_gql_base.py @@ -138,7 +138,7 @@ def get_related_class(self): return self.__current_query.get_related_class() def to_gql(self): - return strcase.to_lower_camel(self.__name) + return [strcase.to_lower_camel(n) for n in self.__name] class Relationship(GQLField): From 9c3ddff55ccb432ea07aeae4424c7bd712fc9a6d Mon Sep 17 00:00:00 2001 From: uermel Date: Fri, 18 Oct 2024 11:26:09 -0700 Subject: [PATCH 18/18] make sure .graphql is included. --- client/python/cryoet_data_portal/pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/python/cryoet_data_portal/pyproject.toml b/client/python/cryoet_data_portal/pyproject.toml index f978d9194..2a1376ef3 100644 --- a/client/python/cryoet_data_portal/pyproject.toml +++ b/client/python/cryoet_data_portal/pyproject.toml @@ -50,6 +50,9 @@ exclude = [ "tests*", ] # exclude packages matching these glob patterns (empty by default) +[tool.setuptools] +include-package-data = true + [tool.setuptools_scm] root = "../../.."