inference
[jalview.git] / forester / java / src / org / forester / archaeopteryx / tools / InferenceManager.java
1
2 package org.forester.archaeopteryx.tools;
3
4 import java.io.File;
5 import java.io.IOException;
6
7 import org.forester.archaeopteryx.Configuration;
8 import org.forester.util.ForesterUtil;
9
10 public final class InferenceManager {
11
12     private final File _path_to_local_mafft;
13     private final File _path_to_local_kalign;
14     private final File _path_to_local_fastme;
15     private final File _path_to_local_raxml;
16     private final File _path_to_local_clustalo;
17
18     public static InferenceManager createInstance( final Configuration c ) {
19         return new InferenceManager( c.getpathToLocalMafft(),
20                                      c.getPathToLocalKalign(),
21                                      c.getPathToLocalFastme(),
22                                      c.getPathToLocalRaxml(),
23                                      c.getPathToLocalClustalOmega() );
24     }
25
26     public boolean canDoMsa() {
27         return ( getPathToLocalMafft() != null ) || ( getPathToLocalKalign() != null )
28                 || ( getPathToLocalClustalo() != null );
29     }
30
31     public File getPathToLocalMafft() {
32         return _path_to_local_mafft;
33     }
34
35     public File getPathToLocalKalign() {
36         return _path_to_local_kalign;
37     }
38
39     public File getPathToLocalFastme() {
40         return _path_to_local_fastme;
41     }
42
43     public File getPathToLocalRaxml() {
44         return _path_to_local_raxml;
45     }
46
47     public File getPathToLocalClustalo() {
48         return _path_to_local_clustalo;
49     }
50
51     private final static File createLocalPath( final File path ) {
52         if ( path == null ) {
53             return null;
54         }
55         try {
56             if ( path.getCanonicalFile().canExecute() && !path.getCanonicalFile().isDirectory() ) {
57                 return new File( path.getCanonicalFile().toString() );
58             }
59         }
60         catch ( final IOException e ) {
61             return null;
62         }
63         return null;
64     }
65
66     private InferenceManager( final File path_to_local_mafft,
67                               final File path_to_local_kalign,
68                               final File path_to_local_fastme,
69                               final File path_to_local_raxml,
70                               final File path_to_local_clustalo ) {
71         _path_to_local_mafft = createLocalPath( path_to_local_mafft ) != null ? createLocalPath( path_to_local_mafft )
72                 : createLocalPath( new File( "mafft" ) );
73         _path_to_local_kalign = createLocalPath( path_to_local_kalign ) != null ? createLocalPath( path_to_local_kalign )
74                 : createLocalPath( new File( "kalign" ) );
75         _path_to_local_fastme = createLocalPath( path_to_local_fastme ) != null ? createLocalPath( path_to_local_fastme )
76                 : createLocalPath( new File( "fastme" ) );
77         _path_to_local_raxml = createLocalPath( path_to_local_raxml ) != null ? createLocalPath( path_to_local_raxml )
78                 : createLocalPath( new File( "raxml" ) );
79         _path_to_local_clustalo = createLocalPath( path_to_local_clustalo ) != null ? createLocalPath( path_to_local_clustalo )
80                 : createLocalPath( new File( ForesterUtil.isWindowns() ? "clustalo.exe" : "clustalo" ) );
81     }
82 }