use of org.eol.globi.domain.StudyImpl in project eol-globi-data by jhpoelen.
the class StudyImporterForCruaud method importStudy.
@Override
public void importStudy() throws StudyImporterException {
LabeledCSVParser dataParser;
try {
dataParser = parserFactory.createParser(RESOURCE_PATH, CharsetConstant.UTF8);
} catch (IOException e) {
throw new StudyImporterException("failed to read resource [" + RESOURCE_PATH + "]", e);
}
try {
Study study = nodeFactory.getOrCreateStudy(new StudyImpl("cruaud", SOURCE, "http://dx.doi.org/10.1093/sysbio/sys068", null));
while (dataParser.getLine() != null) {
if (importFilter.shouldImportRecord((long) dataParser.getLastLineNumber())) {
try {
String parasiteName = StringUtils.trim(dataParser.getValueByLabel("Family and Species"));
String hostName = StringUtils.trim(dataParser.getValueByLabel("Natural host Ficus species"));
hostName = StringUtils.replace(hostName, "F.", "Ficus");
if (areNamesAvailable(parasiteName, hostName)) {
Specimen parasite = nodeFactory.createSpecimen(study, new TaxonImpl(parasiteName, null));
Specimen host = nodeFactory.createSpecimen(study, new TaxonImpl(hostName, null));
parasite.interactsWith(host, InteractType.PARASITE_OF);
String samplingLocation = StringUtils.trim(dataParser.getValueByLabel("Sampling location"));
if (getGeoNamesService().hasTermForLocale(samplingLocation)) {
LatLng pointForLocality = getGeoNamesService().findLatLng(samplingLocation);
if (pointForLocality == null) {
LOG.warn("no location associated with locality [" + samplingLocation + "]");
} else {
Location location = nodeFactory.getOrCreateLocation(new LocationImpl(pointForLocality.getLat(), pointForLocality.getLng(), null, null));
parasite.caughtIn(location);
host.caughtIn(location);
}
} else {
LOG.warn("no location associated with locality [" + samplingLocation + "]");
}
}
} catch (NodeFactoryException | NumberFormatException e) {
throw new StudyImporterException("failed to import line [" + (dataParser.lastLineNumber() + 1) + "]", e);
}
}
}
} catch (IOException e) {
throw new StudyImporterException("problem importing [" + RESOURCE_PATH + "]", e);
}
}
use of org.eol.globi.domain.StudyImpl in project eol-globi-data by jhpoelen.
the class StudyImporterForGemina method importStudy.
@Override
public void importStudy() throws StudyImporterException {
String studyResource = "gemina_search_2008-01-03.txt";
try {
String source = "Schriml, L. M., Arze, C., Nadendla, S., Ganapathy, A., Felix, V., Mahurkar, A., … Hall, N. (2009). GeMInA, Genomic Metadata for Infectious Agents, a geospatial surveillance pathogen database. Nucleic Acids Research, 38(Database), D754–D764. doi:10.1093/nar/gkp832";
Study study = nodeFactory.getOrCreateStudy(new StudyImpl(source, source, "doi:10.1093/nar/gkp832", source));
LabeledCSVParser parser = parserFactory.createParser(studyResource, "UTF-8");
parser.changeDelimiter('\t');
String[] line;
while ((line = parser.getLine()) != null) {
if (line.length > 7) {
String pathogenId = parser.getValueByLabel("Pathogen Taxonomy");
String pathogenExternalId = StringUtils.isBlank(pathogenId) ? null : TaxonomyProvider.NCBI.getIdPrefix() + pathogenId;
Specimen pathogen = nodeFactory.createSpecimen(study, new TaxonImpl(parser.getValueByLabel("Pathogen"), pathogenExternalId));
String hostId = line[7];
String hostReservoirExternalId = StringUtils.isBlank(hostId) ? null : TaxonomyProvider.NCBI.getIdPrefix() + hostId;
Specimen host = nodeFactory.createSpecimen(study, new TaxonImpl(parser.getValueByLabel("Host/Reservoir"), hostReservoirExternalId));
pathogen.interactsWith(host, InteractType.PATHOGEN_OF);
}
}
} catch (IOException | NodeFactoryException e) {
throw new StudyImporterException("failed to import [" + studyResource + "]", e);
}
}
use of org.eol.globi.domain.StudyImpl in project eol-globi-data by jhpoelen.
the class StudyImporterForGoMexSI2 method importStudy.
@Override
public void importStudy() throws StudyImporterException {
Study study = nodeFactory.getOrCreateStudy(new StudyImpl("GoMexSI", GOMEXI_SOURCE_DESCRIPTION, null, ExternalIdUtil.toCitation("James D. Simons", "<a href=\"http://www.ingentaconnect.com/content/umrsmas/bullmar/2013/00000089/00000001/art00009\">Building a Fisheries Trophic Interaction Database for Management and Modeling Research in the Gulf of Mexico Large Marine Ecosystem.</a>", null)));
final Map<String, Map<String, String>> predatorIdToPredatorNames = new HashMap<String, Map<String, String>>();
final Map<String, List<Map<String, String>>> predatorIdToPreyNames = new HashMap<String, List<Map<String, String>>>();
Map<String, Study> referenceIdToStudy = new HashMap<String, Study>();
addSpecimen(getPredatorResourcePath(), "PRED_", new ParseEventHandler() {
@Override
public void onSpecimen(String predatorUID, Map<String, String> properties) {
predatorIdToPredatorNames.put(predatorUID, properties);
}
});
addSpecimen(getPreyResourcePath(), "PREY_", new ParseEventHandler() {
@Override
public void onSpecimen(String predatorUID, Map<String, String> properties) {
List<Map<String, String>> preyList = predatorIdToPreyNames.get(predatorUID);
if (preyList == null) {
preyList = new ArrayList<Map<String, String>>();
predatorIdToPreyNames.put(predatorUID, preyList);
}
preyList.add(properties);
}
});
addReferences(referenceIdToStudy);
addObservations(predatorIdToPredatorNames, referenceIdToStudy, predatorIdToPreyNames, study);
}
use of org.eol.globi.domain.StudyImpl in project eol-globi-data by jhpoelen.
the class StudyImporterForGoMexSI2 method addNewStudy.
private void addNewStudy(Map<String, Study> referenceIdToStudy, String referenceResource, LabeledCSVParser parser, String refId, String contributors) throws StudyImporterException {
Study study;
String refTag = getMandatoryValue(referenceResource, parser, "REF_TAG");
String externalId = getMandatoryValue(referenceResource, parser, "GAME_ID");
String description = getMandatoryValue(referenceResource, parser, "TITLE_REF");
String publicationYear = getMandatoryValue(referenceResource, parser, "YEAR_PUB");
study = nodeFactory.getOrCreateStudy(new StudyImpl(refTag, getSourceCitation(), null, ExternalIdUtil.toCitation(contributors, description, publicationYear)));
if (StringUtils.isNotBlank(externalId)) {
study.setExternalId(ExternalIdUtil.urlForExternalId(TaxonomyProvider.ID_PREFIX_GAME + externalId));
}
referenceIdToStudy.put(refId, study);
}
use of org.eol.globi.domain.StudyImpl in project eol-globi-data by jhpoelen.
the class NodeFactoryWithDatasetContextTest method createStudy.
@Test
public void createStudy() {
NodeFactory factory = Mockito.mock(NodeFactory.class);
DatasetImpl dataset = new DatasetImpl("some/namespace", URI.create("some:uri"));
NodeFactoryWithDatasetContext factoryWithDS = new NodeFactoryWithDatasetContext(factory, dataset);
StudyImpl study = new StudyImpl("some title", "some source", "some doi", "some citation");
study.setExternalId("some:id");
factoryWithDS.createStudy(study);
ArgumentCaptor<Study> argument = ArgumentCaptor.forClass(Study.class);
verify(factory).createStudy(argument.capture());
assertEquals("globi:some/namespace", argument.getValue().getSourceId());
assertEquals("some title", argument.getValue().getTitle());
assertEquals("some citation", argument.getValue().getCitation());
assertEquals("some doi", argument.getValue().getDOI());
assertEquals("some:id", argument.getValue().getExternalId());
}
Aggregations