In order to submit the job you need to provide:

  • the input structure in the form of pdb structure code or protein structure file (in pdb format). It can correspond both to an experimentally determined structure or a protein model. However, A3D does not process Cα only structures,
  • optionally, the project name,
  • optionally, introduce your email if you want to receive notifications at both the beginning and end of your prediction.

Mark the option "Do not show my job on the queue page if you don't want the job to be visible to anyone else on the queue page.

The example of submitting the job named example_2D4F by providing the pdb code 2D4F is displayed below:




The example output of the job is provided here.

Optional parameters:

Dynamic mode

You can select to perform your predictions in Static mode (default) or Dynamic mode. In Dynamic mode A3D will take into account the flexibility of your input structure in the prediction. It should contain a single chain without breaks and no more than 400 residues.
The example output of the job, that was run in the dynamic mode, is provided here.

Dynamic mode requires input pdb files with continuous (without breaks) protein chain. pdb files with gaps in structure have to be first prepared by filling up the missing fragment.

Below is the list of example software and on-line servers that enable filling in the gaps in incomplete 3D models:

  • Modeller software
  • use Modeller to 'fill in' these missing residues by treating the original structure (without the missing residues) as a template, and building a comparative model using the full sequence
    Availability:  http://salilab.org/modeller/wiki/Missing%20residues

  • Modloop server
  • The server relies on the loop modeling routine in MODELLER that predicts the loop conformations by satisfaction of spatial restraints, without relying on a database of known protein structures 
    Availability:  http://modbase.compbio.ucsf.edu/modloop/

  • I-TASSER server 
  • use with "Option I: Assign additional restraints and templates to guide I-TASSER modeling." You can use a pdb file with a missing fragment as a template and provide a missing fragment sequence in an alignment file 
    Availability:  http://zhanglab.ccmb.med.umich.edu/I-TASSER/

  • FALC-loop server
  • Users can submit a protein structure with one or more missing parts (called loops) through the Submit page and view and download the constructed loop models on the Queue page. 
    Availability:  http://falc-loop.seoklab.org/

  • FREAD server
  • FREAD is a database search loop modelling algorithm. Its primary use is to fill in the gaps in incomplete 3D models of protein structures 
    Availability:  http://opig.stats.ox.ac.uk/webapps/fread

  • Commercial software 
  • One can use also commercially available programs for loop sampling like Prime, ICM, and Sybyl (see comparison of these programs).

Mutate residues

You can select to mutate one or more residues in your input structure. If you select Mutate residues upon pressing the submit button you will be directed to the “Which residues to mutate?” tab in which you can select the mutations for each desired residue and chain. The selected original and replaced residues, the position and the chain will be displayed. Save changes and submit. Mutations can also be performed previously after running a first analysis on wild type structures.

Distance of aggregation analysis

A3D can be used at two resolutions: use R = 10 Å (default) for identifying residues involved in the formation of aggregation-prone patches and R = 5 Å for a dissection of the contribution individual residues to these patches.

After clicking the Submit button, will appear info about your project details and status. If you have chosen Do not show my job on the queue page it is important to bookmark the page to check results - otherwise your job will be accessible from the queue page.

The job status information will start from the pending status, which is state when webserver waits for computational server to fetch the job input data:


Just before computing, job status changes to running status. The jobs ends with the done status (or error status, if something went wrong admins will get email from the server about error job and will try to fix it):

Aggrescan3D score

Under the Aggrescan3D score tab the following data are provided:

Minimal score value
Value of the most soluble residue in the structural context.
Maximal score value
Value of the most aggregation-prone residue in the structural context.
Average score
A normalized indicator of the aggregation propensity/solubility of the protein structure. Allows comparing the solubility of different protein structures.It also allows assessing changes in solubility promoted by amino acid substitutions in a particular protein structure. The more negative the value, the highest the normalized solubility.
Total score
A global indicator of the aggregation propensity/solubility of the protein structure. It depends on the protein size. It allows assessing changes in solubility promoted by amino acid substitutions in a particular protein structure. The more negative the value, the highest the global solubility.

These values are provided for each polypeptide chain in the structure. A particular protein region in the chain can also be individually analysed.

The Aggrescan3D score tab includes a scrolling list in which residue index, residue name, chain and Aggrescan3D score for all exposed residues in the structure. Residues with positive scores, i.e. aggregation-prone, are highlighted in yellow. The list can be downloaded ( button) as a csv or txt tabular data.




Each single residue in the list can be mutated to any of the other 19 amino acids using the button.


Once selected all the required mutations (mark of mutation from Y to A on chain A and residue 26: ), a new project is generated by pressing the button.



Aggrescan3D plot

