#15715 closed defect (duplicate)

White pixel artifacts

Reported by: olibclarke@… Owned by: Zach Pearson
Priority: normal Milestone:
Component: Volume Data Version:
Keywords: Cc: Tom Goddard
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        macOS-14.5-arm64-arm-64bit
ChimeraX Version: 1.9.dev202407310607 (2024-07-31 06:07:26 UTC)
Description
Default thresholds in projection mode give "hot pixel" appearance with EM maps.

Hi,

When I use the projection display in the Map toolbar, it looks good except that there are some "hot/white" voxels - even in cases where the map is symmetric and they shouldn't be there. I suspect this is some artefact, as reducing the last (right most) threshold in Vol viewer removes them. Would it be possible to adjust the default thresholds so that this doesn't happen? As an example, try EMD-9118.

Log:
Startup Messages  
---  
note | available bundle cache has not been initialized yet  
  

> runscript /Users/oc2188/Dropbox/chimera_startup/chimerax_startup.py

> camera ortho

> cofr centerOfView

> mousemode alt rightMode "contour level"

> mousemode rightMode clip

> mousemode alt leftMode "translate selected models"

> mousemode shift leftMode "rotate selected models"

> mousemode alt control leftMode "pick blobs"

> alias cofron cofr centerofview showpivot 7,0.25

> alias cofroff cofr centerofview showpivot false

> alias symclip cofr centerofview; clip near -$1 far $1 position cofr

> alias cootmode set bgColor black; surface cap false; surface style solid;
> lighting flat; graphics silhouettes false; style stick; ~rib; color
> ##num_residues gold; color byhet ; disp; ~disp @H*; style ions ball; style
> solvent ball; size ballscale 0.2; size stickradius 0.07; transparency 70;
> cofr centerofview; clip near -10 far 10 position cofr; color ~##num_residues
> cornflower blue

> alias cootmode_mesh surface cap false; surface style mesh; lighting flat;
> graphics silhouettes false; style stick; ~rib; color ##num_residues gold;
> color byhet ; disp; ~disp @H*; style solvent ball; style ions ball; size
> ballscale 0.2; size stickradius 0.07; cofr centerofview; clip near -10 far
> 10 position cofr; color ~##num_residues #3d60ffff; transparency 50

> alias project_map set bgColor black; lighting depthcue false; volume $1
> style image sdlevel 0,0 color white sdlevel 100,0.15 color white
> projectionmode 3d maximumIntensityProjection false dimTransparentVoxels
> false btcorrection true showOutlineBox false linearinterpolation true

> alias ca_and_sidechains ~rib $1; ~surf $1; ~disp $1; disp @CA&protein&$1;
> disp @P&nucleic&$1; style $1 stick; disp sidechain&$1; disp
> ~backbone&nucleic&$1; size stickradius 0.1; size pseudobondradius 0.1

> alias ca_trace ~rib $1; ~surf $1; ~disp $1; disp @CA&protein&$1; disp
> @P&nucleic&$1; style $1 stick; size stickradius 0.1; size pseudobondradius
> 0.1

> alias map_sphere_15 volume unzone ~##num_residues; sel; close #10000; marker
> #10000 position cofr; sel ~sel; volume zone ~##num_residues nearAtoms sel
> minimalBounds true range 15; close #10000

> alias map_unsphere volume unzone ~##num_residues

> alias default_mol_display ~disp; rib; rainbow chain palette RdYlBu-5;
> lighting soft

> alias hidemaps surface unzone ~##num_residues; sel; close #10000; marker
> #10000 position cofr; sel ~sel; surface zone ~##num_residues nearAtoms sel
> distance 0; close #10000

> alias showmaps surface unzone ~##num_residues

> alias caps_off surface cap false

> alias caps_on surface cap true

> alias open_vseries "open browse vseries true"

> alias selbetween ks ri

> alias helix setattr $1 res is_helix true

> alias strand setattr $1 res is_strand true

> alias coil setattr $1 res is_strand false; setattr $1 res is_helix false

> alias rock_movie cofr showpivot false; movie record; rock y 30; wait 136;
> movie encode ~/Desktop/rock_movie.mp4; stop

> buttonpanel Shortcuts rows 3 columns 5

> buttonpanel Shortcuts add Vol_Viewer command "tool show 'Volume Viewer'"

