Search in sources :

Example 6 with SpecimenNode

use of org.eol.globi.domain.SpecimenNode in project eol-globi-data by jhpoelen.

the class StudyImporterForSeltmannIT method importArchive.

protected void importArchive(String archiveName) throws StudyImporterException {
    StudyImporterForSeltmann importer = new StudyImporterForSeltmann(null, nodeFactory);
    importer.setDataset(new DatasetImpl(null, URI.create(ARCHIVE_URI_PREFIX + archiveName)));
    importStudy(importer);
    List<Study> allStudies = NodeUtil.findAllStudies(getGraphDb());
    for (Study allStudy : allStudies) {
        assertThat(allStudy.getSource(), startsWith("Digital Bee Collections Network, 2014 (and updates). Version: 2015-03-18. National Science Foundation grant DBI 0956388"));
        assertThat(allStudy.getCitation(), is("Digital Bee Collections Network, 2014 (and updates). Version: 2015-03-18. National Science Foundation grant DBI 0956388"));
        Iterable<Relationship> specimens = NodeUtil.getSpecimens(allStudy);
        for (Relationship specimen : specimens) {
            Specimen spec = new SpecimenNode(specimen.getEndNode());
            Term basisOfRecord = spec.getBasisOfRecord();
            assertThat(basisOfRecord.getId(), either(is("TEST:PreservedSpecimen")).or(is("TEST:LabelObservation")));
            assertThat(basisOfRecord.getName(), either(is("PreservedSpecimen")).or(is("LabelObservation")));
        }
    }
    assertThat(taxonIndex.findTaxonByName("Megandrena mentzeliae"), is(notNullValue()));
    assertThat(taxonIndex.findTaxonByName("Mentzelia tricuspis"), is(notNullValue()));
}
Also used : Study(org.eol.globi.domain.Study) Specimen(org.eol.globi.domain.Specimen) Relationship(org.neo4j.graphdb.Relationship) DatasetImpl(org.eol.globi.service.DatasetImpl) Term(org.eol.globi.domain.Term) SpecimenNode(org.eol.globi.domain.SpecimenNode)

Example 7 with SpecimenNode

use of org.eol.globi.domain.SpecimenNode in project eol-globi-data by jhpoelen.

the class StudyImporterForSeltmannTest method importSome.

@Test
public void importSome() throws StudyImporterException, IOException {
    StudyImporterForSeltmann importer = new StudyImporterForSeltmann(null, nodeFactory);
    Dataset dataset = new DatasetLocal();
    JsonNode config = new ObjectMapper().readTree("{\"citation\": \"some citation\", \"resources\": {\"archive\": \"seltmann/testArchive.zip\"}}");
    dataset.setConfig(config);
    importer.setDataset(dataset);
    importStudy(importer);
    List<Study> allStudies = NodeUtil.findAllStudies(getGraphDb());
    for (Study allStudy : allStudies) {
        assertThat(allStudy.getSource(), startsWith("Digital Bee Collections Network, 2014 (and updates). Version: 2015-03-18. National Science Foundation grant DBI 0956388"));
        assertThat(allStudy.getCitation(), is("Digital Bee Collections Network, 2014 (and updates). Version: 2015-03-18. National Science Foundation grant DBI 0956388"));
        Iterable<Relationship> specimens = NodeUtil.getSpecimens(allStudy);
        for (Relationship specimen : specimens) {
            SpecimenNode spec = new SpecimenNode(specimen.getEndNode());
            final String recordId = (String) spec.getUnderlyingNode().getProperty("idigbio:recordID");
            assertThat(recordId, is(notNullValue()));
            assertThat(spec.getExternalId(), is(recordId));
            Term basisOfRecord = spec.getBasisOfRecord();
            assertThat(basisOfRecord.getId(), either(is("TEST:PreservedSpecimen")).or(is("TEST:LabelObservation")));
            assertThat(basisOfRecord.getName(), either(is("PreservedSpecimen")).or(is("LabelObservation")));
        }
    }
    assertThat(taxonIndex.findTaxonByName("Megandrena mentzeliae"), is(notNullValue()));
    assertThat(taxonIndex.findTaxonByName("Mentzelia tricuspis"), is(notNullValue()));
}
Also used : Study(org.eol.globi.domain.Study) Dataset(org.eol.globi.service.Dataset) Relationship(org.neo4j.graphdb.Relationship) JsonNode(org.codehaus.jackson.JsonNode) Term(org.eol.globi.domain.Term) SpecimenNode(org.eol.globi.domain.SpecimenNode) DatasetLocal(org.eol.globi.service.DatasetLocal) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) Test(org.junit.Test)

