package org.seqcode.data.seqdata.tools; import java.util.*; import java.sql.*; import org.seqcode.data.seqdata.*; import org.seqcode.genome.location.Region; import org.seqcode.gseutils.Args; import org.seqcode.gseutils.NotFoundException; /** * java org.seqcode.gse.tools.chipseq.GeneBasedBindingReport --species "$MM;mm9" \ * --analysisname "PPG ES iCdx2 p2A 7-28-10 lane 5 (36bp)" \ * --analysisversion "vs PPG Day4 null-antiV5 iTF_iOlig2 1 (default params) run 2 round 3" \ * --genes refGene [--proxup 5000] [--proxdown200] [--up 10000] [--intronlen 10000] [--thresh .001] * * Output columns are * 0) gene name * 1) positions of distal binding events * 2) positions of proximal binding events * 3) positions of intronic or exonic binding events */ public class GeneBasedBindingReport extends GeneBasedReport { private SeqAnalysis analysis; private double pvalthresh; public static void main(String args[]) throws Exception { GeneBasedBindingReport report = new GeneBasedBindingReport(); report.parseArgs(args); report.getRegions(args); report.report(); } public void parseArgs(String args[]) throws SQLException, NotFoundException { super.parseArgs(args); analysis = null; analysis = Args.parseSeqAnalysis(args,"analysis"); pvalthresh = Args.parseDouble(args,"thresh",.01); } public void getRegions(String args[]) {} public Collection<SeqAnalysisResult> getOverlappingRegions (Region wholeRegion) throws SQLException { ArrayList<SeqAnalysisResult> output = new ArrayList<SeqAnalysisResult>(); for (SeqAnalysisResult r : analysis.getResults(getGenome(), wholeRegion)) { if (!Double.isInfinite(r.pvalue) && r.pvalue > pvalthresh) { continue; } output.add(r); } return output; } }