/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package data.cerevisiae;
import fork.lib.base.file.FileName;
import fork.lib.base.file.io.txt.ReadTable;
import fork.lib.base.file.management.Dirs;
import fork.lib.bio.anno.genomic.BedGraphExporter;
import fork.lib.bio.anno.genomic.LandscapeBuilder;
import fork.lib.math.algebra.elementary.set.continuous.Region;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
/**
*
* @author forksapien
*/
public class ConsToWig {
protected ArrayList<File> fs;
public ConsToWig(ArrayList<File> fs){
this.fs=fs;
}
public int res= 50;
public void writeToFile(File out, String tit) throws Exception{
out.getParentFile().mkdirs();
BufferedWriter bw= new BufferedWriter(new FileWriter(out));
BedGraphExporter.writeTitle(bw, tit+"_res"+res);
for( int i=0; i<fs.size() ; i++ ){
File f= fs.get(i);
System.out.println(f);
String chr= FileName.getBaseName(f);
String[][] arr= new ReadTable(f).getTableAsArray();
LandscapeBuilder lb= new LandscapeBuilder();
int pp=0; double pv=0;
for( int j=0; j<arr.length ; j++ ){
String[] r= arr[j];
int p= Integer.parseInt(r[0]);
double v= Double.parseDouble(r[1]);
if(pp!=0){
Region reg= new Region(pp, p-1);
reg.attr= (double)Math.round(pv*res)/res;
lb.add(chr, reg);
}
pp=p; pv=v;
}
BedGraphExporter be= new BedGraphExporter(lb);
be.appendToFile(bw);
}
bw.close();
}
public static void main(String[] args) throws Exception {
File dir= Dirs.getFile("dir");
File d= new File(dir+"/anno/sacCer1_cons");
ArrayList<File> fs= new ArrayList<>();
//for( int i=8; i<=8 ; i++ ){
for( int i=1; i<=16 ; i++ ){
fs.add(new File(d+"/chr"+i+".txt"));
}
fs.add(new File(d+"/chrM.txt"));
ConsToWig cc= new ConsToWig(fs);
cc.writeToFile(new File(d+"/phastCons_sacCer1.wig"), "phastCons_sacCer1");
}
}