/* * $Id: AlignCommandLine.java,v 1.2 2009/03/10 15:10:46 ahmed Exp $ * * 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 2 * 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package jaligner.ui; import jaligner.Alignment; import jaligner.Sequence; import jaligner.SmithWatermanGotoh; import jaligner.formats.Pair; import jaligner.matrix.Matrix; import jaligner.matrix.MatrixLoader; import jaligner.util.Commons; import jaligner.util.SequenceParser; import java.io.File; import java.util.logging.Level; import java.util.logging.Logger; /** * Command line interface for JAligner. * * @author Ahmed Moustafa (ahmed@users.sf.net) */ public class AlignCommandLine { private static final Logger logger = Logger.getLogger(AlignCommandLine.class.getName()); /** * @param args The command line arguments */ public static void main(String[] args) { logger.info( Commons.getJAlignerInfo() ); if (args.length == 0) { new AlignWindow().setVisible(true); } else { if (args.length == 5) { try { String f1 = args[0]; // file name of sequence #1 String f2 = args[1]; // file name of sequence #2 String m = args[2]; // scoring matrix id or file name user-defined scoring matrix float o = Float.parseFloat(args[3]); // open gap penalty float e = Float.parseFloat(args[4]); // extend gap penalty Sequence s1 = SequenceParser.parse(new File(f1)); Sequence s2 = SequenceParser.parse(new File(f2)); Matrix matrix = MatrixLoader.load(m); Alignment alignment = SmithWatermanGotoh.align (s1, s2, matrix, o, e); System.out.println (alignment.getSummary()); System.out.println (new Pair().format(alignment)); } catch (Exception e) { logger.log(Level.SEVERE, "Failed processing the command line: " + e.getMessage(), e); System.exit(1); } } else { logger.severe( "Invalid number of arguments: " + args.length ); printUsage(); System.exit(1); } } } /** * Prints the syntax for using JAligner */ private static void printUsage( ) { StringBuffer buffer = new StringBuffer(); buffer.append ( "\n" ); buffer.append ( "Usage:\n" ); buffer.append ( "------\n" ); buffer.append ( "[1] java -jar jaligner.jar <s1> <s2> <matrix> <open> <extend>\n" ); buffer.append ( "[2] java -jar jaligner.jar\n" ); buffer.append ( "\n" ) ; logger.info(buffer.toString()); } }