#!/usr/bin/groovy // Given a list of pubmed IDS, use NCBO annotator to generate Disease Ontology annotations. // See http://www.bioontology.org/wiki/index.php/Annotator_User_Guide for NCBO parameters package ubic.gemma.script import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import ubic.gemma.loader.entrez.pubmed.* import ubic.gemma.model.common.description.* PubMedXMLFetcher f = new PubMedXMLFetcher() annotatorUrl = "http://rest.bioontology.org/obs/annotator" // read in pubmed ids def pm2do = { pmid -> try { // test we have a valid id. Integer.parseInt(pmid) } catch(e) { return } bibref = f.retrieveByHTTP(Integer.parseInt(pmid)) text = bibref.title + '\n' + bibref.abstractText + '\n' text += bibref.meshTerms.collect(){ it.term }.join('\n') // println(text) // run through NCBI annotator for DO client = new HttpClient() client.getParams().setParameter(HttpMethodParams.USER_AGENT,"DOG") method = new PostMethod(annotatorUrl) method.addParameter("withDefaultStopWords","true"); // default is false method.addParameter("ontologiesToExpand", "1009"); method.addParameter("ontologiesToKeepInResult", "1009"); method.addParameter("isVirtualOntologyId", "true"); // default is false, true is recommended method.addParameter("levelMax", "10"); // expand to root, 10 is enough. method.addParameter("mappingTypes", "null"); //null, Automatic, Manual method.addParameter("textToAnnotate", text); method.addParameter("format", "tabDelimited"); //Options are 'text', 'xml', 'tabDelimited' method.addParameter("apikey", "7b14e900-1ba2-4e58-ac21-c5c4c74e7ece") // Paul's client.executeMethod(method) contents = method.getResponseBodyAsString() method.releaseConnection() // print out pubmed id - DO //println(contents) contents.eachLine({ println(pmid + '\t' + it) }) } new File(args[0]).eachLine(pm2do) // more parameters we are not using method.addParameter("longestOnly","false"); // default is false method.addParameter("wholeWordOnly","true"); // default is true method.addParameter("filterNumber", "true"); // default is true method.addParameter("isStopWordsCaseSensitive","false"); // default is false method.addParameter("mintermSize","3"); // default is 3 method.addParameter("scored", "true"); // default is true method.addParameter("withSynonyms","true"); // default is true method.addParameter("semanticTypes", ""); // default is ''