annotate toolfactory/README.md @ 49:35a912ce0c83 draft

Can now make the bwa example from planemo :)
author fubar
date Thu, 27 Aug 2020 23:11:01 -0400
parents ad564ab3cf7b
children 68fbdbe35f08
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
1 **Breaking news! Docker container is recommended as at August 2020**
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
2
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
3 A Docker container can be built - see the docker directory.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
4 It is highly recommended for isolation. It also has an integrated toolshed to allow installation of new tools back
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
5 into the Galaxy being used to generate them.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
6
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
7 Built from quay.io/bgruening/galaxy:20.05 but updates the
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
8 Galaxy code to the dev branch - it seems to work fine with updated bioblend>=0.14
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
9 with planemo and the right version of gxformat2 needed by the ToolFactory (TF).
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
10
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
11 The runclean.sh script run from the docker subdirectory of your local clone of this repository
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
12 should create a container (eventually) and serve it at localhost:8080 with a toolshed at
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
13 localhost:9009.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
14
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
15 Once it's up, please restart Galaxy in the container with
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
16 ```docker exec [container name] supervisorctl restart galaxy: ```
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
17 Jobs just do not seem to run properly otherwise and the next steps won't work!
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
18
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
19 The generated container includes a workflow and 2 sample data sets for the workflow
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
20
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
21 Load the workflow. Adjust the inputs for each as labelled. The perl example counts GC in phiX.fasta.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
22 The python scripts use the rgToolFactory.py as their input - any text file will work but I like the
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
23 recursion. The BWA example has some mitochondrial reads and reference. Run the workflow and watch.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
24 This should fill the history with some sample tools you can rerun and play with.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
25 Note that each new tool will have been tested using Planemo. In the workflow, in Galaxy.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
26 Extremely cool to watch.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
27
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
28 *WARNING*
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
29
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
30 Install this tool on a throw-away private Galaxy or Docker container ONLY
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
31 Please NEVER on a public or production instance
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
32
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
33 *Short Story*
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
34
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
35 Galaxy is easily extended to new applications by adding a new tool. Each new scientific computational package added as
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
36 a tool to Galaxy requires some special instructions to be written. This is sometimes termed "wrapping" the package
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
37 because the instructions tell Galaxy how to run the package as a new Galaxy tool. Any tool in a Galaxy is
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
38 readily available to all the users through a consistent and easy to use interface.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
39
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
40 Most Galaxy tool wrappers have been manually prepared by skilled programmers, many using Planemo because it
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
41 automates much of the basic boilerplate and makes the process much easier. The ToolFactory (TF)
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
42 uses Planemo under the hood for many functions, but hides the command
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
43 line complexities from the TF user.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
44
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
45 *More Explanation*
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
46
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
47 The TF is an unusual Galaxy tool, designed to allow a skilled user to make new Galaxy tools.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
48 It appears in Galaxy just like any other tool but outputs include new Galaxy tools generated
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
49 using instructions provided by the user and the results of Planemo lint and tool testing using
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
50 small sample inputs provided by the TF user. The small samples become tests built in to the new tool.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
51
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
52 It offers a familiar Galaxy form driven way to define how the user of the new tool will
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
53 choose input data from their history, and what parameters the new tool user will be able to adjust.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
54 The TF user must know, or be able to read, enough about the tool to be able to define the details of
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
55 the new Galaxy interface and the ToolFactory offers little guidance on that other than some examples.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
56
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
57 Tools always depend on other things. Most tools in Galaxy depend on third party
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
58 scientific packages, so TF tools usually have one or more dependencies. These can be
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
59 scientific packages such as BWA or scripting languages such as Python and are
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
60 usually managed by Conda. If the new tool relies on a system utility such as bash or awk
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
61 where the importance of version control on reproducibility is low, these can be used without
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
62 Conda management - but remember the potential risks of unmanaged dependencies on computational
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
63 reproducibility.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
64
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
65 The TF user can optionally supply a working script where scripting is
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
66 required and the chosen dependency is a scripting language such as Python or a system
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
67 scripting executable such as bash. Whatever the language, the script must correctly parse the command line
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
68 arguments it receives at tool execution, as they are defined by the TF user. The
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
69 text of that script is "baked in" to the new tool and will be executed each time
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
70 the new tool is run. It is highly recommended that scripts and their command lines be developed
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
71 and tested until proven to work before the TF is invoked. Galaxy as a software development
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
72 environment is actually possible, but not recommended being somewhat clumsy and inefficient.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
73
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
74 Tools nearly always take one or more data sets from the user's history as input. TF tools
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
75 allow the TF user to define what Galaxy datatypes the tool end user will be able to choose and what
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
76 names or positions will be used to pass them on a command line to the package or script.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
77
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
78 Tools often have various parameter settings. The TF allows the TF user to define how each
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
79 parameter will appear on the tool form to the end user, and what names or positions will be
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
80 used to pass them on the command line to the package. At present, parameters are limited to
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
81 simple text and number fields. Pull requests for other kinds of parameters that galaxyxml
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
82 can handle are welcomed.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
83
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
84 Best practice Galaxy tools have one or more automated tests. These should use small sample data sets and
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
85 specific parameter settings so when the tool is tested, the outputs can be compared with their expected
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
86 values. The TF will automatically create a test for the new tool. It will use the sample data sets
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
87 chosen by the TF user when they built the new tool.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
88
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
89 The TF works by exposing *unrestricted* and therefore extremely dangerous scripting
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
90 to all designated administrators of the host Galaxy server, allowing them to
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
91 run scripts in R, python, sh and perl. For this reason, a Docker container is
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
92 available to help manage the associated risks.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
93
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
94 *Scripting uses*
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
95
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
96 To use a scripting language to create a new tool, you must first prepared and properly test a script. Use small sample
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
97 data sets for testing. When the script is working correctly, upload the small sample datasets
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
98 into a new history, start configuring a new ToolFactory tool, and paste the script into the script text box on the TF form.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
99
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
100 *Outputs*
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
101
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
102 Once the script runs sucessfully, a new Galaxy tool that runs your script
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
103 can be generated. Select the "generate" option and supply some help text and
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
104 names. The new tool will be generated in the form of a new Galaxy datatype
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
105 *tgz* - as the name suggests, it's an archive ready to upload to a
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
106 Galaxy ToolShed as a new tool repository.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
107
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
108 It is also possible to run a tool to generate test outputs, then test it
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
109 using planemo. A toolshed is built in to the Docker container and configured
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
110 so a tool can be tested, sent to that toolshed, then installed in the Galaxy
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
111 where the TF is running.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
112
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
113 If the tool requires a command or test XML override, then planemo is
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
114 needed to generate test outputs to make a complete tool, rerun to test
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
115 and if required upload to the local toolshed and install in the Galaxy
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
116 where the TF is running.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
117
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
118 Once it's in a ToolShed, it can be installed into any local Galaxy server
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
119 from the server administrative interface.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
120
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
121 Once the new tool is installed, local users can run it - each time, the
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
122 package and/or script that was supplied when it was built will be executed with the input chosen
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
123 from the user's history, together with user supplied parameters. In other words, the tools you generate with the
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
124 ToolFactory run just like any other Galaxy tool.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
125
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
126 TF generated tools work as normal workflow components.
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
127
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
128
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
129 *Limitations*
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
130
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
131 The TF is flexible enough to generate wrappers for many common scientific packages
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
132 but the inbuilt automation will not cope with all possible situations. Users can
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
133 supply overrides for two tool XML segments - tests and command and the BWA
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
134 example in the supplied samples workflow illustrates their use.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
135
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
136 *Installation*
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
137
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
138 The Docker container is the best way to use the TF because it is preconfigured
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
139 to automate new tool testing and has a built in local toolshed where each new tool
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
140 is uploaded. It is easy to install without Docker, but you will need to make some
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
141 configuration changes (TODO write a configuration). You can install it most conveniently using the
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
142 administrative "Search and browse tool sheds" link. Find the Galaxy Main
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
143 toolshed at https://toolshed.g2.bx.psu.edu/ and search for the toolfactory
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
144 repository in the Tool Maker section. Open it and review the code and select the option to install it.
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
145
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
146 Otherwise, if not already there pending an accepted PR,
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
147 please add:
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
148 <datatype extension="tgz" type="galaxy.datatypes.binary:Binary"
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
149 mimetype="multipart/x-gzip" subclass="True" />
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
150 to your local data_types_conf.xml.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
151
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
152
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
153 *Restricted execution*
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
154
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
155 The tool factory tool itself will then be usable ONLY by admin users -
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
156 people with IDs in admin_users. **Yes, that's right. ONLY
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
157 admin_users can run this tool** Think about it for a moment. If allowed to
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
158 run any arbitrary script on your Galaxy server, the only thing that would
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
159 impede a miscreant bent on destroying all your Galaxy data would probably
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
160 be lack of appropriate technical skills.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
161
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
162 **Generated tool Security**
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
163
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
164 Once you install a generated tool, it's just
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
165 another tool - assuming the script is safe. They just run normally and their
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
166 user cannot do anything unusually insecure but please, practice safe toolshed.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
167 Read the code before you install any tool. Especially this one - it is really scary.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
168
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
169 **Send Code**
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
170
49
35a912ce0c83 Can now make the bwa example from planemo :)
fubar
parents: 28
diff changeset
171 Pull requests and suggestions welcome as git issues please?
28
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
172
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
173 **Attribution**
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
174
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
175 Creating re-usable tools from scripts: The Galaxy Tool Factory
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
176 Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
177 Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
178
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
179 http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&keytype=ref
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
180
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
181 **Licensing**
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
182
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
183 Copyright Ross Lazarus 2010
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
184 ross lazarus at g mail period com
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
185
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
186 All rights reserved.
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
187
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
188 Licensed under the LGPL
ad564ab3cf7b Uploaded
fubar
parents:
diff changeset
189