Under the Aggrescan3D plot tab the results are accessible as a line plot corresponding to the aggregation profile of the polypeptide chain. Y axis corresponds to A3D score values. Residues with positive scores in the analysed structure, therefore predicted as aggregation-prone, are indicated on top of the profile. The plot can be downloaded in svg format.



If the input structure consists of more than one chain, each chain plot can be displayed by selecting the chain signature (A, B, etc.) from the drop-down list.




Structure

Under the Structure tab a video of the protein structure is automatically generated by creating frames from pictures of the structure in different rotation states, with residues coloured according to their Aggrescan3D score. Areas with high-predicted aggregation propensity are labelled according to a red gradient and areas with high-predicted solubility according to a blue gradient. White areas are not predicted to influence aggregation (A3D score equal to zero).




The video can be visualized and downloaded ( button) in ogv, mp4 and webm format. The correspondent pdb file can be downloaded ( button) displaying Aggrescan3D scores in the temperature factor column. Additionaly, the prediction can be visualized and inspected using jsmol ( button), as on figure below:





Dynamic mode details

If you have selected the Dynamic mode during job submission, under the Dynamic mode details tab is provided a brief explanation of the calculation method, a structural alignment of the input structure and the most aggregation-prone model and a graphic displaying a rmsd profile (distances between residues of the two superimposed structures). Note that, the models are displayed in a random orientation. However, the most aggregation-prone model can be downloaded as a pdb file and visualized with a molecular visualization software of your choice. This model is used as the unique input structure to perform A3D predictions.




RESTful URI

Aggrescan3D webserver may be operated throught RESTful services, using following URIs:

  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/ submit new job (2pcy pdb entry)
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/userinput/ submit user pdb file
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/chain/A/ submit new job (chain A of 2pcy pdb)
      Optional json-formatted parameters:
    • name project name
    • email email (info about job will be send to this email)
    • distance ("10" or "5") distance of aggregation
    • dynamic ("True" or "False") use dynamic mode
    • hide ("True" or "False") if True - do not show job on the queue page
    • mutate - list of residues to mutate before A3D analysis. This option will be explained below.
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/isdone/ check job status
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/structure/ get output structure with A3D values in the temperature factor column
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/ get full information about submitted job (aggrescan3D values for individual residues, average A3D score, etc.)
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/a3d_average/ Get average A3D score
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/a3d_min/ Get minimal A3D score
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/a3d_max/ Get maximal A3D score
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/a3d_sum/ Get total (sum) A3D score
  • https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/a3d_gt0/ Get residues with A3D score > 0.0000

Submitting job from the command line

Submit job for 2PCY protein, using cURL, with default parameters (i.e. distance of aggregation = 10Å, without mutation of residues, without distance mode, without hiding project on the queue page, without email address and with default project name): curl -i https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/.

Submit chain B of 1hui: curl -i https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/1hui/chain/B/

User should get output like:

HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 57
Server: Werkzeug/0.9.6 Python/2.7.8
Date: Wed, 12 Nov 2014 13:52:56 GMT

{
  "jobid": "a0ae2bb71feeaf0",
  "status": "submitted"
}
where jobid is job identifier assigned to the just submitted job. Otherwise (for example if pdbcode doesn't exists or input data doesn't fullfill requirements), user should get output similar to:
HTTP/1.0 404 NOT FOUND
Content-Type: text/html; charset=utf-8
Content-Length: 5521
Server: Werkzeug/0.9.6 Python/2.7.8
Date: Wed, 12 Nov 2014 13:56:48 GMT

  
<!doctype html>
<html lang='en'>
[...]

To override default parameters, user may post additional options, i.e.: curl -i -X POST -d '{"email": "john@doe.com", "dynamic": "True", "name": "some project name"}' -H 'Content-Type: application/json' https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/. Specified parameters will override default parameters, not specified ones would left unchanged (in this example job will be submitted with distance of aggregation = 10Å, with dynamic mode, and with specified email and project name).

Submitting from the python script

The simplest Python script for submitting new job may looks like:

#!/usr/bin/env python
import requests

req = requests.post('https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/')

print(req.status_code)
print(req.json())

Submitting with parameters (mutation) from Python script:

#!/usr/bin/env python
import requests
import json

# define which residues to mutate. If specified residues not exists within pdb
# job will not be submitted (got 404 error)
mutation_table = [{'idx': "1", 'chain': 'A', 'oldres': 'I', 'newres': 'W'},
                  {'idx': "2", 'chain': 'A', 'oldres': 'D', 'newres': 'W'}]

# specify additional options
options = {'dynamic': True,
           'distance': 5,
           'email': 'john@doe.gov',
           'name': 'some project name',
           'hide': True,
           'mutate': mutation_table}

