From 60db667b1e2c421e7726e61bc957d95ebb3594a0 Mon Sep 17 00:00:00 2001 From: Fengchao Date: Fri, 16 Jun 2017 12:48:23 +0800 Subject: [PATCH] Add initialCapacity and loadFactor to HashMap and HashSet. --- src/main/java/proteomics/ECL2.java | 2 +- .../java/proteomics/Index/BuildIndex.java | 36 +++++++++---------- .../java/proteomics/Spectrum/PreSpectrum.java | 2 +- .../java/proteomics/TheoSeq/MassTool.java | 4 +-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/proteomics/ECL2.java b/src/main/java/proteomics/ECL2.java index 32d5e62..bac7902 100644 --- a/src/main/java/proteomics/ECL2.java +++ b/src/main/java/proteomics/ECL2.java @@ -135,7 +135,7 @@ public static void main(String[] args) { // check progress every minute, record results,and delete finished tasks. int lastProgress = 0; - Set final_search_results = new HashSet<>(); + Set final_search_results = new HashSet<>(scanNumArray.length + 1, 1); try { while (!taskList.isEmpty()) { // record search results and delete finished ones. diff --git a/src/main/java/proteomics/Index/BuildIndex.java b/src/main/java/proteomics/Index/BuildIndex.java index 1e365eb..7a58c8e 100644 --- a/src/main/java/proteomics/Index/BuildIndex.java +++ b/src/main/java/proteomics/Index/BuildIndex.java @@ -22,7 +22,7 @@ public class BuildIndex { private final MassTool mass_tool_obj; private final Map pro_annotate_map; - private Map fix_mod_map = new HashMap<>(); + private Map fix_mod_map = new HashMap<>(25, 1); private TreeMap> bin_seq_map = new TreeMap<>(); private Map bin_candidate_num_map = new HashMap<>(); private Map seq_entry_map = new HashMap<>(); @@ -92,8 +92,8 @@ public BuildIndex(Map parameter_map) { seqProMap = buildSeqProMap(pro_seq_map, min_chain_length, max_chain_length); // read var mods - Set varModParamSet = new HashSet<>(); - Set binaryModParamSet = new HashSet<>(); + Set varModParamSet = new HashSet<>(30, 1); + Set binaryModParamSet = new HashSet<>(10, 1); for (String k : parameter_map.keySet()) { if (k.contentEquals("var_mod1")) { getVarModParams(parameter_map.get(k), varModParamSet, binaryModParamSet); @@ -145,7 +145,7 @@ public BuildIndex(Map parameter_map) { // mod containing Set varSeqSet = generateModSeq(seq, linkSiteSet, varModParamSet, binaryModParamSet, varModMaxNum); for (VarSequence varSeq : varSeqSet) { - linkSiteSet = new HashSet<>(); + linkSiteSet = new HashSet<>(5, 1); linkSiteSet.add(varSeq.linkSite); if (!linkSiteSet.isEmpty()) { float totalMass = (float) (mass_tool_obj.calResidueMass(varSeq.seq) + MassTool.H2O); @@ -223,7 +223,7 @@ public Map getBinCandidateNumMap() { } private Map> buildSeqProMap(Map pro_seq_map, int min_chain_length, int max_chain_length) { - Map> seq_pro_map = new HashMap<>(); + Map> seq_pro_map = new HashMap<>(pro_seq_map.size() * 150, 1); for (String pro_id : pro_seq_map.keySet()) { String pro_seq = pro_seq_map.get(pro_id); Set seq_set = mass_tool_obj.buildChainSet(pro_seq); @@ -248,7 +248,7 @@ private Map> buildSeqProMap(Map pro_seq_map, if (seq_pro_map.containsKey(target_seq)) { seq_pro_map.get(target_seq).add(pro_id); } else { - Set pro_list = new HashSet<>(); + Set pro_list = new HashSet<>(5, 1); pro_list.add(pro_id); seq_pro_map.put(target_seq, pro_list); } @@ -287,7 +287,7 @@ private Map> buildSeqProMap(Map pro_seq_map, if (seq_pro_map.containsKey(decoy_seq)) { seq_pro_map.get(decoy_seq).add("DECOY_" + pro_id); } else { - Set pro_list = new HashSet<>(); + Set pro_list = new HashSet<>(5, 1); pro_list.add("DECOY_" + pro_id); seq_pro_map.put(decoy_seq, pro_list); } @@ -303,7 +303,7 @@ private Set generateModSeq(String seq, Set modFreeListSites, // has binary mod for (BinaryModParam binaryModParam : binaryModParamSet) { // get all locations having binary mod - Map> idxBinaryModMassMap = new HashMap<>(); + Map> idxBinaryModMassMap = new HashMap<>(seq.length(), 1); for (int i = 0; i < seq.length(); ++i) { if (i != linkSite) { String aa = seq.substring(i, i + 1); @@ -328,7 +328,7 @@ private Set generateModSeq(String seq, Set modFreeListSites, if (idxBinaryModMassMap.size() < varModMaxNum) { // generate sequences containing the binary mod and additional var mod // get all locations having var mods - Map> idxVarModMassMap = new HashMap<>(); + Map> idxVarModMassMap = new HashMap<>(seq.length(), 1); for (int i = 0; i < seq.length(); ++i) { if (i != linkSite) { if (!idxBinaryModMassMap.containsKey(i)) { @@ -349,14 +349,14 @@ private Set generateModSeq(String seq, Set modFreeListSites, } if (!idxVarModMassMap.isEmpty()) { // generate var containing sequences - Map> idxBinaryVarModMassMap = new HashMap<>(); + Map> idxBinaryVarModMassMap = new HashMap<>(seq.length(), 1); idxBinaryVarModMassMap.putAll(idxBinaryModMassMap); idxBinaryVarModMassMap.putAll(idxVarModMassMap); Integer[] allIdxArray = idxVarModMassMap.keySet().toArray(new Integer[idxVarModMassMap.size()]); Arrays.sort(allIdxArray); for (int i = 1; i <= Math.min(varModMaxNum - idxBinaryModMassMap.size(), idxVarModMassMap.size()); ++i) { List idxCombinationList = generateIdxCombinations(allIdxArray, i); - Set varSetSubSet = new HashSet<>(); + Set varSetSubSet = new HashSet<>(seq.length(), 1); for (int[] idxCombination : idxCombinationList) { int[] allIdxCombination = new int[idxCombination.length + idxBinaryModMassMap.size()]; int j = 0; @@ -381,7 +381,7 @@ private Set generateModSeq(String seq, Set modFreeListSites, // does not have binary mod // get all locations' var lists - Map> idxVarModMassMap = new HashMap<>(); + Map> idxVarModMassMap = new HashMap<>(seq.length(), 1); for (int i = 0; i < seq.length(); ++i) { if (i != linkSite) { char aa = seq.charAt(i); @@ -456,7 +456,7 @@ private List> generateLocalIdxModMassMap(int[] idxArray, Map for (int i2 = 0; i2 < idxModMassMap.get(idxArray[2]).size(); ++i2) { for (int i3 = 0; i3 < idxModMassMap.get(idxArray[3]).size(); ++i3) { for (int i4 = 0; i4 < idxModMassMap.get(idxArray[4]).size(); ++i4) { - Map localIdxModMassMap = new HashMap<>(); + Map localIdxModMassMap = new HashMap<>(6, 1); localIdxModMassMap.put(idxArray[0], idxModMassMap.get(idxArray[0]).get(i0)); localIdxModMassMap.put(idxArray[1], idxModMassMap.get(idxArray[1]).get(i1)); localIdxModMassMap.put(idxArray[2], idxModMassMap.get(idxArray[2]).get(i2)); @@ -473,7 +473,7 @@ private List> generateLocalIdxModMassMap(int[] idxArray, Map for (int i1 = 0; i1 < idxModMassMap.get(idxArray[1]).size(); ++i1) { for (int i2 = 0; i2 < idxModMassMap.get(idxArray[2]).size(); ++i2) { for (int i3 = 0; i3 < idxModMassMap.get(idxArray[3]).size(); ++i3) { - Map localIdxModMassMap = new HashMap<>(); + Map localIdxModMassMap = new HashMap<>(5, 1); localIdxModMassMap.put(idxArray[0], idxModMassMap.get(idxArray[0]).get(i0)); localIdxModMassMap.put(idxArray[1], idxModMassMap.get(idxArray[1]).get(i1)); localIdxModMassMap.put(idxArray[2], idxModMassMap.get(idxArray[2]).get(i2)); @@ -487,7 +487,7 @@ private List> generateLocalIdxModMassMap(int[] idxArray, Map for (int i0 = 0; i0 < idxModMassMap.get(idxArray[0]).size(); ++i0) { for (int i1 = 0; i1 < idxModMassMap.get(idxArray[1]).size(); ++i1) { for (int i2 = 0; i2 < idxModMassMap.get(idxArray[2]).size(); ++i2) { - Map localIdxModMassMap = new HashMap<>(); + Map localIdxModMassMap = new HashMap<>(4, 1); localIdxModMassMap.put(idxArray[0], idxModMassMap.get(idxArray[0]).get(i0)); localIdxModMassMap.put(idxArray[1], idxModMassMap.get(idxArray[1]).get(i1)); localIdxModMassMap.put(idxArray[2], idxModMassMap.get(idxArray[2]).get(i2)); @@ -498,7 +498,7 @@ private List> generateLocalIdxModMassMap(int[] idxArray, Map } else if (idxArray.length == 2) { for (int i0 = 0; i0 < idxModMassMap.get(idxArray[0]).size(); ++i0) { for (int i1 = 0; i1 < idxModMassMap.get(idxArray[1]).size(); ++i1) { - Map localIdxModMassMap = new HashMap<>(); + Map localIdxModMassMap = new HashMap<>(3, 1); localIdxModMassMap.put(idxArray[0], idxModMassMap.get(idxArray[0]).get(i0)); localIdxModMassMap.put(idxArray[1], idxModMassMap.get(idxArray[1]).get(i1)); outputList.add(localIdxModMassMap); @@ -506,7 +506,7 @@ private List> generateLocalIdxModMassMap(int[] idxArray, Map } } else if (idxArray.length == 1) { for (int i0 = 0; i0 < idxModMassMap.get(idxArray[0]).size(); ++i0) { - Map localIdxModMassMap = new HashMap<>(); + Map localIdxModMassMap = new HashMap<>(2, 1); localIdxModMassMap.put(idxArray[0], idxModMassMap.get(idxArray[0]).get(i0)); outputList.add(localIdxModMassMap); } @@ -555,7 +555,7 @@ private Set checkKCTermMod(Set varSeqSet) { // eliminate those s private Set getLinkSiteSet(String seq, boolean n_term, boolean c_term) { AA[] aa_list = MassTool.seqToAAList(seq); - Set output = new HashSet<>(); + Set output = new HashSet<>(5, 1); for (int i = 1; i < aa_list.length - 2; ++i) { if (aa_list[i].aa == 'K' && (Math.abs(aa_list[i].delta_mass) < varModMassResolution)) { output.add((short) i); diff --git a/src/main/java/proteomics/Spectrum/PreSpectrum.java b/src/main/java/proteomics/Spectrum/PreSpectrum.java index f9673c9..56fc7e7 100644 --- a/src/main/java/proteomics/Spectrum/PreSpectrum.java +++ b/src/main/java/proteomics/Spectrum/PreSpectrum.java @@ -26,7 +26,7 @@ public PreSpectrum(MassTool mass_tool_obj, boolean flankingPeaks) { public SparseVector preSpectrum (Map peaks_map, float precursor_mass, int scanNum) { // sqrt the intensity - Map sqrt_pl_map = new HashMap<>(); + Map sqrt_pl_map = new HashMap<>(peaks_map.size() + 1, 1); for (double mz : peaks_map.keySet()) { if ((peaks_map.get(mz) > 1e-6) && (mz < precursor_mass)) { sqrt_pl_map.put(mz, Math.sqrt(peaks_map.get(mz))); diff --git a/src/main/java/proteomics/TheoSeq/MassTool.java b/src/main/java/proteomics/TheoSeq/MassTool.java index 1c077e6..31e5b74 100644 --- a/src/main/java/proteomics/TheoSeq/MassTool.java +++ b/src/main/java/proteomics/TheoSeq/MassTool.java @@ -13,7 +13,7 @@ public class MassTool { public static final double H2O = 18.010564684; - private final Map mass_table = new HashMap<>(); + private final Map mass_table = new HashMap<>(25, 1); private final int missed_cleavage; private final String cut_site; private final String protect_site; @@ -237,7 +237,7 @@ Map> digestTrypsin(String pro_seq) { Collections.sort(cut_point_list); // Deal with missed cleavage - Map> digest_range_map = new HashMap<>(); + Map> digest_range_map = new HashMap<>(5, 1); for (int time = 0; time <= missed_cleavage; ++time) { List temp = new LinkedList<>(); int left_point;