Mercurial > repos > pfrommolt > ngsrich
view NGSrich_0.5.5/src/_main/NGSrichSummarize.java @ 0:89ad0a9cca52 default tip
Uploaded
author | pfrommolt |
---|---|
date | Mon, 21 Nov 2011 08:12:19 -0500 |
parents | |
children |
line wrap: on
line source
package _main; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import java.util.Scanner; import middlewares.Misc; import exceptions.FileFormatException; /** * This is the Main-class of the summarization part of the software. This class * is a wrapper class. It calls the r-script "summarize_enrichment.R" which * summarizes the evaluations of multiple samples. * * @author Peter Frommolt */ public class NGSrichSummarize { /** * An array of arguments containing the following option elements in the * very same order: -i <inputIndex> -o <outDir> [-p <poor> -h <high>] * * Required: * <inputIndex> File with evaluation directories to be summarized, one per * line. * <outDir> Output directory. * * Optional: * <poor> Cutoff for poorly covered genes [default: 2]. * <high> Cutoff for highly covered genes [default: 200]. * */ String[] args; public NGSrichSummarize(String[] args){ this.args = args; } public void summarize() throws FileFormatException, IOException, InterruptedException{ int alen = args.length; String[] params = new String[4]; String usagestr="\nUsage: NGSrich summarize -i <inputIndex> -o <outDir> " + "[-p <poor> -h <high>]\n\n\tRequired:\n\t<inputIndex>\tFile " + "with evaluation directories to be summarized, one per line." + "\n\t<outDir>\tOutput directory.\n\n\tOptional:\n\t<poor>\t\t" + "Cutoff for poorly covered genes [default: 2].\n\t<high>\t\t" + "Cutoff for highly covered genes [default: 200].\n"; if(alen==0){ System.out.println(usagestr); System.exit(0); } boolean i=false, o=false, h=false, po=false; for(int k = 0; k < alen; k=k+2){ if(args[k].length() == 2 && args[k].charAt(0)=='-'){ char flag = args[k].charAt(1); switch(flag){ case 'i': params[0]=args[k+1]; i=true; break; case 'o': params[1]=args[k+1]; o=true; break; case 'p': params[2]=args[k+1]; po=true; break; case 'h': params[3]=args[k+1]; h=true; break; } } else{ System.out.println(usagestr); System.exit(0); } } Properties p = new Properties(); FileInputStream stream=new FileInputStream(Misc.binDir()+Misc.slash(Misc.binDir())+"DEFAULT.properties"); p.load(stream); stream.close(); String infile, outdir, poor, high; if(!i){System.out.println("Error: Argument -i is mandatory"); System.exit(1);} if(!o){System.out.println("Error: Argument -o is mandatory"); System.exit(1);} infile=params[0]; outdir=params[1]; if(!po){poor=p.getProperty("poor");} else{poor=params[2];} if(!h){high=p.getProperty("high");} else{high=params[3];} Runtime rt=Runtime.getRuntime(); String rScriptAbsolutePathName=Misc.binDir()+Misc.slash(Misc.binDir())+"../R/summarize_enrichment.R"; Process proc = rt.exec(rScriptAbsolutePathName+" "+infile+" "+outdir+" "+poor+" "+high); /*Scanner sc=new Scanner(proc.getInputStream()); String erg = ""; while(sc.hasNextLine()){erg += (sc.nextLine());} sc.close();*/ Scanner stdout = new Scanner(proc.getInputStream()); Scanner stderr=new Scanner(proc.getErrorStream()); while (stdout.hasNextLine()){System.out.println(stdout.nextLine());} while(stderr.hasNextLine()){System.out.println(stderr.nextLine());} stdout.close(); stderr.close(); } }