Package data.cerevisiae.region.scan

Source Code of data.cerevisiae.region.scan.LinkAntisense

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package data.cerevisiae.region.scan;

import fork.lib.base.file.FileName;
import fork.lib.base.file.management.Dirs;
import fork.lib.bio.anno.genomic.BedExporter;
import fork.lib.bio.anno.genomic.BedGraphBuffer;
import fork.lib.bio.anno.genomic.BedReader;
import fork.lib.bio.anno.genomic.LandscapeBuffer;
import fork.lib.bio.anno.genomic.LandscapeScoringResultEntry;
import fork.lib.bio.anno.genomic.LandscapeScoringStrand;
import fork.lib.bio.anno.genomic.region.DirectionalGenomicRegion;
import fork.lib.bio.anno.genomic.region.GenomicRegion;
import fork.lib.bio.anno.genomic.region.GenomicRegionsBuilder;
import fork.lib.bio.anno.genomic.region.GenomicRegionsModifier;
import fork.lib.math.algebra.advanced.linearalgebra.Vector;
import fork.lib.math.algebra.elementary.set.continuous.Region;
import fork.lib.math.algebra.elementary.set.continuous.RegionException;
import fork.lib.math.applied.buffer.Landscape2DBuffer;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;

/**
*
* @author forksapien
*/
public class LinkAntisense {
   
   
protected GenomicRegionsBuilder gb;
protected LandscapeBuffer lbf, lbr;
   
protected ArrayList<LandscapeScoringResultEntry> ress;
/** bp ousdie genes */
public int out= 50;
/** bp from the mid point */
public int side= 20;

   
   
    public LinkAntisense(GenomicRegionsBuilder gb, LandscapeBuffer lbf, LandscapeBuffer lbr) throws Exception{
        this.gb=gb;
        this.lbf=lbf;
        this.lbr=lbr;
        init();
    }
   
   

protected void init() throws Exception{
    ress= new ArrayList<>();
    GenomicRegionsBuilder ggg= new GenomicRegionsModifier(new GenomicRegionsModifier(gb).getComplementaryStrand()).getExtendedRegions(out, out);
   
    LandscapeScoringStrand ls= new LandscapeScoringStrand(lbf, lbr, ggg
            ){
        protected double[] scoreStrand(ArrayList<Region> bufs, GenomicRegion gr) throws RegionException{
            return Landscape2DBuffer.getLandscape(bufs, gr);
        }
    };
    ArrayList<LandscapeScoringResultEntry> rs= ls.getResultEntries();
    for( int i=0; i<rs.size() ; i++ ){
        DirectionalGenomicRegion gr= (DirectionalGenomicRegion)rs.get(i).gr;
        double[] vs= rs.get(i).scores;
        int mid= vs.length/2;
        int fl, fh, tl, th;
        if(gr.isOnForwardStrand()){
            fl=0;
            fh= mid- side;
            tl= mid+ side;
            th= vs.length-1;
        }else{
            tl= 0;
            th= mid- side;
            fl= mid+side;
            fh= vs.length-1;
        }
        //System.out.println();gr.printInt();System.out.println(vs.length);System.out.println(fl+"  "+fh);
        Vector vec= new Vector(vs);
        double vf= vec.subset(fl, fh).toDistribution().mean();
        double vt= vec.subset(tl, th).toDistribution().mean();
       
        double[] ft= new double[]{vf, vt};
        ress.add(new LandscapeScoringResultEntry(gr,ft));
    }
   
}




public void writeToFile(File out) throws Exception{
    GenomicRegionsBuilder gbout= new GenomicRegionsBuilder();
    for( int i=0; i<ress.size() ; i++ ){
        LandscapeScoringResultEntry r=ress.get(i);
        GenomicRegion ge= r.gr;
        Object o= ge.attr==null ? ge.toUCSCFormat() : ge.attr;
        ge.attr= new Object[]{o,
            new Double(r.scores[0]), new Double(r.scores[1])
        };
        gbout.add(ge);
    }
    gbout.sortAll();
    BedExporter be= new BedExporter(gbout){
        protected String column3(GenomicRegion gr){
            return ((Object[])gr.attr)[0].toString();
        }
        protected String column4(GenomicRegion gr){
            return gr.toUCSCFormat();
        }
        protected String column6On(GenomicRegion gr){
            Object[] os= (Object[])gr.attr;
            return (Double)os[1]+"\t"+ (Double)os[2];
        }
    };
    be.param().ifExpanded= true;
    be.writeToFile(out);
}



public static void main(String[] args) throws Exception {
    File dir= Dirs.getFile("dir");
    File fd= new File(dir+"/data/rna");
    File f= new File("out/score/set/sacCer1-xu/scan/intra_300_0_10_51.bed");
   
    GenomicRegionsBuilder gb= new BedReader(f).getGenomicRegionsBuilder();
   
    String s= "884-rrp6d-wt";
    LandscapeBuffer lbf= new BedGraphBuffer(new File(fd+"/"+s+"_sacCer1_for.wig"));
    LandscapeBuffer lbr= new BedGraphBuffer(new File(fd+"/"+s+"_sacCer1_rev.wig"));
    System.out.println(1);
   
    LinkAntisense ll= new LinkAntisense(gb, lbf, lbr);
    //LinkAntisense ll= new LinkAntisense(gb, null, null);
    ll.writeToFile(new File("out/score/set/sacCer1-xu/scan/linkAnti_"+FileName.getBaseName(f) +".bed"));
}



}




TOP

Related Classes of data.cerevisiae.region.scan.LinkAntisense

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.