Physical Protein size
2
0
Entering edit mode
9 months ago
Gabriel ▴ 170

I am looking for the rough/estimated PHYSICAL size of proteins in distances. I am not looking for the number of AAs which is the sequence length, what I'm looking at is the largest physical dimensions of space that a protein is predicted to cover, in other words, what is the radius of the smallest sphere that could fit the protein.

I've found there are multiple protein structure databases, such as alpha fold https://alphafold.ebi.ac.uk/entry/A0A0E0RTV6 These show a fancy protein structure model, but there is no field about the actual dimensions of the protein.

If there a simple way to do retrieve this information ?

proteomics databases • 1.0k views
ADD COMMENT
1
Entering edit mode

Programs like PyMOL, VMD, chimera etc should be able to calculate the dimensions. I don't know if this information is available in a pre-computed format.

ADD REPLY
1
Entering edit mode
9 months ago
Michael 55k

I found this PyMol script via a google search: https://pymolwiki.org/index.php/Draw_Protein_Dimensions and https://pymolwiki.org/index.php/Bounding_Box

I have not tried the script. Also, I wonder if you need to calculate the electrostatic surface before to get the correct dimensions.

Also, in UCSF Chimera, there is the built-in function function Tools -> Surface/Binding Analysis -> "Measure and color blob" that will give you among others the bounding box dimensions (in Å) of a surface model: https://www.cgl.ucsf.edu/chimera/docs/ContributedSoftware/pickblobs/pickblobs.html enter image description here

There, you can apply this to any surface model (Actions -> Surface -> Show). You can also see that between some nearly identical folds the measurements are going to vastly vary based on some otherwise irrelevant changes in angles (compare e.g. the red and blue/green chains which otherwise have near identical fold. The left is an experimental structure from PDB and the four structures to the right are from alphafold).

ADD COMMENT
0
Entering edit mode

That's interesting it seems like a useful tool. It has a steep learning curve? Im mainly experienced in OMICS data analysis, but less in biophysics or protein structures. It might be a bit steep to get into it now.

ADD REPLY
0
Entering edit mode

I'd say Chimera is one of the more user-friendly tool in that field, and this field has a somewhat steep learning curve itself I'd say. But it feels more like a graphics program on the surface (would compare the user-friendliness of the GUI to Inkscape on the Mac). If you want to script it or use it for generating animations it is also very powerful but requires some reading.

ADD REPLY
0
Entering edit mode
9 months ago
Jiyao Wang ▴ 380

You could use iCn3D scripts to get the dimension in command line. The setup is described at https://github.com/ncbi/icn3d/tree/master/icn3dnode. Here is the Node.js script to get the dimension:

global.THREE = require('three');
let jsdom = require('jsdom');
global.$ = require('jquery')(new jsdom.JSDOM().window);

let icn3d = require('icn3d');

let https = require('https');

let myArgs = process.argv.slice(2);
if(myArgs.length != 1) {
    console.log("Usage: node getMaxDim.js [PDB or UniProt ID]");
    return;
}

let inputid = myArgs[0];

let me = new icn3d.iCn3DUI({});
me.setIcn3d();
let ic = me.icn3d;
ic.bRender = false;

try {
    let AFUniprotVersion = 'v4';

    let url = (inputid.length == 4) ? "https://www.ncbi.nlm.nih.gov/Structure/mmdb/mmdb_strview.cgi?v=2&program=icn3d&b=1&s=1&ft=1&bu=0&complexity=2&uid=" + inputid
        : "https://alphafold.ebi.ac.uk/files/AF-" + inputid + "-F1-model_" + AFUniprotVersion + ".pdb";       

    https.get(url, function(res1) {
        let response1 = [];
        res1.on('data', function (chunk) {
            response1.push(chunk);
        });

        res1.on('end', async function(){
            let dataStr = response1.join('');

            if(isNaN(inputid) && inputid.length > 5) {
                let header = 'HEADER                                                        ' + inputid + '\n';
                dataStr = header + dataStr;
                await ic.opmParserCls.parseAtomData(dataStr, inputid, undefined, 'pdb', undefined);
            }
            else {
                let dataJson = JSON.parse(dataStr);
                await ic.mmdbParserCls.parseMmdbData(dataJson);
            }

            console.log('maxD: ' + ic.oriMaxD.toFixed(2));
        });
    });
} catch (err) {
    console.log(err);
}
ADD COMMENT

Login before adding your answer.

Traffic: 2003 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6