|
7 | 7 | import org.junit.Test; |
8 | 8 |
|
9 | 9 | import java.util.ArrayList; |
| 10 | +import java.util.Collections; |
| 11 | +import java.util.Comparator; |
10 | 12 | import java.util.HashSet; |
11 | 13 | import java.util.LinkedHashMap; |
12 | 14 | import java.util.List; |
@@ -114,7 +116,11 @@ private void addInterval(String refName, int start, int end) |
114 | 116 | public static LinkedHashMap<String, List<Interval>> divideGenome(SAMSequenceDictionary dict, int optimalBasesPerJob, boolean allowSplitChromosomes, int maxContigsPerJob) |
115 | 117 | { |
116 | 118 | ActiveIntervalSet ais = new ActiveIntervalSet(optimalBasesPerJob, allowSplitChromosomes, maxContigsPerJob); |
117 | | - for (SAMSequenceRecord rec : dict.getSequences()) |
| 119 | + |
| 120 | + // Sort the sequences in descending length, rather than alphabetic on name: |
| 121 | + List<SAMSequenceRecord> sortedSeqs = new ArrayList<>(dict.getSequences()); |
| 122 | + sortedSeqs.sort(Comparator.comparingInt(SAMSequenceRecord::getSequenceLength).reversed()); |
| 123 | + for (SAMSequenceRecord rec : sortedSeqs) |
118 | 124 | { |
119 | 125 | ais.add(rec); |
120 | 126 | } |
@@ -148,8 +154,8 @@ public void testScatter() |
148 | 154 | SAMSequenceDictionary dict = getDict(); |
149 | 155 | Map<String, List<Interval>> ret = divideGenome(dict, 1000, true, -1); |
150 | 156 | assertEquals("Incorrect number of jobs", 8, ret.size()); |
151 | | - assertEquals("Incorrect interval end", 2000, ret.get("Job3").get(0).getEnd()); |
152 | | - assertEquals("Incorrect start", 1001, ret.get("Job3").get(0).getStart()); |
| 157 | + assertEquals("Incorrect interval end", 1000, ret.get("Job3").get(0).getEnd()); |
| 158 | + assertEquals("Incorrect start", 1, ret.get("Job3").get(0).getStart()); |
153 | 159 | assertEquals("Incorrect interval end", 4, ret.get("Job8").size()); |
154 | 160 |
|
155 | 161 | Map<String, List<Interval>> ret2 = divideGenome(dict, 3000, false, -1); |
@@ -183,12 +189,12 @@ public void testScatter() |
183 | 189 | } |
184 | 190 |
|
185 | 191 | Map<String, List<Interval>> ret5 = divideGenome(dict, 750, true, -1); |
186 | | - assertEquals("Incorrect number of jobs", 10, ret5.size()); |
187 | | - assertEquals("Incorrect interval end", 1000, ret5.get("Job1").get(0).getEnd()); |
188 | | - assertEquals("Incorrect interval end", 4, ret5.get("Job10").size()); |
| 192 | + assertEquals("Incorrect number of jobs", 9, ret5.size()); |
| 193 | + assertEquals("Incorrect interval end", 750, ret5.get("Job1").get(0).getEnd()); |
| 194 | + assertEquals("Incorrect interval end", 4, ret5.get("Job9").size()); |
189 | 195 |
|
190 | | - assertEquals("Incorrect interval start", 751, ret5.get("Job3").get(0).getStart()); |
191 | | - assertEquals("Incorrect interval start", 1501, ret5.get("Job8").get(0).getStart()); |
| 196 | + assertEquals("Incorrect interval start", 1501, ret5.get("Job3").get(0).getStart()); |
| 197 | + assertEquals("Incorrect interval start", 1, ret5.get("Job8").get(0).getStart()); |
192 | 198 |
|
193 | 199 | Map<String, List<Interval>> ret6 = divideGenome(dict, 5000, false, 2); |
194 | 200 | assertEquals("Incorrect number of jobs", 5, ret6.size()); |
|
0 commit comments