All notable changes to this project will be documented in this file, following the suggestions of Keep a CHANGELOG. This project adheres to Semantic Versioning for its most widely used - and defacto - public interfaces.
Note that since we don't clearly distinguish between a public and private interfaces there will be changes in non-major versions that are potentially breaking. If we make breaking changes to less used interfaces we will highlight it in here.
- Clean
solidInterior
transparent cylinders - Create a transformer to deflate compressed data
- Adjust Quick Styles panel button labels
- Improve camera interpolation code (interpolate camera rotation instead of just position)
- Mesoscale Explorer
- Add
illustrative
coloring option - Press 'C' to toggle between center and zoom & center on click
- Add entities selection description
- Clicking a leaf node in the right panel tree will center each instance in turn
- Add measurement controls to right panel
- Mouse left click on label with snapshot key will load snapshot
- Mouse hover over label with protein name highlight entities with the same name
- Custom ViewportSnapshotDescription with custom MarkdowAnchor
- # other snapshots with a given key [...](#key)
- i highlight a protein with a given NAME [...](iNAME)
- g highlight a group with a given group type and group name [...](ggrouptype.groupname)
- h URLs with a given link [...](http...)
- Snapshot description panel window size and text can be resized and hidden with new icons
- Add styles controls to right panel
- Add viewport settings to left panel
- Add
- Fixes SSAO edge artifacts (#1122)
- Add
reuseOcclusion
parameter to multi-sample pass - Add
blurDepthBias
parameter to occlusion pass - Handle near clip in SSAO blur
- Add
- Support reading score from B-factor in pLDDT color theme
- Add Cel-shading support
celShaded
geometry parametercelSteps
renderer parameter
- Add the ability to customize the Snapshot Description component via
PluginUISpec.components.viewport.snapshotDescription
- Fix State Snapshots export animation (#1140)
- Add depth of field (dof) postprocessing effect
- Add
SbNcbrTunnels
extension for for visualizing tunnels in molecular structures from ChannelsDB (more info in tunnels.md) - Fix edge case in minimizing RMSD transform computation
- Add emissive material support
- Add bloom post-processing
- MolViewSpec extension:
loadMVS
supportskeepCamera
parameter - Return StateTransform selectors from measurements API (addDistance, addAngle, etc.)
- Refactor transparency rendering
- More uniform behavior for blended, wboit, dpoit
- Fix issues with text & image geometry
- Fix render-spheres example (#1100)
- Wrong step size in sphere geometry boundingSphere & groupmapping
- Handle empty
instanceGrid
in renderer & renderable
- Fix bond assignment from
IndexPairBonds
- Can not always be cached in
ElementSetIntraBondCache
- Wrong operator checks in
findPairBonds
- Can not always be cached in
- Fix SSAO artifacts (@corredD, #1082)
- Fix bumpiness artifacts (#1107, #1084)
- Add
VolumeTransform
to translate/rotate a volume like in a structure superposition - Fix BinaryCIF encoder edge cases caused by re-encoding an existing BinaryCIF file
- Fix edge-case where width/height in InputObserver are not correct
- Fix transparency rendering fallback (#1058)
- Fix SSAO broken when
OES_texture_float_linear
is unavailable - Add
normalOffset
toexternal-volume
color theme- This can give results similar to pymol's surface_ramp_above_mode=1
- Add
rotation
parameter to skybox background
- Fix BinaryCIF decoder edge cases. Fixes mmCIF model export from data provided by ModelServer.
- MolViewSpec extension: support for MVSX file format
- Revert "require WEBGL_depth_texture extension" & "remove renderbuffer use"
- Add Mesoscale Explorer app for investigating large systems
- [Breaking] Remove
cellpack
extension (superseded by Mesoscale Explorer app) - [Breaking] Set minimal node.js version to 18
- [Breaking] Generalize rcsb/assembly-symmetry/ extension
- Move to assembly-symmetry/
- Remove RCSB specific dependencies and prefixes
- [Breaking] Require
WEBGL_depth_texture
webgl extension- Remove
renderbuffer
use
- Remove
- [Breaking] Change build target to ES2018
- Custom builds only require ES6 for dependencies like immer.js
- [Breaking] Changed
createPluginUI
- The function now takes a single
options
argument - The caller must specify a
render
method that mounts the Mol* react component to DOM- A default
renderReact18
method is provided, but needs to be imported separately - To support React 16 and 17,
ReactDOM.render
can be passed
- A default
- The function now takes a single
- Improve
SetUtils
performance using ES6 features - [Breaking] Reduce memory usage of
SymmetryOperator.ArrayMapping
- Requires calling methods from instance
- [Breaking] Fix
mol-model/structure/model/properties/seconday-structure.ts
file name (#938) - [Breaking] Add
Canvas3DContext
runtime props- Props: pixelScale, pickScale, transparency (blended, wboit, dpoit)
- Replaces instantiation-time attribs
- [Breaking] Change default compile target to ES2018
- [Breaking] Add culling & LOD support
- Cull per-object and per-instance
- Cull based on frustum and camera distance
- LOD visibility based on camera distance
- Special LOD mode for spheres with automatic levels
- Occlusion culling (only WebGL2)
- Hi-Z pass
- Cull based on previous frame's Hi-Z buffer
- Add stochastic/dithered transparency to fade overlapping LODs in and out
- Add "Automatic Detail" preset that shows surface/cartoon/ball & stick based on camera distance
- Add color interpolation to impostor cylinders
- MolViewSpec components are applicable only when the model has been loaded from MolViewSpec
- Add
snapshotKey
andtooltip
params to lociLabelRepresentation
- Update
FocusLoci
behavior to supportsnapshotKey
param- Clicking a visual with
snapshotKey
will trigger that snapshot
- Clicking a visual with
- Render multiline loci label tooltips as Markdown
ParamDefinition.Text
updates:- Support
multiline
inputs - Support
placeholder
parameter - Support
disableInteractiveUpdates
to only trigger updates once the control loses focus
- Support
- Move dependencies related to the headless context from optional deps to optional peer deps
- Add new
cartoon
visuals to support atomic nucleotide base with sugar - Add
thicknessFactor
tocartoon
representation for scaling nucleotide block/ring/atomic-fill visuals - Use bonds from
_struct_conn
in mmCIF files that uselabel_seq_id
- Fix measurement label
offsetZ
default: not needed whenscaleByRadius
is enbaled - Support for label rendering in HeadlessPluginContext
- MolViewSpec extension
- Support all X11 colors
- Support relative URIs
- CLI tools: mvs-validate, mvs-render, mvs-print-schema
- Labels applied in one node
- ModelServer SDF/MOL2 ligand export: fix atom indices when additional atoms are present
- Avoid showing (and calculating) inter-unit bonds for huge structures
- Fixed
DragOverlay
on WebKit/Safari browsers
- Fix
react-markdown
dependency
- Fix
State.tryGetCellData
(return type & data check) - Don't change camera.target unless flyMode or pointerLock are enabled
- Handle empty CIF files
- Snapshot improvements:
- Add
key
property - Ability to existing snapshot name, key, and description
- Support markdown in descriptions (ignores all HTML tags)
- Ability to link to snapshots by key from descriptions
- Separate UI control showing description of the current snapshot
- Add
- Do not activate drag overlay for non-file content
- Add
structure-element-sphere
visual tospacefill
representation - Fix missing
await
inHeadlessPluginContext.saveStateSnapshot
- Added support for providing custom sequence viewers to the plugin spec
- MolViewSpec extension (MVS)
- Add URL parameters
mvs-url
,mvs-data
,mvs-format
- Add drag&drop for
.mvsj
files - Fix
bumpiness
scaling withignoreLight
enabled - Add
transforms
&label
params toShapeFromPly
- Optimize
LociSelectManager.selectOnly
to avoid superfluous loci set operations - Dispose of viewer on
unload
event to aid GC
- Fix handling of PDB files with insertion codes (#945)
- Fix de-/saturate of colors with no hue
- Improve
distinctColors
function- Add
sort
andsampleCountFactor
parameters - Fix clustering issues
- Add
- Add
clipPrimitive
option to spheres geometry, clipping whole spheres instead of cutting them - Add
DragAndDropManager
- Add
options
support for default bond labels
- Add
PluginContext.initialized
promise & support for it in thePlugin
UI component. - Fix undesired interaction between settings panel and the panel on the right.
- Add ability to customize server parameters for
RCSBAssemblySymmetry
.
- Do not call
updateFocusRepr
if defaultStructureFocusRepresentation
isn't present. - Treat "tap" as a click in
InputObserver
- ModelServer ligand queries: fix atom count reported by SDF/MOL/MOL2 export
- CCD extension: Make visuals for aromatic bonds configurable
- Add optional
file?: CifFile
toMmcifFormat.data
- Add support for webgl extensions
WEBGL_clip_cull_distance
EXT_conservative_depth
WEBGL_stencil_texturing
EXT_clip_control
- Add
MultiSampleParams.reduceFlicker
(to be able to switch it off) - Add
alphaThickness
parameter to adjust alpha of spheres for radius - Ability to hide "right" panel from simplified viewport controls
- Add
blockIndex
parameter to TrajectoryFromMmCif - Fix bounding sphere calculation for "element-like" visuals
- Fix RCSB PDB validation report URL
- Add sharpening postprocessing option
- Take pixel-ratio into account for outline scale
- Gracefully handle missing HTMLImageElement
- Fix pixel-ratio changes not applied to all render passes
- Add some elements support for
guessElementSymbolString
function - Faster bounding rectangle calculation for imposter spheres
- Allow toggling of hydrogens as part of
LabelTextVisual
- Fix imposter spheres not updating, e.g. in trajectories (broke in v3.38.0)
- Don't rely solely on
chem_comp_atom
when detecting CCD files (#877) - Actually support non-physical keys in
Bindings.Trigger.code
- Fix pixel-scale not updated in SSAO pass
- Fix display issue with SIFTS mapping
- Support non-physical keys in
Bindings.Trigger.code
- Update
getStateSnapshot
to only overwrite current snapshot if it was created automatically - Fix distinct palette's
getSamples
infinite loop - Add 'NH2', 'FOR', 'FMT' to
CommonProteinCaps
- Add
opened
event toPluginStateSnapshotManager
- Properly switch-off fog
- Add
approximate
option for spheres rendering - Reduce
Spheres
memory usage- Derive mapping from VertexID
- Pull position and group from texture
- Add
Euler
math primitive - Add stride option to element sphere & point visuals
- Add
disabledExtensions
field to default viewer's options - Add
LRUCache.remove
- Add 'Chain Instance' and 'Uniform' options for 'Carbon Color' param (in Color Theme: Element Symbol)
- Fix issues with wboit/dpoit in large scenes
- Fix lines, text, points rendering (broken in v3.37.0)
- Add
inverted
option toxrayShaded
parameter - Model-export extension: Add ability to set a file name for structures
- Add
contextHash
toSizeTheme
- Add mipmap-based blur for image backgrounds
- Allow parsing of CCD ligand files
- Add dedicated wwPDB CCD extension to align and visualize ideal & model CCD coordinates
- Make operators in
IndexPairBonds
a directed property - Remove erroneous bounding-box overlap test in
Structure.eachUnitPair
- Fix
EdgeBuilder.addNextEdge
for loop edges - Optimize inter unit bond compute
- Ensure consistent state for volume representation (#210)
- Improve SSAO for thin geometry (e.g. lines)
- Add snapshot support for structure selections
- Add
nucleicProfile
parameter to cartoon representation - Add
cartoon
theme with separate colorings for for mainchain and sidechain visuals
- Enable odd dash count (1,3,5)
- Add principal axes spec and fix edge cases
- Add a uniform color theme for NtC tube that still paints residue and segment dividers in a different color
- Mesh exporter improvements
- Support points & lines in glTF export
- Set alphaMode and doubleSided in glTF export
- Fix flipped cylinder caps
- Fix bond assignments
struct_conn
records referencing waters - Add StructConn extension providing functions for inspecting struct_conns
- Fix
PluginState.setSnapshot
triggering unnecessary state updates - Fix an edge case in the
mol-state
'sState
when trying to apply a transform to an existing Null object - Add
SbNcbrPartialCharges
extension for coloring and labeling atoms and residues by partial atomic charges- uses custom mmcif categories
_sb_ncbr_partial_atomic_charges_meta
and_sb_ncbr_partial_atomic_charges
(more info in README.md)
- uses custom mmcif categories
- Parse HEADER record when reading PDB file
- Support
ignoreHydrogens
in interactions representation - Add hydroxyproline (HYP) commonly present in collagen molecules to the list of amino acids
- Fix assemblies for Archive PDB files (do not generate unique
label_asym_id
ifREMARK 350
is present) - Add additional functions to
core.math
inmol-script
cantorPairing
,sortedCantorPairing
,invertCantorPairing
,trunc
,sign
- Avoid
renderMarkingDepth
for fully transparent renderables - Remove
camera.far
doubling workaround - Add
ModifiersKeys.areNone
helper function - Do not render NtC tube segments unless all required atoms are present in the structure
- Fix rendering issues caused by VAO reuse
- Add "Zoom All", "Orient Axes", "Reset Axes" buttons to the "Reset Camera" button
- Improve trackball move-state handling when key bindings use modifiers
- Fix rendering with very small viewport and SSAO enabled
- Fix
.getAllLoci
for structure representations withstructure.child
- Fix
readAllLinesAsync
refering to dom length property - Make mol-util/file-info node compatible
- Add
eachLocation
to representation/visual interface
- Handle resizes of viewer element even when window remains the same size
- Throttle canvas resize events
- Selection toggle buttons hidden if selection mode is off
- Camera focus loci bindings allow reset on click-away to be overridden
- Input/controls improvements
- Move or fly around the scene using keys
- Pointer lock to look around scene
- Toggle spin/rock animation using keys
- Apply bumpiness as lightness variation with
ignoreLight
- Remove
JSX
reference fromloci-labels.ts
- Fix overpaint/transparency/substance smoothing not updated when geometry changes
- Fix camera project/unproject when using offset viewport
- Add support for loading all blocks from a mmcif file as a trajectory
- Add
Frustum3D
andPlane3D
math primitives - Include
occupancy
andB_iso_or_equiv
when creatingConformation
fromModel
- Remove LazyImports (introduced in v3.31.1)
- Avoid rendering of fully transparent renderables
- Add occlusion color parameter
- Fix issue with outlines and orthographic camera
- Reduce over-blurring occlusion at larger view distances
- Fix occlusion artefact with non-canvas viewport and pixel-ratio > 1
- Update nodejs-shims conditionals to handle polyfilled document object in NodeJS environment.
- Ensure marking edges are at least one pixel wide
- Add exposure parameter to renderer
- Only trigger marking when mouse is directly over canvas
- Fix blurry occlusion in screenshots
- [Breaking] Add
setFSModule
tomol-util/data-source
instead of trying to trick WebPack
- Allow link cylinder/line
dashCount
set to '0' - Stop animation loop when disposing
PluginContext
(thanks @gfrn for identifying the issue)
- Fix impostor bond visuals not correctly updating on
sizeFactor
changes - Fix degenerate case in PCA
- Fix near clipping avoidance in impostor shaders
- Update
fs
import indata-source.ts
- Fix exit code of volume pack executable (pack.ts). Now exits with non-0 status when an error happens
- Remove pca transform from components ui focus (too distracting)
- Fix artefacts with opaque outlines behind transparent objects
- Fix polymer trace visual not updating
- Fix use of
WEBGL_provoking_vertex
- Improve Component camera focus based on the PCA of the structure and the following rules:
- The first residue should be in first quadrant if there is only one chain
- The average position of the residues of the first chain should be in the first quadrant if there is more than one chain
- Add
HeadlessPluginContext
andHeadlessScreenshotHelper
to be used in Node.js - Add example
image-renderer
- Fix wrong offset when rendering text with orthographic projection
- Update camera/handle helper when
devicePixelRatio
changes - Add various options to customize the axes camera-helper
- Fix issue with texture-mesh color smoothing when changing themes
- Add fast boundary helper and corresponding unit trait
- Add Observable for Canvas3D commits
- Improve
Dnatco
extension- Factor out common code in
Dnatco
extension - Add
NtC tube
visual. Applicable for structures with NtC annotation - [Breaking] Rename
DnatcoConfalPyramids
toDnatcoNtCs
- Factor out common code in
- Improve boundary calculation performance
- Add option to create & include images in state snapshots
- Fix SSAO artefacts with high bias values
- Fix SSAO resolution scale parameter handling
- Improve outlines, visually more stable at different view distances
meshes
extension: Fixed a bug in mesh visualization (show backfaces when opacity < 1)- Add color quick select control to Volume controls
- Fix
dropFiles
bug - Fix some cyclic imports and reduce the use of const enums. This should make it easier to use the library with the
isolatedModules: true
TS config. - Fix
dropFiles
bug (#679) - Add
input type='color'
picker toCombinedColorControl
- Set
ParameterMappingControl
disabled when state is updating - Performance tweaks
- Update clip
defines
only when changed - Check for identity in structure/unit areEqual methods
- Avoid cloning of structure representation parameters
- Make SymmetryOperator.createMapping monomorphic
- Improve bonding-sphere calculation
- Defer Scene properties calculation (markerAverage, opacityAverage, hasOpaque)
- Improve checks in in UnitsRepresentation setVisualState
- Update clip
- Add StructureElement.Loci.forEachLocation
- Add RepresentationRegistry.clear and ThemeRegistry.clear
- Add generic Loci support for overpaint, substance, clipping themes
- Add
.getCenter
and.center
toCamera
- Add support to dim unmarked groups
- Add support for marker edge strength
- Show histogram in direct volume control point settings
- Add
solidInterior
parameter to sphere/cylinder impostors - [Breaking] Tweak
ignoreHydrogens
non-polar handling (introduced in 3.27.0) - Add
meshes
andvolumes-and-segmentations
extensions- See https://molstarvolseg.ncbr.muni.cz/ for more info
- Fix missing support for info in
ParamDefinition.Converted
- Add support for multi-visual volume representations
- Improve volume isosurface bounding-sphere
- Add basic volume segmentation support to core
- Add
Volume.Segment
model - Add
Segmentation
custom volume property - Add
SegmentRepresentation
representation - Add
volume-segment
color theme
- Add
- Fix GPU marching cubes failing for large meshes with webgl2 (due to use of float16)
- Add an
includeTransparent
parameter to hide/show outlines of components that are transparent - Fix 'once' for animations of systems with many frames
- Better guard against issue (black fringes) with bumpiness in impostors
- Improve impostor shaders
- Fix sphere near-clipping with orthographic projection
- Fix cylinder near-clipping
- Add interior cylinder caps
- Add per-pixel object clipping
- Fix
QualityAssessment
assignment bug for structures with different auth vs label sequence numbering - Refresh
ApplyActionControl
's param definition when toggling expanded state - Fix
struct_conn
bond assignment for ions - Ability to show only polar hydrogens
- Support for
powerPreference
webgl attribute. AddPluginConfig.General.PowerPreference
andpower-preference
Viewer GET param. - Excluded common protein caps
NME
andACE
from the ligand selection query - Add screen-space shadow post-processing effect
- Add "Structure Molecular Surface" visual
- Add
external-volume
theme (coloring of arbitrary geometries by user-selected volume)
- Fix edge-case in
Structure.eachUnitPair
with single-element units - Fix 'auto' structure-quality for coarse models
- Fix handling of gzipped assets (reverts #615)
- Make
PluginContext.initContainer
checkered canvas background optional - Store URL of downloaded assets to detect zip/gzip based on extension (#615)
- Add optional
operator.key
; can be referenced inIndexPairBonds
- Add overpaint/transparency/substance theme strength to representations
- Fix viewport color for transparent background
- Add
PluginContext.initContainer/mount/unmount
methods; these should make it easier to reuse a plugin context with both custom and built-in UI - Add
PluginContext.canvas3dInitialized
createPluginUI
now resolves after the 3d canvas has been initialized- Change EM Volume Streaming default from
Whole Structure
toAuto
- Replace
VolumeIsosurfaceParams.pickingGranularity
param withVolume.PickingGranuality
- Add
VolumeIsosurfaceParams.pickingGranularity
param - Prevent component controls collapsing when option is selected
- [Breaking] Rename the
model-index
color theme totrajectory-index
- Add a new
model-index
color theme that uniquely colors each loaded model - Add the new
model-index
andstructure-index
color themes as an option for the carbon color in theelement-symbol
andilustrative
color themes - Add
structure-index
color theme that uniquely colors each root structure - Add
nearest
method toLookup3D
- Add mipmap-based blur for skybox backgrounds
- Fix "empty textures" error on empty canvas
- Optimize BinaryCIF integer packing encoder
- Fix dual depth peeling when post-processing is off or when rendering direct-volumes
- Add
cameraClipping.minNear
parameter - Fix black artifacts on specular highlights with transparent background
- Integration of Dual depth peeling - OIT method
- Stereo camera improvements
- Fix param updates not applied
- Better param ranges and description
- Add timer.mark for left/right camera
- [Fix] Clone
Canvas3DParams
when creating aCanvas3D
instance to prevent shared state between multiple instances - Add
includeResidueTest
option toalignAndSuperposeWithSIFTSMapping
- Add
parentDisplay
param for interactions representation. - [Experimental] Add support for PyMOL, VMD, and Jmol atom expressions in selection scripts
- Support for
failIfMajorPerformanceCaveat
webgl attribute. AddPluginConfig.General.AllowMajorPerformanceCaveat
andallow-major-performance-caveat
Viewer GET param. - Fix handling of PDB TER records (#549)
- Add support for getting multiple loci from a representation (
.getAllLoci()
) - Add
key
property to intra- and inter-bonds for referencing source data - Fix click event triggered after move
- Support
globalColorParams
andglobalSymmetryParams
in common representation params - Support
label
parameter inViewer.loadStructureFromUrl
- Fix
ViewportHelpContent
Mouse Controls section
- Fix wboit in Safari >=15 (add missing depth renderbuffer to wboit pass)
- Add 'Around Camera' option to Volume streaming
- Avoid queuing more than one update in Volume streaming
- Expose inter-bonds compute params in structure
- Improve performance of inter/intra-bonds compute
- Fix defaultAttribs handling in Canvas3DContext.fromCanvas
- Confal pyramids extension improvements
- Add custom labels to Confal pyramids
- Improve naming of some internal types in Confal pyramids extension coordinate
- Add example mmCIF file with categories necessary to display Confal pyramids
- Change the lookup logic of NtC steps from residues
- Add support for download of gzipped files
- Don't filter IndexPairBonds by element-based rules in MOL/SDF and MOL2 (without symmetry) models
- Fix Glycam Saccharide Names used by default
- Fix GPU surfaces rendering in Safari with WebGL2
- Add
fov
(Field of View) Canvas3D parameter - Add
sceneRadiusFactor
Canvas3D parameter - Add background pass (skybox, image, horizontal/radial gradient)
- Set simple-settings presets via
PluginConfig.Background.Styles
- Example presets in new backgrounds extension
- Load skybox/image from URL or File (saved in session)
- Opacity, saturation, lightness controls for skybox/image
- Coverage (viewport or canvas) controls for image/gradient
- Set simple-settings presets via
- [Breaking]
AssetManager
needs to be passed to various graphics related classes - Fix SSAO renderable initialization
- Reduce number of webgl state changes
- Add
viewport
andscissor
to state object - Add
hasOpaque
to scene object
- Add
- Handle edge cases where some renderables would not get (correctly) rendered
- Fix text background rendering for opaque text
- Fix helper scenes not shown when rendering directly to draw target
- Fix
CustomElementProperty
coloring not working
- Fix: only update camera state if manualReset is off (#494)
- Improve handling principal axes of points in a plane
- Add 'material' annotation support for textures
- More effort to avoid using
flat
qualifier in shaders: adddVaryingGroup
- Enable
immediateUpdate
for iso level in isosurface and volume streaming controls - Add support to download CCD from configurable URL
- Fix plugin behavior dispose logic to correctly unsubscribe observables.
- Add
colorMarker
option to Renderer. This disables the highlight and select marker at a shader level for faster rendering of large scenes in some cases. - Bind shared textures only once per pass, not for each render item
- Fix missing 'material' annotation for some uniforms, causing unnecessary uniform updates
- Remove use of
isnan
in impostor shaders, not needed and causing slowdown - Avoid using
flat
qualifier in shaders, causing slowdown - Improve CellPack's
adjustStyle
option (disablecolorMarker
, set component options, enable marking w/o ghost) - Scan all entities when looking for
struct_conn
entries (fixes issue when the samelabel_asym_id
is used in more than one entity)
- Add
instanceGranularity
option for marker, transparency, clipping, overpaint, substance data to save memory - CellPack extension tweaks
- Use instancing to create DNA/RNA curves to save memory
- Enable
instanceGranularity
by default - Add
adjustStyle
option to LoadCellPackModel action (stylized, no multi-sample, no far clipping, chain picking)
- Structure Superposition now respects pivot's coordinate system
- Fix superfluous shader varying
- Improve use of gl_VertexID when possible
- Fix groupCount when updating TextureMesh-based visuals
- Add support for Glycam saccharide names
- Add
PluginConfig.Viewport.ShowTrajectoryControls
config option
- Fix missing
super.componentWillUnmount()
calls (@simeonborko) - Fix missing
uGroupCount
update for visuals - Fix missing aromatic bond display
- Improve picking by using drawbuffers (when available) to reduce number of drawcalls
- GPU timing support
- Add
timing-mode
Viewer GET param - Add support for webgl timer queries
- Add timer marks around GPU render & compute operations
- Add
- Volume Server CIF: Add check that a data block contains volume data before parsing
- Fix
Scene.clear
not clearing primitives & volumes arrays (@JonStargaryen) - Fix rendering volumes when wboit is switched off and postprocessing is enabled
- Fix
Scene.opacityAverage
not taking xray shaded into account
- Fix issues with marking camera/handle helper (#433)
- Fix issues with array uniforms when running with headless-gl
- Fix Polymer Chain Instance coloring
- Improve performance of scene marker/opacity average calculation
- Add support for outlines around transparent objects
- Improve per-group transparency when wboit is switched off
- Improve
ColorTheme
typing withColorType
generic.- Defaults to
ColorTypeLocation
- Set when using
ColorTypeDirect
orColorTypeGrid
- Defaults to
- Fix case handling of
struct_conf
mmCIF enumeration field (#425) - Fix
allowTransparentBackfaces
for per-group transparency - Fix
FormatRegistry.isApplicable
returning true for unregistered formats - Fix: handle building of
GridLookup3D
with zero cell size - Fix
ignoreLight
for direct-volume rendering with webgl1 - Fix (non-black) outlines when using transparent background
- Fix
xrayShaded
for texture-mesh geometries - [Breaking] Change
allowTransparentBackfaces
totransparentBackfaces
with optionsoff
,on
,opaque
. This was only added in 3.6.0, so allowing a breaking change here.off
: don't show (default)on
: show with transparencyopaque
: show fully opaque
- Add option to disable file drop overlay.
- ModelServer ligand queries: fixes for alternate locations, additional atoms & UNL ligand
- React 18 friendly
useBehavior
hook.
- Fix React18 related UI regressions.
- Check that model and coordinates have same element count when creating a trajectory
- Fix aromatic rings assignment: do not mix flags and planarity test
- Improve bonds assignment of coarse grained models: check for IndexPairBonds and exhaustive StructConn
- Fix unit mapping in bondedAtomicPairs MolScript query
- Improve pdb parsing: handle non unique atom and chain names (fixes #156)
- Fix volume streaming for entries with multiple contour lists
- Add
allowTransparentBackfaces
parameter to support double-sided rendering of transparent geometries - Fix handling of case insensitive mmCIF enumeration fields (including entity.type)
- Fix
disable-wboit
Viewer GET param - Add support for React 18.
- Used by importing
createPluginUI
frommol-plugin-ui/react18
; - In Mol* 4.0, React 18 will become the default option.
- Used by importing
- Fix issues with bounding-sphere & color-smoothing (mostly for small geometries)
- Support BCIF => CIF conversion in
cif2bcif
CLI tool
- Fix handling of mmcif with empty
label_*
fields - Improve saccharide detection (compare against list from CCD)
- Fix legend label of hydrophobicity color theme
- Add
LoadTrajectory
action - Add
CustomImportControls
to left panel - Add Zenodo import extension (load structures, trajectories, volumes, and zip files)
- Fix loading of some compressed files within sessions
- Fix wrong element assignment for atoms with Charmm ion names
- Fix handling of empty symmetry cell data
- Add support for
trr
andnctraj
coordinates files - Add support for
prmtop
andtop
topology files
- Fix issue with unit boundary reuse (do at visual level instead)
- Add option to ignore ions for inter-unit bond computation
- Fix parsing contour-level from emdb v3 header files
- Fix invalid CSS (#376)
- Fix "texture not renderable" & "texture not bound" warnings (#319)
- Fix visual for bonds between two aromatic rings
- Fix visual for delocalized bonds (parsed from mmcif and mol2)
- Fix ring computation algorithm
- Add
UnitResonance
property with info about delocalized triplets - Resolve marking in main renderer loop to improve overall performance
- Use
throttleTime
instead ofdebounceTime
in sequence viewer for better responsiveness - Change line geometry default
scaleFactor
to 2 (3 is too big after fixing line rendering) - Trajectory animation performance improvements
- Reuse
Model.CoarseGrained
for coordinate trajectories - Avoid calculating
InterUnitBonds
whenStructure.parent
ones are empty - Reuse unit boundary if sphere has not changed too much
- Don't show 'inter-bond' and 'element-cross' visuals in line representations of polymerAndLigand preset
- Reuse
- Fix additional mononucleotides detected as polymer components
- Fix and improve
canRemap
handling inIntraUnitBonds
- Reuse occlusion for secondary passes during multi-sampling
- Check if marking passes are needed before doing them
- Add
resolutionScale
parameter to allow trading quality of occlusion for performance
- Rename "best database mapping" to "SIFTS Mapping"
- Add schema and export support for
atom_site.pdbx_sifts_xref_*
fields - Add schema export support for
atom_site.pdbx_label_index
field - Add
traceOnly
parameter to chain/UniProt-based structure alignment - Store
IndexPairBonds
as a dynamic property.
- Fix
xrayShaded
&ignoreLight
params not working at the same time - Add
ignoreLight
to component params - Tweaks for cleaner default representation style
- Cartoon: use
nucleotide-ring
instead ofnucleotide-block
- Focus: use
xrayShaded
instead of opacity; adjust target size; don't show non-covalent interactions twice
- Cartoon: use
- Fix representation preset side effects (changing post-processing parameters, see #363)
- Add Quick Styles panel (default, illustrative, stylized)
- Fix exported structure missing secondary-structure categories (#364)
- Fix volume streaming error message: distinguish between missing data and server error (#364)
- Fix color smoothing of elongated structures (by fixing
Sphere.expand
for spheres with highly directional extrema) - Fix entity label not displayed when multiple instances of the same entity are highlighted
- Fix empty elements created in
StructureElement.Loci.extendToAllInstances
- Measurement options tweaks (allow larger
textSize
; makecustomText
essential) - Fix visual visibility sync edge case when changing state snapshots
- Fix marking pass not working with
transparentBackground
- Fix pdbe xray maps url not https
- Fix entity-id color theme broken for non-IHM models
- Improve/fix marking of
InteractionsInterUnitVisual
(mark when all contact-feature members are given) - Add missing "entity-id" and "enity-source" options for carbon coloring to "element-symbol" color theme
- Fix VolumeServer/query CLI
- Support automatic iso-value adjustment for VolumeServer data in
Viewer.loadVolumeFromUrl
- Emit drag event whenever started within viewport (not only for non-empty loci)
- Assembly handling tweaks:
- Do not include suffix for "identity assembly operators"
- Do not include assembly-related categories to export if the structure was composed from an assembly
- Special case for
structAsymMap
if Mol* asym id operator mapping is present
- Support for opening ZIP files with multiple entries
- Add Model Export extension
- Bugfix: Automatically treat empty string as "non-present" value in BinaryCIF writer.
- Fix coarse model support in entity-id color theme
- Fix marking of carbohydrate visuals (whole chain could get marked instead of single residue)
- Add custom colors to "element-symbol", "molecule-type", "residue-name", and "secondary-structure" themes
- Support/bugfixes for
atom_site.pdbx_sifts_xref
categories - Improve/fix marking of
InteractionsIntraUnitVisual
(mark when all contact-feature members are given)
- Fix
getOperatorsForIndex
- Pass animation info (current frame & count) to state animations
- Fix camera stutter for "camera spin" animation
- Add formal charge parsing support for MOL/SDF files (thanks @ptourlas)
- [Breaking] Cleaner looking
MembraneOrientationVisuals
defaults - [Breaking] Add rock animation to trackball controls
- Add
animate
toTrackballControlsParams
, removespin
andspinSpeed
- Add
animate
toSimpleSettingsParams
, removespin
- Add
- Add "camera rock" state animation
- Add support for custom colors to "molecule-type" theme
- [Breaking] Add style parameter to "illustrative" color theme
- Defaults to "entity-id" style instead of "chain-id"
- Add "illustrative" representation preset
- Add PDBj as a
pdb-provider
option - Move Viewer APP to a separate file to allow use without importing light theme & index.html
- Add symmetry support for mol2 files (only spacegroup setting 1)
- Fix mol2 files element symbol assignment
- Improve bond assignment from
IndexPairBonds
- Add
key
field for mapping to source data - Fix assignment of bonds with unphysical length
- Add
- Fix label/stats of single atom selection in multi-chain units
- Add
PluginFeatureDetection
and disable WBOIT in Safari 15. - Add
disable-wboit
Viewer GET param - Add
prefer-webgl1
Viewer GET param - [Breaking] Refactor direct-volume rendering
- Remove isosurface render-mode (use GPU MC instead)
- Move coloring into theme (like for other geometries/renderables)
- Add
direct
color type - Remove color from transfer-function (now only alpha)
- Add direct-volume color theme support
- Add volume-value color theme
- Add
- [Breaking] Use size theme in molecular/gaussian surface & label representations
- This is breaking because it was hardcoded to
physical
internally but the repr size theme default wasuniform
(nowphysical
)
- This is breaking because it was hardcoded to
- Reduce number of created programs/shaders
- Support specifying variants when creating graphics render-items
- Change double-side shader param from define to uniform
- Remove dMarkerType shader define (use uMarker as needed)
- Support to ignore defines depending on the shader variant
- Combine pickObject/pickInstance/pickGroup shader variants into one
- Combine markingDepth/markingMask shader variants into one
- Correctly set shader define flags for overpaint, transparency, substance, clipping
- [Breaking] Add per-object clip rendering properties (variant/objects)
SimpleSettingsParams.clipping.variant/objects
andRendererParams.clip
were removed
- Enable temporal multi-sampling by default
- Fix flickering during marking with camera at rest
- Enable
aromaticBonds
in structure representations by default - Add
PluginConfig.Structure.DefaultRepresentationPreset
- Add ModelArchive support
- schema extensions (e.g., AlphaFold uses it for the pLDDT score)
- ModelArchive option in DownloadStructure action
model-archive
GET parameter for Viewer appViewer.loadModelArchive
method
- Improve support for loading AlphaFold structures
- Automatic coloring by pLDDT
- AlphaFold DB option in DownloadStructure action
afdb
GET parameter for Viewer appViewer.loadAlphaFoldDb
method
- Add QualityAssessment extension (using data from ma_qa_metric_local mmcif category)
- pLDDT & qmean score: coloring, repr presets, molql symbol, loci labels (including avg for mutli-residue selections)
- pLDDT: selection query
- Warn about erroneous symmetry operator matrix (instead of throwing an error)
- Added
createPluginUI
tomol-plugin-ui
- Support
onBeforeUIRender
to make sure initial UI works with custom presets and similar features.
- Support
- [Breaking] Removed
createPlugin
andcreatePluginAsync
frommol-plugin-ui
- Please use
createPluginUI
instead
- Please use
- Improve aromatic bonds handling
- Don't detect aromatic bonds for rings < 5 atoms based on planarity
- Prefer atoms in aromatic rings as bond reference positions
- Fix initial camera reset not triggering for some entries.
- Add
bumpiness
(per-object and per-group),bumpFrequency
&bumpAmplitude
(per-object) render parameters (#299) - Change
label
representation defaults: Use text border instead of rectangle background - Add outline color option to renderer
- Fix false positives in Model.isFromPdbArchive
- Add drag and drop support for loading any file, including multiple at once
- If there are session files (.molx or .molj) among the dropped files, only the first session will be loaded
- Add drag and drop overlay
- Safari 15.1 - 15.3 WebGL 2 support workaround
- [Breaking] Move
react
andreact-dom
topeerDependencies
. This might break some builds.
- Fix OBJ and USDZ export
- Do not include tests and source maps in NPM package
- Add multiple lights support (with color, intensity, and direction parameters)
- [Breaking] Add per-object material rendering properties
SimpleSettingsParams.lighting.renderStyle
andRendererParams.style
were removed
- Add substance theme with per-group material rendering properties
StructureComponentManager.Options
state saving supportParamDefinition.Group.presets
support
- Fix: allow atoms in aromatic rings to do hydrogen bonds
- Fix secondary-structure property handling
- StructureElement.Property was incorrectly resolving type & key
- StructureSelectionQuery helpers 'helix' & 'beta' were not ensuring property availability
- Re-enable VAO with better workaround (bind null elements buffer before deleting)
- Add
Representation.geometryVersion
(increments whenever the geometry of any of its visuals changes) - Add support for grid-based smoothing of Overpaint and Transparency visual state for surfaces
- Workaround: switch off VAO support for now
- Fix double canvas context creation (in plugin context)
- Fix unused vertex attribute handling (track which are used, disable the rest)
- Workaround for VAO issue in Chrome 96 (can cause WebGL to crash on geometry updates)
- Added
ViewerOptions.collapseRightPanel
- Added
Viewer.loadTrajectory
to support loading "composed" trajectories (e.g. from gro + xtc) - Fix: handle parent in Structure.remapModel
- Add
rounded
andsquare
helix profile options to Cartoon representation (in addition to the defaultelliptical
)
- Add additional measurement controls: orientation (box, axes, ellipsoid) & plane (best fit)
- Improve aromatic bond visuals (add
aromaticScale
,aromaticSpacing
,aromaticDashCount
params) - [Breaking] Change
adjustCylinderLength
default tofalse
(set to true for focus representation) - Fix marker highlight color overriding select color
- CellPack extension update
- add binary model support
- add compartment (including membrane) geometry support
- add latest mycoplasma model example
- Prefer WebGL1 in Safari 15.1.
- Fix sequence viewer for PDB files with COMPND record and multichain entities.
- Fix index pair bonds order assignment
- Fix pickScale not taken into account in line/point shader
- Add pixel-scale, pick-scale & pick-padding GET params to Viewer app
- Fix selecting bonds not adding their atoms in selection manager
- Add
preferAtoms
option to SelectLoci/HighlightLoci behaviors - Make the implicit atoms of bond visuals pickable
- Add
preferAtomPixelPadding
to Canvas3dInteractionHelper
- Add
- Add points & crosses visuals to Line representation
- Add
pickPadding
config option (look around in case target pixel is empty) - Add
multipleBonds
param to bond visuals with options: off, symmetric, offset - Fix
argparse
config in servers.
- Fix direct volume shader
- Prefer WebGL1 on iOS devices until WebGL2 support has stabilized.
- Add Charmm saccharide names
- Treat missing occupancy column as occupancy of 1
- Fix line shader not accounting for aspect ratio
- [Breaking] Fix point repr & shader
- Was unusable with
wboit
- Replaced
pointFilledCircle
&pointEdgeBleach
params bypointStyle
(square, circle, fuzzy) - Set
pointSizeAttenuation
to false by default - Set
sizeTheme
touniform
by default
- Was unusable with
- Add
markerPriority
option to Renderer (useful in combination with edges of marking pass) - Add support support for
chem_comp_bond
andstruct_conn
categories (fixes ModelServer behavior where these categories should have been present) - Model and VolumeServer: fix argparse config
- Take include/exclude flags into account when displaying aromatic bonds
- Improve marking performance
- Avoid unnecessary draw calls/ui updates when marking
- Check if loci is superset of visual
- Check if loci overlaps with unit visual
- Ensure
Interval
is used for ranges instead ofSortedArray
- Add uniform marker type
- Special case for reversing previous mark
- Add optional marking pass
- Outlines visible and hidden parts of highlighted/selected groups
- Add highlightStrength/selectStrength renderer params
- Add
invertCantorPairing
helper function - Add
Mesh
processing helper.smoothEdges
- Smooth border of molecular-surface with
includeParent
enabled - Hide
includeParent
option from gaussian-surface visuals (not particularly useful) - Improved
StructureElement.Loci.size
performance (for marking large cellpack models) - Fix new
TransformData
issues (camera/bounding helper not showing up) - Improve marking performance (avoid superfluous calls to
StructureElement.Loci.isWholeStructure
)
- Fix
TransformData
issues #133 - Fix
mol-script
query compiler const expression recognition.
- Add surrounding atoms (5 Angstrom) structure selection query
- [Breaking] Add maxDistance prop to
IndexPairBonds
- Fix coordinateSystem not handled in
Structure.asParent
- Add
dynamicBonds
toStructure
props (force re-calc on model change)- Expose as optional param in root structure transform helper
- Add overpaint support to geometry exporters
InputObserver
improvements- normalize wheel speed across browsers/platforms
- support Safari gestures (used by
TrackballControls
) PinchInput.fractionDelta
and use it inTrackballControls
- Add
tubularHelices
parameter to Cartoon representation - Add
SdfFormat
and update SDF parser to be able to parse data headers according to spec (hopefully :)) #230 - Fix mononucleotides detected as polymer components (#229)
- Set default outline scale back to 1
- Improved DCD reader cell angle handling (interpret near 0 angles as 90 deg)
- Handle more residue/atom names commonly used in force-fields
- Add USDZ support to
geo-export
extension. - Fix
includeParent
support for multi-instance bond visuals. - Add
operator
Loci granularity, selecting everything with the same operator name. - Prefer
_label_seq_id
fields in secondary structure assignment. - Support new EMDB API (https://www.ebi.ac.uk/emdb/api/entry/map/[EMBD-ID]) for EM volume contour levels.
Canvas3D
tweaks:- Update
forceDraw
logic. - Ensure the scene is re-rendered when viewport size changes.
- Support
noDraw
mode inPluginAnimationLoop
.
- Update
- Add parameter for to display aromatic bonds as dashes next to solid cylinder/line.
- Add backbone representation
- Fix outline in orthographic mode and set default scale to 2.
- Add ability to specify
volumeIndex
inViewer.loadVolumeFromUrl
to better support Volume Server inputs. - Support in-place reordering for trajectory
Frame.x/y/z
arrays for better memory efficiency. - Fixed text CIF encoder edge cases (most notably single whitespace not being escaped).
- Add glTF (GLB) and STL support to
geo-export
extension. - Protein crosslink improvements
- Change O-S bond distance to allow for NOS bridges (doi:10.1038/s41586-021-03513-3)
- Added NOS-bridges query & improved disulfide-bridges query
- Fix #178:
IndexPairBonds
for non-single residue structures (bug due to atom reordering). - Add volumetric color smoothing for MolecularSurface and GaussianSurface representations (#173)
- Fix nested 3d grid lookup that caused results being overwritten in non-covalent interactions computation.
- Basic implementation of
BestDatabaseSequenceMapping
(parse from CIF, color theme, superposition). - Add atom id ranges support to Selection UI.
- Ability to pass
Canvas3DContext
toPluginContext.fromCanvas
. - Relative frame support for
Canvas3D
viewport. - Fix bug in screenshot copy UI.
- Add ability to select residues from a list of identifiers to the Selection UI.
- Fix SSAO bugs when used with
Canvas3D
viewport. - Support for full pausing (no draw) rendering:
Canvas3D.pause(true)
. - Add
MeshBuilder.addMesh
. - Add
Torus
primitive. - Lazy volume loading support.
- [Breaking]
Viewer.loadVolumeFromUrl
signature change.loadVolumeFromUrl(url, format, isBinary, isovalues, entryId)
=>loadVolumeFromUrl({ url, format, isBinary }, isovalues, { entryId, isLazy })
- Add
TextureMesh
support togeo-export
extension.
- [WIP] Mesh export extension
Structure.eachAtomicHierarchyElement
(#161)- Fixed reading multi-line values in SDF format
- Fixed Measurements UI labels (#166)
- Add support for
ColorTheme.palette
designed for providing gradient-like coloring. - [Breaking] The
zip
function is now asynchronous and expects aRuntimeContext
. Also addedZip()
returning aTask
. - [Breaking] Add
CubeGridFormat
inalpha-orbitals
extension.
- Add
Canvas3D.getRenderObjects
. - [WIP] Animate state interpolating, including model trajectories
- Recognise MSE, SEP, TPO, PTR and PCA as non-standard amino-acids.
- Fix VolumeFromDensityServerCif transform label
- Exclude tsconfig.commonjs.tsbuildinfo from npm bundle
Too many changes to list as this is the start of the changelog... Notably, default exports are now forbidden.