Difference between revisions of "Protein.m"

From Spinach Documentation Wiki
Jump to: navigation, search
(Normalise remaining wiki page to current Spinach source header)
(Update function See also links and function index membership)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{DISPLAYTITLE:protein.m}} __NOTOC__
 
{{DISPLAYTITLE:protein.m}} __NOTOC__
  
Protein data import function. Parses PDB and BMRB data, runs a J-coupl-
+
Protein data import function. Parses PDB and BMRB data, runs a J-coupling guess using [[guess_j_pro.m]] function, then a backbone CSA guess using [[guess_csa_pro.m]] function, and outputs sys and inter data structures that are required to run by [[create.m]] gateway function in ''Spinach''.
ing guess, a CSA guess and outputs Spinach data structures.
+
 
 +
The function runs rather a lot of internal heuristics. Symmetry-related methyl group protons (listed once in BMRB) are replicated using PDB coordinates; unassigned capping groups on C- and N-termini are ignored; all oxygen and sulphur atoms are removed; symmetry-related carbons and protons in PHE and TYR aromatic rings (listed once in BMRB) are replicated using PDB coordinates; protons of deuterated or exchanging groups, such as –OH or –NH3+, are ignored; magnetically equivalent –CH2– group protons (listed once in BMRB) are replicated using PDB coordinates. Please refer to the function source code for the precise details of these post-processing steps.
  
 
==Syntax==
 
==Syntax==
  
[sys,inter,aux]=protein(pdb_file,bmrb_file,options)
+
    [sys,inter,aux]=protein(pdb_file,bmrb_file,options)
 
 
==Arguments==
 
 
 
pdb_file  - string containing the name of the PDB file
 
 
 
      bmrb_file  - string containing the name of the BMRB file
 
 
 
options.select    - 'backbone' imports protein backbone up to
 
                    CB and HB, 'backbone-minimal' only imports
 
                    the backbone, 'backbone-hsqc' is the same
 
                    as backbone, but with GLN and ASN side chain
 
                    amide groups included, 'all' imports every-
 
                    thing that is assigned in BMRB. If a list of
 
                    numbers is supplied, spins with those num-
 
                    bers in the PDB file are imported, but only
 
                    if they are assigned in the PDB.
 
 
 
options.pdb_mol  - the number of molecule if there are multiple
 
                    molecules in the pdb file
 
 
 
options.noshift  - 'keep' places unassigned atoms between -1 and
 
                    0 ppm, 'delete' removes them from the system
 
  
options.deuterate - a cell array of character strings, replaces
+
==Parameters==
                    protons with the specified PDB identifiers
 
                    with deuterons; 'non-Me' deuterates every-
 
                    thing except methyl groups
 
 
 
options.nh_csa    - peptide bond CSAs differ across literature,
 
                    the following options are available:
 
  
 +
        pdb_file  - string containing the name of the PDB file
 +
 +
        bmrb_file  - string containing the name of the BMRB file
 +
 +
  options.select    - 'backbone' imports protein backbone up to
 +
                      CB and HB, 'backbone-minimal' only imports
 +
                      the backbone, 'backbone-hsqc' is the same
 +
                      as backbone, but with GLN and ASN side chain
 +
                      amide groups included, 'all' imports every-
 +
                      thing that is assigned in BMRB. If a list of
 +
                      numbers is supplied, spins with those num-
 +
                      bers in the PDB file are imported, but only
 +
                      if they are assigned in the PDB.
 +
 +
  options.pdb_mol  - the number of molecule if there are multiple
 +
                      molecules in the pdb file
 +
 +
  options.noshift  - 'keep' places unassigned atoms between -1 and
 +
                      0 ppm, 'delete' removes them from the system
 +
 +
  options.deuterate - a cell array of character strings, replaces
 +
                      protons with the specified PDB identifiers
 +
                      with deuterons; 'non-Me' deuterates every-
 +
                      thing except methyl groups
 +
 +
  options.nh_csa    - peptide bond CSAs differ across literature,
 +
                      the following options are available:
 +
 
           'bax' for H:[6.00 0.00 -6.00], N:[-108.0 62.0 46.0] ppm
 
           'bax' for H:[6.00 0.00 -6.00], N:[-108.0 62.0 46.0] ppm
 
           'tcb' for H:[7.00 0.00 -7.00], N:[-125.0 45.0 80.0] ppm
 
           'tcb' for H:[7.00 0.00 -7.00], N:[-125.0 45.0 80.0] ppm
 
           'pol' for H:[6.66 0.66 -7.33], N:[ -92.4 34.7 57.7] ppm
 
           'pol' for H:[6.66 0.66 -7.33], N:[ -92.4 34.7 57.7] ppm
 
