Usage ===== You can integrate PSOS into your application either via direct API calls to the REST service (see :ref:`rest_api`) or you can integrate it via the javascript library ``psos.js`` as described in the following sections. The ``psos.js`` library contains the following actions: * init the library with server locations * submit a job * retrieve job information * retrieve job files * listen to job changes * redirect to the psos visualization page ``psos.js`` depends on the following libraries: * jquery (for rest api calls) * vertx-web-client, sockjs (for push notifications) Submit job and visualize it with PSOS ------------------------------------ Step 1 - Include dependencies ''''''''''''''''''''''''''''' Include the required libraries into your application. For convenience reasons you can use cdn versions and ``psos.js`` hosted by us. .. code-block:: html Step 2 - Initialize ``psos.js`` ''''''''''''''''''''''''''''''' ``psos.js`` does not come with a preconfigured server, so you have to initialize it with appropriate server locations. .. code-block:: javascript // initialize api endpoint psos.init('https://psos-staging.computational.bio/api/v1') If you want to redirect to the PSOS job result page automatically, then you should not only initialize the api endpoint, but also the webserver location. .. code-block:: javascript // initialize api endpoint and psos webserver location psos.init('https://psos-staging.computational.bio/api/v1', 'https://psos-staging.computational.bio') Step 3 - Submit a job ''''''''''''''''''''' You need either the raw sequence of your protein or a fasta entry of your protein and you need to know the profile you want to execute. Available (public) profiles are: * ``bacteria-gram+`` * ``bacteria-gram-`` * ``eukaryote`` * ``eukaryote-plant`` .. code-block:: javascript var request = { 'configuration': {'profile': 'bacteria-gram+'}, 'sequence': `>tr|Q189L9|Q189L9_PEPD6 Extracytoplasmic function (ECF) sigma factor csfT OS=Peptoclostridium difficile (strain 630) OX=272563 GN=csfT PE=3 SV=1 MDKTTFTNNILESEQTLYRVSKSILGNDQDCEDAVNNAILKAYEKLDSLKEEQYFKTWLI RIVINECNSLRRKRLKSLSFEDVFKNKKIDEKDDYSDLYTAIQSLPKKIKIPIVLYYIEG YSVDEVKEILDIPQGTVKSRLSRGRRLLKTKLENTEVII` } psos.submit(request, function (job) { // replace with your code when the job was sumitted successfully console.log(job) }, function (error) { // replace with your code when an error occured in the job submission console.log(error) } ) If you would like to use the default PSOS visualization, you can use the predefined ``psos.redirect`` function to automatically redirect to the visualization. Be sure that you initialized the library with both, the api endpoint and the webapplication url. .. code-block:: javascript psos.submit(request, psos.redirect, function (error) { // replace with your code when an error occured in the job submission console.log(error) } ) Integrate the results in your application ----------------------------------------- If the default visualization does not fit your needs, you can implement your own visualization based on the PSOS results. In this section you will see how to listen to job changes and how to list and retrieve the result files. Listen to job changes ''''''''''''''''''''' You can get notifications about job changes. Therefore you need to register a success and an error function for a job id. .. code-block:: javascript var my_jobid = '...' psos.listen(my_jobid, function (job_message) { // replace with your code that handles the message or job console.log(job_message.data) // log the job }, function (error) { // replace with your code that handles errors console.log(error) } ) List job files '''''''''''''' The psos job object has references to all available files for the job. You can access them via the ``files`` array. .. code-block:: javascript var my_jobid = '...' psos.job(my_jobid, function (job) { console.log(job.files) // list available files }, function (error) { // replace with your code that handles errors console.log(error) } ) Each file object has a type and a name. Available type are: * ``Input`` - For input data * ``TemporaryResult`` - For intermediate results (contains only result for a single tool) * ``Result`` - For final results Retrieve file content ''''''''''''''''''''' To access a file you can call the ``psos.file`` method. .. code-block:: javascript var my_jobid = '...' var my_file = '...' psos.file(my_jobid, my_file, function (content) { console.log(content) // log file content }, function (error) { // replace with your code that handles errors console.log(error) } ) Delete a job '''''''''''' To delete a job you can call the ``psos.delete`` method. .. code-block:: javascript var my_jobid = '...' psos.delete(my_jobid, function (content) { // replace with your code that handles success console.log(content) }, function (error) { // replace with your code that handles errors console.log(error) } )