Atom Specifiers

Within NMRViewJ, atoms can be specified using a syntax as follows:

coordSetName.entityName:residueNum.atomName

The meaning of residueNum and atomName are relatively obvious, though it should be noted that the residueNum can be prefixed with the single letter amino acid code of the specified residue. That is you could enter 32.CA or F32.CA for the CA atom of residue CA (which happens to be a phenylalanine). But what is a coordSet and entity? Imagine a dimer of two identical polypeptide chains. Each polypeptide chain as represented by an amino-acid sequence is, in the terminology of NMRViewJ, an "entity". In this example there is only one entity. However, the entity is represented twice (each monomer) in the actual molecule. Each of these monomers is, in the terminology of NMRViewJ, a "coordSet" (so named because in the molecular structure each monomer is represented by a set of coordinates). A molecule that is a heterodimer would have two entities, one for each polymer. Similarly, a protein with a bound ligand would also have two entities, one for the polymer and one for the ligand. Multiple coordsets and entities can coexist, so for example a homopolymer with a ligand on each polymer would have two entities, each represented once in each coordset.

Use the "mol select" command to select a set of atoms, then use "mol listatoms" to return a list of them, and use "foreach" to loop over them. Here's an example: This would print out all the chemical shifts of the protons in a molecule.

mol select atoms *:*.H*
foreach atom [mol listatoms] { 
   set ppm [nv_atom elem ppm $atom]
   if {$ppm != ""} {
         puts $ppm
   }
}
            

Note: the "nv_atom elem ppm" command now returns "" (an empty string) if the atom doesn't have an assigned chemical shift (which I think is a better design than returning some stupid large negative number).

Within NMRViewJ, atoms can be specified using a nomenclature as follows:

coordSetName:residueName.atomName

The meaning of residueName and atomName should be obvious, but what is a coordSet?

Imagine a dimer of two identical polypeptide chains. Each polypeptide chain as represented by an amino-acid sequence is, in the terminology of NMRViewJ, an "entity". In this example there is only one entity. However, the entity is represented twice (each monomer) in the actual molecule. Each of these monomers is, in the terminology of NMRViewJ, a "coordSet" (so named because in the molecular structure each monomer is represented by a set of coordinates).

Use the "mol select" command to select a set of atoms, then use "mol listatoms" to return a list of them, and use "foreach" to loop over them. Here's an example:

This would print out all the chemical shifts of the protons in a molecule.

mol select atoms *:*.H* foreach atom [mol listatoms] {

set ppm [nv_atom elem ppm $atom] if {$ppm != ""} { puts $ppm } }

Note: the "nv_atom elem ppm" command now returns "" (an empty string) if the atom doesn't have an assigned chemical shift (which I think is a better design than returning some stupid large negative number).