annotate java-genomics-toolkit/src/edu/unc/genomics/CommandLineTool.java @ 0:1daf3026d231

Upload alpha version
author timpalpant
date Mon, 13 Feb 2012 21:55:55 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
1 package edu.unc.genomics;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
2
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
3 import java.io.IOException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
4
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
5 import com.beust.jcommander.JCommander;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
6 import com.beust.jcommander.ParameterException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
7
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
8 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
9 * A command-line script
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
10 * @author timpalpant
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
11 *
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
12 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
13 public abstract class CommandLineTool {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
14
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
15 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
16 * JCommander command-line argument parser
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
17 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
18 private final JCommander jc = new JCommander(this);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
19
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
20 public CommandLineTool() {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
21 // Add factories for parsing Paths, Assemblies, IntervalFiles, and WigFiles
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
22 jc.addConverterFactory(new PathFactory());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
23 jc.addConverterFactory(new AssemblyFactory());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
24 jc.addConverterFactory(new IntervalFileFactory());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
25 jc.addConverterFactory(new WigFileFactory());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
26
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
27 // Set the program name to be the class name
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
28 jc.setProgramName(this.getClass().getSimpleName());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
29 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
30
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
31 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
32 * The default bite-size to use for applications that process files in chunks
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
33 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
34 public static final int DEFAULT_CHUNK_SIZE = 500_000;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
35
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
36 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
37 * Do the main computation of this tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
38 * @throws IOException
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
39 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
40 public abstract void run() throws IOException;
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
41
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
42 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
43 * Parse command-line arguments and run the tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
44 * Exit on parameter exceptions
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
45 * @param args
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
46 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
47 public void instanceMain(String[] args) throws CommandLineToolException {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
48 try {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
49 toolRunnerMain(args);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
50 } catch (ParameterException e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
51 System.err.println(e.getMessage());
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
52 jc.usage();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
53 System.exit(-1);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
54 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
55 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
56
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
57 /**
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
58 * Parse command-line arguments and run the tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
59 * @param args
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
60 * @throws ParameterException if there are invalid/missing parameters
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
61 * @throws CommandLineToolException if an exception occurs while running the tool
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
62 */
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
63 public void toolRunnerMain(String[] args) throws ParameterException, CommandLineToolException {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
64 jc.parse(args);
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
65
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
66 try {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
67 run();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
68 } catch (IOException e) {
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
69 e.printStackTrace();
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
70 throw new CommandLineToolException("IO error while running tool");
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
71 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
72 }
1daf3026d231 Upload alpha version
timpalpant
parents:
diff changeset
73 }