+
 
                     the default is 'tcb'.
 
                     the default is 'tcb'.
  
 
==Outputs==
 
==Outputs==
  
sys.isotopes          - Nspins x 1 cell array of strings
+
    sys.isotopes          - Nspins x 1 cell array of strings
 
+
 
     sys.labels            - Nspins x 1 cell array of strings containing
 
     sys.labels            - Nspins x 1 cell array of strings containing
 
                             standard IUPAC protein atom labels
 
                             standard IUPAC protein atom labels
 
+
 
     inter.coordinates    - Nspins x 3 matrix, Angstrom.
 
     inter.coordinates    - Nspins x 3 matrix, Angstrom.
 
+
 
     inter.zeeman.iso      - Nspins x 1 cell array of numbers, ppm.
 
     inter.zeeman.iso      - Nspins x 1 cell array of numbers, ppm.
 
                             Isotropic chemical shifts go here.
 
                             Isotropic chemical shifts go here.
 
+
 
     inter.zeeman.matrix  - Nspins x 1 cell array of 3x3 matrices, ppm.
 
     inter.zeeman.matrix  - Nspins x 1 cell array of 3x3 matrices, ppm.
 
                             Chemical shift anisotropies go here.
 
                             Chemical shift anisotropies go here.
 
+
 
     inter.coupling.scalar - Nspins x Nspins cell array of scalar coup-
 
     inter.coupling.scalar - Nspins x Nspins cell array of scalar coup-
 
                             lings, all in Hz.
 
                             lings, all in Hz.
 +
 +
    aux.pdb_aa_num        - pdb amino acid number for each spin
 +
 +
    aux.pdb_aa_typ        - pdb amino acid type for each spin
 +
 +
 +
==Examples==
 +
 +
Below is a typical use case for this function. This script calculates the NOESY spectrum of ubiquitin.
 +
 +
    % Protein data import
 +
    options.select='all';
 +
    options.pdb_mol=1;
 +
    options.noshift='delete';
 +
    [sys,inter]=protein('1D3Z.pdb','1D3Z.bmrb',options);
 +
   
 +
    % Magnet field
 +
    sys.magnet=21.1356;
 +
   
 +
    % Tolerances
 +
    sys.tols.inter_cutoff=2.0;
 +
    sys.disable={'krylov'};
 +
   
 +
    % Relaxation theory
 +
    inter.relaxation={'redfield'};
 +
    inter.rlx_keep='secular';
 +
    inter.equilibrium='zero';
 +
    inter.tau_c=5e-9;
 +
   
 +
    % Basis set
 +
    bas.formalism='sphten-liouv';
 +
    bas.approximation='IK-1';
 +
    bas.connectivity='scalar_couplings';
 +
    bas.level=4; bas.space_level=3;
 +
   
 +
    % Create the spin system structure
 +
    spin_system=create(sys,inter);
 +
   
 +
    % Kill carbons and nitrogens (protein assumed unlabelled)
 +
    spin_system=kill_spin(spin_system,strcmp('13C',spin_system.comp.isotopes));
 +
    spin_system=kill_spin(spin_system,strcmp('15N',spin_system.comp.isotopes));
 +
   
 +
    % Build the basis
 +
    spin_system=basis(spin_system,bas);
 +
   
 +
    % Sequence parameters
 +
    parameters.tmix=0.065;
 +
    parameters.offset=4250;
 +
    parameters.sweep=[10750 10750];
 +
    parameters.npoints=[512 512];
 +
    parameters.zerofill=[2048 2048];
 +
    parameters.spins={'1H'};
 +
    parameters.axis_units='ppm';
 +
    parameters.rho0=state(spin_system,'Lz','1H','cheap');
 +
   
 +
    % Simulation
 +
    fid=liquid(spin_system,@noesy,parameters,'nmr');
 +
    save('noesy_ubiquitin_theo.mat','spin_system','parameters','fid');
 +
   
 +
    % Apodization
 +
    fid.cos=apodization(fid.cos,'gaussian-2d',5);
 +
    fid.sin=apodization(fid.sin,'gaussian-2d',5);
 +
   
 +
    % F2 Fourier transform
 +
    f1_cos=real(fftshift(fft(fid.cos,parameters.zerofill(2),1),1));
 +
    f1_sin=real(fftshift(fft(fid.sin,parameters.zerofill(2),1),1));
 +
   
 +
    % States signal
 +
    f1_states=f1_cos-1i*f1_sin;
 +
   
 +
    % F1 Fourier transform
 +
    spectrum=fftshift(fft(f1_states,parameters.zerofill(1),2),2);
 +
   
 +
    % Destreaking
 +
    spectrum=destreak(spectrum);
 +
   
 +
    % Plotting
 +
    plot_2d(spin_system,-real(spectrum),parameters,20,[0.01 0.05 0.01 0.05],2,256,6,'positive');
 +
   
 +
