ATOM SELECTION Atom selection is used for many commands within CHARMM. Its existance is one of the main factors in the versatility of CHARMM. * Menu: * Syntax:: Syntax of the sequential selection * Double:: Double atom selections * Function:: Descriptions of the various sequential options
Recursive Atom Selection Syntax [SYNTAX SELEction] .... SELEction <factor> [SHOW] END .... Listed in priority order (low to high) (operators not separated by a blank line are processed sequentially) <factor>:== <factor> .OR. <factor> <factor> .AND. <factor> <factor> .AROUND. <real> <factor> .SUBSET. <int*> <factor> .SUBSET. <int1> : <int2> .NOT. <factor> .BONDED. <factor> .BYRES. <factor> .BYGROUP. <factor> ( <factor> ) <token> <keyname> <token>::= SEGId <segid>* SEGId <segid1> : <segid2> ISEG <segnum1> : <segnum2> RESId <resid>* RESId <resid1> : <resid2> IRES <resnum1> : <resnum2> RESName <resname>* RESName <resn1> : <resn2> IGROup <grpnum1> : <grpnum2> TYPE <type>* TYPE <type1> : <type2> CHEMical <chem>* CHEMical <chem1> : <chem2> ATOM <segid>* <resid>* <type>* PROPerty [ABS]<prop><.LT.|.GT.|.EQ.|.NE.|.GE.|.LE.|.AE.><real> POINt <x-coor><y-coor><z-coor> [CUT <rmax>] BYNUnumber <int>* BYNU <int1> : <int2> INITial LONE HYDRogen USER PREVious RECAll <integer> ALL NONE where '*' allows wildcard specifications: * matches any string of characters (including none), % matches any single character, # matches any string of digits (including none), + matches any single digit.
Double atom selections Some commands allow (or require) a double atom selection. SYNTAX: command ... SELE first-selection-spec END [ SELE second-selection-spec END ] If no atom selection is passed, both selection arrays have all atoms selected. If only one atom selection is specified, both selection arrays will contain that atom selection. If an error is found, both atoms selections will have no atoms selected, and the appropriate error processing will occur.
Description of Atom Selection Features RECURSIVE ATOM SELECTION SYNTAX by Axel Brunger (22-FEB-83) 1) Wildcard specification * matches any string of characters (including none), % matches any single character, # matches any string of digits (including none), + matches any single digit. 2) Range specification Ranges are indicated by ':' and are defined by the lexigraphical of SEGID's, RESNames, TAGs, TYPEs, a combination of numerical and lexigraphical order for RESId's (see routine SPLITI) and by numerical order for BYNUmber specifications. 3) Keyname option The user may specify keynames with the DEFIne command (see MISCOM). Each keyname corresponds to a particular atom selection. Keynames are processed before tokens, so if there is a naming conflict, the keyname will prevail. Keynames may not be abreviated. Whenever the PSF is modified and the number of atoms changes ALL keynames are removed. 4) User specified selection USER represents a user selection which should be defined in the user subroutine USRSEL. 5) Around atom specification The operation <factor> .AROund. <real> finds all atoms within a distance <real> around the atoms specified in <factor>. For this operation it must be (QCOOR = .TRUE.) and all coordinates should be known. Otherwise a warning message is printed. 6) Around a spatial point option The token POINt <xcoor><ycoor><zcoor> CUT <rmax> selects all atoms within a sphere around point (x,y,z) with radius rmax. The default value for rmax is 8.0. 7) Selection by residues as a whole The function <factor> .BYRes. includes all atoms in a residue which contains at least one atom selected in <factor>. 8) Selection based on atom properties The token INITial selects all atoms with known coordinates. The token LONE selects all lone pairs (based on a mass selection). The token HYDRogen selects all hydrogens (based on a mass selection). These selections use the CHARMM intrinsic routines INITIAL, HYDROG and LONE. 9) Use of previous selection The token PREVious will start from the current contents of the atom selection array. This feature only works for commands where atom selection storage is permanent, and is usally local to a specific command type. For example, the PREVious token within graphics will be the last atom selection previously used in graphics, even if an atom selection was requested later in a non graphics application. At some point, this command will be made to be consistant, but for now, use it if it works. If not, the DEFINE command is better. 10) Selecting based on connectivity Atoms can be selected based on connectivity. For example if one wants to spin a methyl group by 30 degrees, the following command sequence may be used: DEFINE CARBON SELE selected-carbon-atom END DEFINE TOMOVE SELE TYPE H* .AND .BONDED. CARBON END IF ?NSEL .NE. 3 GOTO ERROR DEFINE SECOND SELE .NOT. TYPE H* .AND. .BONDED. CARBON END IF ?NSEL .NE. 1 GOTO ERROR COOR AXIS SELE CARBON END SELE SECOND END COOR ROTATE AXIS SELE TOMOVE END PHI 30.0 11) Selecting subsets of atoms by index. Atoms may be selected by index on a subselection. For example, of one wants to analyze a set of interesting atoms, the sequence might be: DEFINE INTERESTING SELE interesting-atoms END SET N ?NSEL SET I 0 LABEL LOOP INCREMENT I BY 1 COOR DIST SELE INTERESTING .SUBSET. @I END SELE ALL END ... IF @I .LT. ?NSEL GOTO LOOP 12) Selection based on tag properties The token PROPerty <prop> : selects all atoms which have the specified property. This works only when properties are actually present. For information about specific properties the calling subroutines should be consulted. (e.g. DELETE or KEEP in ANALYSIS) The option SHOW prints the selected atoms (tags). Command sequence: within tokens only as specified. The following diagram shows the logical relationship of all items: LEVEL: SEGId's ---> RESId's ---> TAG's <--- KEYatom's TOKEN: SEGId RESId TAG LONE RESName PROPerty HYDRogen .BYREs. USER BYNUmber PREVious TYPE CHEMical ATOM=(SEGId,RESId,TYPE) .AROUnd. POINt INITial INPUT: NICTOT --> IBASE --> FLAGS "PSF.FCM" SEGID RESID NFLAGS "HYDROG" NSEG RES TAGS, -LEN "LONE" KEY "PARAM.FCM" DATA, NPROP X, Y, Z In case of pure atom selections TAG's are identified with KEYatoms and atom-tags are atom-types. Source is in selcta.src Some examples for pure atom selections : sele atom * * CA end !will include all C alphas in the list. sele .not. type H* end !will include all atoms that are not hydrogens. sele atom MAIN 1 * .around. 5.0 end !will include all atoms that are within a sphere of radius 5.0 around any atom of the residue MAIN 1. sele bynu 1 : 100 end !will include atoms number 1 to 100. sele resid 1 : 10 .and. segid. MAIN - .and. .not. ( type H .or. type N .or. type O ) end !will include all the atoms of reside 1 to 10 in the segment MAIN except atoms H, N, and O. sele bynu 1 .or. bynu 3 .or. bynu 5 .or. bynu 7 .or. bynu 8 - bynu 11 .or. bynu 13 .or. bynu 15 .or. segid SOLV end !will include atoms number 1, 3, 5, 7, 8, 11, 13, and 15, and the SOLV segment. ! to select side chain atoms in the polygen all atom parameter set ! where mb is the myoglobin protein sele segid mb .and. .not. ( type n .or. type ca .or. type c .or. - type o .or. type oct* .or. type ha* .or. type hn .or. type ht* ) end
NIH/DCRT/Laboratory for Structural Biology
FDA/CBER/OVRR Biophysics Laboratory