/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package data.human.inhouse.region;
import fork.lib.base.file.FileName;
import fork.lib.base.file.management.Dirs;
import fork.lib.bio.anno.genomic.BedReader;
import fork.lib.bio.anno.genomic.BedReaderParam;
import fork.lib.bio.anno.genomic.region.GenomicRegionsBuilder;
import fork.lib.bio.anno.genomic.region.GenomicRegionsModifier;
import java.io.File;
import java.util.ArrayList;
/**
*
* @author man-mqbpjmg4
*/
public class GenerateGenic {
protected GenomicRegionsBuilder gb;
public GenerateGenic(GenomicRegionsBuilder gb){
this.gb=gb;
init();
}
protected void init(){}
public static ArrayList<File> getFiles(){
File dir= Dirs.getFile("dir");
File d= new File(dir+"/anno//bed/hg19/refGene_hg19/genic");
File[] fs= d.listFiles();
ArrayList<File> ret= new ArrayList<>();
for( int i=0; i<fs.length; i++ ){
File f= fs[i];
if(FileName.getExt(f).equals("bed")){
ret.add(f);
}
}
return ret;
}
public void writeToDirectory(File od, String org) throws Exception{
GenomicRegionsModifier gm= new GenomicRegionsModifier(gb);
gm.gb.writeToFileBed(new File(od+"/"+org+"_gene_cds_full.bed"));
gm.getComplementaryStrand().writeToFileBed(new File(od+"/"+org+"_gene_cds-rev_full.bed"));
gm.getFivePrimeEnds(500, 0).writeToFileBed(new File(od+"/"+org+"_gene_five_500.0.bed"));
gm.getFivePrimeEnds(0, 500).writeToFileBed(new File(od+"/"+org+"_gene_five_0.500.bed"));
gm.getFivePrimeEnds(500, 500).writeToFileBed(new File(od+"/"+org+"_gene_five_500.500.bed"));
new GenomicRegionsModifier(gm.getGenicRegions(1000, 1000)).lengthGreaterThan(100).writeToFileBed(new File(od+"/"+org+"_gene_cds_1000.1000.bed"));
gm.getThreePrimeEnds(500, 0).writeToFileBed(new File(od+"/"+org+"_gene_three_500.0.bed"));
gm.getThreePrimeEnds(0, 500).writeToFileBed(new File(od+"/"+org+"_gene_three_0.500.bed"));
gm.getThreePrimeEnds(500, 500).writeToFileBed(new File(od+"/"+org+"_gene_three_500.500.bed"));
gm.getAllIntergenicRegions().writeToFileBed(new File(od+"/"+org+"_intergenic_full.bed"));
new GenomicRegionsModifier(gm.getAllIntergenicRegions()).getGenicRegions(1000, 1000) .writeToFileBed(new File(od+"/"+org+"_intergenic_1000.bed"));
new GenomicRegionsModifier(gm.getAllIntergenicRegions()).getGenicRegions(5000, 5000) .writeToFileBed(new File(od+"/"+org+"_intergenic_5000.bed"));
}
public static void main(String[] args) throws Exception {
File dir= Dirs.getFile("dir");
//File f= new File(dir+"/anno/refGene_hg19.bed");String org= "hg19"; String tag= "refGene";
File f= new File(dir+"/anno/ensGene_hg19_exon.bed");String org= "hg19"; String tag= "ensGene";
File od= new File(dir+"/anno/bed/"+org+"/"+tag+"_"+org+"/genic");
BedReaderParam par= new BedReaderParam();
par.ifDirectional=true;
GenomicRegionsBuilder gb= new BedReader(f, par).getGenomicRegionsBuilder();
GenerateGenic gg= new GenerateGenic(gb);
gg.writeToDirectory(od, org);
}
}