示例#1
0
    def test_cache(self):
        records = [{
            "scientificNameID":
            "urn:lsid:marinespecies.org:taxname:141433"
        }]

        results_nocache = taxonomy.check(records)
        self.assertTrue(results_nocache[0]["annotations"]["aphia"] == 141433)
        self.assertFalse(results_nocache[0]["dropped"])
        self.assertNotIn(Flag.NOT_MARINE.value, results_nocache[0]["flags"])

        results_cache = taxonomy.check(records, self.cache)
        self.assertTrue(results_cache[0]["annotations"]["aphia"] == 141433)
        self.assertTrue(results_cache[0]["dropped"])
        self.assertIn(Flag.NOT_MARINE.value, results_cache[0]["flags"])
示例#2
0
 def test_name_synonym_accepted_marine_unsure(self):
     records = [{"id": 0, "scientificName": "Brockmanniella brockmannii"}]
     results = taxonomy.check(records)
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 971564)
示例#3
0
 def test_name_invalid(self):
     records = [{"id": 0, "scientificName": "Bivalve"}]
     results = taxonomy.check(records)
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertTrue(results[0]["dropped"])
     self.assertIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIsNone(results[0]["annotations"]["aphia"])
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
示例#4
0
 def test_name_valid(self):
     records = [{"id": 0, "scientificName": "Abra alba"}]
     results = taxonomy.check(records)
     self.assertTrue(results[0]["annotations"]["aphia"] == 141433)
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertTrue(len(results[0]["flags"]) == 0)
示例#5
0
 def test_name_synonym(self):
     records = [{"id": 0, "scientificName": "Orca gladiator"}]
     results = taxonomy.check(records)
     self.assertTrue(results[0]["annotations"]["aphia"] == 137102)
     self.assertTrue(results[0]["annotations"]["unaccepted"] == 384046)
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertTrue(len(results[0]["flags"]) == 0)
示例#6
0
 def test_name_not_marine(self):
     records = [{"id": 0, "scientificName": "Ardea cinerea"}]
     results = taxonomy.check(records)
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertTrue(results[0]["dropped"])
     self.assertIn(Flag.NOT_MARINE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 212668)
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
示例#7
0
 def test_aphiaid_zero(self):
     records = [{
         "scientificName": "Phytoplankton color",
         "scientificNameID": "urn:lsid:marinespecies.org:taxname:0"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertTrue(results[0]["dropped"])
     self.assertIn(Flag.NO_MATCH.value, results[0]["flags"])
示例#8
0
 def test_unaccepted(self):
     records = [{"id": 0, "scientificName": "Dactyliosolen flexuosus"}]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertNotIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 637279)
示例#9
0
 def test_interim_deleted(self):
     records = [{
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:22747"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 22747)
示例#10
0
 def test_id_invalid(self):
     records = [{"scientificNameID": "urn:lsid:itis.gov:itis_tsn:28726"}]
     results = taxonomy.check(records)
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertIn("scientificName", results[0]["missing"])
     self.assertTrue(results[0]["dropped"])
     self.assertIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn("scientificNameID", results[0]["invalid"])
     self.assertTrue(len(results[0]["invalid"]) == 1)
     self.assertIsNone(results[0]["annotations"]["aphia"])
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
示例#11
0
 def test_id_valid(self):
     records = [{
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:141433"
     }]
     results = taxonomy.check(records)
     self.assertTrue(results[0]["annotations"]["aphia"] == 141433)
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertIn("scientificName", results[0]["missing"])
     self.assertTrue(len(results[0]["flags"]) == 0)
示例#12
0
 def test_uncertain(self):
     records = [{
         "scientificNameID": "urn:lsid:marinespecies.org:taxname:835694",
         "scientificName": "Operculodinium centrocarpum"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 835694)
示例#13
0
 def test_id_non_existing(self):
     records = [{
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:99999999"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertIn("scientificName", results[0]["missing"])
     self.assertTrue(results[0]["dropped"])
     self.assertIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn("scientificNameID", results[0]["invalid"])
     self.assertIsNone(results[0]["annotations"]["aphia"])
     self.assertIsNone(results[0]["annotations"]["unaccepted"])
示例#14
0
 def test_paraphyletic(self):
     records = [{
         "scientificNameID": "urn:lsid:marinespecies.org:taxname:794",
         "scientificName": "Turbellaria"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertNotIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 794)
示例#15
0
 def test_nomen_dubium(self):
     records = [{
         "scientificNameID": "urn:lsid:marinespecies.org:taxname:130270",
         "scientificName": "Magelona minuta"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertNotIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 130270)
示例#16
0
 def test_taxon_inquirendum(self):
     records = [{
         "id":
         0,
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:133144"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 133144)
示例#17
0
 def test_whitespace(self):
     records = [{
         "scientificName":
         "Illex illecebrosus",
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:153087 "
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertNotIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 153087)
示例#18
0
 def test_annotations_resolvable(self):
     records = [{
         "scientificName": "Hyalinia crystallina Muller, 1774",
         "phylum": "Mollusca",
         "class": "Gastropoda Cuvier, 1797",
         "order": "Stylommatophora",
         "family": "Zonitidae Mörch, 1864",
         "genus": "Hyalinia Agassiz, 1837"
     }]
     results = taxonomy.check(records)
     self.assertIn(Flag.WORMS_ANNOTATION_RESOLVABLE.value,
                   results[0]["flags"])
     self.assertIsNotNone(results[0]["annotations"]["aphia"])
示例#19
0
 def test_id_synonym(self):
     records = [{
         "id":
         0,
         "scientificNameID":
         "urn:lsid:marinespecies.org:taxname:384046"
     }]
     results = taxonomy.check(records)
     self.assertTrue(results[0]["annotations"]["aphia"] == 137102)
     self.assertTrue(results[0]["annotations"]["unaccepted"] == 384046)
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertIn("scientificName", results[0]["missing"])
     self.assertTrue(len(results[0]["flags"]) == 0)
示例#20
0
 def test_nomen_nudum(self):
     records = [{
         "id": 0,
         "scientificNameID": "urn:lsid:marinespecies.org:taxname:152230",
         "scientificName": "Coelenterata tissue"
     }]
     results = taxonomy.check(records)
     self.assertNotIn("scientificName", results[0]["missing"])
     self.assertNotIn("scientificNameID", results[0]["missing"])
     self.assertFalse(results[0]["dropped"])
     self.assertNotIn(Flag.NO_MATCH.value, results[0]["flags"])
     self.assertIn(Flag.MARINE_UNSURE.value, results[0]["flags"])
     self.assertIn(Flag.NO_ACCEPTED_NAME.value, results[0]["flags"])
     self.assertTrue(results[0]["annotations"]["aphia"] == 152230)
示例#21
0
 def test_annotations(self):
     records = [
         {
             "scientificName": "NA",
             "scientificNameID": "NA",
             "phylum": "Ciliophora",
             "class": "Ciliatea",
             "order": "NA",
             "family": "NA",
             "genus": "NA"
         },
         {
             "scientificName": "**non-current code** Antennarius sp.",
             "scientificNameID": None,
             "phylum": "Chordata",
             "class": "Actinopterygii",
             "order": "Lophiiformes",
             "family": "Antennariidae",
             "genus": "Antennarius"
         },
         {
             "scientificName": "Vinundu guellemei",
             "scientificNameID": None,
             "phylum": None,
             "class": None,
             "order": None,
             "family": None,
             "genus": None
         },
         {
             "scientificName": "unknown fish [, 1998]"
         },
     ]
     results = taxonomy.check(records)
     self.assertIn(Flag.WORMS_ANNOTATION_UNRESOLVABLE.value,
                   results[0]["flags"])
     self.assertIsNone(results[0]["annotations"]["aphia"])
     self.assertIn(Flag.WORMS_ANNOTATION_REJECT_AMBIGUOUS.value,
                   results[1]["flags"])
     self.assertIsNone(results[1]["annotations"]["aphia"])
     self.assertIn(Flag.WORMS_ANNOTATION_RESOLVABLE_HUMAN.value,
                   results[2]["flags"])
     self.assertEquals(results[2]["annotations"]["aphia"], 1060834)
     self.assertIn(Flag.WORMS_ANNOTATION_RESOLVABLE_LOSS.value,
                   results[3]["flags"])
     self.assertEquals(results[3]["annotations"]["aphia"], 11676)
示例#22
0
 def test_annotations(self):
     records = [{
         "id": 0,
         "scientificName": "Brachiolaria"
     }, {
         "id": 1,
         "scientificName": "Cercocebus sanjei"
     }, {
         "id": 2,
         "scientificName": "**non-current code** ??"
     }]
     results = taxonomy.check(records)
     self.assertIn(Flag.WORMS_ANNOTATION_REJECT_GROUPING.value,
                   results[0]["flags"])
     self.assertIn(Flag.WORMS_ANNOTATION_REJECT_HABITAT.value,
                   results[1]["flags"])
     self.assertIn(Flag.WORMS_ANNOTATION_NO_BIOTA.value,
                   results[2]["flags"])