= Chimera2 surface category thoughts = == 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. Chimera1 default surface categories are mutually exclusive (see [http://www.rbvi.ucsf.edu/chimera/docs/UsersGuide/midas/surface.html#surfcats 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 [http://www.cgl.ucsf.edu/home/meng/chi2/frameatom_spec2.html 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 [http://www.cgl.ucsf.edu/home/meng/chi2/command-structure.html 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.