X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fmsa%2FMafft.java;h=6fc1675fb4ad34304079b80f09552d246986102b;hb=885253f33f05af39d0d529659d534f5a3365159e;hp=0cdaac2bcee0dec8db4dab44ffc1b53000a12748;hpb=fbba20dcd57f706d5bf42c4f3f157e053a24cc97;p=jalview.git diff --git a/forester/java/src/org/forester/msa/Mafft.java b/forester/java/src/org/forester/msa/Mafft.java index 0cdaac2..6fc1675 100644 --- a/forester/java/src/org/forester/msa/Mafft.java +++ b/forester/java/src/org/forester/msa/Mafft.java @@ -41,16 +41,16 @@ public final class Mafft implements MsaInferrer { private int _exit_code; private final String _path_to_prg; - public static MsaInferrer createInstance() { + public static MsaInferrer createInstance() throws IOException { return createInstance( getPathToCmd() ); } - public static MsaInferrer createInstance( final String path_to_prg ) { + public static MsaInferrer createInstance( final String path_to_prg ) throws IOException { return new Mafft( path_to_prg ); } private static String getPathToCmd() { - //TODO this needs to come from env variable, etc. + //TODO this needs to come from config file!! //FIXME .. //should not be in this class! String path = ""; @@ -62,7 +62,7 @@ public final class Mafft implements MsaInferrer { path = "C:\\Program Files\\mafft-win\\mafft.bat"; } else { - path = "/home/czmasek/SOFTWARE/MSA/MAFFT/mafft-6.864-without-extensions/scripts/mafft"; + path = "/home/czmasek/bin/mafft"; } return path; } @@ -71,9 +71,9 @@ public final class Mafft implements MsaInferrer { return SystemCommandExecutor.isExecuteableFile( new File( getPathToCmd() ) ); } - private Mafft( final String path_to_prg ) { + private Mafft( final String path_to_prg ) throws IOException { if ( !SystemCommandExecutor.isExecuteableFile( new File( path_to_prg ) ) ) { - throw new IllegalArgumentException( "cannot execute MAFFT via [" + path_to_prg + "]" ); + throw new IOException( "cannot execute MAFFT with \"" + path_to_prg + "\"" ); } _path_to_prg = new String( path_to_prg ); init(); @@ -109,15 +109,17 @@ public final class Mafft implements MsaInferrer { my_opts.add( path_to_input_seqs.getAbsolutePath() ); final SystemCommandExecutor command_executor = new SystemCommandExecutor( my_opts ); final int _exit_code = command_executor.executeCommand(); + final StringBuilder stderr = command_executor.getStandardErrorFromCommand(); + _error = stderr.toString(); if ( _exit_code != 0 ) { - throw new IOException( "MAFFT program failed, exit code: " + _exit_code + ", command: " + my_opts ); + throw new IOException( "MAFFT program failed, exit code: " + _exit_code + "\nCommand:\n" + my_opts + + "\nError:\n" + stderr ); } final StringBuilder stdout = command_executor.getStandardOutputFromCommand(); - final StringBuilder stderr = command_executor.getStandardErrorFromCommand(); if ( ( stdout == null ) || ( stdout.length() < 2 ) ) { - throw new IOException( "MAFFT program did not produce any output, command: " + my_opts ); + throw new IOException( "MAFFT program did not produce any output\nCommand:\n" + my_opts + "\nError:\n" + + stderr ); } - _error = stderr.toString(); final Msa msa = FastaParser.parseMsa( stdout.toString() ); return msa; }