86d9177b8842d6df8e5eee37dbac916e650383d9
[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)
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       // terminates program. Syntax is terminate.
121       if (command.indexOf("terminate") > -1)
122       {
123         running = false;
124         continue;
125       }
126       // clears files in current directory (Only a specific set of files).
127       // Syntax is clear.
128       if (command.indexOf("clear") > -1)
129       {
130         analyser.clear();
131         continue;
132       }
133       // changes current directory. Syntax is cd <directory>
134       if (command.indexOf("cd") > -1)
135       {
136         try
137         {
138         inputScanner.next();
139         analyser.setFolder(inputScanner.next());
140         } catch (Exception e)
141         {
142           System.out.println("Command failed");
143         }
144       }
145
146       if (command.indexOf("getFamName") > -1)
147       {
148         try
149         {
150         inputScanner.next();
151         System.out.println(analyser.getFamilyName(inputScanner.nextInt()));
152           inputScanner.close();
153           continue;
154         } catch (Exception e)
155         {
156           System.out.println("Command failed");
157         }
158       }
159       if (command.indexOf("sortIntoClans") > -1)
160       {
161         inputScanner.next();
162         analyser.sortIntoClans(inputScanner.next());
163           continue;
164
165       }
166     }
167
168
169
170
171   }
172
173 }