High-performance interval list implement -- uses StringBuilder to avoid n^2 calculation. Can handle millions of locations quickly now

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@182 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2009-03-25 02:17:48 +00:00
parent 30babbf5b9
commit ff98e28abf
2 changed files with 7 additions and 7 deletions

View File

@ -187,7 +187,7 @@ public class TraversalEngine {
* @param file_name
*/
public void setLocationFromFile(final String file_name) {
String locStr = "";
StringBuilder locStr = new StringBuilder();
Scanner scanner = null;
try {
@ -195,9 +195,9 @@ public class TraversalEngine {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
line.replaceAll("\n", "");
locStr += line;
locStr.append(line);
if (scanner.hasNextLine()) {
locStr += ";";
locStr.append(";");
}
}
}
@ -210,9 +210,9 @@ public class TraversalEngine {
scanner.close();
}
logger.debug("DEBUG: locStr: " + locStr);
logger.debug("DEBUG: locStr: " + locStr.toString());
this.locs = parseGenomeLocs(locStr);
this.locs = parseGenomeLocs(locStr.toString());
}
/**

View File

@ -59,7 +59,7 @@ public class GenomeLoc implements Comparable<GenomeLoc> {
public static GenomeLoc parseGenomeLoc( final String str ) {
// Ôchr2Õ, Ôchr2:1000000Õ or Ôchr2:1,000,000-2,000,000Õ
System.out.printf("Parsing location '%s'%n", str);
//System.out.printf("Parsing location '%s'%n", str);
final Pattern regex1 = Pattern.compile("([\\w&&[^:]]+)$"); // matches case 1
final Pattern regex2 = Pattern.compile("([\\w&&[^:]]+):([\\d,]+)$"); // matches case 2
@ -102,7 +102,7 @@ public class GenomeLoc implements Comparable<GenomeLoc> {
}
GenomeLoc loc = new GenomeLoc(contig, start, stop);
System.out.printf(" => Parsed location '%s' into %s%n", str, loc);
//System.out.printf(" => Parsed location '%s' into %s%n", str, loc);
return loc;
}