Example 8 with SpecimenNode

use of org.eol.globi.domain.SpecimenNode in project eol-globi-data by jhpoelen.

the class StudyImporterForSzoboszlaiIT method importAll.

@Test
public void importAll() throws StudyImporterException, IOException {
    JsonNode config = new ObjectMapper().readTree("{ \"citation\": \"Szoboszlai AI, Thayer JA, Wood SA, Sydeman WJ, Koehn LE (2015) Data from: Forage species in predator diets: synthesis of data from the California Current. Dryad Digital Repository. http://dx.doi.org/10.5061/dryad.nv5d2\",\n" + "  \"doi\": \"http://dx.doi.org/10.5061/dryad.nv5d2\",\n" + "  \"format\": \"szoboszlai\",\n" + "  \"resources\": {\n" + "    \"links\": \"http://datadryad.org/bitstream/handle/10255/dryad.94536/CCPDDlinkdata_v1.csv\",\n" + "    \"shapes\": \"http://datadryad.org/bitstream/handle/10255/dryad.94535/CCPDDlocationdata_v1.zip\"\n" + "  }\n" + "}");
    DatasetImpl dataset = new DatasetImpl("someRepo", URI.create("http://example.com"));
    dataset.setConfig(config);
    ParserFactory parserFactory = new ParserFactoryForDataset(dataset);
    StudyImporterForSzoboszlai importer = new StudyImporterForSzoboszlai(parserFactory, nodeFactory);
    importer.setDataset(dataset);
    importStudy(importer);
    List<Study> allStudies = NodeUtil.findAllStudies(getGraphDb());
    assertThat(allStudies.size(), is(not(0)));
    Study firstStudy = allStudies.get(0);
    Iterable<Relationship> specimens = NodeUtil.getSpecimens(firstStudy);
    for (Relationship specimen : specimens) {
        Specimen specimenNode = new SpecimenNode(specimen.getEndNode());
        Location sampleLocation = specimenNode.getSampleLocation();
        assertThat(sampleLocation, is(notNullValue()));
        assertThat(sampleLocation.getLatitude(), is(notNullValue()));
        assertThat(sampleLocation.getLongitude(), is(notNullValue()));
    }
    assertThat(taxonIndex.findTaxonByName("Thunnus thynnus"), is(notNullValue()));
    assertThat(nodeFactory.findLocation(new LocationImpl(34.00824202376044, -120.72716166720323, null, null)), is(notNullValue()));
}
Also used : Study(org.eol.globi.domain.Study) JsonNode(org.codehaus.jackson.JsonNode) DatasetImpl(org.eol.globi.service.DatasetImpl) SpecimenNode(org.eol.globi.domain.SpecimenNode) Specimen(org.eol.globi.domain.Specimen) Relationship(org.neo4j.graphdb.Relationship) LocationImpl(org.eol.globi.domain.LocationImpl) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) Location(org.eol.globi.domain.Location) Test(org.junit.Test)

Example 9 with SpecimenNode

use of org.eol.globi.domain.SpecimenNode in project eol-globi-data by jhpoelen.

the class StudyImporterForSPIRETest method assertSingleImport.

private void assertSingleImport(String spireHabitat, String envoId, String envoLabel) throws NodeFactoryException {
    StudyImporterForSPIRE studyImporterForSPIRE = createImporter();
    HashMap<String, String> properties = new HashMap<String, String>();
    properties.put(StudyConstant.TITLE, "the study of men eating dogs");
    properties.put(StudyImporterForSPIRE.PREY_NAME, "dog");
    properties.put(StudyImporterForSPIRE.PREDATOR_NAME, "man");
    properties.put(StudyImporterForSPIRE.LOCALITY_ORIGINAL, "something");
    properties.put(StudyImporterForSPIRE.OF_HABITAT, spireHabitat);
    studyImporterForSPIRE.importTrophicLink(properties);
    resolveNames();
    Taxon dog = taxonIndex.findTaxonByName("dog");
    assertThat(dog, is(notNullValue()));
    Taxon man = taxonIndex.findTaxonByName("man");
    assertThat(man, is(notNullValue()));
    Iterable<Relationship> specimenRels = ((NodeBacked) man).getUnderlyingNode().getRelationships(Direction.INCOMING, NodeUtil.asNeo4j(RelTypes.CLASSIFIED_AS));
    int count = 0;
    for (Relationship specimenRel : specimenRels) {
        count++;
        Specimen specimen = new SpecimenNode(specimenRel.getStartNode());
        assertThat(specimen.getSampleLocation().getLatitude(), is(1.0));
        assertThat(specimen.getSampleLocation().getLongitude(), is(2.0));
        List<Environment> environments = specimen.getSampleLocation().getEnvironments();
        assertThat(environments.size(), is(1));
        Environment environment = environments.get(0);
        assertThat(environment.getExternalId(), is(envoId));
        assertThat(environment.getName(), is(envoLabel));
    }
    assertThat(count, is(1));
}
Also used : Specimen(org.eol.globi.domain.Specimen) HashMap(java.util.HashMap) Taxon(org.eol.globi.domain.Taxon) Relationship(org.neo4j.graphdb.Relationship) Environment(org.eol.globi.domain.Environment) SpecimenNode(org.eol.globi.domain.SpecimenNode)

