November 12, 2015
This is a bug fix update that resolves a few test cases due to our change to SSL/HTTPS. A bug was fixed that lead to crashes when using the iChemLabs services queue. Half bond types in the sketcher are now incremented correctly. Fixed an issue where nucleic acids were not rendered correctly with the latest cloud server.
September 11, 2015
This is a bug fix update that resolves an ID conflict in the query sketcher. The samples in the download have also been fixed.
January 31, 2015
This is a major update to the ChemDoodle Web Components with new additions to the 3D features, most notably Pipe and Plank models for proteins and support for high DPI displays, such as the Apple Retina display. Also included are new iChemLabs cloud services and the introduction of our query system to the sketcher and API. Please note there are some API changes to how unit cells are handled from CIF files and other minor changes to visual specifications.
- Added Pipe and Plank models for proteins.
- High DPI support is now provided for WebGL based ChemDoodle Web Components on high DPI devices, like the Apple Retina display. High DPI support for the 2D components is already provided.
- Queries for atoms and bonds can now be defined in the SketcherCanvas. In the SketcherCanvas constructor, you will have to send in a true value to the includeQuery parameter.
- Added new iChemLabs cloud service: iChemLabs.getSimilarityMeasure(). This function takes two input molecule and returns a similarity measure based on the proprietary iChemLabs path fingerprint and the Dice similarity coefficient.
- Added new iChemLabs cloud service: iChemLabs.isSupergraphIsomorphism(). This function works in the reverse of the iChemLabs.isSubgraphIsomorphism() function.
- iChemLabs.isGraphIsomorphism(), iChemLabs.isSubgraphIsomorphism() and iChemLabs.isSupergraphIsomorphism() will all take query structures as arrows. You can now check for advanced structure features, such as stereochemistry and attributes like charge.
- The JCAMPIntpereter class will now read in molecule data if presented.
- The JCAMPIntpereter class will now read in structure-peak correlation data if presented.
- A new JCAMPInterpeter.makeStructureSpectrumSet() function is provided to build canvases that show off structure/spectrum correlations.
- Unit cells in 3D scenes are now explicit shapes instead of a property of the input molecule. They conform to the shape visual specifications, and the crystallography visual specifications have been removed. They can now be stored and transfered through ChemDoodle JSON.
- The shapes_lineWidth_2D visual specification has been renamed to shapes_lineWidth and now affects shapes in both 2D and 3D.
- The HydrogenDeducer.removeHydrogens() function now takes an additional parameter: removeStereo. If removeStereo is not set to true, then hydrogens connected with wedge bonds are retained.
- The EXP and EXP2 algorithms for 3D fogging have been fixed and now work correctly.
- Measurements in 3D now adhere to the shapes_lineWidth specification.
- Atoms in 3D renderings now will render the altLabel correctly if it is set for the atom and labels are showing.
- Atom rgroup and any parameters have been removed. They have been superseded by the new Query objects.
- Fixed discrepancy where bondLength_2D specification was not correctly named in the VisualSpecification instances, mostly affecting the sketcher.
- Fixed JCAMPInterpeter issue where comment lines could cause parsing problems.
- Fixed spectrum rendering issue where segments of the spectrum could be drawn outside of the graph view.
- Fixed spectrum rendering error when no segments were visible.
- Spectrum axis tick marks are now capped correctly to look best.
- Fixed crash where WebGL views would corrupt with more than 2 touches down on Android devices.
- 3D ChemDoodle Web Components now resize correctly.
- Fixed problem where rotation gestures were throwing errors on some mobile devices.
- Fixed minor syntax and textual issues.
June 02, 2014
This is a bugfix update to the ChemDoodle Web Components, fixing all the issues brought to our attention.
- WebGL based components now work in IE11.
- iChemLabs Cloud services now work based on a queue, so all requests will proceed in the order requested, and you will no longer see a message to wait for the previous request to finish.
- Added a iChemLabs.useHTTPS() function for websites that want only to use HTTPS.
- Optimize zone now provides better placement when drawing triple bonds or higher.
- Optimize zone now avoids placing substituents inside of rings.
- Removed code calling jQuery.browser which was removed in jQuery 1.9. This code is only helpful for detecting when to use Google Chrome Frame. Note that Google Chrome Frame support (and therefore support in IE6-8) will be removed soon.
- Fixed issue where clicking on the help button in some browsers would lock the component into a drag gesture.
- Fixed bug where rendering atoms in 2D surrounded with a circle would error out.
- Improved and simplified shaders.
- Picking in 3D is now object aware, and will exclude objects if not selectable. So picking atoms for measurements is now much more responsive.
- Fixed issue where measurements were not working in the Editor3D canvas on Android.
- Help button now works in the Editor3DCanvas on Android.
- Measurement values now render with a forward z-index of 1 Ångstrom to be placed on top of any objects in the immediate vacinity.
- Minor syntax and lexical fixes.
February 01, 2014
This is a major update to the ChemDoodle Web Components. Included is a 3D Editor UI that parities the 2D Sketcher for 3D graphics. Many new WebGL features including picking, highlighting and measurements (distances, angles and torsions). Other new features include Lewis Dot Structure rendering and CML IO. This update includes some major refactors, such as the renaming of the sketcher files and packages and inclusion of the external libraries internal to the ChemDoodle scope, so pay careful attention when upgrading.
- A new EditorCanvas3D canvas which is the 3D component allowing you to interact with and alter chemical data as the 2D Sketcher does in 2D.
- New measurement renderings in 3D canvases including Distances, Angles and Torsions.
- Gestures are now fully supported on mobile devices for 3D canvases. You can use touches, drags and pinches to control the molecule and assign interactivity to 3D canvases on mobile devices.
- The external libs (jQuery, jQuey UI, jQuery plugins, glMatrix) are now included into the ChemDoodle scope. This offers several advantages, including eliminating all library conflicts, reducing the number of files required to be installed, and controls the versions used by ChemDoodle. You can now inlcude these libraries yourself at any version and not worry about conflicts. To use the libraries inside of ChemDoodle, call them from the ChemDoodle.lib closure.
- New amino acid coloring options for Rainbow and Acidity. Nucleic acids can also be rendered in Rainbow style.
- A new atoms_HBlack_2D specification, which is true by default, states that hydrogens are always rendered in black on 2D canvases regardless of the other specifications. This helps make sure hydrogens appear correctly when both 2D and 3D canvases are contained on the same page and you are using a coloring scheme.
- The text and basic renderers for WebGL canvases have been merged into a single shader.
- We have added access to our cloud services through HTTPS as well as HTTP to suit your needs.
- Lewis Dot Structure style bonds can now be rendered.
- Added a new cloud call function, ChemDoodle.iChemLabs.createLewisDot() that generates a Lewis Dot Structure from a molecule data structure with 90° angles and the correct number of lone pairs to satisfy the octet rule.
- Added shortcuts to the sketcher for setting wedge bonds (7 sets a protruding bond while 8 sets a recessed bond).
- Added 0, 0.5 and 1.5 bond order renderings in WebGL canvases.
- A new CMLInterpreter class to read and write CML.
- Added a second compass type that displays through the origin.
- Minor code enhancements.
- Fixed issue where in some cases where the implicit hydrogens were not rendered to the right of the atom label, the charge still offset believing so.
- Fixed bug where PeriodicTableCanvas cells could not be selected on mobile devices.
- Fixed bug where the help button and logo would not update correctly if the sketcher was resized.
- Fixed minor issue where a return key press in some sketcher dialogs would execute button actions.
- Fixed bug where the light direction was not properly copied when VisualSpecification objects were created.
- Fixed issue where red merging preview circles did not appear when placing rings.
- Spectra now render segments with only 1 point in the spectrum space for more complete looking spectra.
- Animations now use requestAnimationFrame().
- Minor bug fixes.
September 09, 2013
This minor update addresses some bugs.
- Force font size on sketcher toolbars to avoid issues where the toolbars were stretching with some CSS clashes.
- MOLInterpreter now correctly handles aromatic bonds on write.
- Changed “v2000″ to “V2000″ in MOLfile output.
- Modified front culling in WebGL to not cut off segments that extrude forward in the perspective.
- Fixed WebGL shader issue that caused the shaders to fail to compile in the latest versions of Chrome.
- Fixed bug in shader failure alerts.
June 10, 2013
This minor update provides some improvements and bug fixes.
- The compass in WebGL scenes will now display labels for the axes.
- Added an option for back face culling in WebGL scenes, which improves performance. This is enabled by default.
- Updated jQuery mousewheel to fix Firefox behavior.
- JSONInterpreter now handles bond orders of 0.
- Lone pairs and radicals will now better space themselves around atom geometries with evenly distributed bonds.
- Fixed issue where text would not render in WebGL scenes in Safari.
- Fixed bug where some elements would not show labels in WebGL scenes when turned on.
- Moved VisualSpecifications.getFontString() to ChemDoodle.extensions.getFontString().
- Mobile support is now enabled only for supported mobile OSs. This also avoids the issue where the mobile controls overrode the keyboard and mouse controls on hybrid PCs.
- Double click no longer centers in the Full Sketcher, which was very sensitive.
- Fixed Full Sketcher issue where starting carbon atoms could be created on top of each other.
April 23, 2013
This update is just to fix a projection issue in 3D canvases introduced by update 5.2.
April 17, 2013
This update enhances the sketcher, adds IUPAC naming calls, and adds some new 3D features, as well as fixing several bugs.
- Added a Bond Forming Pusher to the 2D shapes (a modification of the other pushers). A new button has been added to the sketcher to draw these.
- More integration with ChemDoodle desktop. You can now paste ChemDoodle JSON into the skether’s open window. The next update to ChemDoodle desktop will allow the copy/paste of ChemDoodle JSON. Added two new helper functions to the ChemDoodle global, ChemDoodle.readJSON() and ChemDoodle.writeJSON() to help quickly interact with ChemDoodle JSON.
- Significant improvements to complex 2D graphics. Charges are now always displayed at the top-right of labels. Bonds will avoid overlapping charges. Bonds will avoid overlapping mass numbers. Implicit hydrogens now avoid mass numbers and charges. Radicals and electron pairs now avoid implicit hydrogens.
- Significant improvement to pusher graphics. Pushers will now be drawn to minimize their overlap with other features and they now appear simpler, yet still beautiful. Several choices are used to determine the best arrow to render.
- Added generateIUPACName() to the iChemLabs Cloud Services to generate the IUPAC Name for the input molecule.
- Added version() to the iChemLabs Cloud Services to get information from the cloud servlet that is being contacted (this is very helpful for debugging).
- Added Empirical Formula, Rotatable Bond count, Total Electron count, vdW Volume and Complexity to the sketcher calculator function. More descriptors can be access through iChemLabs Cloud Services.
- When using the label tools in the sketcher, you can now press and drag to sprout an atom to that label. Simply clicking on the atom or releasing the mouse above the atom will still change that atom’s label.
- Added fogging algorithms to 3D canvases, including linear, exp and exp^2. These features are controlled by visual specifications and will add some graphical flair to the 3D canvases.
- Added a compass object for rendering at the bottom-left in 3D canvases. Several visual specifications have been added to control the compass.
- Added a new visual specification, atoms_showAttributedCarbons_2D, which is true by default, and specifies whether carbon labels are to be shown if radicals or electron pairs are associated with it.
- Pushers no longer draw electron pairs.
- A molecule’s bond array is no longer required in ChemDoodle JSON, you can leave it out and the molecule is assumed to have no bonds.
- Fixed Copier object, which now uses the JSONInterpreter to ensure a complete copy.
- Fixed issues where loading content with null or undefined values could cause errors.
- Fixed rendering issue where radicals were not shown if the atom’s label was hidden.
- Adding radicals now correctly affects the implicit hydrogen count.
- Fixed sketcher issue where using keyboard shortcuts to add rings to bonds wouldn’t work.
- Fixed sketcher issue where initiating a dragging action in the sketcher and leaving the canvas bounds would cause issues.
- Fixed bug where the eraser tool could erase bonds in the Single Molecule sketcher that would create disjoint structures and not erase atoms or ring bonds.
- Fixed bug where deleting lassoed content would sometimes skip some pushers.
- Fixed sketcher issue where the calculations units were shown as question marks.
- Fixed issue where the rotation and translation matrices for Canvas3D were incorrectly shared.
- Drop down toolbars for the sketcher now close all other open drop down toolbars when they are expanded.
February 24, 2013
This update introduces several new features in the sketcher and continues to improve performance. Labels can now be rendered in WebGL scenes and further WebGL features will continue to be added over the course of the next couple updates.
- Added Brackets. Brackets can be placed around groups of objects and annotated with charge, multiple and repeat counts. This is great for drawing reactions, polymers and polyatomic ions, among other things.
- Labels can now be displayed in WebGL scenes. We are starting off with the basics of just labeling elements and residues. You can control them with the atoms_displayLabels_3D visual specification. There are other visual specifications that can also be defined to alter how the labels are rendered. See VisualSpecifications for more information.
- Bonds are now formed when drawing to another atom, no matter how far away it is, regardless of the modifier keys pressed.
- New bond types have been added to the sketcher and to the library. These include the resonance bond (1.5), half bond (0.5) and zero/ionic/hydrogen bond (0).
- Bounds class now handles 3D coordinates.
- Added both resonance and equilibrium arrows.
- Text can now be added to reaction arrows by defining strings to the Line.topText and Line.bottomText variables.
- Pushers can now be hovered so they can be deleted like other regular shapes.
- Internal improvements to the code to change all closure based classes to prototype based classes. Also improved naming conventions for defining prototype classes. This makes object creation much faster and reduces the source size.
- Removed all uneccessary return true; statements at the end of function constructors.
- Layouts have been removed. They are no longer necessary as reactions can be fully rendered in a single component using shapes.
- Pushers now improve their angling. They will avoid overlapping bonds if possible, and they will always point up towards the bottom of a carbonyl.
- Pushers no longer render starting electrons if they originate from a bond.
- Fixed sketcher issue where changing a carbon dot to another element kept it as a dot. It now correctly switches to the label of the new element.
- Fixed full sketcher bug where shapes couldn’t be hovered by the eraser tool.
- Fixed full sketcher bug where cleaned molecules would also be centered. The molecules location is now preserved through the clean function.
- Fixed single molecule sketcher bug where the move tool didn’t function.
- Added check to sketcher to clear the hover on mouseout in case the mouse moved quickly out of the sketcher window.
- Hydrogens are now only added implicitly to elements in the other non-metals and halogens group.
December 16, 2012
ChemDoodle Web Components 5 is a massive update. The most notable addition is a Full Sketcher, for drawing multiple molecules, shapes and figures, in addition to the Single Molecule Sketcher already provided. iChemLabs Cloud services and the ChemDoodle JSON format have been updated and drastically improved. The entire codebase has been reoptimized and cleaned, doubling the performance in desktop browsers and more than quadrupling the performance in mobile browsers. All Canvases now handle managing multiple molecules and shapes. Many new additions have been added and dozens of bug fixes have been implemented. We will be unrolling our new proprietary options over the next month, but of course, everything is available for free today under the GPL license!
- A Full Molecule sketcher is now provided for drawing much more complex chemical figures. Multiple molecules and shapes can be drawn with a lasso tool and new shortcuts. Modeled fully off of the ChemDoodle desktop software. This is initialized from the same SketcherCanvas class, which now takes options in its constructor. The sketcher now includes icons embedded as data URIs, no need to manage these files separately anymore.
- Canvases now manage multiple molecules. New functions have been added to the _Canvas class for molecules. For updaters, please note that the _Canvas.molecule parameter no longer exists.
- Canvases now manage shapes. New functions have been added to the _Canvas class for shapes. Shapes include reaction arrows and electron pushing arrows. More shapes to come!
- Formalized the native ChemDoodle Web Components format, ChemDoodle JSON, which now handles all chemical objects and shapes.
- iChemLabs Cloud services have been simplified and now take options in all functions for much more controllable functionality.
- Graphical bounds calculation is now much more accurate.
- Added support for RXN files.
- Android support for multitouch gestures!
- Fixed issues where ChemDoodle Web Components sometimes could not be initialized after the document was closed.
- Updated jQuery to version 1.8.3, jQuery mousewheel to 3.0.6, glMatrix to 1.3.7, and jQuery UI to 1.9.2. For updaters, please make note of library name changes.
- Updated the tutorial, the API now documents everything and all documentation is thorough.
- Fixed dozens of bugs.
- And so much more. For technical support in updating to the latest and greatest ChemDoodle Web Components, please view our support options.
May 06, 2012
- Improved the rendering of bonds adjacent to atom labels. The graphics are now significantly better. The visual specification, bonds_atomLabelBuffer_2D, is no longer a percentage of the bond length, but is now the buffer between atom labels and bond ends in pixels.
- You can now control the resolution of PDB meshes with the visual specifications: proteins_verticalResolution, proteins_horizontalResolution, and nucleics_verticalResolution. The are set to high quality models by default, for low quality models, set all these values to 3. This improvement is so significant, that even huge PDB files, such as 3CC2 with nearly 100 thousands atoms, will have meshes generated by the ChemDoodle Web Components in a few seconds. The PDB demo has been updated to use low quality meshes for large structures.
- A new spectrum component, OverlayCanvas, will overlay several spectra in the same domain. You can see the tutorial page for this component here.
- A new spectrum component, SeekerCanvas, will display plot coordinate information based on input events. You can see the tutorial page for this component here.
- The Spectrum class has a new function, getInternalCoordinates(), that will convert screen coordinates to spectrum coordinates.
- The Spectrum class has a new function, getClosestPlotInternalCoordinates(), that will convert screen coordinates to the closest plot coordinates.
- Added getInverseTransformedY() function to the spectrum class.
- PDBInterpreter now adheres to CONECT records, and will only deduce HETATM bonds if no CONECT records are present.
- PDBInterpreter bond deduction is now much faster for residue bonds. PDBInterpreter has a new parameter, deduceResidueBonds, to determine if residue bonds should be found. This is false by default.
- Significantly improved the rendering efficiency of 2D components. This is most noticeable on mobile devices.
- Fixed major bug that caused Apple Safari to crash on Mac OS X Lion when large spectra were rendered.
- Nucleotide backbone meshes are now segmented to avoid exceeding the WebGL index buffer size.
- Fixed slits that appeared on some large ribbon models.
April 17, 2012
This is a bugfix update to the components, bringing 1 new feature, a package to help load files from your server via url (as opposed to a server side script like PHP).
- There is a new file package, ChemDoodle.io.file, with a function, content(). This content function will retrieve the content of a file given a URL for use with the ChemDoodle Web Components. This function works via AJAX and is an alternative to using server side scripts to print file contents to the HTML page. Note that this function is asynchronous and the download will occur separately from the rest of the page, but it is more convenient for those that do not have access to a server side script, or for when an application needs an asynchronous load.
- PDB optimization is now significantly faster.
- Fixed issue where a drawn bond in 2D would overfill the entire canvas if the start and end coordinates are identical.
- Fix several CIF parsing issues. CIF parser now respects bonds if present.
- A few code and performance improvements.
April 02, 2012
This minor update provides a number of fixes and improvements. Of significant note are a new resize function, new mobile events, a greatly improved CIF parser, that should now handle any CIF file, and the fixing of a bug that affected the rendering of very long protein ribbons.
- Added a resize function, Canvas.resize(w, h), that will efficiently and quickly resize a Canvas at any time.
- The width/height ratio for WebGL Canvases are now automatically determined. The corresponding visual specification will now act as an override if set.
- Added a tap event to Canvases, Canvas.tap(). This event is a mobile event, and is fired when a user presses down and releases within a quarter of a second. This event will forward its action to the click event if tap is not set.
- Added a touchhold event to Canvases, Canvas.touchhold(). This event is a mobile event, and is fired when the user presses down and keeps the finger down without moving it for 1 second.
- The CIF parser has been thoroughly improved and should now handle any CIF file presented.
- Fixed major bug where very long protein chains would produce a WebGL mesh with more vertices than allowed currently by WebGL vertex buffers, resulting in nonsense rendering. All protein chains will now render correctly, regardless of length.
- Zooming is now supported by Canvas3D in scenes with orthographic projections.
- The iChemLabs function, getSMILES(), will now automatically kekulize input.
- Added a defualt alt tag to the <canvas> constructor.
January 27, 2012
This update provides Lewis Dot Structure rendering in 2D components, a new MovieCanvas3D component to play molecule movies, an XYZ file reader and several other minor additions and fixes.
- Lewis Dot Structures can now be rendered in 2D components. This is achieved by setting the Atom.numLonePair variable for atoms. The sketcher now contains tools for adding and removing lone pairs.
- A new component, MovieCanvas3D, will play molecule movies, given a set of Molecule data structures that represent the frames of the animation. You can control the speed of the animation, and several playback modes are provided. You can see the tutorial page for this component here.
- Added an XYZInterpreter class to read molecule data from XYZ files.
- The PyMOL color set for atoms is now provided in the ELEMENT array, and can be used with visual specifications identically to using the Jmol color set.
- Updated glMatrix to version 1.2.3.
- Scaling 3D scenes is now more consistent as the scaling magnitude is now a function of the dimensions of the displayed structure.
- Eliminated the notch that could be seen in between bonds in some cases when the “Line” representation was being used.
- “Line” representation can now be used with residue visual specifications in PDB files.
- Fixed bug where charges were not shown on carbons without shown labels.
- Fixed issue where Atom.altLabel could not be set to the number 0.
- Lone atoms represented as dots will now correctly display their label when the atoms_showAllCarbons specification is true.
- Fixed bug where pinch gestures on the sketcher on mobile devices were throwing errors.
- Fixed bug where help icon was nonfunctional on mobile devices if the scale of the sketcher was not 1.
- Minor code improvements and optimizations.
January 06, 2012
This update provides a few fixes and additions to the 2D components and several new features for the 3D components, including more coloring options for proteins, protein backbone rendering, star geometries, primitive line rendering, and the groundworks for our surfaces system, with dot and solid molecular surfaces.
- Molecular surfaces can now be displayed. Currently only very basic surfaces can be rendered. The new ChemDoodle.informatics.MolecularSurfaceGenerator class will generate surfaces given parameters for the atomic radii set to use, probe diameter and the resolution of the surface mesh. Visual specifications for surfaces are provided. Currently, only the "Dot" and "Solid" styles are provided. A "Mesh" style, as well as transparency, gradient coloring options, and the handling of Cube files will be provided in future releases.
- Added a new variable to the Atom class, altLabel, which does not need to be chemically significant and will be displayed instead of the element symbol for that atom. It will adhere to the same visual specifications that the element symbol adheres to.
- Primitive lines can now be rendered for bonds. A new 3D representation "Line" is provided.
- Alpha carbon backbones can now be displayed for proteins. You can control the thickness and color with visual specifications.
- A new visual specification, macro_colorByChain, will color a PDB file by chain by iterating through HSL colorspace.
- A new visual specification, proteins_usePolarityColors, will color amino acids in a PDB file by polarity.
- Star geometries can now be rendered for non-bonded atoms. This is useful for rendering ions/metals and for displaying water oxygens in crowded PDB files. Enable it with the visual specification, atoms_nonBondedAsStars_3D.
- A new visual specification, atoms_displayAllCarbonLabels_2D, to render all carbon labels. This is useful for rendering Lewis dot structures.
- Fixed bug that prevented multiple SketcherCanvas instances from being declared on the same page
- Fixed bug where the help button on the SketcherCanvas did not function on mobile devices.
- Fixed bug with the SketcherCanvas where toolbars would appear cutoff on the sides of the screen if the sketcher was to close to the edges of the page.
- Added support for pixel ratios in WebGL canvases.
December 01, 2011
This minor update provides a few improvements.
- Mobile events are now only linked on mobile devices, while mouse and keyboard events are only linked on non-mobile devices. This fixes the issue where mobile browsers that simulate mouse events would be double calling component functions.
- Removed old if statements in WebGL shaders.
- Changed highp declaration in fragment shader to mediump to better support mobile devices.
- Atom symbols in MOLfile output are now left-aligned.
November 14, 2011
This minor update provides a few improvements.
- When bonds are colored by Jmol colors, they can now be rendered with a color split, instead of a smooth gradient. By default, the color will be split; the color style can be set to a gradient by changing the bonds_colorGradient visual specification to true.
- Added a new iChemLabs function, getMoleculeFromContent(), which will return a Molecule data structure from an input string, given a format that ChemDoodle supports.
- Updated glMatrix to version 1.0.1.
- Fixed issue where drop down buttons for the sketcher would not update the first time their function is changed.
- The JCAMPInterpreter will now recognize shift offsets.
September 28, 2011
This significant update provides new WebGL features, CIF file interpretation, 3D graphics for nucleic acids, a handful of new iChemLabs services and general improvements.
- Advanced support for the features in PDB files. HETATM atoms are now displayed by default, as they usually describe ligands. Protein and nucleic acid atoms will be hidden by default, and can be shown with a visual specification. You can also control a cutoff distance from ligand atoms to show residue atoms. Water molecules can be shown and hidden with a visual specification.
- New 3D graphics for nucleic acids. Tubes represent the phosphate backbone with platforms representing the bases.
- Protein ribbons now have thicknesses and this can be controled with a visual specification.
- Crystallographic Information Files can now be read with the new CIFInterpreter class. See this page for more details.
- Unit cells can now be rendered for relevant data, and will be automatically rendered for CIF data. The unit cell color and line width can be set with visual specifications.
- Added new iChemLabs services.
- kekulize() – provided with an input Molecule, this function will kekulize either the entire single bond system, or just the resonance bonds into a valid kekule structure where pi delocalization is maximized; the kekulized copy structure will be returned as a parameter to the callback function
- isGraphIsomorphism() – this function will determine if the arrow molecule is a graph isomorphism of the target molecule, with the boolean value being returned as a parameter to the callback function
- isSubgraphIsomorphism() – this function will determine if the arrow molecule is a subgraph isomorphism of the target molecule, with the boolean value being returned as a parameter to the callback function
- readIUPACName() – given an IUPAC name, the corresponding molecule will be returned as a parameter to the callback function
- generateImage() – generates an image file of the input Molecule in any of the chemical formats that ChemDoodle understands (specified by the ext parameter); returns a link to the callback function that is the url of the file on our server that can then be downloaded
- getZeoliteFromIZA() – given an IZA code, the read zeolite, in a Molecule data structure, will be returned as a parameter to the callback function; the three number parameters are the supercell dimensions, and if not specified, will default to 1
- Visual specifications can now be set to individual atoms, bonds or groups, for total control over graphical rendering. See this page for more details.
- Canvases now take into account the device pixel ratio for absolutely crisp graphics on mobile devices that support densely packed pixels. In other words, the Retina display on the iPhone 4 is now supported as well as various Android devices that have high resolution screens.
- Added a new class, Splitter, to split a Molecule data structure composed of multiple discrete structures, into individual Molecule data structures.
- A new feature detection function, ChemDoodle.featureDetection.supports_gesture(), to determine if the browser supports multitouch and gestures.
- iChemLabs services are asynchronous by default; they can now be forced synchronous, by setting the ChemDoodle.iChemLabs.asynchronous variable to false.
- Orthographic projections for WebGL canvases can now be set with visual specifications.
- The calculator for the sketcher now lists more descriptors.
- The calculator for the sketcher now displays units for calculations.
- Renamed the “ribbon” visual specifications to more closely match the standards by which the other specifications are named. Make sure to update these names in your programs.
- MOLInterpreter no longer multiplies the y coordinate by -1, as necessary for 2D files, if the multiplier is 1, so stereocenters in 3D files remain correct.
- Added shader debug alerts for program linking.
- WebGL code cleaning and optimizing.
August 18, 2011
This minor version update fixes a few bugs.
- A new package ChemDoodle.io.PNG, for generating png images from Canvases.
- Added 2D rendering support for hashed and wavy bonds.
- Now packaged with jQuery 1.6.
- Minor optimizations.
- Spectrum x-axis now intelligently lays out tick labels so they don’t overlap.
- Spectrum y-axis grids are now displayed even if the y-axis is hidden.
- Fixed issue for Safari on Mac OS X Lion where group buttons for the sketcher would open their tray behind the sketching canvas.
April 28, 2011
This update introduces a new component, the Periodic Table Canvas, which displays an interactive and customizable periodic table of elements. Minor bug fixes are also provided.
- A new component, the Periodic Table Canvas is introduced. This component displays a periodic table of elements. The graphics are fully customizable and you can attach input events to the component. The most immediate use of this component is as the element chooser in the 2D sketcher. The tutorial page on this component can be found here.
- Components may now be constructed on <canvas> elements already constructed in the DOM. Just set the id of the <canvas> element to a value to be used in the component constructor, and that <canvas> will become the component instead of a new one being generated.
- Fixed issue where improperly formatted, non-official, PDB files using the ATOM record caused issues.
- Fixed issue where name values were not being properly interpreted in some PDB files.
- Fixed issue where elements with no published vdW radii caused rendering issues when vdW radii were used. The default value of 1Å is now used if no published value is provided. These values may always be set in the ChemDoodle.ELEMENT array.
- Fixed issue where starting a mobile gesture did not clear a ring preview for the sketcher.
- Fixed uncought bug when trying to load a null molecule into the sketcher.
March 13, 2011
This minor update provides full support for Microsoft Internet Explorer 9. Additionally, a few features are improved and a few bugs are fixed. The performance of the 3D components in Google Chrome has been further optimized and is now very fast for even the largest 3D scenes.
- Microsoft Internet Explorer 9 is now fully supported. Try the sketcher!
- iChemLabs services now work in IE9 and Opera. Try any of the non-WebGL demos in any browser, and it should work.
- Improved the rendering of wedge bonds for 2D components.
- Added two new visual specifications, atoms_font_bold_2D and atoms_font_italic_2D, which will control whether atom labels are drawn with bold and italic styles.
- Added more robust color support for 3D components. Colors for visual specifications can now be specified in HEX, RGB, or by named color.
- Fixed issue where element types with 2 or 3 length symbols were not being properly read from PDB files.
- Improved WebGL performance to be very efficient in Google Chrome.
March 08, 2011
The minor update brings several WebGL optimizations to improve performance in Google Chrome. The glMatrix library is updated to version 0.9.5.
February 24, 2011
This update provides significant new WebGL features. The PDBInterpreter class will now parse residue data and generate ribbon models for WebGL scenes. Support is provided for both proteins and nucleic acid based macromolecules. Many options are provided, such as cartoon based graphics and different residue color sets. Additional WebGL features include higher bond order rendering and efficiency improvements. The mobile touch event and gesture system has been upgraded to support more advanced gestures, such as multiple-taps and multiple-touch drags.
- The PDBInterpreter class will now parse residue data from files and generate ribbons for rendering. The ribbons can be continuous or cartoonized. Both “Amino” and “Shapely” residue color sets are provided. All colors for ribbons and cartoon models can be customized. Both the front and back colors of ribbons can be customized.
- Added a new static HashMap, ChemDoodle.RESIDUE, that contains Residue data structures and associated information.
- Added new VisualSpecifications.bonds_showBondOrders_3D, that when set to true, will render higher order bond orders in WebGL scenes. The higher order bonds will always orient themselves to face the camera.
- Added new VisualSpecifications.atoms_vdwMultiplier_3D specification, that will multiply to the van der Waals radius in WebGL scenes when vdW radii are used.
- Added higher level mobile gesture, _Canvas.multitouchmove, that will notify a Canvas when multiple fingers are moving.
- Added higher level mobile gesture, _Canvas.dbltap, that will notify a Canvas when a finger double-taps. If this is not implemented, an event is sent to the dblclick handler, if available.
- All ChemDoodle.iChemLabs calls now accept an optional parameter function, called errorback, that will be automatically called if any errors or warnings are thrown using iChemLabs services.
- Fixed issue for the PerspectiveCanvas, on mobile devices, where the y-axis scale would initially jump when doing a pinch gesture to scale the spectrum.
- Double tapping a PerspectiveCanvas on mobile devices will now reset its view.
- Two finger sliding on a PerspectiveCanvas on mobile devices will translate the spectrum view.
- The sketcher, on mobile devices, now reverses single-tap events if multiple fingers are detected.
- Fixed issue where plus and minus keys were not being recognized in Firefox/Opera.
- All Array appends based on “array[array.length] =” have been changed to array.push().
- Improved WebGL Ball and Stick rendering.
- Improved WebGL rendering efficiency.
- The default multiplier for reading PDB files is now 1.
February 10, 2011
This update brings significant improvements to the Spectrum canvas. Interpretation of JCAMP files has been perfected. Additionally, interfacing with iChemLabs services is now much cleaner, with proper warning messages when XHR2 is not supported. XHR2 support for Firefox 3 is now provided, so iChemLabs services now work in all browsers except Opera.
- The JCAMPInterpreter class now has a boolean parameter, convertHZ2PPm, which, when true, will automatically convert spectra in HZ to PPM when read.
- Added a new gesture to the PerspectiveCanvas, shift+drag, which slides the spectrum.
- Added a new option to the Spectrum class which allows for autoscaling the y-axis when zoomed in.
- Added a new Spectrum function, alertMetadata(), which will pop up an alert displaying the header information of the corresponding JCAMP file.
- Added new functionality to the Spectrum class, to render spectrum metadata at the top left corner of its plot. This list display is completely customizable.
- Integrations now ignore any y-values less that 1% of the maximum y-value in the spectrum. This parameter is tunable.
- Setting an unsymmetrical bond (wedge, double in ring) bond type twice in the SketcherCanvas will flip the bond.
- An error message is now displayed when contacting iChemLabs services and XHR2 is not supported.
- Added iChemLabs services support to Firefox 3; now iChemLabs services are supported in all recent browsers, except Opera.
- The ChemDoodle.featureDetection.supports_xhr2() function is now local and no longer requires iChemLabs services.
- The ChemDoodle Web Components qUnit testing suite is now provided in the download.
- Updated jQuery to version 1.5.
- The spectrum y-axis now scales in place.
- Fixed issue where the JCAMPInterpreter was rounding peak table values.
- Integration lines now remain static when the y-axis is scaled.
- Fixed issue where performance would degrade when zooming in on a spectrum.
- Fixed bug where a crash would occur when zooming in close on an integration line.
- Spectrum x-axis ticks are now more sensitive for better display of information.
- Fixed issue where the JCAMPInterpreter class was incorrectly handling x-sequence checks.
- JCAMPInterpreter now correctly handles y-value checks.
- JCAMPInterpreter now reads in JCAMP peak tables that are missing semicolon delimiters.
- The help button in the SketcherCanvas component is now clickable regardless of the current Canvas scale.
- Implicit hydrogen counts are now properly accounted for based on charge and valence.
- Fixed bug where setting the same bond multiple times caused multiple actions to be pushed to the history stack in the SketcherCanvas.
- Fixed bug where the multiplier to the ChemDoodle.readPDB() shortcut was being ignored.
- Scrolling sensitivity is increased by a factor of 10 to account for upcomming browser changes.
- Minor improvements to the WebGL rendering code.
- Removed dead code.
- Added semicolons after local function objects to avoid possible issues in the future.
January 12, 2011
- A new full-featured sketching component, SketcherCanvas, has replaced the DoodleCanvas component. This component is completely customizable, from the buttons and canvas theme, to the way structures are rendered. This is the most professional and advanced web based sketcher available, with or without plugins. It is completely free and open-source.
- The ChemDoodle Web Components library now has full access to the entire ChemDoodle desktop API through AJAX XMLHttpRequest Level 2 to our server. Now you can use the ChemDoodle Web Components library to manipulate SMILES, read and write ChemDoodle and ChemDraw files, simulate NMR, generate descriptors and much more.
- Added a complete and thorough tutorial to introduce users to using the ChemDoodle Web Components library. It covers everything from using the ChemDoodle object, to creating complex animations, to generating SMILES strings.
- The animations framework has been improved. The framework now keeps track of time between repaint calls, for very smooth and consistent animations across all devices. The default timeout now specifies framerates of 30fps. The abstract nextFrame() function now takes a delta parameter to notify the update of how much time has ellapsed since the last call.
- Calls to WebGL have been updated in anticipation for the official launch of the technology.
- The WebGL warning has been removed, and WebGL canvases now just render that WebGL is unavailable if they cannot perform.
- Double-clicking on the TransformCanvas component now centers the structure.
- The touch event and mobile gesture framework has been improved to better handle mobile devices.
- A new function has been added to retrieve the version of the current source, ChemDoodle.getVersion().
- Added a new specification for molecular data in JSON for optimized storage and handling of chemical information.
- Charges are now placed in more aethetic positions.
- Fixed bug where bonds referenced past rings, even after they were destroyed.
- Fixed a rare issue where some mouse events were being doubly called.
- Multi-word font names are now handled properly.
- Removed Hanser ring detection.
- Fixed bug where wedge bonds did not color according to JMol colors when the corresponding specification was set.
- Changed key event access from keyCode to which.
- Removed unnecessary semicolons after loops.
November 28, 2010
This is a minor update, adding the ability to render isotope mass values as well as providing a few bug fixes and improvements.
- Isotope mass values are now displayed in the appropriate position next to atom labels. This value is defined by the Atom.mass variable. By default it is -1; the attribute will be rendered if this variable is set to a positive value. The Element class now holds an additional variable, Element.mass, which defines the integer value for the mass of the most abundant isotope of the element. The MDLInterpreter class now reads and writes isotope mass values.
- Changed all calls to jQuery from $. to jQuery. to avoid conflicts with other 3rd party libraries that may be in use.
- Updated font selections on the overview pages to better suit macs and mobile devices.
- Removed redundant parseInt calls in MDLInterpreter.
- Removed unneccessary variable declarations.
- Updated the calculation of mobile event locations in accordance with the iOS 4.2 update.
- Fixed issue where a mobile touch event would be registered after a gesture, causing irregular behavior in components on mobile devices.
- Added a fallback message to the canvas tags to be displayed if the browser in use does not support HTML5/Canvas. This should be an exceedingly rare occurance now.
- Updated jQuery to version 1.4.4. No changes were required.
- jQuery plugins in the ChemDoodleWeb-libs.js file are now labelled clearly. If you need to remove jQuery from the libs file, make sure to retain the plugins as those are still required for ChemDoodle Web Components to operate properly.
August 15, 2010
Components for spectra and reactions have been added. The entire library has been optimized to significantly improve performance across browsers and to minimize size, including the removal of several external libraries. 3D ChemDoodle Web Components have also been optimized and updated to reflect recent retrospective changes to the development browsers.
- Spectrum graphics are now provided. Added SpectrumCanvas as a child of Canvas for rendering spectra. There are currently two children, ObserverCanvas, which displays a static image of a spectrum, and PerspectiveCanvas which allows for interaction with a spectrum. Spectrum graphics are completely customizable and grids and integration lines can be shown.
- Added JCAMPInterpreter that reads JCAMP-DX spectra for the spectrum Canvases. All compressed JCAMP-DX data formats are read. Additional spectrum descriptors are also read, such as title, units, etc.
- Reactions graphics are now provided. Added a new component, Layout, which defines how multiple, related Canvases are displayed relative to each other. Currently, there is only a single Layout, SimpleReactionLayout that shows reactants and products with plus symbols in the appropriate places, as well as a reaction arrow and condition text. All decorations for Layouts are customizable.
- Charges are now rendered on molecules. Charges are now read and written by MDLInterpreter. The Doodler now manipulates charges using the + and - keys while an atom is hovered.
- Optimized the ChemDoodle Web Component library for faster loads, interpretation and runtimes.
- Hidden Carbons (those connecting two and only two bonds of the same bond order that are parallel to each other) will now have their labels drawn. The VisualSpecifications.atoms_showHiddenCarbons_2D boolean variable now controls this setting. It is true by default.
- Added more ring perception algorithms. All ring perception classes are now children of the RingFinder class which contains methods for reducing molecule graphs to improve perception runtimes. Ring perception classes include HanserRingFinder, EulerFacetRingFinder and SSSRFinder. ChemDoodle Web Components now use a more efficient means to calculate rings, rather than just using the Hanser method, leading to much faster page loads.
- Added Molecule.scaleToAverageBondLength() and Molecule.getAverageBondLength() to help in standardizing input from various sources of chemical files.
- Added Molecule.getBonds(Atom a) as a helper file to return an array of the Bonds connected to the input Atom. Removed the Molecule.getBondNumber(Atom a) function as it is now redundant. Changed the Molecule.getCoordinationNumber(Atom a) function to Molecule.getCoordinationNumber(Array bonds) to be more efficient with the added getBonds method.
- Added Bond.getLength() and Bond.getLength3D() helper methods.
- Added a new Counter class that is the parent for objects that calculate integer descriptors for molecules. Both FrerejacqueNumberCounter and NumberOfMoleculesCounter have been added.
- Setting VisualSpecifications.backgroundColor to null will now allow you to show transparent components.
- Added middlemousedown, middleclick and middlemouseup events to the Canvas class.
- File Loader now displays a message if the input file does not contain chemical or compatible data.
- The latest version of jQuery, 1.4.2, has been integrated.
- Removed the antiquated BrowserDetect external library. Replaced with simpler internal source.
- The Sylvester and glUtils external libraries have been replaced with the smaller and more efficient glMatrix library.
- Changed the default framerate of animations to 20fps to greatly improve performance.
- Fixed a bug in the pre-handling of mobile events where coordinates were offset.
- Fixed issue where the default mobile actions for events were overridden even if the event was not supported.
- Fixed several issues in Opera, and the browser is now fairly well supported.
- Fixed bug where unsaturated terminal atoms would incorrectly stack Hydrogens vertically.
- Replaced the right-click and drag jQuery extensions with simpler and more reliable internal source. This fixes a number of inconsistencies in mouse gestures for some browsers.
- Removed unneeded source to make the library smaller and Google Closure is now used instead of Yahoo YUI to minimize and optimize the source.
- Modifier keys now call the Doodler to repaint for immediate visual feedback.
- Fixed issue where the bond highlight in the Doodler sometimes drew a full circle in Google Chrome.
- The quaternion rotations option for Transformer Canvases has been removed. The trackball external library has been removed.
- ChemDoodle Web Components will no longer hang when loading highly embedded ring systems.
- Fixed boundary conditions in Hydrogen label stacking to prefer horizontal layouts.
- Fixed issue where some rings were not discovered if the Molecule object’s graph was disjoint.
- Fixed issue where empty message did not appear in Firefox.
- Stopped automatic firing of the File Loader action when loaded in Firefox.
- 3D ChemDoodle Web Components have been updated to reflect the recent retrospective changes to the browsers.
- 3D ChemDoodle Web Components now use the correct recent WebGL typed arrays.
July 23, 2010
Major additions in this release are the rendering of implicit hydrogens in 2D components and an advanced framework for handling touch events and gestures from mobile devices. iPhone OS and Android are now fully supported!
The ChemDoodle Web Component framework for handling touch events and gestures from mobile devices (notably iPhone OS and Android) has been completed. The Canvas class now has 6 new optional abstract methods: touchstart, touchmove, touchend, gesturestart, gesturechange and gestureend.
Users can interact with ChemDoodle Web Components through a desktop browser using a keyboard and mouse or through a mobile browser using touch events and gestures. For desktop browsers, implement the mouse and keyboard event listeners to perform actions. On mobile devices, the touch events and gestures will be closely mapped to the most equivalent mouse and keyboard event handlers. This is perfect for simple applications as the drag, mousedown and mouseup events are closely matched to touch events. However, hovering is something that is not possible on mobile devices, so mousemove handlers will never be called. Additionally, gestures like pinching have no mouse equivalent.
To rectify this, write event handlers for any of the touch or gesture events to have mobile device interactions forwarded to more appropriate methods. If those mobile gesture handlers are implemented, the Canvas class will forward the corresponding events to them instead of to the mapped mouse and keyboard events. This way, you can implement all of the handlers for your single component and it will perform suitably on both desktop and mobile browsers!
- Implicit hydrogens are now rendered in 2D components for all atoms with visible labels. This specification is controlled by the VisualSpecifications‘ atoms_implicitHydrogens_2D variable which is true by default. The numbers in hydrogen labels will be properly subscripted and the hydrogens will stack depending on the orientations of bonds from the concerned atom.
- To correspond with the rendering of implicit hydrogens, a new VisualSpecifications variable, atoms_displayTerminalCarbonLabels_2D, has been added that will show carbon labels for terminal carbons. Combined with the atoms_implicitHydrogens_2D specification, methyl groups can be nicely displayed. This specification is false by default.
- Animations for Rotators and Rotator3Ds can now be toggled by double clicking on them.
- The zoom scale for Transformer components can no longer become a negative value, which caused molecules to invert.
- The element selecting algorithm performed when setting atom labels in the Doodler component has been greatly improved to mirror how ChemDoodle works.
February 06, 2010
- New 3D components have been included: Viewer3D, Rotator3D, Transformer3D and MolGrabber3D. Their implementation and functionality is very similar to their 2D analogues. The API has been updated for these new components.
- Fixed small issue where short bond lengths were not clearing bond overlaps.
- Expanded the atomic data system to better match our ElementalData database. A new Element class has been added for storing elemental data, and an array of Elements is now provided in the ELEMENT hash array where the element symbol is the lookup key.
- Added more links and updated the browser compatibility list.
October 08, 2009
This release stabilizes the API and provides in-depth extendable functionality for creating your own custom components. The API has seen some major changes (it has been significantly improved), so make sure to review it before upgrading. jQuery has been introduced to standardize the handling of user input events, simplifying the Canvas class. Two new components have been introduced: Slideshow and Hyperlink. In addition, our test driven development suite is now exposed on the site using a modified version of QUnit. ChemDoodle Web Components 2.5 works on all major browsers, including Microsoft Internet Explorer, Mozilla Firefox, Apple Safari and Google Chrome/Chromium. Yahoo YUI Compressor is now used to minify the libs for even faster page loads.
- A new Slideshow component has been added for displaying multiple molecules, one at a time, with transitions in between.
- A new Hyperlink component has been added to provide basic button-like interaction with visitors. This component is completely customizable, view the components page to see some nice examples. They can redirect users to urls or execute functions on click.
- The API for handling user input events has been changed significantly, all canvases are now extendable, and there is a new class called AnimatorCanvas to provide an extendable framework for producing animated components. The RotatorCanvas.startRotation() and RotatorCanvas.stopRotation() functions have been replaced with AnimatorCanvas.startAnimation() and AnimatorCanvas.stopAnimation() respectively. The API provided on the web is now much more thorough, better formatted, and is linked for easy navigation.
- The jQuery library is now used by the Canvas class to standardize the handling of user input events.
- Our test driven development suite is now exposed on the site using a modified version of QUnit.
- Images are now supported. You can set background images for the components, and hover images for the Hyperlinks. Images override the backgroundColor visual specification.
- Support for Google Chrome Frame has been implemented. The ChemDoodle Web Components now work beautifully on Microsoft Internet Explorer.
- Bond stereochemistry is now possible. You can specify protruding and recessed single bonds as well as ambiguous double bonds. They are drawn as solid and dashed wedges and a crossing double bond.
- New visual specifications added: atom label buffer, wedge thickness, hash width, hash spacing.
- Added another algorithm to the TransformCanvas for standard x and y axis 3D rotation. This is the default, as there seems to be an issue with quaternion rotations, where some mouse directions are reversed. To enable quaternion rotations, set the TransformCanvas.useQuaternions boolean to true.
- A new MolGrabberCanvas function, setSearchTerm(), has been added to preset a term to be queried on page load.
- Google Chromium added to the list of supported Linux browsers, and it works very, very well with the ChemDoodle Web Components.
- Yahoo YUI Compressor is now used to minify the the libs for even faster page loads.
- Added more links to the Community Resources section. If you have discussed or used the ChemDoodle Web Components, let us know and we will add a link to you as well.
- Fixed issue where strokeStyle was not being set when drawing atoms as circles, leading to unexpected graphical effects when specifying bonds_JMOLColors to true. The strokeStyle is now set to ‘black’.
September 14, 2009
This release adds new functionality and fixes some minor issues. For a nice demo of the enhanced ChemDoodle Web Components, visit web.chemdoodle.com/pdb.php.
- Sample PHP code for querying the RCSB Protein Data Bank has been added.
- The ability to read PDB files has been added, along with a new Angstroms per bond length visual specification.
- Both atoms and bonds within a molecule can now be sorted by z coordinates.
- Covalent bonds can now be calculated based on covalent radii.
- Added new functions for manipulating 3D coordinates between atoms.
- New visual specifications for contrasting bond overlaps.
- A function to remove Hydrogens and their bonds.
- Added a function to copy structures.
- The API has been completed.
- When reading MOLFiles, the y coordinate is now flipped so that structures appear right side up on the inverted canvas.
- MOLFile output is now centered first.
- Fixed minor bug that mishandled null content sent to writeMOL(content).
- Fixed bug where strokeStyle was bring set for atom circle width instead of the correct lineWidth property.
- Submit button names no longer cause conflicts.
August 16, 2009
Initial public release.
June 15, 2009
Initial internal release.