aboutsummaryrefslogtreecommitdiff
path: root/bh20sequploader
diff options
context:
space:
mode:
Diffstat (limited to 'bh20sequploader')
-rw-r--r--bh20sequploader/__init__.py0
-rw-r--r--bh20sequploader/bh20seq-schema.yml56
-rw-r--r--bh20sequploader/main.py6
-rw-r--r--bh20sequploader/qc_fasta.py4
-rw-r--r--bh20sequploader/qc_metadata.py26
-rw-r--r--bh20sequploader/rdf-mappings.ttl0
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