> buttonpanel Shortcuts add Model_Panel command "tool show Models"

> buttonpanel Shortcuts add Log command "tool show Log"

> buttonpanel Shortcuts add default_disp command default_mol_display

> buttonpanel Shortcuts add map_sphere command map_sphere_15

> buttonpanel Shortcuts add map_unsphere command map_unsphere

> buttonpanel Shortcuts add cofron command cofron

> buttonpanel Shortcuts add cofroff command cofroff

> buttonpanel Shortcuts add cootmode command cootmode

> buttonpanel Shortcuts add mark_cofr command "marker #20000 position cofr
> radius 1"

> buttonpanel Shortcuts add hidemaps command hidemaps

> buttonpanel Shortcuts add showmaps command showmaps

> buttonpanel Shortcuts add reset_mouse command "mousemode alt right contour ;
> mousemode right clip ; mousemode alt left 'translate selected models' ;
> mousemode shift left 'rotate selected models' ; mousemode alt control left
> 'pick blobs'; help https://github.com/olibclarke/chimerax-
> trimmings/blob/main/default_mousemodes.md"

> buttonpanel Shortcuts add previous_model command prevmodel

> buttonpanel Shortcuts add next_model command nextmodel

> volume defaultvalues limitVoxelCount false voxelLimitForPlane
> 1000000000000000 voxelLimitForOpen 1000000000000000 saveSettings true

Saved volume settings  
UCSF ChimeraX version: 1.9.dev202407310607 (2024-07-31)  
© 2016-2024 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /Users/oc2188/Downloads/cryosparc_P35_J287_002_volume_map.mrc format
> mrc

Opened cryosparc_P35_J287_002_volume_map.mrc as #1, grid size 128,128,128,
pixel 6.6, shown at level 1.25, step 1, values float32  

> volume region all imageMode "full region"

> volume unzone

> mousemode rightMode "crop volume"

> volume projectionMode rays

> volume projectionMode 3d

> volume projectionMode 2d-xyz

> volume projectionMode rays

> ui mousemode right windowing

> symclip 100

> volume step 2

> volume projectionMode 3d

> volume step 1

> view orient

> close all

> open
> /Users/oc2188/Downloads/cryosparc_P48_J708_00117_volume_series/J708_class_04_00117_volume.mrc
> format mrc

Opened J708_class_04_00117_volume.mrc as #1, grid size 100,100,100, pixel
2.82, shown at level 0.214, step 1, values float32  

> volume region all imageMode "full region"

> volume unzone

> mousemode rightMode "crop volume"

> volume appearance initial

> tool show 'Volume Viewer'

> volume #1 level -0.0226,0 level 0.2135,0.8 level 1.797,0.9853

> close all

> open /Users/oc2188/Downloads/cryosparc_P35_J287_002_volume_map.mrc format
> mrc

Opened cryosparc_P35_J287_002_volume_map.mrc as #1, grid size 128,128,128,
pixel 6.6, shown at level 1.25, step 1, values float32  

> volume region all imageMode "full region"

> volume unzone

> mousemode rightMode "crop volume"

> volume appearance initial

> tool show 'Volume Viewer'

> volume #1 level -0.09246,0 level 1.25,0.8 level 2.515,0.9853

> close all

> open emdb:9118

Opened emdb 9118 as #1, grid size 192,192,192, pixel 1.23, shown at level
0.04, step 1, values float32, fit PDB 6mhu  

> volume region all imageMode "full region"

> volume unzone

> mousemode rightMode "crop volume"

> tool show 'Volume Viewer'

[Repeated 1 time(s)]

> volume #1 level -0.01442,0 level 0.03924,0.8 level 0.2998,1

> volume #1 level -0.01442,0 level 0.03924,0.8 level 0.2998,0.9706




OpenGL version: 4.1 Metal - 88.1
OpenGL renderer: Apple M2 Max
OpenGL vendor: Apple

Python: 3.11.4
Locale: UTF-8
Qt version: PyQt6 6.7.0, Qt 6.7.1
Qt runtime version: 6.7.2
Qt platform: cocoa
Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: Mac14,5
      Model Number: Z17J00171LL/A
      Chip: Apple M2 Max
      Total Number of Cores: 12 (8 performance and 4 efficiency)
      Memory: 64 GB
      System Firmware Version: 10151.121.1
      OS Loader Version: 10151.121.1

