List of usage examples for org.apache.solr.client.solrj SolrQuery setRows
public SolrQuery setRows(Integer rows)
From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGene.java
License:Apache License
private JSONArray getExperimentStats(DataApiHandler dataApi, JSONArray data, String samples, JSONArray sample_data) throws IOException { JSONArray results = new JSONArray(); Map<String, ExpressionDataGene> genes = new HashMap<>(); Map<String, String> sample = new HashMap<>(); for (Object aSample_data : sample_data) { JSONObject a = (JSONObject) aSample_data; sample.put(a.get("pid").toString(), a.get("expname").toString()); }//from w ww . j a v a 2s .com for (final Object aData : data) { final JSONObject a = (JSONObject) aData; String id; if (a.containsKey("feature_id")) { id = (String) a.get("feature_id"); } else if (a.containsKey("na_feature_id")) { id = (String) a.get("na_feature_id"); } else { LOGGER.debug("data error: {}", a); id = ""; } ExpressionDataGene b; if (genes.containsKey(id)) { b = genes.get(id); } else { b = new ExpressionDataGene(a); } b.addSamplestoGene(a, sample); // Sample HashMap is used to create absence/presence string genes.put(id, b); } List<String> featureIdList = new ArrayList<>(); List<String> p2FeatureIdList = new ArrayList<>(); JSONObject temp = new JSONObject(); for (final Map.Entry<String, ExpressionDataGene> entry : genes.entrySet()) { final ExpressionDataGene value = entry.getValue(); JSONObject a = new JSONObject(); a.put("refseq_locus_tag", value.getRefSeqLocusTag()); a.put("feature_id", value.getFeatureID()); value.setSampleBinary(samples); a.put("sample_binary", value.getSampleBinary()); a.put("sample_size", value.getSampleCounts()); a.put("samples", value.getSamples()); if (value.hasFeatureId()) { featureIdList.add(value.getFeatureID()); temp.put(value.getFeatureID(), a); } else { p2FeatureIdList.add(value.getP2FeatureId()); temp.put(value.getP2FeatureId(), a); } } featureIdList.remove(null); p2FeatureIdList.remove(null); LOGGER.trace("featureIdList[{}], p2FeatureIdList[{}]", featureIdList.size(), p2FeatureIdList.size()); SolrQuery query = new SolrQuery("*:*"); if (!featureIdList.isEmpty() && !p2FeatureIdList.isEmpty()) { query.addFilterQuery("feature_id:(" + StringUtils.join(featureIdList, " OR ") + ") OR p2_feature_id:(" + StringUtils.join(p2FeatureIdList, " OR ") + ")"); } else if (featureIdList.isEmpty() && !p2FeatureIdList.isEmpty()) { query.addFilterQuery("p2_feature_id:(" + StringUtils.join(p2FeatureIdList, " OR ") + ")"); } else if (!featureIdList.isEmpty() && p2FeatureIdList.isEmpty()) { query.addFilterQuery("feature_id:(" + StringUtils.join(featureIdList, " OR ") + ")"); } else { // this should not occur query.addFilterQuery("feature_id:1"); } query.setFields( "feature_id,p2_feature_id,strand,product,accession,start,end,patric_id,alt_locus_tag,genome_name,gene"); query.setRows(featureIdList.size() + p2FeatureIdList.size()); LOGGER.trace("getExperimentStats:[{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); final String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, query); final Map resp = jsonReader.readValue(apiResponse); final Map respBody = (Map) resp.get("response"); final List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); for (final GenomeFeature feature : features) { JSONObject json = (JSONObject) temp.get(feature.getId()); if (json == null) { json = (JSONObject) temp.get("" + feature.getP2FeatureId()); } json.put("feature_id", feature.getId()); json.put("strand", feature.getStrand()); json.put("patric_product", feature.getProduct()); json.put("patric_accession", feature.getAccession()); json.put("start", feature.getStart()); json.put("end", feature.getEnd()); json.put("alt_locus_tag", feature.getAltLocusTag()); json.put("patric_id", feature.getPatricId()); json.put("genome_name", feature.getGenomeName()); json.put("gene", feature.getGene()); // for default sorting json.put("accession_start", feature.getAccession() + "_" + String.format("%08d", feature.getStart())); results.add(json); } return results; }
From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGeneExp.java
License:Apache License
private JSONObject processSummary(ResourceRequest request) { JSONObject jsonResult = new JSONObject(); String paramFeatureId = request.getParameter("featureId"); String paramSampleId = request.getParameter("sampleId"); String paramKeyword = request.getParameter("keyword"); String paramLogRatio = request.getParameter("log_ratio"); String paramZScore = request.getParameter("zscore"); try {//from www .j ava 2 s. c o m DataApiHandler dataApi = new DataApiHandler(request); //select?q=feature_id:PATRIC.83332.12.NC_000962.CDS.34.1524.fwd&rows=0&facet=true&facet.range.other=before&facet.range.other=after // &facet.range.start=-2&facet.range.end=2&facet.range.gap=0.5&facet.range=z_score&facet.range=log_ratio //select?q=feature_id:PATRIC.83332.12.NC_000962.CDS.34.1524.fwd&rows=0&facet=true&facet.mincount=1&facet.field=strain&facet.field=mutant&facet.field=condition SolrQuery query = new SolrQuery(); if (paramKeyword != null && !paramKeyword.equals("")) { query.setQuery(paramKeyword + " AND feature_id:" + paramFeatureId); } else { query.setQuery("feature_id:" + paramFeatureId); } if (paramSampleId != null && !paramSampleId.equals("")) { String[] pids = paramSampleId.split(","); query.addFilterQuery("pid:(" + StringUtils.join(pids, " OR ") + ")"); } if (paramLogRatio != null && !paramLogRatio.equals("") && !paramLogRatio.equals("0")) { query.addFilterQuery( "log_ratio:[* TO -" + paramLogRatio + "] OR log_ratio:[" + paramLogRatio + " TO *]"); } if (paramZScore != null && !paramZScore.equals("") && !paramZScore.equals("0")) { query.addFilterQuery("z_score:[* TO -" + paramZScore + "] OR z_score:[" + paramZScore + " TO *]"); } query.setRows(dataApi.MAX_ROWS); query.setFacet(true).setFacetMinCount(1).set("json.nl", "map"); query.set("facet.range.other", "before").add("facet.range.other", "after"); query.addNumericRangeFacet("log_ratio", -2, 2, 0.5).addNumericRangeFacet("z_score", -2, 2, 0.5); query.addFacetField("strain").addFacetField("mutant").addFacetField("condition"); LOGGER.debug("[{}] {}", SolrCore.TRANSCRIPTOMICS_GENE.getSolrCoreName(), query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_GENE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Map> sdl = (List<Map>) respBody.get("docs"); // features JSONArray features = new JSONArray(); for (Map doc : sdl) { JSONObject feature = new JSONObject(); feature.put("exp_accession", doc.get("accession")); // feature.put("exp_channels", doc.get("")); feature.put("exp_condition", doc.get("condition")); feature.put("exp_id", doc.get("eid")); feature.put("exp_locustag", doc.get("refseq_locus_tag")); feature.put("exp_mutant", doc.get("mutant")); feature.put("exp_name", doc.get("expname")); feature.put("exp_organism", doc.get("organism")); feature.put("exp_pavg", doc.get("avg_intensity")); feature.put("exp_platform", doc.get("")); // ?? feature.put("exp_pratio", doc.get("log_ratio")); feature.put("exp_samples", doc.get("")); // ?? feature.put("exp_strain", doc.get("")); // ?? feature.put("exp_timepoint", doc.get("timepoint")); feature.put("exp_zscore", doc.get("z_score")); // feature.put("figfam_id", doc.get("")); // ?? feature.put("locus_tag", doc.get("alt_locus_tag")); feature.put("feature_id", doc.get("feature_id")); feature.put("pid", doc.get("pid")); feature.put("pmid", doc.get("pmid")); features.add(feature); } jsonResult.put("features", features); Map facets = (Map) resp.get("facet_counts"); Map facetRanges = (Map) facets.get("facet_ranges"); if (facetRanges.containsKey("log_ratio")) { Map facetLogRatio = (Map) facetRanges.get("log_ratio"); final int before = (Integer) facetLogRatio.get("before"); final int after = (Integer) facetLogRatio.get("after"); Map facetRangeLogRatio = (Map) facetLogRatio.get("counts"); List<JSONObject> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetRangeLogRatio.entrySet()) { JSONObject json = new JSONObject(); json.put("category", entry.getKey()); json.put("count", entry.getValue()); list.add(json); } boolean hasMinBucket = false; boolean hasMaxBucket = false; for (JSONObject entry : list) { if (entry.get("category").equals("-2.0")) { entry.put("count", ((Integer) entry.get("count") + before)); hasMinBucket = true; } else if (entry.get("category").equals("2.0")) { entry.put("count", ((Integer) entry.get("count") + after)); hasMaxBucket = true; } } if (!hasMinBucket) { JSONObject json = new JSONObject(); json.put("category", "-2.0"); json.put("count", before); list.add(json); } if (!hasMaxBucket) { JSONObject json = new JSONObject(); json.put("category", "2.0"); json.put("count", after); list.add(json); } jsonResult.put("log_ratio", list); } if (facetRanges.containsKey("z_score")) { Map facetZscore = (Map) facetRanges.get("z_score"); final int before = (Integer) facetZscore.get("before"); final int after = (Integer) facetZscore.get("after"); Map facetRangeZscore = (Map) facetZscore.get("counts"); List<JSONObject> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetRangeZscore.entrySet()) { JSONObject json = new JSONObject(); json.put("category", entry.getKey()); json.put("count", entry.getValue()); list.add(json); } boolean hasMinBucket = false; boolean hasMaxBucket = false; for (JSONObject entry : list) { if (entry.get("category").equals("-2.0")) { entry.put("count", ((Integer) entry.get("count") + before)); hasMinBucket = true; } else if (entry.get("category").equals("2.0")) { entry.put("count", ((Integer) entry.get("count") + after)); hasMaxBucket = true; } } if (!hasMinBucket) { JSONObject json = new JSONObject(); json.put("category", "-2.0"); json.put("count", before); list.add(json); } if (!hasMaxBucket) { JSONObject json = new JSONObject(); json.put("category", "2.0"); json.put("count", after); list.add(json); } jsonResult.put("z_score", list); } Map facetFields = (Map) facets.get("facet_fields"); // strain if (facetFields.containsKey("strain")) { Map facetStrain = (Map) facetFields.get("strain"); List<JSONObject> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetStrain.entrySet()) { JSONObject json = new JSONObject(); json.put("category", entry.getKey()); json.put("count", entry.getValue()); list.add(json); } jsonResult.put("strain", list); } // mutant if (facetFields.containsKey("mutant")) { Map facetMutant = (Map) facetFields.get("mutant"); List<JSONObject> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetMutant.entrySet()) { JSONObject json = new JSONObject(); json.put("category", entry.getKey()); json.put("count", entry.getValue()); list.add(json); } jsonResult.put("mutant", list); } // condition if (facetFields.containsKey("condition")) { Map facetCondition = (Map) facetFields.get("condition"); List<JSONObject> list = new ArrayList<>(); for (Map.Entry<String, Integer> entry : (Iterable<Map.Entry>) facetCondition.entrySet()) { JSONObject json = new JSONObject(); json.put("category", entry.getKey()); json.put("count", entry.getValue()); list.add(json); } jsonResult.put("condition", list); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } return jsonResult; }
From source file:edu.vt.vbi.patric.portlets.TranscriptomicsGeneExp.java
License:Apache License
@SuppressWarnings("unchecked") private JSONObject processCorrelation(ResourceRequest request) { String featureId = request.getParameter("featureId"); String cutoffValue = request.getParameter("cutoffValue"); String cutoffDir = request.getParameter("cutoffDir"); JSONObject jsonResult = new JSONObject(); DataApiHandler dataApi = new DataApiHandler(request); GenomeFeature feature = dataApi.getFeature(featureId); Map<String, Map<String, Object>> correlationMap = new HashMap<>(); int numFound = 0; try {/*w w w . j a v a 2 s.c o m*/ SolrQuery query = new SolrQuery("genome_id:" + feature.getGenomeId()); query.setFilterQueries( "{!correlation fieldId=refseq_locus_tag fieldCondition=pid fieldValue=log_ratio srcId=" + feature.getRefseqLocusTag() + " filterCutOff=" + cutoffValue + " filterDir=" + cutoffDir.substring(0, 3) + " cost=101}"); query.setRows(0).set("json.nl", "map"); LOGGER.trace("[{}] {}", SolrCore.TRANSCRIPTOMICS_GENE.getSolrCoreName(), query.toString()); String apiResponse = dataApi.solrQuery(SolrCore.TRANSCRIPTOMICS_GENE, query); Map resp = jsonReader.readValue(apiResponse); List<Map> transcriptomicsGenes = (List) resp.get("correlation"); numFound = transcriptomicsGenes.size(); for (Map doc : transcriptomicsGenes) { correlationMap.put(doc.get("id").toString(), doc); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } jsonResult.put("total", numFound); JSONArray results = new JSONArray(); if (!correlationMap.isEmpty()) { try { SolrQuery query = new SolrQuery( "refseq_locus_tag:(" + StringUtils.join(correlationMap.keySet(), " OR ") + ") AND genome_id:" + feature.getGenomeId()); query.setFilterQueries("annotation:PATRIC AND feature_type:CDS"); query.setFields( "genome_id,genome_name,accession,feature_id,start,end,strand,feature_type,annotation,alt_locus_tag,refseq_locus_tag,patric_id,na_length,aa_length,protein_id,gene,product"); query.setRows(numFound); LOGGER.trace("[{}] {}", SolrCore.FEATURE.getSolrCoreName(), query.toString()); 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 f : features) { JSONObject obj = new JSONObject(); obj.put("genome_id", f.getGenomeId()); obj.put("genome_name", f.getGenomeName()); obj.put("accession", f.getAccession()); obj.put("feature_id", f.getId()); obj.put("alt_locus_tag", f.getAltLocusTag()); obj.put("refseq_locus_tag", f.getRefseqLocusTag()); obj.put("patric_id", f.getPatricId()); obj.put("gene", f.getGene()); obj.put("annotation", f.getAnnotation()); obj.put("feature_type", f.getFeatureType()); obj.put("start", f.getStart()); obj.put("end", f.getEnd()); obj.put("na_length", f.getNaSequenceLength()); obj.put("strand", f.getStrand()); obj.put("protein_id", f.getProteinId()); obj.put("aa_length", f.getProteinLength()); obj.put("product", f.getProduct()); Map<String, Object> corr = correlationMap.get(f.getRefseqLocusTag()); obj.put("correlation", corr.get("correlation")); obj.put("count", corr.get("conditions")); results.add(obj); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } } jsonResult.put("results", results); return jsonResult; }
From source file:edu.vt.vbi.patric.portlets.WorkspacePortlet.java
License:Apache License
@SuppressWarnings("unchecked") public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException, IOException { String action_type = request.getParameter("action_type"); String action = request.getParameter("action"); if (action_type != null && action != null) { if (action_type.equals("WSSupport")) { switch (action) { case "inlinestatus": { String linkWorkspace = ""; if (isLoggedIn(request)) { linkWorkspace = "<a class=\"arrow-white-e\" href=\"/workspace/\">WORKSPACE: HOME</a>"; }//from w w w. j av a 2 s .c o m response.setContentType("text/plain"); PrintWriter writer = response.getWriter(); writer.write(linkWorkspace); writer.close(); break; } case "getGenomeGroupList": { JSONArray res = new JSONArray(); if (isLoggedIn(request)) { String token = getAuthorizationToken(request); String pathGenomeGroup = getUserWorkspacePath(request, DEFAULT_WORKSPACE_NAME) + "/Genome Groups"; try { DataApiHandler dataApi = new DataApiHandler(request); Workspace serviceWS = new Workspace(WORKSPACE_API_URL, token); list_params params = new list_params(); params.paths = Arrays.asList(pathGenomeGroup); Map<String, List<ObjectMeta>> resp = serviceWS.ls(params); List<ObjectMeta> groupList = resp.get(pathGenomeGroup); // sort by name Comparator comparator = new GenomeGroupNameComparator(); Collections.sort(groupList, comparator); JSONParser jsonParser = new JSONParser(); for (ObjectMeta group : groupList) { LOGGER.trace("reading: {},{},{},{},{},{},{}", group.e_1, group.e_2, group.e_3, group.e_5, group.e_7, group.e_8, group.e_9); if ("genome_group".equals(group.e_2)) { JSONObject grp = new JSONObject(); String genomeGroupId = group.e_5; // e_5, object id grp.put("id", genomeGroupId); grp.put("name", group.e_1); // e_1, object name grp.put("leaf", false); grp.put("collapsed", true); JSONArray children = new JSONArray(); // get genome associated in this group get_params gp = new get_params(); gp.objects = Arrays.asList(group.e_3 + group.e_1); // e_3, path gp.metadata_only = 0; gp.adminmode = 0; LOGGER.trace("requesting.. {}", group.e_3 + group.e_1); try { List<Workspace_tuple_2> r = serviceWS.get(gp); for (Workspace_tuple_2 item : r) { if (item.e_2 != null) { JSONObject groupInfo = (JSONObject) jsonParser.parse(item.e_2); // objectMeta List<String> genomeIdList = (List<String>) ((JSONObject) groupInfo .get("id_list")).get("genome_id"); Set<String> genomeIdSet = new HashSet<>(genomeIdList); genomeIdSet.remove(""); SolrQuery query = new SolrQuery("genome_id:(" + StringUtils.join(genomeIdSet, " OR ") + ")"); query.setRows(10000).addField("genome_id,genome_name,taxon_id"); LOGGER.trace("[{}] {}", SolrCore.GENOME.getSolrCoreName(), query); String apiResponse = dataApi.solrQuery(SolrCore.GENOME, query); Map respApi = jsonReader.readValue(apiResponse); Map respBody = (Map) respApi.get("response"); List<Genome> genomes = dataApi.bindDocuments( (List<Map>) respBody.get("docs"), Genome.class); Map<String, Genome> genomeHash = new LinkedHashMap<>(); for (Genome g : genomes) { genomeHash.put(g.getId(), g); } for (String genomeId : genomeIdSet) { Genome genome = genomeHash.get(genomeId); if (genome != null) { JSONObject leafGenome = new JSONObject(); leafGenome.put("id", genomeId); leafGenome.put("parentID", genomeGroupId); leafGenome.put("name", genome.getGenomeName()); leafGenome.put("leaf", true); leafGenome.put("genome_id", genomeId); leafGenome.put("taxon_id", genome.getTaxonId()); children.add(leafGenome); } } } } grp.put("children", children); res.add(grp); } catch (Exception ex) { LOGGER.error(ex.getMessage(), ex); } } } } catch (Exception e) { LOGGER.error(e.getMessage(), e); } } response.setContentType("application/json"); PrintWriter writer = response.getWriter(); res.writeJSONString(writer); writer.close(); break; } case "getGroupList": { String grp_type = request.getParameter("group_type"); JSONArray res = new JSONArray(); String grp_path = getUserWorkspacePath(request, DEFAULT_WORKSPACE_NAME); String grp_obj_type; switch (grp_type) { case "Genome": grp_path += "/Genome Groups"; grp_obj_type = "genome_group"; break; case "Feature": grp_path += "/Feature Groups"; grp_obj_type = "feature_group"; break; case "ExpressionExperiment": grp_path += "/Experiment Groups"; grp_obj_type = "experiment_group"; break; default: grp_obj_type = ""; // } String token = getAuthorizationToken(request); Workspace serviceWS = new Workspace(WORKSPACE_API_URL, token); list_params params = new list_params(); params.paths = Arrays.asList(grp_path); try { Map<String, List<ObjectMeta>> resp = serviceWS.ls(params); List<ObjectMeta> groupList = resp.get(grp_path); for (ObjectMeta group : groupList) { String groupId = group.e_5; // e_5, object id String groupName = group.e_1; // e_1, object name // TODO: how to read group description??? if (grp_obj_type.equals(group.e_2)) { JSONObject grp = new JSONObject(); grp.put("name", groupName); grp.put("description", ""); grp.put("tag", ""); grp.put("id", groupId); res.add(grp); } } } catch (Exception e) { LOGGER.error(e.getMessage(), e); } response.setContentType("application/json"); PrintWriter writer = response.getWriter(); res.writeJSONString(writer); writer.close(); break; } default: response.setContentType("application/json"); response.getWriter().write("sorry"); response.getWriter().close(); break; } } else if (action_type.equals("GSESupport")) { // if (action.equals("group_list")) { // // PersistentCartGroup group = null; // JSONArray groups = ws.getGroups(); // StringBuilder output = new StringBuilder(); // // output.append("<group_set>\n"); // for (Object aGroup : groups) { // JSONObject group = (JSONObject) aGroup; // // output.append("\t<group>\n"); // output.append("\t\t<idx>").append(group.get("tagId")).append("</idx>\n"); // output.append("\t\t<name>").append(group.get("name")).append("</name>\n"); // output.append("\t</group>\n"); // } // output.append("</group_set>"); // // response.setContentType("text/xml"); // response.getWriter().write(output.toString()); // response.getWriter().close(); // } // else if (action.equals("groups")) { // String strTagIds = request.getParameter("groupIds"); // JSONObject filter = new JSONObject(); // filter.put("key", "tagId"); // filter.put("value", strTagIds); // // JSONArray groups = ws.getGroups(filter); // StringBuilder o = new StringBuilder(); // // o.append("<group_set>\n"); // // for (Object aGroup : groups) { // JSONObject group = (JSONObject) aGroup; // // o.append("\t<group>\n"); // o.append("\t\t<name>").append(group.get("name")).append("</name>\n"); // o.append("\t\t<description>").append(((group.get("desc") != null) ? group.get("desc") : "")).append("</description>\n"); // o.append("\t\t<members>\n"); // // List<JSONObject> members = ws.findMappingByTagId(Integer.parseInt(group.get("tagId").toString())); // // Set<Integer> trackIds = new HashSet<>(); // for (JSONObject member : members) { // trackIds.add(Integer.parseInt(member.get("trackId").toString())); // } // JSONArray tracks = ws.getTracks(trackIds); // for (Object track : tracks) { // JSONObject member = (JSONObject) track; // o.append(member.get("internalId")).append("\n"); // } // // o.append("\t\t</members>\n"); // o.append("\t</group>\n"); // } // o.append("</group_set>"); // // // // response.setContentType("text/xml"); // response.getWriter().write(o.toString()); // response.getWriter().close(); // } // else if (action.equals("items")) { // // Set<Integer> trackIds = new HashSet<>(); // String strTagIds = request.getParameter("groupIds"); // String groupType; // String _tagId = null; // // if (strTagIds.contains(",")) { // for (String tagId : strTagIds.split(",")) { // List<JSONObject> mappings = ws.findMappingByTagId(Integer.parseInt(tagId)); // for (JSONObject mapping : mappings) { // trackIds.add(Integer.parseInt(mapping.get("trackId").toString())); // } // _tagId = tagId; // } // } // else { // List<JSONObject> mappings = ws.findMappingByTagId(Integer.parseInt(strTagIds)); // for (JSONObject mapping : mappings) { // trackIds.add(Integer.parseInt(mapping.get("trackId").toString())); // } // _tagId = strTagIds; // } // // JSONArray tracks = ws.getTracks(trackIds); // // // get group type // JSONObject filter = new JSONObject(); // filter.put("key", "tagId"); // filter.put("value", _tagId); // JSONArray gr = ws.getTags(filter); // groupType = ((JSONObject) gr.get(0)).get("type").toString(); // // JSONObject res; // Map<String, Object> key = new HashMap<>(); // key.put("tracks", tracks); // // StringBuilder out_sb = new StringBuilder(); // // if (groupType.equals("Feature")) { // res = solr.getFeaturesByID(key); // JSONArray items = (JSONArray) res.get("results"); // // out_sb.append( // "Feature ID\tGenome Name\tAccession\tPATRIC ID\tRefSeq Locus Tag\tAlt Locus Tag\tAnnotation\tFeature Type\tStart\tEnd\tLength(NT)\tStrand\t"); // out_sb.append("Protein Id\tLength(AA)\tGene Symbol\tProduct\n"); // // for (Object aItem : items) { // JSONObject item = (JSONObject) aItem; // out_sb.append(item.get("feature_id")).append("\t"); // out_sb.append(item.get("genome_name")).append("\t"); // out_sb.append(item.get("accession")).append("\t"); // out_sb.append(item.get("seed_id")).append("\t"); // out_sb.append((item.get("refseq_locus_tag") != null ? item.get("refseq_locus_tag") : "")).append("\t"); // out_sb.append((item.get("alt_locus_tag") != null ? item.get("alt_locus_tag") : "")).append("\t"); // out_sb.append(item.get("annotation")).append("\t"); // out_sb.append(item.get("feature_type")).append("\t"); // out_sb.append(item.get("start")).append("\t"); // out_sb.append(item.get("end")).append("\t"); // out_sb.append(item.get("na_length")).append("\t"); // out_sb.append(item.get("strand")).append("\t"); // out_sb.append((item.get("protein_id") != null ? item.get("protein_id") : "")).append("\t"); // out_sb.append(item.get("aa_length")).append("\t"); // out_sb.append((item.get("gene") != null ? item.get("gene") : "")).append("\t"); // out_sb.append(item.get("product")).append("\n"); // } // } // else if (groupType.equals("Genome")) { // res = solr.getGenomesByID(key); // JSONArray items = (JSONArray) res.get("results"); // // out_sb.append("Genome ID\tGenome Name\tStatus\tHost\tDisease\tIsolation Country\tCollection Date\tCompletion Date\n"); // // for (Object aItem : items) { // JSONObject item = (JSONObject) aItem; // out_sb.append(item.get("genome_id")).append("\t"); // out_sb.append(item.get("genome_name")).append("\t"); // out_sb.append(item.get("genome_status")).append("\t"); // out_sb.append((item.get("host_name") != null ? item.get("host_name") : "")).append("\t"); // out_sb.append((item.get("disease") != null ? item.get("disease") : "")).append("\t"); // out_sb.append((item.get("isolation_country") != null ? item.get("isolation_country") : "")).append("\t"); // out_sb.append((item.get("collection_date") != null ? item.get("collection_date") : "")).append("\t"); // out_sb.append((item.get("completion_date") != null ? item.get("completion_date") : "")).append("\n"); // } // } // else if (groupType.equals("ExpressionExperiment")) { // List<String> collectionIds = new ArrayList<>(); // // JSONArray exptracks; // JSONArray tracksPATRIC = new JSONArray(); // // if (key.containsKey("tracks")) { // exptracks = (JSONArray) key.get("tracks"); // // if (exptracks.size() > 0) { // for (Object exptrack : exptracks) { // JSONObject tr = (JSONObject) exptrack; // try { // Integer.parseInt(tr.get("internalId").toString()); // tracksPATRIC.add(tr); // } // catch (NumberFormatException nfe) { // collectionIds.add(tr.get("internalId").toString()); // } // } // } // } // // out_sb.append("Experiment Id\tSource\tTitle\tData Type\tAccession\n"); // // if (tracksPATRIC.size() > 0) { // Map<String, Object> keyPATRIC = new HashMap<>(); // keyPATRIC.put("tracks", tracksPATRIC); // res = solr.getExperimentsByID(keyPATRIC); // // JSONArray items = (JSONArray) res.get("results"); // for (Object aItem : items) { // JSONObject item = (JSONObject) aItem; // out_sb.append(item.get("expid")).append("\t"); // out_sb.append("PATRIC\t"); // out_sb.append(item.get("title")).append("\t"); // out_sb.append("Transcriptomics\t"); // TODO: modify later // out_sb.append((item.get("accession") != null ? item.get("accession") : "")).append("\n"); // } // } // // if (collectionIds.size() > 0) { // PolyomicHandler polyomic = getPolyomicHandler(request); // res = polyomic.getExperiments(collectionIds); // // JSONArray items = (JSONArray) res.get("results"); // for (Object aItem : items) { // JSONObject item = (JSONObject) aItem; // out_sb.append(item.get("expid")).append("\t"); // out_sb.append("me\t"); // out_sb.append(item.get("title")).append("\t"); // out_sb.append((item.get("data_type") != null ? item.get("data_type") : "")).append("\t"); // out_sb.append((item.get("accession") != null ? item.get("accession") : "")).append("\n"); // } // } // } // else { // // error // } // // response.setContentType("text/plain"); // response.getWriter().write(out_sb.toString()); // response.getWriter().close(); // } } else if (action_type.equals("LoginStatus")) { if (action.equals("getLoginStatus")) { if (!isLoggedIn(request)) { response.setContentType("text/plain"); response.getWriter().write("false"); response.getWriter().close(); } else { response.setContentType("text/plain"); response.getWriter().write("true"); response.getWriter().close(); } } } else if (action_type.equals("HTTPProvider")) { UIPreference uiPref = getValidUIPreference(request); switch (action) { case "storage": if (request.getMethod().equals("GET")) { String strUIPref = uiPref.getStateList().toJSONString(); response.getWriter().write(strUIPref); response.getWriter().close(); } else if (request.getMethod().equals("POST")) { JSONParser parser = new JSONParser(); JSONObject param; JSONArray params; try { Object rt = parser.parse(request.getReader()); if (rt instanceof JSONObject) { param = (JSONObject) rt; uiPref.setState(param); } else if (rt instanceof JSONArray) { params = (JSONArray) rt; uiPref.setStateList(params); } else { LOGGER.error(rt.toString()); } this.saveUIPreference(request, uiPref); } catch (ParseException e) { LOGGER.error(e.getMessage(), e); } response.getWriter().write(""); response.getWriter().close(); } break; case "remove": if (request.getParameter("name") != null) { uiPref.resetState(request.getParameter("name")); this.saveUIPreference(request, uiPref); } response.getWriter().write(""); response.getWriter().close(); break; case "reset": uiPref.reset(); this.saveUIPreference(request, uiPref); response.getWriter().write(""); response.getWriter().close(); break; } } } }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
public JSONArray getSyntonyOrder(ResourceRequest request) { String genomeId = request.getParameter("syntonyId"); final String familyType = request.getParameter("familyType"); final String familyId = familyType + "_id"; JSONArray json_arr = null;/* ww w . ja v a 2s. c o m*/ if (genomeId != null) { DataApiHandler dataApi = new DataApiHandler(request); long end_ms, start_ms = System.currentTimeMillis(); SolrQuery solr_query = new SolrQuery("genome_id:" + genomeId); // solr_query.addFilterQuery("end:[3200 TO 4300] OR end:[4400 TO 4490] OR end:[4990 TO 4999]"); solr_query.addFilterQuery("annotation:PATRIC AND feature_type:CDS AND " + familyId + ":[* TO *]"); solr_query.addField(familyId); solr_query.setRows(DataApiHandler.MAX_ROWS); solr_query.addSort("accession", SolrQuery.ORDER.asc); solr_query.addSort("start", SolrQuery.ORDER.asc); LOGGER.debug("getSyntonyOrder() [{}] {}", SolrCore.FEATURE.getSolrCoreName(), solr_query); int orderSet = 0; List<SyntonyOrder> collect = new ArrayList<>(); try { String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, solr_query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<GenomeFeature> features = dataApi.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); end_ms = System.currentTimeMillis(); LOGGER.debug("Genome anchoring query time - {}", (end_ms - start_ms)); start_ms = System.currentTimeMillis(); for (GenomeFeature feature : features) { if (familyType.equals("figfam") && feature.hasFigfamId()) { collect.add(new SyntonyOrder(feature.getFigfamId(), orderSet)); ++orderSet; } else if (familyType.equals("plfam") && feature.hasPlfamId()) { collect.add(new SyntonyOrder(feature.getPlfamId(), orderSet)); ++orderSet; } else if (familyType.equals("pgfam") && feature.hasPgfamId()) { collect.add(new SyntonyOrder(feature.getPgfamId(), orderSet)); ++orderSet; } } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } if (0 < collect.size()) { json_arr = new JSONArray(); SyntonyOrder[] orderSave = new SyntonyOrder[collect.size()]; collect.toArray(orderSave);// orderSave is array in order of Figfam ID SyntonyOrder[] toSort = new SyntonyOrder[collect.size()]; System.arraycopy(orderSave, 0, toSort, 0, toSort.length);// copy the array so it can be sorted based on position in the genome Arrays.sort(toSort); // sort based on figfamIDs SyntonyOrder start = toSort[0]; for (int i = 1; i < toSort.length; i++) { start = start.mergeSameId(toSort[i]);// set syntonyAt -1 to those objects which occur multiple times } orderSet = 0; for (SyntonyOrder anOrderSave : orderSave) { orderSet = (anOrderSave).compressAt(orderSet); // adjusts the syntonyAt number to get the correct // column based on replicon with -1's removed } for (SyntonyOrder aToSort : toSort) {// writes all those that don't have -1's (aToSort).write(json_arr); } } end_ms = System.currentTimeMillis(); LOGGER.debug("Genome anchoring post processing time - {} ms", (end_ms - start_ms)); } return json_arr; }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
@SuppressWarnings("unchecked") public void getLocusTags(ResourceRequest request, PrintWriter writer) { JSONArray arr = new JSONArray(); DataApiHandler dataApi = new DataApiHandler(request); try {/* w ww . jav a2 s .c o m*/ final String familyType = request.getParameter("familyType"); final String familyId = familyType + "_id"; SolrQuery solr_query = new SolrQuery(); solr_query.setQuery("genome_id:(" + request.getParameter("genomeIds") + ") AND " + familyId + ":(" + request.getParameter("familyIds") + ")"); solr_query.setFilterQueries("annotation:PATRIC AND feature_type:CDS"); solr_query.addField("feature_id,patric_id,refseq_locus_tag,alt_locus_tag"); solr_query.setRows(DataApiHandler.MAX_ROWS); LOGGER.debug("getLocusTags(): [{}] {}", SolrCore.FEATURE.toString(), solr_query); String apiResponse = dataApi.solrQuery(SolrCore.FEATURE, solr_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) { arr.add(feature.toJSONObject()); } } catch (IOException e) { LOGGER.error(e.getMessage(), e); } JSONObject data = new JSONObject(); data.put("data", arr); try { data.writeJSONString(writer); } catch (IOException e) { LOGGER.error(e.getMessage(), e); } }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
@SuppressWarnings("unchecked") public JSONArray getDetails(ResourceRequest request) throws IOException { JSONArray arr = new JSONArray(); String genomeIds = request.getParameter("detailsGenomes"); String familyIds = request.getParameter("detailsFamilyIds"); String familyType = request.getParameter("familyType"); LOGGER.debug("params for getDetails:{}", request.getParameterMap()); final String familyId = familyType + "_id"; SolrQuery query = new SolrQuery(); query.setQuery("genome_id:(" + genomeIds + ") AND " + familyId + ":(" + familyIds + ")"); query.setFields(StringUtils.join(DownloadHelper.getFieldsForFeatures(), ",")); query.setFilterQueries("annotation:PATRIC AND feature_type:CDS"); query.setRows(DataApiHandler.MAX_ROWS); LOGGER.debug("getDetails(): [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApiHandler.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<GenomeFeature> features = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); for (GenomeFeature feature : features) { arr.add(feature.toJSONObject()); }// w w w .java 2s . c o m return arr; }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
public String getGenomeIdsForTaxon(ResourceRequest request) throws IOException { String taxon = request.getParameter("taxonId"); String genomeFilter = request.getParameter("genomeFilter"); List<String> gIds = new ArrayList<>(); SolrQuery query = new SolrQuery("patric_cds:[1 TO *] AND taxon_lineage_ids:" + taxon); if (genomeFilter != null && !genomeFilter.equals("")) { query.addFilterQuery(genomeFilter); }//ww w . j a v a2 s . c om query.addField("genome_id"); query.setSort("genome_name", SolrQuery.ORDER.asc); query.setRows(DataApiHandler.MAX_ROWS); LOGGER.trace("getGenomeIdsForTaxon: [{}] {}", SolrCore.GENOME.getSolrCoreName(), query); String apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<Genome> genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (final Genome g : genomes) { gIds.add(g.getId()); } // TODO: remove this when data API limit is removed if (gIds.size() == 25000) { query.setStart(25000); apiResponse = dataApiHandler.solrQuery(SolrCore.GENOME, query); resp = jsonReader.readValue(apiResponse); respBody = (Map) resp.get("response"); genomes = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), Genome.class); for (final Genome g : genomes) { gIds.add(g.getId()); } } return StringUtils.join(gIds, ","); }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
private SequenceData[] getFeatureSequences(String[] featureIds) throws IOException { List<SequenceData> collect = new ArrayList<>(); SolrQuery query = new SolrQuery("feature_id:(" + StringUtils.join(featureIds, " OR ") + ")"); query.addField("genome_name,patric_id,refseq_locus_tag,alt_locus_tag,aa_sequence"); query.setRows(featureIds.length); LOGGER.trace("getFeatureSequences: [{}] {}", SolrCore.FEATURE.getSolrCoreName(), query); String apiResponse = dataApiHandler.solrQuery(SolrCore.FEATURE, query); Map resp = jsonReader.readValue(apiResponse); Map respBody = (Map) resp.get("response"); List<GenomeFeature> features = dataApiHandler.bindDocuments((List<Map>) respBody.get("docs"), GenomeFeature.class); for (GenomeFeature feature : features) { String locusTag = ""; if (feature.hasPatricId()) { locusTag = feature.getPatricId(); } else {/*from ww w. j a va 2 s . com*/ if (feature.hasRefseqLocusTag()) { locusTag = feature.getRefseqLocusTag(); } else { if (feature.hasAltLocusTag()) { locusTag = feature.getAltLocusTag(); } } } collect.add( new SequenceData(feature.getGenomeName().replace(" ", "_"), locusTag, feature.getAaSequence())); } SequenceData[] result = new SequenceData[collect.size()]; collect.toArray(result); return result; }
From source file:edu.vt.vbi.patric.proteinfamily.FIGfamData.java
License:Apache License
public void getFeatureIds(ResourceRequest request, PrintWriter writer, String keyword) { try {//from w ww . j a v a 2 s.c om DataApiHandler dataApi = new DataApiHandler(request); SolrQuery query = new SolrQuery(keyword); query.addField("feature_id"); query.setRows(DataApiHandler.MAX_ROWS); 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); List<String> featureIds = new ArrayList<>(); for (GenomeFeature feature : features) { featureIds.add(feature.getId()); } writer.write(StringUtils.join(featureIds, ",")); } catch (IOException e) { LOGGER.debug(e.getMessage(), e); } }