May 6 2015 gestalt conclusions after coming up with and discarding many command-revision ideas as logically flawed:
Potential components of a command:
Atomspecs (or other target specs, e.g. volume models, surface pieces):
See also: Chimera2 User Guide, Chimera2 atomspec writeup, Chimera2 commands for initial release (wiki), Chimera2 manpage mockups:
Further notes:
command: color C green
menu: Show/Hide... Cartoons
menu: Style... Cartoons... [cartoon style options]
style spec [atoms | cartoon | surface | pbonds] style-type style-type-optionsExtremely useful, logically structured catchalls for setting attributes and global settings, respectively:
- or maybe -
style spec style-type1 [style-type1-options] [style-type2 [style-type2-options]] ...
...or, if including the sub-options is too complicated:
style spec [atoms atoms-style] [cartoon cartoon-style] [surface surface-style] [pbonds pbonds-style]
- or -
style spec style-type1 [style-type2] ...cartoon spec cartoon-options
- consolidates repr, ribrepr, surfrepr
- atom (default) is short for atoms/bonds, their types could be our current repr choices, and sub-options could include stick radius, ring fill and bond multiplicity display
- cartoon is a generalization of ribbons (see ribbons writeup); maybe we could create some default styles that combine our current notions of cross-section and scaling, plus at least one more for cylinders, or use the current ribrepr choices (plus something with cylinders) as the types, with scalings or individual scaling settings (strand width, helix width, helix cylinder radius, etc.) as further options; path-related parameters should go into the cartoon command instead
- style should cover individually settable styles (otherwise spec is irrelevant); set or other command would be used for global settings
- in the second of each pair of options above, atoms etc. is not specified; instead, each style-type would apply only to the relevant items:
- stick/sphere/bs and line (or wire) would affect atoms/bonds, with possible further options including stick radius, bond multiplicity display, ring fill, line width
- stick and line would also affect pseudobonds
- dotted/dashed/dotdash (or maybe dottedStick/dashedStick/dotdashStick or dotStick/dashStick/dotdashStick if there will also be dottedLine/dashedLine/dotdashLine or dotLine/dashLine/dotdashLine) could affect pseudobonds only or both bonds and pseudobonds; may need some way of distinguishing pseudobonds from regular bonds via spec (Chimera1 only via sel, but maybe pseudobonds could have a different model number or something like that in Chimera2), with possible further options of dot/dash spacing, separation
- mesh/solid would affect surfaces (dots? don't want confusion with dotted if item-type is inferred rather than specified directly)
- cartoon styles (say smooth, edged, maybe flat showing secondary structure, tube with constant radius) would affect cartoons
- attributes could affect multiple styles, e.g. cartoonThickness would affect all non-flat styles; helixWidth, strandWidth, arrowWidth would affect secondary-structure-showing styles; helixPipes true could instead use helixRadius value unless helixRadiusAuto was also true (these could probably be chain-level attributes although the style whould be residue-level)
- if including further (sub)options of individual styles in the style command is too complicated, they could be covered by setattr
- we could consider folding target into style names but allowing them to be truncated, e.g., solid = solidSurface, smooth = smoothCartoon, and so on
- could include nucleotide styles and options, but that could become hairy; nucleotides may be better as a separate command
- nucleotides could redundantly control ringfill for nucleic acid bases, or it could be limited to base-slab, sugar-tube, and ladder
surface spec surface-options
- cartoon is a generalization of ribbon (see ribbons writeup), mainly toggles cartoon display
- the cartoon-options could include spline and path-smoothing parameters à la ribspline, maybe whether cylinders are shown, maybe whether backbone atom display is simultaneously enabled à la ribbackbone; hard to decide what should be specified at initial display vs. changed later with style (analogous to surface vs. surfrepr)
- I lean toward keeping cartoon-by-attr (worms) separate
- Scooter suggests a preceding (show/hide), see below
show/hide [atoms | models] spec
- see surface command mockup
- see discussion on wiki of surface command and categories
- if there can be multiple surfaces for the same atoms, how is the proliferation of surface models controlled?
- Scooter suggests a preceding (show/hide), see below
color spec colorspec [target alscrnmbpd]
- consolidates display and modeldisplay
- should it also act on pseudobonds directly, or is indirectly (autohidden when end atoms hidden) enough? will pseudobond groups have their own model numbers?
- replaces our current show, which I find dispensible
- in this case it seemed more Englishy to have the spec at the end, but atoms is default and can be omitted
- I thought about including ribbons/cartoons and surfaces (potentially per residue and per atom, respectively), but that leaves the dilemma of whether those objects are persistent and can merely be display-toggled, or whether this would require regenerating them with some set of parameters that would otherwise be specified in the cartoon or surface command... Scooter proposes consolidation analogous to the first proposal for style, except with spec after the level, but I'm not that enthusiastic about it:
show/hide [atoms | models | cartoon | surface | pbonds] spec level-specific-options
transparency spec percent [target alscrnmbpd] [ frames N ]
(target: atoms/bonds, atom/bond labels, surfaces, cartoons, residue labels, nonmolecular models, molecular models, bonds-only, pseudobonds, distances and other pseudobond labels; default further limited to als when spec contains only explicitly specified atoms)
- just run target options together into a string, similar to Chimera1 swapaa criteria except that order is irrelevant
- presumably surface models could be specified by their (unique?) model numbers, but s is convenient for coloring all surfaces
- see color command mockup; above is just the first type of usage (single-color) but I also propose merging with all the multicoloring-by-value functionality
- vcolor command mockup is color-by-value only (deprecated)
- see transparency command mockup, analogous to the single-color usage of color
- although surfaces are included in these general command examples, I'm not opposed to having display/style/coloring of volume isosurfaces also controlled by a more specific volume command since it is useful to specify them in parallel with contour level
setattr spec level attr-name attr-value
- or (Chimera1 order) -
setattr level attr-name attr-value spec
set setting-name setting-value
- or -
set category setting-name1 setting-value1 [setting-name2 setting-value2 ...]...could be one value at a time, or a group of related values (e.g. the subcommand could be a category and the subsequent options the settings in that category):
set transparencyLayers (single | multiple)
set transparency [layers single | multiple] [angleDependent T | F] [transp-parm3 value] [transp-parm4 value] ...
set bgColor color-spec
set background [ solid color-spec | gradient gradient-spec | image image-spec [placement-options]] [transparent T | F]