Java tutorial
/* * Copyright (C) 2009-2010 Institute for Computational Biomedicine, * Weill Medical College of Cornell University * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package edu.cornell.med.icb.goby.modes; import com.martiansoftware.jsap.JSAPException; import com.martiansoftware.jsap.JSAPResult; import edu.cornell.med.icb.goby.alignments.AlignmentReaderImpl; import edu.cornell.med.icb.goby.reads.ReadSet; import org.apache.commons.io.IOUtils; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; /** * Converts a compact read sets to plain text. * * @author Fabien Campagne */ public class ReadSetToTextMode extends AbstractGobyMode { /** * The mode name. */ private static final String MODE_NAME = "set-to-text"; /** * The mode description help text. */ private static final String MODE_DESCRIPTION = "Converts read sets to text format."; /** * The output file. */ private String outputFilename; /** * The basename of the compact alignment. */ private String[] basenames; private String suffix; @Override public String getModeName() { return MODE_NAME; } @Override public String getModeDescription() { return MODE_DESCRIPTION; } enum OutputFormat { PLAIN, } private OutputFormat outputFormat; /** * Configure. * * @param args command line arguments * @return this object for chaining * @throws java.io.IOException error parsing * @throws com.martiansoftware.jsap.JSAPException * error parsing */ @Override public AbstractCommandLineMode configure(final String[] args) throws IOException, JSAPException { final JSAPResult jsapResult = parseJsapArguments(args); final String[] inputFiles = jsapResult.getStringArray("input"); basenames = AlignmentReaderImpl.getBasenames(inputFiles); outputFilename = jsapResult.getString("output"); outputFormat = OutputFormat.valueOf(jsapResult.getString("format").toUpperCase()); suffix = jsapResult.getString("suffix"); return this; } /** * Display the alignments as text files. * * @throws java.io.IOException error reading / writing */ @Override public void execute() throws IOException { PrintStream stream = null; try { stream = outputFilename == null ? System.out : new PrintStream(new FileOutputStream(outputFilename)); switch (outputFormat) { case PLAIN: stream.printf("queryIndex\tmultiplicity%n"); break; default: throw new IllegalArgumentException("Unknown output format: " + outputFormat); } for (final String basename : basenames) { final ReadSet set = new ReadSet(); set.load(basename, suffix); for (int queryIndex = 0; queryIndex <= set.getMaxReadIndex(); queryIndex++) { final int multiplicity = set.getMultiplicity(queryIndex); stream.printf("%d\t%d%n", queryIndex, multiplicity); } } } finally { if (stream != System.out) { IOUtils.closeQuietly(stream); } } } /** * Main method. * * @param args command line args. * @throws com.martiansoftware.jsap.JSAPException * error parsing * @throws java.io.IOException error parsing or executing. */ public static void main(final String[] args) throws JSAPException, IOException { new ReadSetToTextMode().configure(args).execute(); } }