List of usage examples for org.apache.solr.client.solrj SolrQuery SolrQuery
public SolrQuery(String q)
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONObject getPathwayECDist() { JSONObject jsonData;/*w ww . java 2 s . c o m*/ JSONArray series = new JSONArray(); for (Integer txId : GENUS_TAXON_IDS) { int total = 0; List<Integer> distribution = new LinkedList<>(); // {stat:{field:{field:pathway_id,limit:-1,facet:{ec_count:"unique(ec_number)",genome_count:"unique(genome_id)",genome_ec_count:"unique(genome_ec)"}}}} try { SolrQuery query = new SolrQuery("annotation:PATRIC"); query.addFilterQuery(SolrCore.GENOME.getSolrCoreJoin("genome_id", "genome_id", "genome_status:(Complete OR WGS) AND taxon_lineage_ids:" + txId)); query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:pathway_id,limit:-1,facet:{ec_count:\"unique(ec_number)\",genome_count:\"unique(genome_id)\",genome_ec_count:\"unique(genome_ec)\"}}}}"); LOGGER.debug("getPathwayECDist: [{}] {}", SolrCore.PATHWAY.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); List<Map> buckets = (List) ((Map) facets.get("stat")).get("buckets"); int bin1 = 0, bin2 = 0, bin3 = 0, bin4 = 0, bin5 = 0; for (Map bucket : buckets) { double ec_count = ((Integer) bucket.get("ec_count")).doubleValue(); double genome_count = ((Integer) bucket.get("genome_count")).doubleValue(); double genome_ec_count = ((Integer) bucket.get("genome_ec_count")).doubleValue(); long bin = Math.round(genome_ec_count / genome_count / ec_count * 100); // LOGGER.trace("calculating conservation, ec:{}, genome:{}, genome_ec:{}, bin:{}", ec_count, genome_count, genome_ec_count, bin); if (bin < 20) { bin5++; } else if (bin >= 20 && bin < 40) { bin4++; } else if (bin >= 40 && bin < 60) { bin3++; } else if (bin >= 60 && bin < 80) { bin2++; } else if (bin >= 80) { bin1++; } total++; } distribution.addAll(Arrays.asList(bin1, bin2, bin3, bin4, bin5)); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } Taxonomy taxonomy = dataApi.getTaxonomy(txId); JSONObject item = new JSONObject(); item.put("pathogen", taxonomy.getTaxonName()); item.put("total", total); item.put("dist", distribution); series.add(item); } jsonData = new JSONObject(); jsonData.put("chart_title", "Pathway Conservation in Pathogenic Bacteria"); jsonData.put("chart_desc", "The graph below shows conservation of metabolic pathways across percentage of total genomes in each pathogenic genus."); jsonData.put("data", series); return jsonData; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private Map<String, Integer> getFIGFamStat(int taxonId) { Map<String, Integer> stat = new HashMap<>(); try {/*from w w w .j a v a 2 s.c om*/ final String filterCondition = SolrCore.GENOME.getSolrCoreJoin("genome_id", "genome_id", "taxon_lineage_ids:" + taxonId); Map response = dataApi.getFieldFacets(SolrCore.FEATURE, "feature_type:CDS AND annotation:PATRIC", filterCondition, "figfam_id"); Map figfamFacets = (Map) ((Map) response.get("facets")).get("figfam_id"); int total = figfamFacets.size(); response = dataApi.getFieldFacets(SolrCore.FEATURE, "product:(hypothetical AND protein)", filterCondition, "figfam_id"); Map hypotheticalFacets = (Map) ((Map) response.get("facets")).get("figfam_id"); int hypothetical = hypotheticalFacets.size(); stat.put("total", total); stat.put("hypothetical", hypothetical); stat.put("functional", (total - hypothetical)); // counting core vs accessary int countCore = 0; SolrQuery query = new SolrQuery("*:*").addFilterQuery(filterCondition).setRows(0).setFacet(true); query.set("json.facet", "{stat:{field:{field:figfam_id,limit:-1,allBuckets:true,facet:{genome_count:\"unique(genome_id)\"}}}}"); LOGGER.debug("getFIGFamStat(): [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); Map allBuckets = (Map) ((Map) facets.get("stat")).get("allBuckets"); double genomeCount = ((Integer) allBuckets.get("genome_count")).doubleValue(); double cutoff = 0.95 * genomeCount; List<Map> buckets = (List) ((Map) facets.get("stat")).get("buckets"); for (Map bucket : buckets) { if (((Integer) bucket.get("genome_count")).doubleValue() > cutoff) { countCore++; } } stat.put("core", countCore); stat.put("accessory", (total - countCore)); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } return stat; }
From source file:edu.vt.vbi.patric.cache.DataLandingGenerator.java
License:Apache License
private JSONArray getFIGFamConservationDistribution(int taxonId) { JSONArray dist = new JSONArray(); try {/* w w w . j a v a 2 s. c o m*/ Map<Integer, List<String>> distMap = new LinkedHashMap<>(); SolrQuery query = new SolrQuery("*:*"); query.addFilterQuery("feature_type:CDS AND annotation:PATRIC"); query.addFilterQuery( SolrCore.GENOME.getSolrCoreJoin("genome_id", "genome_id", "taxon_lineage_ids:" + taxonId)); query.setRows(0).setFacet(true).set("json.facet", "{stat:{field:{field:figfam_id,limit:-1,allBuckets:true,facet:{genome_count:\"unique(genome_id)\"}}}}"); LOGGER.trace("getFIGFamConservationDistribution(), [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map facets = (Map) resp.get("facets"); Map allBuckets = (Map) ((Map) facets.get("stat")).get("allBuckets"); double totalGenomeCount = ((Integer) allBuckets.get("genome_count")).doubleValue(); List<Map> buckets = (List<Map>) ((Map) facets.get("stat")).get("buckets"); for (Map bucket : buckets) { String figfamID = (String) bucket.get("val"); double genomeCount = ((Integer) bucket.get("genome_count")).doubleValue(); int groupHash = ((Double) Math.ceil(genomeCount / totalGenomeCount * 10.0d)).intValue(); // LOGGER.trace("group hashing.. {}:{}/{} -> {}", figfamID, genomeCount, totalGenomeCount, groupHash); if (distMap.get(groupHash) == null) { distMap.put(groupHash, new LinkedList<String>()); } distMap.get(groupHash).add(figfamID); } for (int i = 1; i <= 10; i++) { JSONObject item = new JSONObject(); if (distMap.get(i) != null && !distMap.get(i).isEmpty()) { item.put("x", (i) + "0%"); item.put("y", distMap.get(i).size()); } else { item.put("x", (i) + "0%"); item.put("y", 0); } dist.add(item); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } return dist; }
From source file:edu.vt.vbi.patric.common.FASTAHelper.java
License:Apache License
public static String getFASTASequence(PortletRequest request, List<String> featureIds, String type) throws IOException { StringBuilder fasta = new StringBuilder(); SolrQuery query = new SolrQuery("feature_id:(" + StringUtils.join(featureIds, " OR ") + ")"); query.setFields(//from w ww . j a v a 2 s . com "feature_id,patric_id,alt_locus_tag,refseq_locus_tag,annotation,gi,product,genome_id,genome_name,na_sequence,aa_sequence"); query.setRows(featureIds.size()); DataApiHandler dataApi = new DataApiHandler(request); LOGGER.trace("getFASTASequence: [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); for (GenomeFeature feature : features) { if (type.equals("dna") || type.equals("both")) { fasta.append(">"); if (feature.getAnnotation().equals("PATRIC")) { if (feature.hasPatricId()) { fasta.append(feature.getPatricId()).append("|"); } } else if (feature.getAnnotation().equals("RefSeq")) { if (feature.getGi() > 0) { fasta.append("gi|").append(feature.getGi()).append("|"); } } if (feature.hasRefseqLocusTag()) { fasta.append(feature.getRefseqLocusTag()).append("|"); } if (feature.hasAltLocusTag()) { fasta.append(feature.getAltLocusTag()).append("|"); } if (feature.hasProduct()) { fasta.append(" ").append(feature.getProduct()); } fasta.append(" [").append(feature.getGenomeName()).append(" | ").append(feature.getGenomeId()) .append("]"); fasta.append("\n"); if (feature.hasNaSequence()) { fasta.append(StringHelper.chunk_split(feature.getNaSequence(), 60, "\n")); } } if (type.equals("protein") || type.equals("both")) { fasta.append(">"); if (feature.getAnnotation().equals("PATRIC")) { if (feature.hasPatricId()) { fasta.append(feature.getPatricId()).append("|"); } } else if (feature.getAnnotation().equals("RefSeq")) { if (feature.getGi() > 0) { fasta.append("gi|").append(feature.getGi()).append("|"); } } if (feature.hasRefseqLocusTag()) { fasta.append(feature.getRefseqLocusTag()).append("|"); } if (feature.hasAltLocusTag()) { fasta.append(feature.getAltLocusTag()).append("|"); } if (feature.hasProduct()) { fasta.append(" ").append(feature.getProduct()); } fasta.append(" [").append(feature.getGenomeName()).append(" | ").append(feature.getGenomeId()) .append("]"); fasta.append("\n"); if (feature.hasAaSequence()) { fasta.append(StringHelper.chunk_split(feature.getAaSequence(), 60, "\n")); } } } return fasta.toString(); }
From source file:edu.vt.vbi.patric.common.OrganismTreeBuilder.java
License:Apache License
/** * Builds an array of nodes for Genome List view * // w w w .j av a 2 s. c o m * @param taxonId root taxon ID * @return json array of feed for Genome List */ public static JSONArray buildGenomeList(DataApiHandler dataApi, int taxonId) throws IOException { JSONArray treeJSON = new JSONArray(); SolrQuery query = new SolrQuery("taxon_lineage_ids:" + taxonId); query.addField("taxon_id,genome_id,genome_name").setRows(1000000); query.addSort("genome_name", SolrQuery.ORDER.asc); LOGGER.trace("buildGenomeList:{}", query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> genomeList = dataApi.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); Set<TaxonomyGenomeNode> children = new LinkedHashSet<>(); for (Genome genome : genomeList) { TaxonomyGenomeNode node = new TaxonomyGenomeNode(genome); node.setParentId("0"); children.add(node); } TaxonomyGenomeNode rootTaxonomyGenomeNode = new TaxonomyGenomeNode(); Taxonomy rootTaxonomy = dataApi.getTaxonomy(taxonId); rootTaxonomyGenomeNode.setName(rootTaxonomy.getTaxonName() + " (" + rootTaxonomy.getGenomeCount() + ")"); rootTaxonomyGenomeNode.setTaxonId(rootTaxonomy.getId()); rootTaxonomyGenomeNode.setId("0"); rootTaxonomyGenomeNode.setChildren(children); treeJSON.add(rootTaxonomyGenomeNode.getJSONObject()); return treeJSON; }
From source file:edu.vt.vbi.patric.common.OrganismTreeBuilder.java
License:Apache License
/** * Build an array of nodes for Taxonomy Tree view * /*from www. ja v a 2 s . c o m*/ * @param taxonId root taxon ID * @return json array of feed for Taxonomy Tree */ public static JSONArray buildGenomeTree(DataApiHandler dataApi, int taxonId) throws IOException { JSONArray treeJSON = new JSONArray(); SolrQuery query = new SolrQuery("lineage_ids:" + taxonId + " AND genomes:[1 TO *]"); query.addField("taxon_id,taxon_rank,taxon_name,genomes,lineage_ids").setRows(1000000); query.addSort("lineage", SolrQuery.ORDER.asc); LOGGER.trace("buildGenomeTree:{}", query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.TAXONOMY, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Taxonomy> taxonomyList = dataApi.bindDocuments((List<Map>) respBody.get("docs"), Taxonomy.class); Map<Integer, Taxonomy> taxonomyMap = new HashMap<>(); // 1 populate map for detail info for (Taxonomy tx : taxonomyList) { taxonomyMap.put(tx.getId(), tx); } // 2 add to rawData array List<List<TaxonomyTreeNode>> rawData = new ArrayList<>(); for (Taxonomy tx : taxonomyList) { List<Integer> lineage = tx.getLineageIds(); List<Integer> descendantIds = lineage; if (lineage.indexOf(taxonId) > 0) { descendantIds = lineage.subList(lineage.indexOf(taxonId), lineage.size()); } List<TaxonomyTreeNode> descendant = new LinkedList<>(); for (Integer txId : descendantIds) { if (taxonomyMap.containsKey(txId)) { descendant.add(new TaxonomyTreeNode(taxonomyMap.get(txId))); } } rawData.add(descendant); } // 3 build a tree TaxonomyTreeNode wrapper = new TaxonomyTreeNode(); TaxonomyTreeNode current = wrapper; for (List<TaxonomyTreeNode> tree : rawData) { TaxonomyTreeNode root = current; int parentId = taxonId; for (TaxonomyTreeNode node : tree) { node.setParentId(parentId); current = current.child(node); parentId = node.getTaxonId(); } current = root; } TaxonomyTreeNode root = wrapper.getFirstChild(); treeJSON.add(root.getJSONObject()); return treeJSON; }
From source file:edu.vt.vbi.patric.common.OrganismTreeBuilder.java
License:Apache License
/** * Build a taxonomy-genome map.//from w w w. j av a 2 s .c om * @param taxonId root taxon ID * @return json array of mapping {ncbi_taxon_id,genome_info_id} */ public static JSONArray buildTaxonGenomeMapping(DataApiHandler dataApi, int taxonId) throws IOException { JSONArray mapJSON = new JSONArray(); SolrQuery query = new SolrQuery("taxon_lineage_ids:" + taxonId); query.addField("genome_id,taxon_id").setRows(1000000); LOGGER.trace("buildTaxonGenomeMapping:{}", query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> genomeList = dataApi.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (Genome genome : genomeList) { JSONObject map = new JSONObject(); map.put("genome_id", genome.getId()); map.put("taxon_id", genome.getTaxonId()); mapJSON.add(map); } return mapJSON; }
From source file:edu.vt.vbi.patric.portlets.CompareRegionViewer.java
License:Apache License
@SuppressWarnings("unchecked") private void printTrackList(ResourceRequest request, ResourceResponse response) throws IOException { String contextType = request.getParameter("cType"); String contextId = request.getParameter("cId"); String pinFeatureSeedId = request.getParameter("feature"); // pin feature String windowSize = request.getParameter("window"); // window size int _numRegion = Integer.parseInt(request.getParameter("regions")); // number of genomes to compare int _numRegion_buffer = 10; // number of genomes to use as a buffer in case that PATRIC has no genome data, // which was retrieved from API String _key = ""; DataApiHandler dataApi = new DataApiHandler(request); // if pin feature is not given, retrieve from the database based on na_feature_id if (pinFeatureSeedId == null && (contextType != null && contextType.equals("feature") && contextId != null)) { GenomeFeature feature = dataApi.getFeature(contextId); pinFeatureSeedId = feature.getPatricId(); }// w ww . j a va2 s .c om if (pinFeatureSeedId != null && !pinFeatureSeedId.equals("") && windowSize != null) { CRResultSet crRS = null; try { SAPserver sapling = new SAPserver("http://servers.nmpdr.org/pseed/sapling/server.cgi"); crRS = new CRResultSet(pinFeatureSeedId, sapling.compared_regions(pinFeatureSeedId, _numRegion + _numRegion_buffer, Integer.parseInt(windowSize) / 2)); long pk = (new Random()).nextLong(); _key = "" + pk; Gson gson = new Gson(); SessionHandler.getInstance().set(SessionHandler.PREFIX + pk, gson.toJson(crRS, CRResultSet.class)); SessionHandler.getInstance().set(SessionHandler.PREFIX + "_windowsize" + pk, windowSize); } catch (Exception ex) { LOGGER.error(ex.getMessage(), ex); } JSONObject trackList = new JSONObject(); JSONArray tracks = new JSONArray(); JSONObject trStyle = new JSONObject(); trStyle.put("className", "feature5"); trStyle.put("showLabels", false); trStyle.put("label", "function( feature ) { return feature.get('patric_id'); }"); JSONObject trHooks = new JSONObject(); trHooks.put("modify", "function(track, feature, div) { div.style.backgroundColor = ['red','#1F497D','#938953','#4F81BD','#9BBB59','#806482','#4BACC6','#F79646'][feature.get('phase')];}"); // query genome metadata SolrQuery query = new SolrQuery("genome_id:(" + StringUtils.join(crRS.getGenomeIds(), " OR ") + ")"); query.setFields( "genome_id,genome_name,isolation_country,host_name,disease,collection_date,completion_date"); query.setRows(_numRegion + _numRegion_buffer); String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> patricGenomes = dataApi.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); int count_genomes = 1; if (crRS.getGenomeNames().size() > 0) { for (Integer idx : crRS.getTrackMap().keySet()) { if (count_genomes > _numRegion) { break; } CRTrack crTrack = crRS.getTrackMap().get(idx); Genome currentGenome = null; for (Genome genome : patricGenomes) { if (genome.getId().equals(crTrack.getGenomeID())) { currentGenome = genome; } } if (currentGenome != null) { count_genomes++; crRS.addToDefaultTracks(crTrack); JSONObject tr = new JSONObject(); tr.put("style", trStyle); tr.put("hooks", trHooks); tr.put("type", "FeatureTrack"); tr.put("tooltip", "<div style='line-height:1.7em'><b>{patric_id}</b> | {refseq_locus_tag} | {alt_locus_tag} | {gene}<br>{product}<br>{type}:{start}...{end} ({strand_str})<br> <i>Click for detail information</i></div>"); tr.put("urlTemplate", "/portal/portal/patric/CompareRegionViewer/CRWindow?action=b&cacheability=PAGE&mode=getTrackInfo&key=" + _key + "&rowId=" + crTrack.getRowID() + "&format=.json"); tr.put("key", crTrack.getGenomeName()); tr.put("label", "CR" + idx); tr.put("dataKey", _key); JSONObject metaData = new JSONObject(); if (currentGenome.getIsolationCountry() != null) { metaData.put("Isolation Country", currentGenome.getIsolationCountry()); } if (currentGenome.getHostName() != null) { metaData.put("Host Name", currentGenome.getHostName()); } if (currentGenome.getDisease() != null) { metaData.put("Disease", currentGenome.getDisease()); } if (currentGenome.getCollectionDate() != null) { metaData.put("Collection Date", currentGenome.getCollectionDate()); } if (currentGenome.getCompletionDate() != null) { metaData.put("Completion Date", currentGenome.getCompletionDate()); } tr.put("metadata", metaData); tracks.add(tr); } } } trackList.put("tracks", tracks); JSONObject facetedTL = new JSONObject(); JSONArray dpColumns = new JSONArray(); dpColumns.addAll(Arrays.asList("key", "Isolation Country", "Host Name", "Disease", "Collection Date", "Completion Date")); facetedTL.put("displayColumns", dpColumns); facetedTL.put("type", "Faceted"); facetedTL.put("escapeHTMLInData", false); trackList.put("trackSelector", facetedTL); trackList.put("defaultTracks", crRS.getDefaultTracks()); response.setContentType("application/json"); trackList.writeJSONString(response.getWriter()); response.getWriter().close(); } else { response.getWriter().write("{}"); } }
From source file:edu.vt.vbi.patric.portlets.CompareRegionViewer.java
License:Apache License
/** * Retrieves features that can be mapped by PSEED peg ID. This is used for CompareRegionViewer to map * features each other.//from w w w . j ava 2s .c om * * @param IDs IDs * @return list of features (na_feature_id, pseed_id, source_id, start, end, strand, na_length, aa_length, product, genome_name, accession) */ private Map<String, GenomeFeature> getPSeedMapping(ResourceRequest request, String IDs) throws IOException { Map<String, GenomeFeature> result = new HashMap<>(); DataApiHandler dataApi = new DataApiHandler(request); SolrQuery query = new SolrQuery("patric_id:(" + IDs + ")"); query.setFields( "feature_id,patric_id,alt_locus_tag,start,end,strand,feature_type,product,gene,refseq_locus_tag,genome_name,accession"); query.setRows(1000); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); for (GenomeFeature feature : features) { result.put(feature.getPatricId(), feature); } return result; }
From source file:edu.vt.vbi.patric.portlets.CompPathwayMap.java
License:Apache License
@Override protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { response.setContentType("text/html"); SiteHelper.setHtmlMetaElements(request, response, "Comparative Pathway Map"); DataApiHandler dataApi = new DataApiHandler(request); String pk = request.getParameter("param_key") != null ? request.getParameter("param_key") : ""; String dm = request.getParameter("display_mode") != null ? request.getParameter("display_mode") : ""; String cType = request.getParameter("context_type") != null ? request.getParameter("context_type") : ""; String map = request.getParameter("map") != null ? request.getParameter("map") : ""; String algorithm = request.getParameter("algorithm") != null ? request.getParameter("algorithm") : ""; String cId = request.getParameter("context_id") != null ? request.getParameter("context_id") : ""; String ec_number = request.getParameter("ec_number") != null ? request.getParameter("ec_number") : ""; String feature_id = request.getParameter("feature_id") != null ? request.getParameter("feature_id") : ""; String ec_names = ""; int occurrences = 0; String genomeId = ""; String taxonId = ""; String pathway_name = ""; String pathway_class = ""; String definition = ""; int patricGenomeCount = 0; int brc1GenomeCount = 0; int refseqGenomeCount = 0; // get attributes try {//from w ww . jav a 2 s .co m SolrQuery query = new SolrQuery("pathway_id:" + map); query.setFields("pathway_name,pathway_class,ec_description"); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY_REF, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); if (!sdl.isEmpty()) { Map doc = sdl.get(0); definition = doc.get("ec_description").toString(); pathway_name = doc.get("pathway_name").toString(); pathway_class = doc.get("pathway_class").toString(); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } try { if (cType != null && cType.equals("taxon")) { taxonId = cId; } else if (cType != null && cType.equals("genome")) { genomeId = cId; } if (pk != null && !pk.isEmpty()) { Map<String, String> key = jsonReader .readValue(SessionHandler.getInstance().get(SessionHandler.PREFIX + pk)); if (key != null && key.containsKey("genomeId") && !key.get("genomeId").equals("")) { genomeId = key.get("genomeId"); } else if (key != null && key.containsKey("taxonId") && !key.get("taxonId").equals("")) { taxonId = key.get("taxonId"); } if (key != null && key.containsKey("feature_id") && !key.get("feature_id").equals("")) { feature_id = key.get("feature_id"); } } SolrQuery query = new SolrQuery("*:*"); query.setRows(dataApi.MAX_ROWS); if (!genomeId.equals("")) { if (genomeId.contains(",")) { query.addFilterQuery("genome_id:(" + StringUtils.join(genomeId.split(","), " OR ") + ")"); query.setRows(genomeId.split(",").length); } else { query.addFilterQuery("genome_id:" + genomeId); } } if (!taxonId.equals("")) { query.addFilterQuery("taxon_lineage_ids:" + taxonId); } LOGGER.debug("counting features: {}", query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> genomes = dataApi.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (Genome genome : genomes) { if (genome.hasPatricCds()) { patricGenomeCount++; } // if (doc.get("brc1_cds") != null && !doc.get("brc1_cds").toString().equals("0")) { // brc1GenomeCount++; // } if (genome.hasRefseqCds()) { refseqGenomeCount++; } } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } // TODO: implement with solr if (dm != null && dm.equals("ec")) { SolrQuery query = new SolrQuery("ec_number:(" + ec_number + ") AND pathway_id:(" + map + ")"); LOGGER.debug("[{}]:{}", SolrCore.PATHWAY_REF.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY_REF, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); for (Map doc : sdl) { ec_names = (String) doc.get("ec_description"); occurrences = (Integer) doc.get("occurrence"); } } else if (dm != null && dm.equals("feature")) { // q=pathway_id:00051&fq={!join%20from=ec_number%20to=ec_number%20fromIndex=pathway}feature_id:PATRIC.235.14.JMSA01000002.CDS.537.665.fwd+AND+pathway_id:00051 SolrQuery query = new SolrQuery("pathway_id:" + map); query.addFilterQuery(SolrCore.PATHWAY.getSolrCoreJoin("ec_number", "ec_number", "feature_id:(" + feature_id + ") AND pathway_id:(" + map + ")")); LOGGER.debug("[{}]:{}", SolrCore.PATHWAY_REF.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.PATHWAY_REF, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); for (Map doc : sdl) { ec_number = (String) doc.get("ec_number"); ec_names = (String) doc.get("ec_description"); occurrences = (Integer) doc.get("occurrence"); } } ///// request.setAttribute("cType", cType); request.setAttribute("cId", cId); request.setAttribute("taxonId", taxonId); request.setAttribute("genomeId", genomeId); request.setAttribute("algorithm", algorithm); request.setAttribute("map", map); request.setAttribute("dm", dm); request.setAttribute("pk", pk); request.setAttribute("feature_id", feature_id); request.setAttribute("ec_number", ec_number); request.setAttribute("ec_names", ec_names); request.setAttribute("occurrences", occurrences); request.setAttribute("taxongenomecount_patric", patricGenomeCount); request.setAttribute("taxongenomecount_brc1", brc1GenomeCount); request.setAttribute("taxongenomecount_refseq", refseqGenomeCount); request.setAttribute("definition", definition); request.setAttribute("pathway_name", pathway_name); request.setAttribute("pathway_class", pathway_class); PortletRequestDispatcher prd = getPortletContext() .getRequestDispatcher("/WEB-INF/jsp/comp_pathway_map.jsp"); prd.include(request, response); }