add a fix so that XL arguments won't cancel out -BTI arguments, fixed a bug for Ben where the ROD -> interval list conversion was throwing an exception, and some old code removal.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3174 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
aaron 2010-04-15 16:31:43 +00:00
parent 7973806716
commit e682460c1f
3 changed files with 9 additions and 71 deletions

View File

@ -184,7 +184,9 @@ public class GenomeAnalysisEngine {
// if include argument isn't given, create new set of all possible intervals
GenomeLocSortedSet includeSortedSet = (argCollection.intervals == null && argCollection.RODToInterval == null ?
GenomeLocSortedSet.createSetFromSequenceDictionary(this.referenceDataSource.getSequenceDictionary()) :
loadIntervals(argCollection.intervals, argCollection.intervalMerging));
loadIntervals(argCollection.intervals,
argCollection.intervalMerging,
GenomeLocParser.mergeIntervalLocations(checkRODToIntervalArgument(),argCollection.intervalMerging)));
// if no exclude arguments, can return parseIntervalArguments directly
if (argCollection.excludeIntervals == null)
@ -192,7 +194,7 @@ public class GenomeAnalysisEngine {
// otherwise there are exclude arguments => must merge include and exclude GenomeLocSortedSets
else {
GenomeLocSortedSet excludeSortedSet = loadIntervals(argCollection.excludeIntervals, argCollection.intervalMerging);
GenomeLocSortedSet excludeSortedSet = loadIntervals(argCollection.excludeIntervals, argCollection.intervalMerging, null);
intervals = includeSortedSet.subtractRegions(excludeSortedSet);
// logging messages only printed when exclude (-XL) arguments are given
@ -208,16 +210,16 @@ public class GenomeAnalysisEngine {
}
/**
* Loads the intervals relevant to
* Loads the intervals relevant to the current execution
* @param argList String representation of arguments; might include 'all', filenames, intervals in samtools
* notation, or a combination of the
* @param mergingRule Technique to use when merging interval data.
* @param additionalIntervals a list of additional intervals to add to the returned set. Can be null.
* @return A sorted, merged list of all intervals specified in this arg list.
*/
private GenomeLocSortedSet loadIntervals(List<String> argList, IntervalMergingRule mergingRule) {
List<GenomeLoc> rawIntervals = new ArrayList<GenomeLoc>(); // running list of raw GenomeLocs
// TODO: Aaron, how do we discriminate between RODs that are for inclusion and RODs that are for exclusion?
rawIntervals.addAll(checkRODToIntervalArgument()); // add any RODs-to-intervals we have
private GenomeLocSortedSet loadIntervals(List<String> argList, IntervalMergingRule mergingRule, List<GenomeLoc> additionalIntervals) {
List<GenomeLoc> rawIntervals = (additionalIntervals == null) ? new ArrayList<GenomeLoc>() : additionalIntervals; // running list of raw GenomeLocs
rawIntervals.addAll(IntervalUtils.parseIntervalArguments(argList));
// redundant check => default no arguments is null, not empty list

View File

@ -317,43 +317,6 @@ public class GenomeLocSortedSet extends AbstractSet<GenomeLoc> {
return ret;
}
public boolean addAllRegions(List<GenomeLoc> locations) {
this.mArray.addAll(locations);
Collections.sort(this.mArray);
this.mArray = GenomeLocSortedSet.mergeOverlappingLocations(this.mArray);
return true;
}
/**
* merge a list of genome locs that may be overlapping, returning the list of unique genomic locations
*
* @param raw the unchecked genome loc list
*
* @return the list of merged locations
*/
public static List<GenomeLoc> mergeOverlappingLocations(final List<GenomeLoc> raw) {
logger.debug(" Raw locations are: " + Utils.join(", ", raw));
if (raw.size() <= 1)
return raw;
else {
ArrayList<GenomeLoc> merged = new ArrayList<GenomeLoc>();
Iterator<GenomeLoc> it = raw.iterator();
GenomeLoc prev = it.next();
while (it.hasNext()) {
GenomeLoc curr = it.next();
if (prev.contiguousP(curr)) {
prev = prev.merge(curr);
} else {
merged.add(prev);
prev = curr;
}
}
merged.add(prev);
return merged;
}
}
/**
* convert this object to a list
* @return the lists

View File

@ -217,31 +217,4 @@ public class GenomeLocSortedSetUnitTest extends BaseTest {
}
assertTrue(seqNumber == GenomeLocSortedSetUnitTest.NUMBER_OF_CHROMOSOMES);
}
@Test
public void testAddAll() {
mSortedSet = GenomeLocSortedSet.createSetFromSequenceDictionary(this.header.getSequenceDictionary());
GenomeLocSortedSet set = GenomeLocSortedSet.createSetFromSequenceDictionary(this.header.getSequenceDictionary());
// we should have sequence
assertTrue(mSortedSet.size() == GenomeLocSortedSetUnitTest.NUMBER_OF_CHROMOSOMES);
mSortedSet.addAllRegions(set.toList());
assertTrue(mSortedSet.size() == GenomeLocSortedSetUnitTest.NUMBER_OF_CHROMOSOMES);
}
@Test
public void testAddAll2() {
mSortedSet = new GenomeLocSortedSet();
GenomeLocSortedSet mSortedSet2 = new GenomeLocSortedSet();
for (int x=0; x < 200; x = x + 2) {
mSortedSet.add(GenomeLocParser.createGenomeLoc(1,x));
}
assertEquals(100, mSortedSet.size());
for (int x=1; x < 201; x = x + 2) {
mSortedSet2.add(GenomeLocParser.createGenomeLoc(1,x));
}
assertEquals(100, mSortedSet2.size());
mSortedSet.addAllRegions(mSortedSet2.toList());
assertEquals(1, mSortedSet.size());
}
}