List of usage examples for org.apache.commons.collections.map MultiKeyMap put
public Object put(Object key, Object value)
From source file:com.qq.tars.service.monitor.TARSPropertyMonitorService.java
private MultiKeyMap call(List<String> groupBy, List<String> conditions) throws IOException { String template = "{\"groupby\":%s,\"method\":\"query\",\"dataid\":\"tars_property\"," + "\"filter\":%s,\"indexs\":[\"value\"]}"; ObjectMapper mapper = new ObjectMapper(); String request = String.format(template, mapper.writeValueAsString(groupBy), mapper.writeValueAsString(conditions)); List<Pair<String, Integer>> addrs = adminService.getEndpoints("tars.tarsqueryproperty.NoTarsObj"); if (addrs.isEmpty()) { throw new IOException("tars.tarsqueryproperty.NoTarsObj not found"); }//w w w. jav a 2 s . co m Pair<String, Integer> addr = addrs.get(0); log.info("tars.tarsqueryproperty.NoTarsObj, use {}:{}", addr.getLeft(), addr.getRight()); TCPClient client = new TCPClient(addr.getLeft(), addr.getRight()); List<String> response = client.sendAndReceive(request.getBytes(), 60000); log.debug("request={}", request); log.debug("reponse={}", StringUtils.join(response, "\n")); String line1 = response.get(0); if (!line1.startsWith("Ret:")) { throw new IOException(String.format("line #1, doesn't start with \"Ret:\", line=%s", line1)); } int ret = Integer.parseInt(line1.substring(line1.lastIndexOf(':') + 1)); if (ret == -1) { throw new IOException(String.format("line #1, Ret=%s", ret)); } String line6 = response.get(5); if (!line6.startsWith("linecount:")) { throw new IOException(String.format("line #6, doesn't start with \"linecount:\", line=%s", line6)); } int count = Integer.parseInt(line6.substring(line6.lastIndexOf(':') + 1)); if (count + 7 != response.size()) { throw new IOException(String.format("line #6, size not match, %s vs %s", count + 7, response.size())); } String lastLine = response.get(response.size() - 1); if (!"endline".equals(lastLine)) { throw new IOException( String.format("line #%s, doesn't equal to \"endline\", line=%s", response.size(), lastLine)); } MultiKeyMap result = new MultiKeyMap(); for (int i = 6; i < response.size() - 1; i++) { String line = StringUtils.removeEnd(response.get(i), ","); String[] tokens = line.split(","); if (tokens.length != groupBy.size() + 1) { throw new IOException(String.format("line format error, line=%s", line)); } String[] key = new String[groupBy.size()]; int j = 0; for (; j < key.length; j++) { key[j] = tokens[j]; } double[] value = new double[] { Double.parseDouble(tokens[j]) }; result.put(new MultiKey(key), value); } return result; }
From source file:com.qq.tars.service.monitor.TARSStatMonitorService.java
private MultiKeyMap call(List<String> groupBy, List<String> conditions) throws IOException { String template = "{\"groupby\":%s,\"method\":\"query\",\"dataid\":\"tars_stat\"," + "\"filter\":%s,\"indexs\":[\"succ_count\",\"timeout_count\",\"exce_count\",\"total_time\"]}"; ObjectMapper mapper = new ObjectMapper(); String request = String.format(template, mapper.writeValueAsString(groupBy), mapper.writeValueAsString(conditions)); List<Pair<String, Integer>> addrs = adminService.getEndpoints("tars.tarsquerystat.NoTarsObj"); if (addrs.isEmpty()) { throw new IOException("tars.tarsquerystat.NoTarsObj not found"); }/*from www. j a v a2 s. co m*/ Pair<String, Integer> addr = addrs.get(0); log.info("tars.tarsquerystat.NoTarsObj, use {}:{}", addr.getLeft(), addr.getRight()); TCPClient client = new TCPClient(addr.getLeft(), addr.getRight()); List<String> response = client.sendAndReceive(request.getBytes(), 60000); log.debug("request={}", request); log.debug("reponse={}", StringUtils.join(response, "\n")); String line1 = response.get(0); if (!line1.startsWith("Ret:")) { throw new IOException(String.format("line #1, doesn't start with \"Ret:\", line=%s", line1)); } int ret = Integer.parseInt(line1.substring(line1.lastIndexOf(':') + 1)); if (ret == -1) { throw new IOException(String.format("line #1, Ret=%s", ret)); } String line6 = response.get(5); if (!line6.startsWith("linecount:")) { throw new IOException(String.format("line #6, doesn't start with \"linecount:\", line=%s", line6)); } int count = Integer.parseInt(line6.substring(line6.lastIndexOf(':') + 1)); if (count + 7 != response.size()) { throw new IOException(String.format("line #6, size not match, %s vs %s", count + 7, response.size())); } String lastLine = response.get(response.size() - 1); if (!"endline".equals(lastLine)) { throw new IOException( String.format("line #%s, doesn't equal to \"endline\", line=%s", response.size(), lastLine)); } MultiKeyMap result = new MultiKeyMap(); for (int i = 6; i < response.size() - 1; i++) { String line = StringUtils.removeEnd(response.get(i), ","); String[] tokens = line.split(","); if (tokens.length != groupBy.size() + 4) { throw new IOException(String.format("line format error, line=%s", line)); } String[] key = new String[groupBy.size()]; int j = 0; for (; j < key.length; j++) { key[j] = tokens[j]; } long[] value = new long[] { Long.parseLong(tokens[j++]), Long.parseLong(tokens[j++]), Long.parseLong(tokens[j++]), Long.parseLong(tokens[j]) }; result.put(new MultiKey(key), value); } return result; }
From source file:org.intermine.bio.dataconversion.FlyBaseProcessor.java
/** * {@inheritDoc}/* w w w . j a va2 s.c o m*/ */ @Override protected Map<MultiKey, List<ConfigAction>> getConfig(int taxonId) { MultiKeyMap map = config.get(new Integer(taxonId)); if (map == null) { map = new MultiKeyMap(); config.put(new Integer(taxonId), map); // synomym configuration example: for features of class "Gene", if the type name of // the synonym is "fullname" and "is_current" is true, set the "name" attribute of // the new Gene to be this synonym and then make a Synonym object map.put(new MultiKey("synonym", "Gene", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "Gene", "fullname", Boolean.FALSE), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("synonym", "Gene", "symbol", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("symbol"))); map.put(new MultiKey("synonym", "Gene", "symbol", Boolean.FALSE), Arrays.asList(CREATE_SYNONYM_ACTION)); // dbxref table configuration example: for features of class "Gene", where the // db.name is "FlyBase Annotation IDs" and "is_current" is true, set the // "secondaryIdentifier" attribute of the new Gene to be this dbxref and then make a // Synonym object map.put(new MultiKey("dbxref", "Gene", FLYBASE_DB_NAME + " Annotation IDs", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("secondaryIdentifier"))); map.put(new MultiKey("dbxref", "Gene", FLYBASE_DB_NAME + " Annotation IDs", Boolean.FALSE), Arrays.asList(CREATE_SYNONYM_ACTION)); // null for the "is_current" means either TRUE or FALSE is OK. map.put(new MultiKey("dbxref", "Gene", FLYBASE_DB_NAME, null), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("dbxref", "MRNA", FLYBASE_DB_NAME + " Annotation IDs", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("secondaryIdentifier"))); map.put(new MultiKey("dbxref", "TransposableElementInsertionSite", "drosdel", null), Arrays.asList(new SetFieldConfigAction("symbol"))); map.put(new MultiKey("synonym", "ChromosomeStructureVariation", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "ChromosomalDeletion", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "ChromosomalDuplication", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "ChromosomalInversion", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "ChromosomalTranslocation", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "ChromosomalTransposition", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); map.put(new MultiKey("synonym", "MRNA", "symbol", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("symbol"))); map.put(new MultiKey("synonym", "MRNA", "symbol", Boolean.FALSE), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("dbxref", "MRNA", FLYBASE_DB_NAME + " Annotation IDs", null), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("dbxref", "MRNA", FLYBASE_DB_NAME, null), Arrays.asList(CREATE_SYNONYM_ACTION)); // set the Allele.gene when there is an alleleof relationship between Allele and Gene map.put(new MultiKey("relationship", "Allele", "alleleof", "Gene"), Arrays.asList(new SetFieldConfigAction("gene"))); // Set the protein reference in the MRNA - "rev_relationship" means that the // relationship table actually has Protein, producedby, MRNA. We configure like // this so we can set a reference in MRNA rather than protein map.put(new MultiKey("rev_relationship", "MRNA", "producedby", "Protein"), Arrays.asList(new SetFieldConfigAction("protein"))); map.put(new MultiKey("relationship", "CDNAClone", "derived_assoc_cdna_clone", "Gene"), Arrays.asList(new SetFieldConfigAction("gene"))); map.put(new MultiKey("relationship", "Gene", "producedby", "Protein"), Arrays.asList(new SetFieldConfigAction("proteins"))); // featureprop configuration example: for features of class "Gene", if the type name // of the prop is "cyto_range", set the "cytoLocation" attribute of the // new Gene to be this property map.put(new MultiKey("prop", "Gene", "cyto_range"), Arrays.asList(new SetFieldConfigAction("cytoLocation"))); map.put(new MultiKey("prop", "Gene", "symbol"), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("prop", "TransposableElementInsertionSite", "curated_cytological_location"), Arrays.asList(new SetFieldConfigAction("cytoLocation"))); ConfigAction alleleClassConfigAction = new AlleleClassSetFieldAction("alleleClass"); map.put(new MultiKey("prop", "Allele", "promoted_allele_class"), Arrays.asList(alleleClassConfigAction)); // library config example: for features of class "CDNAClone", if the type name // of the library is "stage", set the "stage" attribute of the // new CDNAClone to be this property map.put(new MultiKey("library", "CDNAClone", "stage"), Arrays.asList(new SetFieldConfigAction("stage"))); // anatomy term config example: for features of class "CDNAClone" if there is an // anatomy term, set a reference in CDNAClone.tissueSource // See #2173 // map.put(new MultiKey("anatomyterm", "CDNAClone", null), // Arrays.asList(new SetFieldConfigAction("tissueSource"))); // feature_cvterm example for Transposition: we create a featureTerms collection in the // Transposition objects containing SequenceOntologyTerm objects. For the current // feature we create one SequenceOntologyTerm object for each associated "SO" cvterm. // We set the "name" field of the SequenceOntologyTerm to be the name from the cvterm // table. // TODO fixme // List<String> chromosomeStructureVariationClassNames = // Arrays.asList("ChromosomeStructureVariation", "ChromosomalDeletion", // "ChromosomalDuplication", "ChromosomalInversion", // "ChromosomalTranslocation", "ChromosomalTransposition"); // for (String className: chromosomeStructureVariationClassNames) { // map.put(new MultiKey("cvterm", className, "SO"), // Arrays.asList(new CreateCollectionAction("SOTerm", "abberationSOTerms", // "name", true))); // } // feature configuration example: for features of class "Exon", from "FlyBase", // set the Gene.symbol to be the "name" field from the chado feature map.put(new MultiKey("feature", "Exon", FLYBASE_DB_NAME, "name"), Arrays.asList(new SetFieldConfigAction("symbol"))); map.put(new MultiKey("feature", "Allele", FLYBASE_DB_NAME, "name"), Arrays.asList(new SetFieldConfigAction("symbol"))); // DO_NOTHING_ACTION means skip the name from this feature map.put(new MultiKey("feature", "Chromosome", FLYBASE_DB_NAME, "name"), Arrays.asList(DO_NOTHING_ACTION)); map.put(new MultiKey("feature", "ChromosomeBand", FLYBASE_DB_NAME, "name"), Arrays.asList(DO_NOTHING_ACTION)); map.put(new MultiKey("feature", "TransposableElementInsertionSite", FLYBASE_DB_NAME, "name"), Arrays.asList(new SetFieldConfigAction("symbol", PB_INSERTION_PATTERN), new SetFieldConfigAction("secondaryIdentifier"))); map.put(new MultiKey("feature", "Gene", FLYBASE_DB_NAME, "uniquename"), Arrays.asList(new SetFieldConfigAction("primaryIdentifier"))); map.put(new MultiKey("feature", "Gene", FLYBASE_DB_NAME, "name"), Arrays.asList(DO_NOTHING_ACTION)); map.put(new MultiKey("feature", "ChromosomeStructureVariation", FLYBASE_DB_NAME, "name"), Arrays.asList(new SetFieldConfigAction("secondaryIdentifier"))); // just make a Synonym because the secondaryIdentifier and the symbol are set from the // dbxref and synonym tables map.put(new MultiKey("feature", "MRNA", FLYBASE_DB_NAME, "name"), Arrays.asList(new CreateSynonymAction())); map.put(new MultiKey("feature", "PointMutation", FLYBASE_DB_NAME, "uniquename"), Arrays.asList(new SetFieldConfigAction("name"), new SetFieldConfigAction("primaryIdentifier"))); // name isn't set in flybase: map.put(new MultiKey("feature", "PointMutation", FLYBASE_DB_NAME, "name"), Arrays.asList(DO_NOTHING_ACTION)); map.put(new MultiKey("dbxref", "Protein", FLYBASE_DB_NAME + " Annotation IDs", Boolean.TRUE), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("feature", "Protein", FLYBASE_DB_NAME, "name"), Arrays.asList(CREATE_SYNONYM_ACTION)); map.put(new MultiKey("feature", "Protein", FLYBASE_DB_NAME, "uniquename"), Arrays.asList(new SetFieldConfigAction("secondaryIdentifier"))); map.put(new MultiKey("dbxref", "Protein", "GB_protein", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("genbankIdentifier"), CREATE_SYNONYM_ACTION)); // transposable_element and natural_transposable_element map.put(new MultiKey("feature", "TransposableElement", FLYBASE_DB_NAME, "name"), Arrays .asList(new SetFieldConfigAction("secondaryIdentifier"), new SetFieldConfigAction("symbol"))); map.put(new MultiKey("feature", "NaturalTransposableElement", FLYBASE_DB_NAME, "name"), Arrays .asList(new SetFieldConfigAction("secondaryIdentifier"), new SetFieldConfigAction("symbol"))); map.put(new MultiKey("relationship", "TransposableElement", "producedby", "NaturalTransposableElement"), Arrays.asList(new SetFieldConfigAction("insertedElement"))); map.put(new MultiKey("synonym", "NaturalTransposableElement", "fullname", Boolean.TRUE), Arrays.asList(new SetFieldConfigAction("name"))); } return map; }
From source file:org.intermine.bio.dataconversion.ModEncodeFeatureProcessor.java
/** * {@inheritDoc}//from w ww. j a v a2 s . c om * * see FlyBaseProcessor for many more examples of configuration */ @Override protected Map<MultiKey, List<ConfigAction>> getConfig(int taxonId) { MultiKeyMap map = config.get(new Integer(taxonId)); if (map == null) { map = new MultiKeyMap(); config.put(new Integer(taxonId), map); //feature configuration example: for features of class "Gene", from "modENCODE", //set the Gene.symbol to be the "name" field from the chado feature // map.put(new MultiKey("feature", "Gene", MODENCODE_SOURCE_NAME, "name"), // Arrays.asList(new SetFieldConfigAction("symbol"))); // TODO: check possible conflicts with our sql matching // map.put(new MultiKey("relationship", "ESTMatch", "evidence_for_feature", "Intron"), // Arrays.asList(new SetFieldConfigAction("intron"))); map.put(new MultiKey("relationship", "ThreePrimeUTR", "adjacent_to", "CDS"), Arrays.asList(new SetFieldConfigAction("CDS"))); map.put(new MultiKey("relationship", "PolyASite", "derives_from", "ThreePrimeRACEClone"), Arrays.asList(new SetFieldConfigAction("threePrimeRACEClone"))); map.put(new MultiKey("relationship", "ThreePrimeRST", "derives_from", "ThreePrimeRACEClone"), Arrays.asList(new SetFieldConfigAction("threePrimeRACEClone"))); // evidence_for_feature map.put(new MultiKey("relationship", "OverlappingESTSet", "evidence_for_feature", "TranscriptRegion"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "ExperimentalFeature", "evidence_for_feature", "Transcript"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "ExperimentalFeature", "evidence_for_feature", "Exon"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "ExperimentalFeature", "evidence_for_feature", "Intron"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "ExperimentalFeature", "evidence_for_feature", "ExonRegion"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "Intron", "evidence_for_feature", "PolypeptideRegion"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); // partial_evidence_for_feature map.put(new MultiKey("relationship", "OverlappingESTSet", "partial_evidence_for_feature", "MRNA"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "TranscriptRegion", "partial_evidence_for_feature", "MRNA"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); // complete_evidence_for_feature map.put(new MultiKey("relationship", "ThreePrimeUST", "complete_evidence_for_feature", "ThreePrimeUTR"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "Intron"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "PolyASite"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "SL1AcceptorSite"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "SL2AcceptorSite"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "TranscriptionEndSite"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "complete_evidence_for_feature", "TSS"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); // full_evidence_for_feature // map.put(new MultiKey("relationship", "OverlappingESTSet", // "full_evidence_for_feature", "Gene"), // Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "OverlappingESTSet", "full_evidence_for_feature", "MRNA"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); map.put(new MultiKey("relationship", "TranscriptRegion", "full_evidence_for_feature", "MRNA"), Arrays.asList(new SetFieldConfigAction("supportedFeatures"))); // additional properties map.put(new MultiKey("prop", "CDS", "status"), Arrays.asList(new SetFieldConfigAction("status"))); map.put(new MultiKey("prop", "CDS", "wormpep"), Arrays.asList(new SetFieldConfigAction("wormpep"))); map.put(new MultiKey("prop", "MRNA", "cds"), Arrays.asList(new SetFieldConfigAction("CDS"))); map.put(new MultiKey("prop", "MRNA", "wormpep"), Arrays.asList(new SetFieldConfigAction("wormpep"))); map.put(new MultiKey("prop", "PolyASite", "external_evidence"), Arrays.asList(new SetFieldConfigAction("externalEvidence"))); map.put(new MultiKey("prop", "ThreePrimeRST", "genbank_acc"), Arrays.asList(new SetFieldConfigAction("GenBankAcc"))); map.put(new MultiKey("prop", "ThreePrimeRST", "ncbi_dbest"), Arrays.asList(new SetFieldConfigAction("NCBIdbEST"))); map.put(new MultiKey("prop", "ThreePrimeUTR", "external_evidence"), Arrays.asList(new SetFieldConfigAction("externalEvidence"))); map.put(new MultiKey("prop", "BindingSite", "qvalue"), Arrays.asList(new SetFieldConfigAction("qvalue"))); map.put(new MultiKey("prop", "Exon", "acceptor"), Arrays.asList(new SetFieldConfigAction("acceptor"))); map.put(new MultiKey("prop", "Exon", "connected_to_wormbase_transcript"), Arrays.asList(new SetFieldConfigAction("connectedToWormbaseTranscript"))); map.put(new MultiKey("prop", "Exon", "donor"), Arrays.asList(new SetFieldConfigAction("donor"))); map.put(new MultiKey("prop", "Exon", "overlapping_wormbase_transcript"), Arrays.asList(new SetFieldConfigAction("overlappingWormbaseTranscript"))); map.put(new MultiKey("prop", "Exon", "polyA"), Arrays.asList(new SetFieldConfigAction("polyA"))); map.put(new MultiKey("prop", "Exon", "tes"), Arrays.asList(new SetFieldConfigAction("tes"))); map.put(new MultiKey("prop", "Exon", "tsl"), Arrays.asList(new SetFieldConfigAction("tsl"))); map.put(new MultiKey("prop", "Exon", "tss"), Arrays.asList(new SetFieldConfigAction("tss"))); map.put(new MultiKey("prop", "OverlappingESTSet", "fdr"), Arrays.asList(new SetFieldConfigAction("fdr"))); map.put(new MultiKey("prop", "OverlappingESTSet", "fp"), Arrays.asList(new SetFieldConfigAction("fp"))); map.put(new MultiKey("prop", "OverlappingESTSet", "overlap"), Arrays.asList(new SetFieldConfigAction("overlap"))); map.put(new MultiKey("prop", "OverlappingESTSet", "reads"), Arrays.asList(new SetFieldConfigAction("reads"))); map.put(new MultiKey("prop", "OverlappingESTSet", "strands_confirmed"), Arrays.asList(new SetFieldConfigAction("strandsConfirmed"))); map.put(new MultiKey("prop", "OverlappingESTSet", "trimT"), Arrays.asList(new SetFieldConfigAction("trimT"))); map.put(new MultiKey("prop", "Transcript", "transcribed"), Arrays.asList(new SetFieldConfigAction("transcribed"))); map.put(new MultiKey("prop", "TranscriptRegion", "marginal_fpr"), Arrays.asList(new SetFieldConfigAction("marginalFpr"))); map.put(new MultiKey("prop", "TranscriptRegion", "marginal_sensitivity"), Arrays.asList(new SetFieldConfigAction("marginalSensitivity"))); map.put(new MultiKey("prop", "TranscriptRegion", "mean_intensity"), Arrays.asList(new SetFieldConfigAction("meanIntensity"))); map.put(new MultiKey("prop", "TranscriptRegion", "rank_score"), Arrays.asList(new SetFieldConfigAction("rankScore"))); map.put(new MultiKey("prop", "SequenceFeature", "prediction_status"), Arrays.asList(new SetFieldConfigAction("predictionStatus"))); map.put(new MultiKey("prop", "SequenceFeature", "note"), Arrays.asList(new SetFieldConfigAction("note"))); } return map; }