diff --git a/examples/vanilla/custom-organism.html b/examples/vanilla/custom-organism.html index 4d6ffbe5..a517f83f 100644 --- a/examples/vanilla/custom-organism.html +++ b/examples/vanilla/custom-organism.html @@ -34,7 +34,8 @@

Custom organism | Ideogram

diff --git a/src/js/init/init.js b/src/js/init/init.js index d1884b1a..b8aa4ec1 100644 --- a/src/js/init/init.js +++ b/src/js/init/init.js @@ -165,8 +165,9 @@ function getBandFileNames(taxid, bandFileNames, ideo) { } bandFileName = getBandFileName(taxid, accession, ideo); + var isCustomOrganism = taxid === '-1'; - if (taxid in ideo.organismsWithBands) { + if (taxid in ideo.organismsWithBands || isCustomOrganism) { bandFileNames[taxid] = bandFileName; } return bandFileNames; diff --git a/src/js/services/organisms.js b/src/js/services/organisms.js index 6d5ca1d7..df9ac127 100644 --- a/src/js/services/organisms.js +++ b/src/js/services/organisms.js @@ -9,8 +9,18 @@ function getTaxidFromEutils(orgName, ideo) { taxonomySearch = ideo.esearch + '&db=taxonomy&term=' + orgName; return d3.json(taxonomySearch).then(function(data) { - taxid = data.esearchresult.idlist[0]; - return [orgName, taxid]; + var idlist = data.esearchresult.idlist; + if (idlist.length === 0) { + throw Error( + 'Organism "' + orgName + '" is generally unknown; it was not found ' + + 'in the NCBI Taxonomy database. If you did not intend to specify a ' + + 'novel or custom taxon, then try using the organism\'s ' + + 'scientific name, e.g. Homo sapiens or Arabidopsis thaliana.' + ); + } else { + taxid = data.esearchresult.idlist[0]; + return [orgName, taxid]; + } }); } @@ -201,6 +211,16 @@ function populateNonNativeOrg(orgs, ideo) { }; Object.assign(ideo.organisms, augmentedOrganismMetadata); + }, function(errorMessage) { + console.info(errorMessage); + var customMetadata = { + scientificName: org, + commonName: org, + assemblies: {default: ''} + }; + + ideo.organisms['-1'] = customMetadata; + augmentedOrganismMetadata['-1'] = customMetadata; }); } else { promise = new Promise(function(resolve) {