update spikes/mungo from JAL-3076 patch branch
[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         continue;
120       }
121       if ((command.indexOf("runToEnd") > -1))
122       {
123         try
124         {
125
126           inputScanner.next();
127           int minCount = inputScanner.nextInt();
128           int maxCount = inputScanner.nextInt();
129           boolean keepRaw = inputScanner.nextBoolean();
130           boolean forClans = inputScanner.nextBoolean();
131           analyser.runToEnd(minCount, maxCount, keepRaw, forClans);
132           System.out.println("Task completed");
133         } catch (Exception e)
134         {
135           System.out.println("Command failed");
136         }
137         continue;
138       }
139       // terminates program. Syntax is terminate.
140       if (command.indexOf("terminate") > -1)
141       {
142         running = false;
143         continue;
144       }
145       // clears files in current directory (Only a specific set of files).
146       // Syntax is clear.
147       if (command.indexOf("clear") > -1)
148       {
149         analyser.clear();
150         continue;
151       }
152       // changes current directory. Syntax is cd <directory>
153       if (command.indexOf("cd") > -1)
154       {
155         try
156         {
157         inputScanner.next();
158         analyser.setFolder(inputScanner.next());
159         } catch (Exception e)
160         {
161           System.out.println("Command failed");
162
163         }
164         continue;
165       }
166
167       if (command.indexOf("getFamName") > -1)
168       {
169         try
170         {
171         inputScanner.next();
172         System.out.println(analyser.getFamilyName(inputScanner.nextInt()));
173
174         } catch (Exception e)
175         {
176           System.out.println("Command failed");
177         }
178         continue;
179       }
180       if (command.indexOf("sortIntoClans") > -1)
181       {
182         inputScanner.next();
183         analyser.sortIntoClans(inputScanner.next());
184           continue;
185
186       }
187       if (command.indexOf("setFamilies") > -1)
188       {
189         inputScanner.next();
190         analyser.setFamilies(inputScanner.next());
191         continue;
192
193       }
194
195       if (command.indexOf("setHMMs") > -1)
196       {
197         inputScanner.next();
198         analyser.setHmms(inputScanner.next());
199         continue;
200
201       }
202
203       if (command.indexOf("alignWithinClans") > -1)
204       {
205         inputScanner.next();
206         String export = inputScanner.next();
207         String clans = inputScanner.next();
208         analyser.alignWithinClan(export, clans);
209         continue;
210
211       }
212
213       System.out.println("Unrecognised command");
214     }
215
216
217
218
219   }
220
221 }