Software:

    System Software Overview:

      System Version: macOS 14.5 (23F79)
      Kernel Version: Darwin 23.5.0
      Time since boot: 15 minutes, 40 seconds

Graphics/Displays:

    Apple M2 Max:

      Chipset Model: Apple M2 Max
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 30
      Vendor: Apple (0x106b)
      Metal Support: Metal 3
      Displays:
        Color LCD:
          Display Type: Built-in Liquid Retina XDR Display
          Resolution: 3024 x 1964 Retina
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: Yes
          Connection Type: Internal


Installed Packages:
    alabaster: 0.7.16
    appdirs: 1.4.4
    appnope: 0.1.4
    asttokens: 2.4.1
    Babel: 2.15.0
    beautifulsoup4: 4.12.3
    blockdiag: 3.0.0
    blosc2: 2.0.0
    build: 1.2.1
    certifi: 2023.11.17
    cftime: 1.6.4
    charset-normalizer: 3.3.2
    ChimeraX-AddCharge: 1.5.17
    ChimeraX-AddH: 2.2.6
    ChimeraX-AlignmentAlgorithms: 2.0.2
    ChimeraX-AlignmentHdrs: 3.5
    ChimeraX-AlignmentMatrices: 2.1
    ChimeraX-Alignments: 2.14
    ChimeraX-AlphaFold: 1.0.1
    ChimeraX-AltlocExplorer: 1.1.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.1
    ChimeraX-Atomic: 1.58.4
    ChimeraX-AtomicLibrary: 14.1.3
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.4
    ChimeraX-BasicActions: 1.1.2
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.4.6
    ChimeraX-BondRot: 2.0.4
    ChimeraX-BugReporter: 1.0.1
    ChimeraX-BuildStructure: 2.13
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.2.7
    ChimeraX-ButtonPanel: 1.0.1
    ChimeraX-CageBuilder: 1.0.1
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.4
    ChimeraX-ChangeChains: 1.1
    ChimeraX-CheckWaters: 1.4
    ChimeraX-ChemGroup: 2.0.1
    ChimeraX-Clashes: 2.2.4
    ChimeraX-ColorActions: 1.0.5
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.6
    ChimeraX-CommandLine: 1.2.5
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0.1
    ChimeraX-Core: 1.9.dev202407310607
    ChimeraX-CoreFormats: 1.2
    ChimeraX-coulombic: 1.4.4
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0.1
    ChimeraX-DataFormats: 1.2.3
    ChimeraX-DeepMutationalScan: 1.0
    ChimeraX-Dicom: 1.2.4
    ChimeraX-DiffPlot: 1.0
    ChimeraX-DistMonitor: 1.4.2
    ChimeraX-DockPrep: 1.1.3
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ESMFold: 1.0
    ChimeraX-FileHistory: 1.0.1
    ChimeraX-Foldseek: 1.0.1
    ChimeraX-FunctionKey: 1.0.1
    ChimeraX-Geometry: 1.3
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.4
    ChimeraX-Hbonds: 2.4
    ChimeraX-Help: 1.3
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0.1
    ChimeraX-IUPAC: 1.0
    ChimeraX-Label: 1.1.10
    ChimeraX-ListInfo: 1.2.2
    ChimeraX-Log: 1.1.7
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.9.1
    ChimeraX-Map: 1.3
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0.1
    ChimeraX-MapFilter: 2.0.1
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1.1
    ChimeraX-Markers: 1.0.1
    ChimeraX-Mask: 1.0.2
    ChimeraX-MatchMaker: 2.1.5
    ChimeraX-MCopy: 1.0
    ChimeraX-MDcrds: 2.7.1
    ChimeraX-MedicalToolbar: 1.1
    ChimeraX-Meeting: 1.0.1
    ChimeraX-MLP: 1.1.1
    ChimeraX-mmCIF: 2.14.1
    ChimeraX-MMTF: 2.2
    ChimeraX-Modeller: 1.5.17
    ChimeraX-ModelPanel: 1.5
    ChimeraX-ModelSeries: 1.0.1
    ChimeraX-Mol2: 2.0.3
    ChimeraX-Mole: 1.0
    ChimeraX-Morph: 1.0.2
    ChimeraX-MouseModes: 1.2
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nifti: 1.2
    ChimeraX-NMRSTAR: 1.0.2
    ChimeraX-NRRD: 1.2
    ChimeraX-Nucleotides: 2.0.3
    ChimeraX-OpenCommand: 1.13.5
    ChimeraX-OrthoPick: 1.0.1
    ChimeraX-PDB: 2.7.6
    ChimeraX-PDBBio: 1.0.1
    ChimeraX-PDBLibrary: 1.0.4
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0.1
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1.2
    ChimeraX-PubChem: 2.2
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1.2
    ChimeraX-RemoteControl: 1.0
    ChimeraX-RenderByAttr: 1.4.2
    ChimeraX-RenumberResidues: 1.1
    ChimeraX-ResidueFit: 1.0.1
    ChimeraX-RestServer: 1.3
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 4.0
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0.2
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0.1
    ChimeraX-Segmentations: 3.1.6
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.13
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0.1
    ChimeraX-Shortcuts: 1.2.0
    ChimeraX-ShowSequences: 1.0.3
    ChimeraX-SideView: 1.0.1
    ChimeraX-Smiles: 2.1.2
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.18
    ChimeraX-STL: 1.0.1
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.2.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0.1
    ChimeraX-SwapAA: 2.0.1
    ChimeraX-SwapRes: 2.5
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-TaskManager: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.2.3
    ChimeraX-ToolshedUtils: 1.2.4
    ChimeraX-Topography: 1.0
    ChimeraX-ToQuest: 1.0
    ChimeraX-Tug: 1.0.1
    ChimeraX-UI: 1.39.8
    ChimeraX-uniprot: 2.3.1
    ChimeraX-UnitCell: 1.0.1
    ChimeraX-ViewDockX: 1.4.3
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0.1
    ChimeraX-vrml: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0.2
    ChimeraX-WebServices: 1.1.4
    ChimeraX-Zone: 1.0.1
    colorama: 0.4.6
    comm: 0.2.2
    contourpy: 1.2.1
    cxservices: 1.2.2
    cycler: 0.12.1
    Cython: 3.0.10
    debugpy: 1.8.2
    decorator: 5.1.1
    docutils: 0.20.1
    executing: 2.0.1
    filelock: 3.13.4
    fonttools: 4.53.1
    funcparserlib: 2.0.0a0
    glfw: 2.7.0
    grako: 3.16.5
    h5py: 3.11.0
    html2text: 2024.2.26
    idna: 3.7
    ihm: 1.3
    imagecodecs: 2024.6.1
    imagesize: 1.4.1
    ipykernel: 6.29.5
    ipython: 8.26.0
    ipywidgets: 8.1.3
    jedi: 0.19.1
    Jinja2: 3.1.4
    jupyter_client: 8.6.2
    jupyter_core: 5.7.2
    jupyterlab_widgets: 3.0.11
    kiwisolver: 1.4.5
    line-profiler: 4.1.2
    lxml: 5.2.1
    lz4: 4.3.3
    MarkupSafe: 2.1.5
    matplotlib: 3.9.1
    matplotlib-inline: 0.1.7
    msgpack: 1.0.8
    nest-asyncio: 1.6.0
    netCDF4: 1.6.5
    networkx: 3.3
    nibabel: 5.2.0
    nptyping: 2.5.0
    numexpr: 2.10.1
    numpy: 1.26.4
    openvr: 1.26.701
    packaging: 23.2
    ParmEd: 4.2.2
    parso: 0.8.4
    pep517: 0.13.1
    pexpect: 4.9.0
    pillow: 10.4.0
    pip: 24.1.2
    pkginfo: 1.10.0
    platformdirs: 4.2.2
    prompt_toolkit: 3.0.47
    psutil: 5.9.8
    ptyprocess: 0.7.0
    pure_eval: 0.2.3
    py-cpuinfo: 9.0.0
    pycollada: 0.8
    pydicom: 2.4.4
    Pygments: 2.17.2
    pynmrstar: 3.3.4
    pynrrd: 1.0.0
    PyOpenGL: 3.1.7
    PyOpenGL-accelerate: 3.1.7
    pyopenxr: 1.0.3401
    pyparsing: 3.1.2
    pyproject_hooks: 1.1.0
    PyQt6-commercial: 6.7.0
    PyQt6-Qt6: 6.7.2
    PyQt6-sip: 13.6.0
    PyQt6-WebEngine-commercial: 6.7.0
    PyQt6-WebEngine-Qt6: 6.7.2
    PyQt6-WebEngineSubwheel-Qt6: 6.7.2
    python-dateutil: 2.9.0.post0
    pytz: 2024.1
    pyzmq: 26.0.3
    qtconsole: 5.5.2
    QtPy: 2.4.1
    RandomWords: 0.4.0
    requests: 2.32.3
    scipy: 1.14.0
    setuptools: 70.3.0
    setuptools-scm: 8.0.4
    sfftk-rw: 0.8.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    soupsieve: 2.5
    Sphinx: 7.2.6
    sphinx-autodoc-typehints: 2.0.1
    sphinxcontrib-applehelp: 2.0.0
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 2.0.0
    sphinxcontrib-htmlhelp: 2.1.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 2.0.0
    sphinxcontrib-serializinghtml: 2.0.0
    stack-data: 0.6.3
    superqt: 0.6.3
    tables: 3.8.0
    tcia_utils: 1.5.1
    tifffile: 2024.7.24
    tinyarray: 1.2.4
    tornado: 6.4.1
    traitlets: 5.14.2
    typing_extensions: 4.12.2
    tzdata: 2024.1
    urllib3: 2.2.2
    wcwidth: 0.2.13
    webcolors: 1.13
    wheel: 0.43.0
    wheel-filename: 1.4.1
    widgetsnbextension: 4.0.11