Further examples are available in examples/nmr_proteins directory.
 +
 +
==Notes==
 +
 +
# Unassigned atom coordinates are used internally for the J-coupling prediction procedure even if options.noshift is set to 'delete'.
 +
# Deleting unassigned atoms removes them from the dipolar coupling network. Relaxation properties, such as Overhauser effects, may be distorted as a result.
 +
# Watch carefully the output of this function, it would inform you if it sees anything strange in the data supplied. Protein datasets available from major databases are rarely free of errors.
 +
# More information is available in the protein [[Protein NMR simulations|getting started]] manual.
  
    aux.pdb_aa_num        - pdb amino acid number for each spin
+
==See also==
  
    aux.pdb_aa_typ        - pdb amino acid type for each spin
+
[[nuclacid.m]], [[guess_csa_pro.m]], [[guess_j_pro.m]], [[create.m]], [[c2spinach.m]], [[cyprinol.m]], [[fatty_acid.m]], [[g2spinach.m]], [[gissmo2spinach.m]], [[gparse.m]], [[karplus_fit.m]], [[killcross.m]], [[killdiag.m]], [[merge_inp.m]], [[methyl_group.m]], [[ocparse.m]], [[oparse.m]], [[parsexml.m]], [[read_bmrb.m]], [[read_pdb_nuc.m]], [[read_pdb_pro.m]], [[v2spinach.m]], [[weblab2nqi.m]], [[x2spinach.m]], [[Import,_export,_and_visualisation]]
  
ilya.kuprov@weizmann.ac.il
+
''Version 2.2, authors: [[Ilya Kuprov]], [[Zenawi Welderufael]], [[Andras Boeszoermenyi]], [[Matt Walker]], [[Maria Grazia Concilio]]''
zenawi.welderufael@soton.ac.uk
 
andras_boeszoermenyi@hms.harvard.edu
 
matt.walker@soton.ac.uk
 
mariagrazia.concilio@sjtu.edu.cn
 

Latest revision as of 19:40, 6 June 2026


Protein data import function. Parses PDB and BMRB data, runs a J-coupling guess using guess_j_pro.m function, then a backbone CSA guess using guess_csa_pro.m function, and outputs sys and inter data structures that are required to run by create.m gateway function in Spinach.

The function runs rather a lot of internal heuristics. Symmetry-related methyl group protons (listed once in BMRB) are replicated using PDB coordinates; unassigned capping groups on C- and N-termini are ignored; all oxygen and sulphur atoms are removed; symmetry-related carbons and protons in PHE and TYR aromatic rings (listed once in BMRB) are replicated using PDB coordinates; protons of deuterated or exchanging groups, such as –OH or –NH3+, are ignored; magnetically equivalent –CH2– group protons (listed once in BMRB) are replicated using PDB coordinates. Please refer to the function source code for the precise details of these post-processing steps.

Syntax

    [sys,inter,aux]=protein(pdb_file,bmrb_file,options)

Parameters

        pdb_file   - string containing the name of the PDB file

       bmrb_file   - string containing the name of the BMRB file

 options.select    - 'backbone' imports protein backbone up to
                     CB and HB, 'backbone-minimal' only imports
                     the backbone, 'backbone-hsqc' is the same
                     as backbone, but with GLN and ASN side chain
                     amide groups included, 'all' imports every-
                     thing that is assigned in BMRB. If a list of
                     numbers is supplied, spins with those num-
                     bers in the PDB file are imported, but only
                     if they are assigned in the PDB.

 options.pdb_mol   - the number of molecule if there are multiple
                     molecules in the pdb file

 options.noshift   - 'keep' places unassigned atoms between -1 and
                     0 ppm, 'delete' removes them from the system

 options.deuterate - a cell array of character strings, replaces
                     protons with the specified PDB identifiers
                     with deuterons; 'non-Me' deuterates every-
                     thing except methyl groups

 options.nh_csa    - peptide bond CSAs differ across literature,
                     the following options are available:

         'bax' for H:[6.00 0.00 -6.00], N:[-108.0 62.0 46.0] ppm
         'tcb' for H:[7.00 0.00 -7.00], N:[-125.0 45.0 80.0] ppm
         'pol' for H:[6.66 0.66 -7.33], N:[ -92.4 34.7 57.7] ppm

                    the default is 'tcb'.

