diff options
Diffstat (limited to 'bh20sequploader')
-rw-r--r-- | bh20sequploader/__init__.py | 0 | ||||
-rw-r--r-- | bh20sequploader/bh20seq-schema.yml | 56 | ||||
-rw-r--r-- | bh20sequploader/main.py | 6 | ||||
-rw-r--r-- | bh20sequploader/qc_fasta.py | 4 | ||||
-rw-r--r-- | bh20sequploader/qc_metadata.py | 26 | ||||
-rw-r--r-- | bh20sequploader/rdf-mappings.ttl | 0 |
6 files changed, 51 insertions, 41 deletions
diff --git a/bh20sequploader/__init__.py b/bh20sequploader/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bh20sequploader/__init__.py diff --git a/bh20sequploader/bh20seq-schema.yml b/bh20sequploader/bh20seq-schema.yml index a072bd7..2d2e4c9 100644 --- a/bh20sequploader/bh20seq-schema.yml +++ b/bh20sequploader/bh20seq-schema.yml @@ -13,41 +13,54 @@ $graph: type: record fields: host_species: + doc: Host species as defined in NCBITaxon (e.g. http://purl.obolibrary.org/obo/NCBITaxon_9606 for Homo sapiens) type: string jsonldPredicate: _id: http://www.ebi.ac.uk/efo/EFO_0000532 + _type: "@id" host_id: + doc: Identifer for the host. If you submit multiple samples from the same host, use the same host_id for those samples type: string jsonldPredicate: _id: http://semanticscience.org/resource/SIO_000115 host_common_name: + doc: Text label for the host species (e.g. homo sapiens) type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/NOMEN_0000037 host_sex: + doc: Sex of the host as define in NCIT, IRI expected (http://purl.obolibrary.org/obo/C20197 (Male), http://purl.obolibrary.org/obo/NCIT_C27993 (Female) or unkown (http://purl.obolibrary.org/obo/NCIT_C17998)) type: string jsonldPredicate: _id: http://purl.obolibrary.org/obo/PATO_0000047 + _type: "@id" host_age: + doc: Age of the host as number (e.g. 50) type: int? jsonldPredicate: _id: http://purl.obolibrary.org/obo/PATO_0000011 host_age_unit: + doc: Unit of host age e.g. http://purl.obolibrary.org/obo/UO_0000036 type: string? jsonldPredicate: - _id: http://purl.obolibrary.org/obo/UO_0000036 + _id: http://purl.obolibrary.org/obo/NCIT_C42574 + _type: "@id" host_health_status: + doc: A condition or state at a particular time type: string? jsonldPredicate: http://purl.obolibrary.org/obo/NCIT_C25688 host_treatment: + doc: Process in which the act is intended to modify or alter type: string? jsonldPredicate: _id: http://www.ebi.ac.uk/efo/EFO_0000727 host_vaccination: + doc: Field is unstable type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/VO_0000001 additional_host_information: + doc: Field for additional host information type: string? jsonldPredicate: _id: http://semanticscience.org/resource/SIO_001167 @@ -56,38 +69,48 @@ $graph: type: record fields: collector_name: + doc: Name of the person that took the sample type: string jsonldPredicate: _id: http://purl.obolibrary.org/obo/OBI_0001895 collecting_institution: + doc: Institute that was responsible of sampeling type: string jsonldPredicate: _id: http://semanticscience.org/resource/SIO_001167 specimen_source: + doc: A specimen that derives from an anatomical part or substance arising from an organism, e.g. tissue, organ type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/OBI_0001479 collection_date: + doc: Date when the sample was taken type: string? jsonldPredicate: _id: http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C25164 collection_location: + doc: Geographical location where the sample was collected as Gazetteer (https://www.ebi.ac.uk/ols/ontologies/gaz) reference, e.g. http://purl.obolibrary.org/obo/GAZ_00002845 (China) type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/GAZ_00000448 + _type: "@id" sample_storage_conditions: + doc: Information aboout storage of a specified type, e.g. frozen specimen, paraffin, fresh .... type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/OBI_0001472 additional_collection_information: + doc: Add additional comment about the circumstances that a sample was taken type: string? jsonldPredicate: _id: http://semanticscience.org/resource/SIO_001167 sample_id: + doc: Id of the sample as defined by the submitter type: string jsonldPredicate: _id: http://semanticscience.org/resource/SIO_000115 source_database_accession: + doc: If data is deposit at a public resource (e.g. Genbank, ENA) enter the Accession Id here type: string? jsonldPredicate: _id: http://edamontology.org/data_2091 @@ -96,10 +119,13 @@ $graph: type: record fields: virus_species: + doc: The name of a taxon from the NCBI taxonomy database type: string? jsonldPredicate: _id: http://edamontology.org/data_1875 + _type: "@id" virus_strain: + doc: Name of the virus strain type: string? jsonldPredicate: _id: http://semanticscience.org/resource/SIO_010055 @@ -108,14 +134,17 @@ $graph: type: record fields: sample_sequencing_technology: + doc: Technology that was used to sequence this sample (e.g Sanger, Nanopor MiniION) type: string jsonldPredicate: _id: http://purl.obolibrary.org/obo/OBI_0600047 sequence_assembly_method: + doc: Protocol which provides instructions on the alignment of sequencing reads to reference genome type: string? jsonldPredicate: _id: http://www.ebi.ac.uk/efo/EFO_0002699 sequencing_coverage: + doc: Sequence coverage defined as the average number of reads representing a given nucleotide (e.g. 100x) type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/FLU_0000848 @@ -124,22 +153,22 @@ $graph: type: record fields: submitter_name: + doc: Name of the submitter type: string jsonldPredicate: _id: http://semanticscience.org/resource/SIO_000116 - submitter_date: - type: string - jsonldPredicate: - _id: http://purl.obolibrary.org/obo/NCIT_C94162 submitter_address: + doc: Address of the submitter type: string? jsonldPredicate: _id: http://semanticscience.org/resource/SIO_000172 originating_lab: + doc: Name of the laboratory that took the sample type: string jsonldPredicate: _id: http://purl.obolibrary.org/obo/NCIT_C37984 lab_address: + doc: Address of the laboratory where the sample was taken type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/OBI_0600047 @@ -152,10 +181,17 @@ $graph: jsonldPredicate: _id: http://www.ebi.ac.uk/efo/EFO_0001741 authors: + doc: Name of the author(s) type: string? jsonldPredicate: _id: http://purl.obolibrary.org/obo/NCIT_C42781 - submitter_id: + publication: + doc: Reference to publication of this sample (e.g. DOI, pubmed ID, ...) + type: string? + jsonldPredicate: + _id: http://purl.obolibrary.org/obo/NCIT_C19026 + submitter_orchid: + doc: ORCHID of the submitter type: string? jsonldPredicate: _id: http://semanticscience.org/resource/SIO_000115 @@ -169,14 +205,10 @@ $graph: virus: virusSchema? technology: technologySchema submitter: submitterSchema - submission: - type: string - jsonldPredicate: - _id: "@id" - #_type: "@id" id: doc: The subject (eg the fasta/fastq file) that the metadata describes - type: string? + type: string jsonldPredicate: _id: "@id" _type: "@id" + noLinkCheck: true diff --git a/bh20sequploader/main.py b/bh20sequploader/main.py index 4a225f6..e0a6a9a 100644 --- a/bh20sequploader/main.py +++ b/bh20sequploader/main.py @@ -8,8 +8,10 @@ from pathlib import Path import urllib.request import socket import getpass -from .qc_metadata import qc_metadata -from .qc_fasta import qc_fasta +import sys +sys.path.insert(0,'.') +from bh20sequploader.qc_metadata import qc_metadata +from bh20sequploader.qc_fasta import qc_fasta ARVADOS_API_HOST='lugli.arvadosapi.com' ARVADOS_API_TOKEN='2fbebpmbo3rw3x05ueu2i6nx70zhrsb1p22ycu3ry34m4x4462' diff --git a/bh20sequploader/qc_fasta.py b/bh20sequploader/qc_fasta.py index e3d4fe7..e47d66b 100644 --- a/bh20sequploader/qc_fasta.py +++ b/bh20sequploader/qc_fasta.py @@ -21,8 +21,8 @@ def qc_fasta(sequence): raise ValueError("FASTA file contains multiple entries") break sequence.seek(0) - return "reads.fastq" - elif seq_type == "text/fastq": return "sequence.fasta" + elif seq_type == "text/fastq": + return "reads.fastq" else: raise ValueError("Sequence file does not look like FASTA or FASTQ") diff --git a/bh20sequploader/qc_metadata.py b/bh20sequploader/qc_metadata.py index 38edcaa..e477f21 100644 --- a/bh20sequploader/qc_metadata.py +++ b/bh20sequploader/qc_metadata.py @@ -5,21 +5,10 @@ import pkg_resources import logging import traceback -class CustomFetcher(schema_salad.ref_resolver.DefaultFetcher): - def check_exists(sup, url): - if url.startswith("keep:"): - return True - else: - return super().check_exists(url) - - def supported_schemes(self): # type: () -> List[str] - return ["file", "http", "https", "mailto", "keep"] - - def qc_metadata(metadatafile): schema_resource = pkg_resources.resource_stream(__name__, "bh20seq-schema.yml") cache = {"https://raw.githubusercontent.com/arvados/bh20-seq-resource/master/bh20sequploader/bh20seq-schema.yml": schema_resource.read().decode("utf-8")} - (loader, + (document_loader, avsc_names, schema_metadata, metaschema_loader) = schema_salad.schema.load_schema("https://raw.githubusercontent.com/arvados/bh20-seq-resource/master/bh20sequploader/bh20seq-schema.yml", cache=cache) @@ -28,19 +17,6 @@ def qc_metadata(metadatafile): print(avsc_names) return False - document_loader = schema_salad.ref_resolver.Loader( - loader.ctx, - schemagraph=loader.graph, - foreign_properties=loader.foreign_properties, - idx=loader.idx, - cache=loader.cache, - fetcher_constructor=CustomFetcher, - skip_schemas=loader.skip_schemas, - url_fields=loader.url_fields, - allow_attachments=loader.allow_attachments, - session=loader.session, - ) - try: doc, metadata = schema_salad.schema.load_and_validate(document_loader, avsc_names, metadatafile, True) return True diff --git a/bh20sequploader/rdf-mappings.ttl b/bh20sequploader/rdf-mappings.ttl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/bh20sequploader/rdf-mappings.ttl |