File attachment: Screenshot 2024-08-01 at 1.40.25 PM.png

Screenshot 2024-08-01 at 1.40.25 PM.png

Attachments (1)

Screenshot 2024-08-01 at 1.40.25 PM.png (1.2 MB ) - added by olibclarke@… 15 months ago.
Added by email2trac

Download all attachments as: .zip

Change History (6)

by olibclarke@…, 15 months ago

Added by email2trac

comment:1 by Eric Pettersen, 15 months ago

Cc: Tom Goddard added
Component: UnassignedVolume Data
Owner: set to Zach Pearson
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionWhite pixel artifacts

comment:2 by Zach Pearson, 15 months ago

I don't see an issue with making the last threshold 0.999999 instead of 1 in the default colormap. What do you think, Tom?

comment:3 by Tom Goddard, 15 months ago

The problem is that rendering opacity is very sensitive to that brightness/opacity curve value near the top (value 1.0). It would be nice to work out an interface or calculation that is not so sensitive and there is a longstanding ticket about this already #8183

https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/8183

I do not think it should be hacked by changing the default thresholds from 1 to 0.999.... That doesn't address the main issue that when you hand adjust to get best appearance the sensitivity makes it very difficult to get the apperance you want.

All that said, that problem has received little attention because the use of volume rendering in EM is minimal, so there are usually about 100 higher priority problems to work on.

