Hello, I am a computer programmer in Dr. Janies' Lab. I am in the
process of creating a web service for the POY application that we plan
on using internally for some of our applications. We also think it
will be useful to expose the web service externally so other
developers can create there own applications. We would like to know
what features of the service would be most useful to the POY
community.
The back end of the web service where the actual POY program will run
is OSC's Glenn supercomputer (
http://www.osc.edu/supercomputing/
hardware). The POY service is designed to run using the SOAP protocol.
The SOAP protocol is a popular protocol for building web services.
Most programming languages and frameworks have a way of automatically
building a wrapper for SOAP web services and creating a object or
class the exposes the methods. However, use of the SOAP protocol is
optional - every web method can be accessed with a simple html post as
well as a simple html get.
Our web service is designed to be as simple as possible to allow
flexibility to design applications that take advantage of POY. The web
service can currently be found here:
http://glenn-webservice.bmi.ohio-state.edu/PoyService.asmx
as well as documentation and examples on how to use it. The
application form to use the web service can be found at
http://glenn-webservice.bmi.ohio-state.edu/Application.aspx
In addition to some more complicated applications we are developing in
house we have created a demo application, SUPRAMAP,
http://poyrunner.bmi.ohio-state.edu/Upload.aspx that consumes the
web service and creates a KML (keyhole markup language) file suitable
for viewing with Google Earth or other virtual globes see
http://supramap.osu.edu
and
http://onlinelibrary.wiley.com/doi/10.1111/j.1096-0031.2010.00314.x/abstract
for more info
The basics of how the service works are as follows. The user uploads
a POY script and all the files that the POY script references. The
user then selects the number of nodes and wall time needed.
Each node has 2 sockets and each socket has a duel core AMD Opteron
processor. Each node also has 8 gigs of ram.
After the run the user can download the results.
A detailed description of the web methods are as follows.
Here are the 6 method signatures
int Init(string passPhrase)
string AddFile(int jobId, byte[] fileData,string fileName)
string AddTextFile(int jobId, string fileData,string fileName)
string SubmitSmallPoy(int jobId)
bool IsDoneYet(int jobId)
byte[] GetFile(int jobId, string fileName)
The 'Init' method creates a directory on the Glenn supercomputer it
returns a token that must be used on all subsequent method calls as
the 'jobId' parameter. The pass phrase parameter is acquired from
filling out the developers application form (
http://glenn-
webservice.bmi.ohio-state.edu/Application.aspx ) Also it could be
extended in the future to have a parameter to tell it to use a
different computing resources other then Glenn at OSC.
The 'AddFile' method puts a file on Glenn. The method should be called
once to a load a POY script and once for each file that the POY script
references. There is also a 'AddTextFile' method which are similar to
'AddFile' except 'AddTextFile' requires a string instead of a binary
file.
It is the responsibility of the developer, of the downstream client,
to generate the POY scripts. This places more work in their hands
however affords flexibility to design specific web applications.
The 'SubmitPoy' method submits a job on Glenn that runs a POY job.
When running a job on a Glenn you have to request the resources you
need (how many nodes and how much time you expect your job will take).
Note that if you ask for substantial resources, your job could be
scheduled for a future date instead of running immediately. This
service may not be suitable for real time applications, but could be
depending on the resources that you request.
When running the following 2 files using the sample application
mentioned earlier.
http://poyrunner.bmi.ohio-state.edu/Upload.aspx
http://bmi.osu.edu/~janies/Nnessandsuf/ebolangenecutNC_004161.fas
http://bmi.osu.edu/~janies/Nnessandsuf/ebola.ngene.latlong.noreston.csv
If the nodes are set to 1 node and search time 1 minute and total time
of 2 minutes it seems to run just fine.
If there is community interest, then we will extend the service such
as adding other back-end Linux tools in addition to POY.
The client must periodically poll the service after the client submits
its job so it knows when its job is done. The 'IsDoneYet' method
handles this and returns true if the job is done, and returns false if
the job is not done yet.
The last method 'GetFile' is used to retrieve the output files
specified in the POY script. It is called once per file.
In conclusion this is a very simple yet flexible web service for
creating applications that run POY on the Glenn at OSC . We welcome
your comments and questions.
Sincerely
Jacob Aaronson <
Jacob.A...@osumc.edu>
Daniel Janies <
supr...@gmail.com>