Hello, I am a computer programmer in Dr. Janies' Lab. I am in the
process of creating a web service for POY that we plan on using
internally for some of our applications. We also think it will be
useful to as 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 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.
SOAP protocol a popular protocol for building web services. Most
programing 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 apps 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 complicate applications we are developing in
house We have created a demo application, SUPRAMAP,
hhttp://
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 is as follows. The user uploads a
poy script and all the files that the poy script references. Then the
user 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 detail description of the web methods are as follows.
Here are the 6 method signatures that.
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. This method currently has no parameters but might
have a userID and a password in the future. 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 is is similar
to 'AddFile' except 'AddTextFile' requires a string instead of 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 starts a job on Glenn that start the 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 you job will take).
Note that If you ask for substantial resources, your job could get
scheduled for a future date instead of running immediately. The this
service might not be suitable for real time apps but could be
depending on the resources that you request.
When running the following 2 files using the sample application
mentioned ealier.
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 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, the we will extend the service such as
adding other back-end Linux tools other then poy.
The client must periodically poll the service after it 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 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 or another
computing resource that you may have. We welcome your comments and
questions.
Sincerely
Jacob Aaronson <
Jacob.A...@osumc.edu>
Daniel Janies <
supr...@gmail.com>