One small tip. To fix the bright pixels it is generally easier to move the height 1.0 part of the curve to a higher threshold level by typing in a new value than to try to adjust its height with the mouse or a command. So for EMDB 9118 the largest intensity is 0.2998, and if you click on the right most node on the brightness curve in Volume Viewer and type in 0.3 for its level that removes the hot spot. I agree you should not have to do this tweak. But really the variation of the brightness at values near 1 needs to vary in a different way to improve the entire visualization. The current way it works took months of development 20 years ago, and it could certainly be done better.

Last edited 15 months ago by Tom Goddard (previous) (diff)

comment:4 by Tom Goddard, 15 months ago

One more thought to explain why I think the problem needs more then some tweek to get rid of hotspots. If you try to adjust the display for EMDB 9118 to show a more informative view you mostly end up moving around the middle node of the yellow curve on the histogram. If you move it up towards the top you get some interesting and useful variation in intensity, but it is so extremely sensitive to how high you move it that you can't get the best appearance. In fact it needs something other than the current linear opacity variation, and the right way to vary the opacity and the right shape of brightness curve (most serious photo editting software uses smooth splines, not piecewise linear curves as in Volume Viewer), is substantial problem, the subject of ticket #8183.

comment:5 by Zach Pearson, 15 months ago

Resolution: duplicate
Status: assignedclosed

Thanks for the thorough explanation! Let's call this a duplicate of #8183 and add Oli to the cclist of that ticket.

Note: See TracTickets for help on using tickets.