diff --git a/dandi/metadata.py b/dandi/metadata.py index dfae376b8..bfe9deb8f 100644 --- a/dandi/metadata.py +++ b/dandi/metadata.py @@ -397,6 +397,7 @@ def parse_purlobourl(url: str, lookup: ty.Optional[ty.Tuple[str, ...]] = None): """ req = requests.get(url, allow_redirects=True) + req.raise_for_status() doc = parseString(req.text) for elfound in doc.getElementsByTagName("Class"): if ( @@ -432,7 +433,7 @@ def extract_species(metadata): value_id = value_orig lookup = ("rdfs:label", "oboInOwl:hasExactSynonym") try: - result = parse_purlobourl(value, lookup=lookup) + result = parse_purlobourl(value_orig, lookup=lookup) except ConnectionError: value = None else: @@ -457,7 +458,8 @@ def extract_species(metadata): "(http://www.ontobee.org/ontology/NCBITaxon) into " "your species field in your NWB file. For example: " "http://purl.obolibrary.org/obo/NCBITaxon_9606 is the " - "url for the species Homo sapiens." + "url for the species Homo sapiens. Please note that " + "this url is case sensitive." ) return models.SpeciesType(identifier=value_id, name=value) else: diff --git a/dandi/tests/data/metadata/metadata2asset_3.json b/dandi/tests/data/metadata/metadata2asset_3.json index 87ec60834..58c471242 100644 --- a/dandi/tests/data/metadata/metadata2asset_3.json +++ b/dandi/tests/data/metadata/metadata2asset_3.json @@ -85,7 +85,8 @@ "genotype": "Typical", "species": { "schemaKey": "SpeciesType", - "identifier": "http://purl.obolibrary.org/obo/NCBITaxon_1234175" + "identifier": "http://purl.obolibrary.org/obo/NCBITaxon_1234175", + "name": "Cyperus bulbosus" } } ] diff --git a/dandi/tests/test_metadata.py b/dandi/tests/test_metadata.py index e0151e609..5896e6ef0 100644 --- a/dandi/tests/test_metadata.py +++ b/dandi/tests/test_metadata.py @@ -16,6 +16,7 @@ from .skip import mark from ..metadata import ( extract_age, + extract_species, get_metadata, metadata2asset, parse_age, @@ -338,7 +339,22 @@ def test_time_extract_gest(): "oboInOwl:hasExactSynonym": "Norway rat", }, ), + ( + "http://purl.obolibrary.org/obo/NCBITaxon_28584", + { + "rdfs:label": "Drosophila suzukii", + }, + ), ], ) def test_parseobourl(url, value): assert parse_purlobourl(url) == value + + +def test_species(): + m = {"species": "http://purl.obolibrary.org/obo/NCBITaxon_28584"} + assert extract_species(m).json_dict() == { + "identifier": "http://purl.obolibrary.org/obo/NCBITaxon_28584", + "schemaKey": "SpeciesType", + "name": "Drosophila suzukii", + }