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