Example 10 with SpecimenNode

use of org.eol.globi.domain.SpecimenNode in project eol-globi-data by jhpoelen.

the class StudyImporterForWrastTest method createAndPopulateStudyFromLavacaBay.

@Test
public void createAndPopulateStudyFromLavacaBay() throws StudyImporterException, ParseException {
    String csvString = "\"Month\",\"Day\",\"Year\",\"Region\",\"Season\",\"Habitat\",\"Site\",\"Family\",\"Predator Species\",\"TL (mm)\",\"Prey Item Species\",\"Prey item\",\"Number\",\"Condition Index\",\"Volume\",\"Percent Content\",\"Prey Item Trophic Level\",\"Notes\",\"Call #\"\n";
    csvString += "7,24,2001,\"Lower\",\"Fall\",\"Marsh\",1,\"Sciaenidae\",\"Sciaenops ocellatus\",420,\"Acrididae spp. \",\"Acrididae \",1,\"III\",0.4,3.2520325203,2.5,,1\n";
    csvString += "7,25,2001,\"Lower\",\"Spring\",\"Non-Veg \",1,\"Ariidae\",\"Arius felis\",176,\"Aegathoa oculata \",\"Aegathoa oculata\",4,\"I\",0.01,3.3333333333,2.1,,2\n";
    csvString += "7,26,2001,\"Upper\",\"Spring\",\"Reef\",2,\"Depth\",\"Missing depth\",176,\"Aegathoa oculata \",\"Aegathoa oculata\",4,\"I\",0.01,3.3333333333,2.1,,2\n";
    Map<String, String> contentMap = new HashMap<String, String>();
    String locationString = "\"Location\",\"Latitude\",\"Longitude\",,\"Region\",\"Habitat\",\"Site\"\n" + "\"LM1\",28.595267,-96.477033,,\"Lower\",\"Marsh edge\",1\n" + "\"LSG1\",28.596233,-96.476483,,\"Lower\",\"Marsh edge\",1\n" + "\"LM2\",28.593150,-96.474633,,\"Lower\",\"Marsh edge\",2\n" + "\"LSG2\",28.594833,-96.473967,,\"Lower\",\"Marsh edge\",2\n" + "\"LNV1A\",28.608417,-96.475517,,\"Lower\",\"Non-Veg \",1\n" + "\"LNV1B\",28.607217,-96.474500,,\"Lower\",\"Non-Veg \",1\n" + "\"LNV2A\",28.592400,-96.483033,,\"Lower\",\"Non-Veg \",2\n" + "\"LNV2B\",28.590883,-96.484133,,\"Lower\",\"Non-Veg \",2\n" + "\"UR2B\",28.656483,-96.597217,,\"Upper\",\"Reef\",2";
    String envString = "\"Date\",\"Season\",\"Upper/Lower\",\"Habitat\",\"Site\",\"Air Temp (ºC)\",\"Wind Chill (ºC)\",\"Relative Humidity (%)\",\"Heat Index (ºC)\",\"Dew Point (ºC)\",\"Max Wind intensity (mph)\",\"Ave Wind intensity (mph)\",\"Wind Direction\",\"Cloud Cover (%)\",\"Rain?\",\"Depth (m)\",\"Temp (ºC) Surface\",\"Temp (ºC) Bottom\",\"Mean Temp Surface/Bottom\",\"pH Surface\",\"pH Bottom\",\"Mean pH Surface/Bottom\",\"DO (mg/L) Surface\",\"DO (mg/L) Bottom\",\"Mean DO Surface/Bottom\",\"Sal (o/oo) Surface\",\"Sal (o/oo) Bottom\",\"Mean Sal Surface/Bottom\",\"Secchi (m)\"\n" + "7/24/2006,\"Summer\",\"L\",\"R\",1,\"81.3 (F)\",\"81.5 (F)\",71.8,\"86.2 (F)\",\"70.6 (F)\",8.5,8.1,\"SE\",75,\"Yes\",1.9,30.79,30.34,30.565,8.11,8.13,8.12,5.16,4.8,4.98,22.8,23.07,22.935,0.4\n" + "7/24/2006,\"Summer\",\"L\",\"R\",2,\"81.3 (F)\",\"81.5 (F)\",71.8,\"86.2 (F)\",\"70.6 (F)\",8.5,8.1,\"SE\",75,\"Yes\",2.1,31.07,30.14,30.605,8.11,8.1,8.105,5.14,4.64,4.89,23.37,23.84,23.605,0.48\n" + "10/26/2006,\"Fall\",\"L\",\"M\",1,26.8,26.5,78,30,22.4,17.9,15,\"S \",95,\"No\",0.8,25.57,,25.57,8.29,,8.29,8.32,,8.32,21.26,,21.26,\"Bottom\"\n" + "10/26/2006,\"Fall\",\"L\",\"M\",2,26.8,26.5,78,30,22.4,17.9,15,\"S \",95,\"No\",0.4,25.84,,25.84,8.32,,8.32,8.21,,8.21,21.47,,21.47,\"Bottom\"\n" + "10/26/2006,\"Fall\",\"L\",\"SG\",1,26.8,26.5,78,30,22.4,17.9,15,\"S \",95,\"No\",0.8,25.57,,25.57,8.29,,8.29,8.32,,8.32,21.26,,21.26,\"Bottom\"\n" + "4/27/2007,\"Spring\",\"L\",\"R\",1,22.4,22.3,75,23.1,18.1,10.4,9.1,\"NW\",98,\"No\",1.6,23.43,23.39,23.41,,,,7.31,7.09,7.2,14.64,14.64,14.64,0.32\n" + "4/27/2007,\"Spring\",\"L\",\"R\",2,22.4,22.3,75,23.1,18.1,10.4,9.1,\"NW\",98,\"No\",2,23.77,23.77,23.77,,,,7.01,6.82,6.915,15.04,15.04,15.04,0.38\n" + "4/27/2007,\"Spring\",\"L\",\"NV\",1,22.4,22.3,75,23.1,18.1,10.4,9.1,\"NW\",98,\"No\",2,23.85,23.85,23.85,,,,6.96,6.81,6.885,14.65,14.65,14.65,0.48\n" + "4/27/2007,\"Spring\",\"L\",\"NV\",2,22.4,22.3,75,23.1,18.1,10.4,9.1,\"NW\",98,\"No\",1.8,23.78,23.78,23.78,,,,6.87,6.65,6.76,15.11,15.18,15.145,0.45";
    contentMap.put(StudyImporterForWrast.LAVACA_BAY_LOCATIONS, locationString);
    contentMap.put(StudyImporterForWrast.LAVACA_BAY_DATA_SOURCE, csvString);
    contentMap.put(StudyImporterForWrast.LAVACA_BAY_ENVIRONMENTAL, envString);
    StudyImporterForWrast importer = new StudyImporterForWrast(new TestParserFactory(contentMap), nodeFactory);
    importStudy(importer);
    Study study = getStudySingleton(getGraphDb());
    int specimenCount = 0;
    for (Relationship specimen : NodeUtil.getSpecimens(study)) {
        specimenCount++;
    }
    assertThat(specimenCount, is(5));
    assertNotNull(taxonIndex.findTaxonByName("Sciaenops ocellatus"));
    assertNotNull(taxonIndex.findTaxonByName("Arius felis"));
    assertNotNull(taxonIndex.findTaxonByName("Aegathoa oculata"));
    assertNotNull(nodeFactory.findSeason("spring"));
    assertNotNull(nodeFactory.findSeason("fall"));
    Study foundStudy = nodeFactory.findStudy("Wrast 2008");
    assertNotNull(foundStudy);
    for (Relationship rel : NodeUtil.getSpecimens(study)) {
        Date unixEpochProperty = nodeFactory.getUnixEpochProperty(new SpecimenNode(rel.getEndNode()));
        SimpleDateFormat simpleDateFormat = StudyImporterForWrast.getSimpleDateFormat();
        Date endDate = simpleDateFormat.parse("7/27/2001");
        Date startDate = simpleDateFormat.parse("7/23/2001");
        assertThat(unixEpochProperty.before(endDate), is(true));
        assertThat(unixEpochProperty.after(startDate), is(true));
        Specimen specimen = new SpecimenNode(rel.getEndNode());
        for (Relationship ateRel : NodeUtil.getStomachContents(specimen)) {
            TaxonNode taxon = new TaxonNode(rel.getEndNode().getSingleRelationship(NodeUtil.asNeo4j(RelTypes.CLASSIFIED_AS), Direction.OUTGOING).getEndNode());
            String scientificName = taxon.getName();
            if ("Sciaenops ocellatus".equals(scientificName)) {
                Location location = specimen.getSampleLocation();
                assertThat(location, is(not(nullValue())));
                assertThat(location.getLatitude(), is((28.595267 + 28.596233) / 2.0));
                assertThat(location.getLongitude(), is((-96.477033 - 96.476483) / 2.0));
                assertThat(location.getAltitude(), is(-0.8));
                Iterable<Relationship> stomachContents = NodeUtil.getStomachContents(specimen);
                int count = 0;
                for (Relationship containsRel : stomachContents) {
                    Node endNode = containsRel.getEndNode().getSingleRelationship(NodeUtil.asNeo4j(RelTypes.CLASSIFIED_AS), Direction.OUTGOING).getEndNode();
                    Object name = endNode.getProperty("name");
                    String name1 = (String) name;
                    assertThat(name1.replaceAll("\\W", ""), is("Acrididae"));
                    count++;
                }
                assertEquals(1, count);
                Season season = specimen.getSeason();
                assertEquals("fall", season.getTitle());
                assertEquals(420.0d, specimen.getLengthInMm());
            } else if ("Arius felis".equals(scientificName)) {
                Location location = specimen.getSampleLocation();
                assertThat(location, is(not(nullValue())));
                assertThat(location.getLatitude(), is((28.608417 + 28.607217) / 2.0));
                assertThat(location.getLongitude(), is((-96.475517 - 96.474500) / 2.0));
                assertThat(location.getAltitude(), is(-2.0d));
                Iterable<Relationship> stomachContents = NodeUtil.getStomachContents(specimen);
                int count = 0;
                for (Relationship containsRel : stomachContents) {
                    Object name = containsRel.getEndNode().getSingleRelationship(NodeUtil.asNeo4j(RelTypes.CLASSIFIED_AS), Direction.OUTGOING).getEndNode().getProperty("name");
                    assertEquals("Aegathoa oculata", name);
                    count++;
                }
                assertEquals(2, count);
                Season season = specimen.getSeason();
                assertEquals("spring", season.getTitle());
                assertEquals(176.0d, specimen.getLengthInMm());
            } else if ("Missing depth".equals(scientificName)) {
                Location location = specimen.getSampleLocation();
                assertThat(location, is(not(nullValue())));
                assertThat(location.getAltitude(), is(nullValue()));
            } else {
                fail("unexpected scientificName of predator [" + scientificName + "]");
            }
        }
    }
}
Also used : Study(org.eol.globi.domain.Study) TaxonNode(org.eol.globi.domain.TaxonNode) HashMap(java.util.HashMap) Node(org.neo4j.graphdb.Node) SpecimenNode(org.eol.globi.domain.SpecimenNode) TaxonNode(org.eol.globi.domain.TaxonNode) SpecimenNode(org.eol.globi.domain.SpecimenNode) Date(java.util.Date) Specimen(org.eol.globi.domain.Specimen) Relationship(org.neo4j.graphdb.Relationship) Season(org.eol.globi.domain.Season) SimpleDateFormat(java.text.SimpleDateFormat) Location(org.eol.globi.domain.Location) Test(org.junit.Test)

Aggregations

SpecimenNode (org.eol.globi.domain.SpecimenNode)18 Relationship (org.neo4j.graphdb.Relationship)17 Study (org.eol.globi.domain.Study)13 Test (org.junit.Test)11 Specimen (org.eol.globi.domain.Specimen)9 Node (org.neo4j.graphdb.Node)7 HashMap (java.util.HashMap)6 JsonNode (org.codehaus.jackson.JsonNode)5 Location (org.eol.globi.domain.Location)5 Taxon (org.eol.globi.domain.Taxon)4 TaxonNode (org.eol.globi.domain.TaxonNode)4 Date (java.util.Date)3 Environment (org.eol.globi.domain.Environment)3 LocationImpl (org.eol.globi.domain.LocationImpl)3 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 ObjectMapper (org.codehaus.jackson.map.ObjectMapper)2 LogContext (org.eol.globi.domain.LogContext)2 Term (org.eol.globi.domain.Term)2 DatasetImpl (org.eol.globi.service.DatasetImpl)2