req = requests.post('https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/2pcy/',
                    data=json.dumps(options),
                    headers={'content-type': 'application/json'})

print(req.status_code) # get HTTP code. If 200 = OK. Otherwise = problems
print(req.json()) # get query returned data

Submitting custom PDB file from the python script

The simplest Python script for submitting new job may looks like:

#!/usr/bin/env python
import requests

req = requests.post('https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/userinput/', files={'inputfile': open('some_file.pdb', 'rb')})

print(req.status_code)

Submitting user file with parameters (mutation) from Python script:

#!/usr/bin/env python
import requests
import json

# define which residues to mutate. If specified residues not exists within pdb
# job will not be submitted (got 404 error)
mutation_table = [{'idx': "1", 'chain': 'A', 'oldres': 'I', 'newres': 'W'},
                  {'idx': "2", 'chain': 'A', 'oldres': 'D', 'newres': 'W'}]

# specify additional options
options = {'dynamic': True,
           'distance': 5,
           'email': 'john@doe.gov',
           'name': 'some project name',
           'hide': True,
           'mutate': mutation_table}

req = requests.post('https://biocomp.chem.uw.edu.pl/A3D/RESTful/submit/userinput/', data=options, files={'inputfile': open('some_file.pdb', 'rb')})

print(req.status_code) # get HTTP code. If 200 = OK. Otherwise = problems

Get submitted job information

By running curl -i https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/isdone/ user should get:

HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 19
Server: Werkzeug/0.9.6 Python/2.7.8
Date: Wed, 12 Nov 2014 14:27:49 GMT

{
  "done": false
}
if job is running/pending, or
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 18
Server: Werkzeug/0.9.6 Python/2.7.8
Date: Wed, 12 Nov 2014 14:28:33 GMT

{
  "done": true
}
if job got done/error status.

To get protein structure with A3D values in the temperature factor column and save it to out file: curl -o out https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/structure/

To get full information about submitted job, user may create Python script like:

#!/usr/bin/env python
import requests

req = requests.get('https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/')

print(req.status_code)
data = req.json()
for k in data.keys():
    print("key: %s: %s" % (k, data[k]))
getting output similar to:
200
key: chain_sequence: A: GSFTMPGLVDSNPAPPESQEKKPLKPCCACPETKKARDACIIEKGEEHCGHLIEAHKECMRALGFKI
key: status: done
key: mutated_residues: None
key: dynamic_mode: 0
key: mutate_mode: 0
key: last_status_change_date: 2014-11-06 12:01:04
key: project_name: b530f472611c285
key: aggregation_distance: 10
key: aggrescan3Dscore: {u'max_value': 1.664, u'total_value': -95.41120000000001, u'min_value': -4.1893, u'average_value': -1.424, u'table': [{u'res_name': u'G', u'res_idx': u'1', u'chain': u'A', u'a3d': u'-0.3367'}, ...  ]}
key: submission_date: 2014-11-06 11:53:12
If user would like to get Aggrescan3D score table, she may use script like:
#!/usr/bin/env python
import requests

req = requests.get('https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/')

data = req.json()
a3d = data['aggrescan3Dscore']

print("AVG A3D: %s" % (a3d['average_value'])) # data is a dictionary
print("MIN A3D: %s" % (a3d['min_value']))

for row in a3d['table'][:6]:
    print(row['res_idx'], row['a3d'])
to get output like:
AVG A3D: -1.424
MIN A3D: -4.1893
(u'1', u'-0.3367')
(u'2', u'0.3541')
(u'3', u'1.6640')
(u'4', u'0.8468')
(u'5', u'1.2976')
(u'6', u'0.5633')

Combine two RESTful URI to wait until job is done:

#!/usr/bin/env python
import requests
import time

server = 'https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/'
jobid = "caaaffa24b4bcad"

v = False
while not v:
    req = requests.get(server+jobid+'/isdone/')
    v = req.json()['done']
    time.sleep(60)  # 1 min intervals

req = requests.get(server+jobid)
data = req.json()
a3d = data['aggrescan3Dscore']
print("AVG A3D: %s" % (a3d['average_value']))
Above script will print average A3D score as soon as job get 'done' status.

Some fun with RESTful and Bash scripting. Script below should say something as soon as job is completed:

#!/usr/bin/env bash

v="false"
while [ "$v" == "false" ]
do
    v=`curl -s https://biocomp.chem.uw.edu.pl/A3D/RESTful/job/somejobidentifier/isdone/ | grep 'done' |grep -o 'false'`
    sleep 6
done
mplayer -user-agent Mozilla  "http://translate.google.com/translate_tts?q=Job+completed.Aggrescan+3D+is+wonderful&tl=en"

Laboratory of Theory of Biopolymers 2015