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 = "";
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;
}
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();
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;
}