Outputs

   sys.isotopes          - Nspins x 1 cell array of strings

   sys.labels            - Nspins x 1 cell array of strings containing
                           standard IUPAC protein atom labels

   inter.coordinates     - Nspins x 3 matrix, Angstrom.

   inter.zeeman.iso      - Nspins x 1 cell array of numbers, ppm.
                           Isotropic chemical shifts go here.

   inter.zeeman.matrix   - Nspins x 1 cell array of 3x3 matrices, ppm.
                           Chemical shift anisotropies go here.

   inter.coupling.scalar - Nspins x Nspins cell array of scalar coup-
                           lings, all in Hz.

   aux.pdb_aa_num        - pdb amino acid number for each spin

   aux.pdb_aa_typ        - pdb amino acid type for each spin


Examples

Below is a typical use case for this function. This script calculates the NOESY spectrum of ubiquitin.

    % Protein data import
    options.select='all';
    options.pdb_mol=1;
    options.noshift='delete';
    [sys,inter]=protein('1D3Z.pdb','1D3Z.bmrb',options);
    
    % Magnet field
    sys.magnet=21.1356;
    
    % Tolerances
    sys.tols.inter_cutoff=2.0;
    sys.disable={'krylov'};
    
    % Relaxation theory
    inter.relaxation={'redfield'};
    inter.rlx_keep='secular';
    inter.equilibrium='zero';
    inter.tau_c=5e-9;
    
    % Basis set
    bas.formalism='sphten-liouv';
    bas.approximation='IK-1';
    bas.connectivity='scalar_couplings';
    bas.level=4; bas.space_level=3;
    
    % Create the spin system structure
    spin_system=create(sys,inter);
    
    % Kill carbons and nitrogens (protein assumed unlabelled)
    spin_system=kill_spin(spin_system,strcmp('13C',spin_system.comp.isotopes));
    spin_system=kill_spin(spin_system,strcmp('15N',spin_system.comp.isotopes));
    
    % Build the basis
    spin_system=basis(spin_system,bas);
    
    % Sequence parameters
    parameters.tmix=0.065;
    parameters.offset=4250;
    parameters.sweep=[10750 10750];
    parameters.npoints=[512 512];
    parameters.zerofill=[2048 2048];
    parameters.spins={'1H'};
    parameters.axis_units='ppm';
    parameters.rho0=state(spin_system,'Lz','1H','cheap');
    
    % Simulation
    fid=liquid(spin_system,@noesy,parameters,'nmr');
    save('noesy_ubiquitin_theo.mat','spin_system','parameters','fid');
    
    % Apodization
    fid.cos=apodization(fid.cos,'gaussian-2d',5);
    fid.sin=apodization(fid.sin,'gaussian-2d',5);
    
    % F2 Fourier transform
    f1_cos=real(fftshift(fft(fid.cos,parameters.zerofill(2),1),1));
    f1_sin=real(fftshift(fft(fid.sin,parameters.zerofill(2),1),1));
    
    % States signal
    f1_states=f1_cos-1i*f1_sin;
    
    % F1 Fourier transform
    spectrum=fftshift(fft(f1_states,parameters.zerofill(1),2),2);
    
    % Destreaking
    spectrum=destreak(spectrum);
    
    % Plotting
    plot_2d(spin_system,-real(spectrum),parameters,20,[0.01 0.05 0.01 0.05],2,256,6,'positive');
    

Further examples are available in examples/nmr_proteins directory.

Notes

  1. Unassigned atom coordinates are used internally for the J-coupling prediction procedure even if options.noshift is set to 'delete'.
  2. Deleting unassigned atoms removes them from the dipolar coupling network. Relaxation properties, such as Overhauser effects, may be distorted as a result.
  3. Watch carefully the output of this function, it would inform you if it sees anything strange in the data supplied. Protein datasets available from major databases are rarely free of errors.
  4. More information is available in the protein getting started manual.

See also

nuclacid.m, guess_csa_pro.m, guess_j_pro.m, create.m, c2spinach.m, cyprinol.m, fatty_acid.m, g2spinach.m, gissmo2spinach.m, gparse.m, karplus_fit.m, killcross.m, killdiag.m, merge_inp.m, methyl_group.m, ocparse.m, oparse.m, parsexml.m, read_bmrb.m, read_pdb_nuc.m, read_pdb_pro.m, v2spinach.m, weblab2nqi.m, x2spinach.m, Import,_export,_and_visualisation

Version 2.2, authors: Ilya Kuprov, Zenawi Welderufael, Andras Boeszoermenyi, Matt Walker, Maria Grazia Concilio