use of ubic.gemma.core.loader.entrez.pubmed.PubMedXMLFetcher in project Gemma by PavlidisLab.
the class SearchServiceTest method testSearchByBibRefId.
@Test
public void testSearchByBibRefId() {
try {
this.setup();
} catch (Exception e) {
e.printStackTrace();
}
String id;
if (ee.getPrimaryPublication() == null) {
PubMedXMLFetcher fetcher = new PubMedXMLFetcher();
BibliographicReference bibref = fetcher.retrieveByHTTP(21878914);
bibref = (BibliographicReference) persisterHelper.persist(bibref);
ee.setPrimaryPublication(bibref);
eeService.update(ee);
id = "21878914";
} else {
id = ee.getPrimaryPublication().getPubAccession().getAccession();
}
log.info("indexing ...");
IndexerTaskCommand c = new IndexerTaskCommand();
c.setIndexBibRef(true);
indexerTask.setTaskCommand(c);
indexerTask.execute();
SearchSettings settings = SearchSettings.Factory.newInstance();
settings.noSearches();
settings.setQuery(id);
settings.setSearchExperiments(true);
settings.setUseCharacteristics(false);
Map<Class<?>, List<SearchResult>> found = this.searchService.search(settings);
assertTrue(!found.isEmpty());
for (SearchResult sr : found.get(ExpressionExperiment.class)) {
if (sr.getResultObject().equals(ee)) {
this.tearDown();
return;
}
}
this.tearDown();
fail("Didn't get expected result from search");
}
use of ubic.gemma.core.loader.entrez.pubmed.PubMedXMLFetcher in project Gemma by PavlidisLab.
the class ExpressionExperimentPrimaryPubCli method doWork.
@Override
protected Exception doWork(String[] args) {
Exception err = processCommandLine(args);
if (err != null)
return err;
ExpressionExperimentService ees = this.getBean(ExpressionExperimentService.class);
Persister ph = this.getPersisterHelper();
PubMedXMLFetcher fetcher = new PubMedXMLFetcher();
// collect some statistics
Collection<String> nullPubCount = new ArrayList<>();
Collection<String> samePubCount = new ArrayList<>();
Collection<String> diffPubCount = new ArrayList<>();
Collection<String> failedEe = new ArrayList<>();
ExpressionExperimentBibRefFinder finder = new ExpressionExperimentBibRefFinder();
for (BioAssaySet bioassay : expressionExperiments) {
if (!(bioassay instanceof ExpressionExperiment)) {
log.info(bioassay.getName() + " is not an ExpressionExperiment");
continue;
}
ExpressionExperiment experiment = (ExpressionExperiment) bioassay;
// if ( experiment.getPrimaryPublication() != null ) continue;
if (experiment.getPrimaryPublication() == null) {
log.warn(experiment + " has no existing primary publication");
}
experiment = ees.thawLite(experiment);
// get from GEO or get from a file
BibliographicReference ref = fetcher.retrieveByHTTP(pubmedIds.get(experiment.getShortName()));
if (ref == null) {
if (this.pubmedIdFilename != null) {
log.warn("Pubmed ID for " + experiment.getShortName() + " was not found in " + this.pubmedIdFilename);
}
ref = finder.locatePrimaryReference(experiment);
if (ref == null) {
log.error("No ref for " + experiment);
failedEe.add(experiment.getShortName());
continue;
}
}
// collect some statistics
if (experiment.getPrimaryPublication() == null) {
nullPubCount.add(experiment.getShortName());
} else if (experiment.getPrimaryPublication().getPubAccession().getAccession().equals(pubmedIds.get(experiment.getShortName()).toString())) {
samePubCount.add(experiment.getShortName());
} else {
diffPubCount.add(experiment.getShortName());
}
try {
log.info("Found pubAccession " + ref.getPubAccession().getAccession() + " for " + experiment);
ref = (BibliographicReference) ph.persist(ref);
experiment.setPrimaryPublication(ref);
ees.update(experiment);
} catch (Exception e) {
log.error(experiment.getShortName() + " (id=" + experiment.getId() + ") update failed.");
e.printStackTrace();
}
}
// print statistics
log.info("\n\n========== Summary ==========");
log.info("Total number of experiments: " + expressionExperiments.size());
log.info("Same publication: " + samePubCount.size());
log.info("Diff publication: " + diffPubCount.size());
log.info("No initial publication: " + nullPubCount.size());
log.info("No publications found: " + failedEe.size());
log.info("\n\n========== Details ==========");
log.info("Diff publication: " + Arrays.toString(diffPubCount.toArray()));
log.info("No initial publication: " + Arrays.toString(nullPubCount.toArray()));
log.info("No publications found: " + Arrays.toString(failedEe.toArray()));
return null;
}
use of ubic.gemma.core.loader.entrez.pubmed.PubMedXMLFetcher in project Gemma by PavlidisLab.
the class GeoServiceImpl method getPubMedInfo.
private void getPubMedInfo(Collection<ExpressionExperiment> result) {
for (ExpressionExperiment experiment : result) {
BibliographicReference pubmed = experiment.getPrimaryPublication();
if (pubmed == null)
continue;
PubMedXMLFetcher fetcher = new PubMedXMLFetcher();
try {
pubmed = fetcher.retrieveByHTTP(Integer.parseInt(pubmed.getPubAccession().getAccession()));
} catch (Exception e) {
AbstractGeoService.log.warn("Filed to get data from pubmed, continuing without it.");
AbstractGeoService.log.error(e, e);
}
if (pubmed == null)
continue;
experiment.setPrimaryPublication(pubmed);
}
}
use of ubic.gemma.core.loader.entrez.pubmed.PubMedXMLFetcher in project Gemma by PavlidisLab.
the class SearchServiceTest method testSearchByBibRefIdProblemsB.
@Test
public void testSearchByBibRefIdProblemsB() {
try {
this.setup();
} catch (Exception e) {
e.printStackTrace();
}
PubMedXMLFetcher fetcher = new PubMedXMLFetcher();
BibliographicReference bibref = fetcher.retrieveByHTTP(22780917);
bibref = (BibliographicReference) persisterHelper.persist(bibref);
assertTrue(bibref.getAbstractText().contains("d to chromosome 22q12. Our results confirm chromosome 22q12 as the solitary locus for FFEVF"));
IndexerTaskCommand c = new IndexerTaskCommand();
c.setIndexBibRef(true);
indexerTask.setTaskCommand(c);
indexerTask.execute();
SearchSettings settings = SearchSettings.Factory.newInstance();
settings.noSearches();
settings.setQuery("confirm chromosome 22q12");
settings.setSearchBibrefs(true);
Map<Class<?>, List<SearchResult>> found = this.searchService.search(settings);
assertTrue(!found.isEmpty());
for (SearchResult sr : found.get(BibliographicReference.class)) {
if (sr.getResultObject().equals(bibref)) {
this.tearDown();
return;
}
}
this.tearDown();
fail("Didn't get expected result from search");
}
use of ubic.gemma.core.loader.entrez.pubmed.PubMedXMLFetcher in project Gemma by PavlidisLab.
the class SearchServiceTest method testSearchByBibRefIdProblems.
@Test
public void testSearchByBibRefIdProblems() {
try {
this.setup();
} catch (Exception e) {
e.printStackTrace();
}
PubMedXMLFetcher fetcher = new PubMedXMLFetcher();
BibliographicReference bibref = fetcher.retrieveByHTTP(9600966);
bibref = (BibliographicReference) persisterHelper.persist(bibref);
assertTrue(bibref.getAbstractText().contains("ase proved to be a de novo mutation. In the third kindred, affected brothers both have a"));
IndexerTaskCommand c = new IndexerTaskCommand();
c.setIndexBibRef(true);
indexerTask.setTaskCommand(c);
indexerTask.execute();
SearchSettings settings = SearchSettings.Factory.newInstance();
settings.noSearches();
settings.setQuery("de novo mutation");
settings.setSearchBibrefs(true);
Map<Class<?>, List<SearchResult>> found = this.searchService.search(settings);
assertTrue(!found.isEmpty());
for (SearchResult sr : found.get(BibliographicReference.class)) {
if (sr.getResultObject().equals(bibref)) {
this.tearDown();
return;
}
}
this.tearDown();
fail("Didn't get expected result from search");
}
Aggregations