wiki:SurfaceCategories

Version 5 (modified by Tom Goddard, 10 years ago) ( diff )

--

Chimera2 surface category thoughts

Examples for proposed surface command

Here is a suggestion for how the Chimera 2 surface command could work (TomG). The basic idea is to surface by chain (no ligands, solvent, ions), but allow surfacing whole proteins as another option, and allow surfacing any atoms as a rare case. The rule to ignore ligands, solvent and ions unless only those are specified is tricky but I think necessary to handle the common case in a simple way.

The Chimera 1 notion of "surface categories" is not used, although general purpose atom specifiers "ligand", "main", "solvent" would still be available for use with any command. The proposed surface command has a built-in capability to do per-chain surfacing and ignores ligands, ions and solvent unless extra options are specified.

Examples follow.

To surface each chain of #1 excluding ligands, solvent, ions:

surface #1

To surface all atoms in one surface use the "enclose" option which automatically excludes ligands, solvent and ions:

surface enclose #1

In Chimera 1, the command surface #1 creates one surface enclosing all chains not including ligands, ions, solvent and another surface enclosing all ligands. With the proposed Chimera 2 surface command this would be done using two commands. I think it is not so common that the ligand surface is desired.

surface enclose #1

surface enclose ligand

To surface just chain A of #1 which has chains A,B,C:

surface #1/A

To surface chain A but only show residues 10-20:

surface #1/A:10-20

To surface the whole molecule excluding ligands, solvent, ions, but only show chain A residues 10-20

surface #1/A:10-20 enclose #1

To surface just the ligands, the ligands of each chain being a separate surface use the following command. Above I said "surface #1" excludes ligands but "surface ligand" includes them -- if the specifier is empty when ligands, ions and solvent are thrown out then keep them.

surface ligand

To surface ligands only of molecule #1 when other molecules are open:

surface #1 & ligand

To surface #1 including main and ligands per chain use "ligands" keyword option:

surface #1 ligands true

To change which patch is being displayed of an already created surface. In this example the first command creates the chain A surface showing residue 10-20. The second command modifies the existing surface because it sees that the chain A surface already exists (exact same set of atoms surfaced):

surface #1/a:10-20

surface #1/a:30-40

If you want two copies of a surface enclosing the exact same set of atoms

surface #1 copy true

Now how do you change the two surfaces to show different patches?

surface #1/a:10-20 using #1.1

surface #1/a:30-40 using #1.2

What will the model numbers be for surfaces?

surface #1

produces (the model name is "surfaces")

#1.1 surfaces

and if #1 has three chains these will be

#1.1.1 A

#1.1.2 B

#1.1.3 C

Probably model panel will not show that third level by default, you would need to expand the line "#1.1 surfaces" to see them. If you then make another surface

surface enclose #1

you get another model (with no children since the enclose option produces a single surface)

#1.2 surface

and the #1.1 surfaces still exist and could be closed if desired with

close #1.1

If you surface two or more molecules with one surface (rare situation)

surface enclose #1 | #2

then the resulting surface model will be #3 (or the next available model number) instead of being a child of either model.

Default surface categories

Maybe we could use the same default surfcats as in Chimera1, with the modification: splitting main by chain ID. Not sure what the resulting sub-main category names should be, possibly just a concatenation of “main” and the chain ID.

ECM added 30 Apr 2015: Another modification to consider would be excluding covalently attached ligands from main, especially glycosylations, unless they already have their own separate chain IDs. If they weren't added to ligand, we would have to come up with some additional name. Another idea for the names of the main* categories is the type of molecule concatenated with chain ID, something like protA, protB, nucC but still all being shown when surface is used without a specification or selection.

Chimera1 default surface categories are mutually exclusive (see membership rules):

  • solvent
  • ions
  • ligand
  • main

The most conservative approach is for surfacing to work as it does now, keeping the categories mutually exclusive. Then using the surface command with an atomspec or the menu with a selection will automatically only show the surface for those atoms based on the category or categories to which they belong. A minor modification I suggest is that when nothing is specified or selected, instead of surface for “main” one would get the surfaces for all categories “main*”. Examples:

  • surface

... if there were protein chains A-D, this would show four surfaces, each enclosing one protein chain (but not any solvent, ions, or ligands even if they have the same chain IDs as the proteins)

  • surface /a & protein

... (or surface mainA) to show only the surface enclosing protein chain A, not surfaces for residues in other categories with that same chain ID (see Chimera2 atomspec writeup)

  • surface /a:10

... to show only the surface patch for residue 10 in chain A

In the second example above, one might try surface /a but that would also surface ligand etc. with chain ID A, although they would not be in the same category (surface enclosure) as the protein part. This is regardless of whether main is split; it happens in Chimera1 now. It seems like the purpose of the solvent and ions categories is to exclude them from any surfaces rather than to surface them, because they are usually monatomic residues. If that remains true, only chain A ligands will be picked up by the simpler command, sometimes even intentionally, so it's not a big problem.

Custom surface categories or logical equivalent

Even thornier is how to get surfaces enclosing sets of atoms other than the default categories. I don't have a strong opinion on what would be best, but two alternatives come to mind:

  • As in Chimera1, keeping surface categories mutually exclusive and allowing the user to move atoms into their own custom categories; then it is unambiguous what would happen after later uses of Actions/Surface or the surface command. Conceptual example (I'm not suggesting these should be the exact commands):
    • surfcat mycat protein
    • surface mycat
      • ...(or surface protein) to surface whole protein in one lump
    • surface /a & mycat
      • ...(or surface /a & protein) to show the surface patch from protein chain A in the context of the whole-protein category, but not the surface of any ligand in chain A

One disadvantage is that it may be surprising that the default categories get emptied out when new categories are defined, and that it's hard to restore the default categories without closing and reopening the structure.

  • Allowing direct specification of the set of atoms to enclose (treat as a category, but without changing the existing categories) in the surface command or Actions/Surface invocation; however, this would require either showing that whole surface or somehow specifying two sets of atoms, one to define the category and one for which to show the surface patch. Conceptual example:
    • surface enclose protein
      • ...to surface whole protein in one lump, where “enclose” is a keyword and the atomspec which would have been before it (see Chimera2 command structure writeup) is blank (another complication: above I said surface with blank atomspec should surface all atoms in categories “main*” ... although that would work OK in this particular example, perhaps it should be overriden by the enclose keyword to mean all the atoms in the enclose set, or equivalently, all atoms, period)
    • surface /a enclose protein
      • ...to show surface patch from chain A in the context of the whole-protein lump; don't have to worry about ligands etc. in chain A because the specified surface only encloses protein

One disadvantage is that it is more complicated to give two specs at once, even if one can be blank/implied.

Note: See TracWiki for help on using the wiki.