999dc1f6a7d11984258e931278cf17935ed937c7
[jalview.git] / src / jalview / util / ProbabilityAnalyserKickstarter.java
1 package jalview.util;
2
3 import java.io.IOException;
4 import java.util.Scanner;
5
6 /**
7  * This class contains the brain of the analyser program, and contains a number
8  * of commands for the processing of data.
9  * 
10  * @author TZVanaalten
11  *
12  */
13
14 public class ProbabilityAnalyserKickstarter
15 {
16
17   public static void main(String[] args)
18           throws IOException, InterruptedException
19   {
20
21     // this does all of the processing
22     HMMProbabilityDistributionAnalyser analyser = new HMMProbabilityDistributionAnalyser();
23
24     boolean running = true;
25     System.out.println("ACTIVATED");
26     while (running)
27     {
28       Scanner keyboard = new Scanner(System.in);
29       String command = keyboard.nextLine();
30
31       Scanner inputScanner = new Scanner(command);
32       // prints family to console. Syntax is printFam <index>
33       if (command.indexOf("printFam") > -1)
34       {
35         try
36         {
37           inputScanner.next();
38           int index = inputScanner.nextInt();
39           analyser.printFam(index);
40           continue;
41         } catch (Exception e)
42         {
43           System.out.println("Command failed");
44         }
45
46       }
47       // prints HMM to console. Syntax is printHMM <index>
48       if (command.indexOf("printHMM") > -1)
49       {
50         try
51         {
52         inputScanner.next();
53         int index = inputScanner.nextInt();
54         analyser.printHMM(index);
55         continue;
56         } catch (Exception e)
57         {
58           System.out.println("Command failed");
59         }
60       }
61       // prints family to file in current folder. Syntax is exportFam <index>.
62       if (command.indexOf("exportFam") > -1)
63       {
64         try
65         {
66         inputScanner.next();
67         int index = inputScanner.nextInt();
68           String location = inputScanner.next();
69           analyser.exportFam(index, location);
70         continue;
71         } catch (Exception e)
72         {
73           System.out.println("Command failed");
74         }
75       }
76       // prints HMM to file in current folder. Syntax is exportHMM <index>.
77       if (command.indexOf("exportHMM") > -1)
78       {
79         try
80         {
81         inputScanner.next();
82         int index = inputScanner.nextInt();
83           String location = inputScanner.next();
84           analyser.exportHMM(index, location);
85         continue;
86         } catch (Exception e)
87         {
88           System.out.println("Command failed");
89         }
90       }
91       // Processes data. Syntax is run <number of loops> <increments>. The
92       // number loops specifies the number of increments the program will run.
93       // After each increment, the data stored currently in the program is
94       // exported and re-read back into the program. This is to ensure that the
95       // program can be terminated without losing a large quantity of data. The
96       // increment is the number of families read per 'save'.
97       if (command.indexOf("run") > -1 && !(command.indexOf("ToEnd") > -1))
98       {
99         try
100         {
101
102         inputScanner.next();
103
104         int loops = inputScanner.nextInt();
105         int increments = inputScanner.nextInt();
106         boolean keepRaw = inputScanner.nextBoolean();
107
108         for (int i = 0; i < loops; i++)
109         {
110           analyser.run(increments, keepRaw);
111           System.out.println("Saved");
112         }
113         System.out.println("Task completed");
114         continue;
115         } catch (Exception e)
116         {
117           System.out.println("Command failed");
118         }
119       }
120       if ((command.indexOf("runToEnd") > -1))
121       {
122         try
123         {
124
125           inputScanner.next();
126           boolean keepRaw = inputScanner.nextBoolean();
127           analyser.runToEnd(keepRaw);
128           System.out.println("Task completed");
129           continue;
130         } catch (Exception e)
131         {
132           System.out.println("Command failed");
133         }
134       }
135       // terminates program. Syntax is terminate.
136       if (command.indexOf("terminate") > -1)
137       {
138         running = false;
139         continue;
140       }
141       // clears files in current directory (Only a specific set of files).
142       // Syntax is clear.
143       if (command.indexOf("clear") > -1)
144       {
145         analyser.clear();
146         continue;
147       }
148       // changes current directory. Syntax is cd <directory>
149       if (command.indexOf("cd") > -1)
150       {
151         try
152         {
153         inputScanner.next();
154         analyser.setFolder(inputScanner.next());
155         } catch (Exception e)
156         {
157           System.out.println("Command failed");
158         }
159       }
160
161       if (command.indexOf("getFamName") > -1)
162       {
163         try
164         {
165         inputScanner.next();
166         System.out.println(analyser.getFamilyName(inputScanner.nextInt()));
167           inputScanner.close();
168           continue;
169         } catch (Exception e)
170         {
171           System.out.println("Command failed");
172         }
173       }
174       if (command.indexOf("sortIntoClans") > -1)
175       {
176         inputScanner.next();
177         analyser.sortIntoClans(inputScanner.next());
178           continue;
179
180       }
181       if (command.indexOf("setFamilies") > -1)
182       {
183         inputScanner.next();
184         analyser.setFamilies(inputScanner.next());
185         continue;
186
187       }
188
189       if (command.indexOf("setHMMs") > -1)
190       {
191         inputScanner.next();
192         analyser.setHmms(inputScanner.next());
193         continue;
194
195       }
196       if (command.indexOf("hmmbuild") > -1)
197       {
198         analyser.hmmBuild();
199         continue;
200       }
201     }
202
203
204
205
206   }
207
208 }