package org.seqcode.data.io.parsing;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.seqcode.genome.Genome;
import org.seqcode.genome.location.Gene;
import org.seqcode.genome.location.Region;
import org.seqcode.gsebricks.verbs.Expander;
//TODO: Add GTF loader
public class TranscriptFileExpander <X extends Region>
implements Expander<X,Gene>{
protected File f;
protected Genome gen;
protected List<Gene> allGenes = new ArrayList<Gene>();
public TranscriptFileExpander(Genome g, String fileName){
f = new File(fileName);
gen=g;
try{
BufferedReader reader = new BufferedReader(new FileReader(f));
String line;
while ((line = reader.readLine()) != null) {
line = line.trim();
String[] words = line.split("\\s+");
if(words.length==5){
String chr = words[0];
String[] tmp = chr.split("\\.");
chr=tmp[0].replaceFirst("^chr", "");
String name = words[1];
Integer start = new Integer(words[2]);
Integer end = new Integer(words[3]);
char strand = words[4].charAt(0);
allGenes.add(new Gene(gen, chr, start, end, name, name, strand, "file"));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public Iterator<Gene> execute(X a) {
List<Gene> currGenes = new ArrayList<Gene>();
for(Gene x : allGenes){
if(x.overlaps(a)){
currGenes.add(x);
}
}return currGenes.iterator();
}
}