============================================================================== === TO DO ================================================================== ============================================================================== Weird PDBs: 1ACX - weird geom leads to weird bonding patterns We could modify AtomGroup.connectHeavyAtoms() to keep only the N shortest bonds... N-to-C or 5'-to-3' coloring crayon: offer for C-alphas / pseudobackbone? ribbons could be nicer if we had xyz for center of nextRes, prevRes GUI for: only A alts? only atoms with B -lt 30? Q -gt 0.66? Element color map should be pluggable, not from Util (VdWLogic.printAtomBalls) The case for ribbon to ball-and-stick communication: BnS sidechains should draw to a ribbon guidepoint -- which residues, and how to get out the guidepoint coordinates? Sidechains should just generate the guidepoints for themselves! H checkbox should be disabled when no H are present! pointIDs should include file names and occupancies (if not zero?) doesn't make any ribbons for PDB 1wej:F (horse cytochrome c) -- why not? Ribbon code still slightly off on 2vy1 chain W res 2-4. Something to do with contiguous residues list not getting made correctly. ============================================================================== === CHANGE LOG ============================================================= ============================================================================== ### 1.04 ### - Fix for bug in modified RNA bases where CM2 methyl wasn't getting hydrogens drawn. Turns out CM2 is both a mainchain and a sidechain atom! - DAK added AltConfNetworkCrayon and modified BallAndStickLogic accordingly. - DAK added methods with states argument for printHets/Metals/Waters to BallAndStickLogic, and helper methods to ensure backwards compatibility. - DAK made changes to Util, StickPrinter, and BallAndStickLogic to allow the client to print a kinemage for some residues and provide flanking residues so the "ligating" bonds are also drawn. ### 1.03 ### - Quick fix to AtomGraph to re-enable drawing of disulfides. Sidechains still bond to mainchain if too close. - Change to BallAndStickLogic to not require model names to only be numbers. ### 1.02 ### - Modified ballandsticklogic and datacache to take alternate states, for use with RNA rotamer tool. - Added pinktint back into list of backbone colors, per Jane's request. - Changed masters all throughout Molikin to match new consensus with Prekin - Change in AtomGraph to hopefully prevent extraneous bonds being drawn between sidechains. - Added new kin vs. append to current options to Quickin (dak) - Added public width variable for vectorlists to BallAndStickLogic (dak) - Added calculation of ribbon sidedness (inside of helix and uniform strand sidedness across a sheet) in RibbonPrinter.printFancyRibbon() - Made Quickin lots include waters, as in Prekin ... then undid that (DAK) ### 1.01 ### - Modified drop pdb to do CA by default for lots. - Modified ribbon code to do fancy coil edges, using new rear and fore keywords - Moved PDB file suffixes to CoordinateFile. ### 1.00 ### - Raising molikin to version 1.00 to prepare for deployment at PDB. - Added capability for doing only one model. - Added warning to Quickin if input file is large and running as applet. - Fixed bug where PNA cif files were not getting drawn. - Fixed bug where NA cif files weren't getting recognized as NA. ### 0.22 ### - removed untwist ribbon checkbox from gui - Added quick kin tool, with lots, ribbons, ca trace, separate residues, ribb+lots. - Added a few quickin options to mac's drag and drop of pdb files. - Added Ctrl+I to molikin plugin. - Added loading of files from king cmdline to quickin. - Fixed bug with ribbon code where if an nucl acid started with certain partial resides, then whole chains would not be drawn. - Added initial cmdliner, with lots and ribbons. - Fixed bug where if a nuc acid chain ended without C4', then NullPointerExcept thrown. - Fixed various bugs if file was CA only with UNK atoms (see 1hr3). - Fixed odd bug with ribbon code hiccupping on NA residues missing P (see 2vy1 and 1e3o). - Added gz file reading. ### 0.21 ### - added capability for appending pdb id to end of point id. - fixed bug where occupancy wasn't being put in point id. ### 0.20 ### - Improved compatibility with nucleic acids pdbv3.x. ### 0.19 ### - Changed error reporting email to vbc. ### 0.18 ### - Fixed rainbow colors, they were reversed. - Fixed PDB file filter so it assumes a file is PDB format if not CIF. ### 0.17 ### - Fix in ResRanger, I think for the new Hybrid-36 stuff. ### 0.16 ### - Fixed a bug where molikin wasn't able to handle models with different chainIDs. - added support for half-bond coloring to ball-and-stick mode. Only Bad People would actually want such a thing, of course ;) ### 0.15 ### - added pointIDs for ribbons. Currently NOT pluggable, and method of switching from protein rules to RNA/DNA rules is very kludgy. ### 0.14 ### - Molikin uses chain IDs (conservatively) to avoid cross-chains bonds in EM structures. Still errs on the side of too many bonds instead of too few. - added ResTypeCrayon; requested by members of BCH 222 - added option to color sidechains/bases by residue type using ResTypeCrayon - fixed color-by-residue type bug: "if" instead of "else if" caused stick drawing to fail! - fixed ribbon code to not die on C-alpha only protein chains (e.g. 2MYS) - fixed "CA-only" bug in guide points for nucleic acids too (if it ever occurs) - tried to color N to C by breaking ribbons into pieces, but you end up with arrowheads in random places and the pieces never quite fit together right. - wrote hack crayon for N to C coloring, added it to ribbon GUI ### 0.13 ### - added option to draw disulfides all in yellow - disulfides as part of general sc drawing now can cross chains - MolikinWindow is now better positioned relative to the main KiNG window - moved ball-and-stick and VDW rendering into ___Logic classes. - added crayons: composite, B-factor, occupancy, disulfides - enabled "color by" logic for VdW and sticks - changed DecimalFormat instances to always follow US locale - now Molikin handles Drag-n-Drop of PDB, CIF files ### 0.12 ### - changed how Crayons work, to allow them to also filter atoms/bonds - changed StickPrinter to honor Crayon.shouldPrint() - matched AltConfCrayon and ProteinSecStructCrayon to the new Crayon interface - changed ConstCrayon to the new Crayon interface - changed extra digits in ___Printer classes to be optional - added variable width output to skeined ribbons - added methods for 1, 2, 3, and 5-skeined ribbons - moved drawing logic from gui.RibbonPane into logic.RibbonLogic. This will facilitate building a command-line UI later on. - set black-edged ribbons as the default output of RibbonLogic - fixed higher/lower in wholebond printer - got nucleic acid ribbons working - nucleic acid ribbons now match Prekin for B. Golden's "twort" structure - protein ribbons still match Prekin for 1UBQ - removed ProteinSecStructCrayon - changed arguements for RibbonCrayons - fancy ribbon now uses crayons, though not for breaks - fancy ribbons now use colorsets ### 0.11 ### - plugin now marks kin as modified on Append, but not on New (may be throwaway) - started Ribbons.get(Protein|NucAcid)Contigs() - added classes GuidePoint, RibbonPrinter, and RibbonPane - updated MainGuiPane to include ribbons option - added GuidePoint.prevRes and .nextRes - added RibbonCrayon and ProteinSecStructCrayon; ribbons are now colored by SS - added [+] and [-] icons to the MainGuiPane interface - merged BondOptimizer code into Bond to reduce total number of classes ### 0.10 ### - removed all the justifyLeft()'s from PrekinIDer after profiling showed that to be a hotspot. Formatting numbers and lowercasing are still expensive. - made waters peachtint, 0.15 to match Prekin - added AltConfCrayon to handle alt conf pointmasters; set it in GUI - added CompositeCrayon to allow multiple crayons to play well together - made changes in driftwood.moldb2 to fix alt conf problem with 1US0, etc. C conf had few atoms; fill-in with duplication created many extra A copies. Drawing still seems to work fine now that fill-in is done without cloning. - complexified Util.getElement() b/c 1US0 has junk letters in 1st atom name pos - removed Util.is(H|Q|CNO|S|Disulfide) b/c they suffer from the same problems. - 1US0 still doesn't quite work b/c "AC.." is a valid element name! - removed Util.getElement() b/c we now have moldb2.Atom.getElement() - this has finally fixed the problems with rendering 1US0 - Calphas / pseudo-backbone is "off" if we're also doing mainchain - added a few more NA names based on Prekin's NAList - added _CM2 and _O3P for tr0001 to Util.isMainchain() - modified gui.SelectorPane to show chains/models only if there are multiple - fixed insets on SelectorPane's text field for residue numbers - B factor is only printed in point ID if != 0 ### 0.09 ### - modified the GUI to iterate models, chains at top level; not per panel This keeps colors consistent and pieces grouped together. Changes to moldb2.Model make the chains come out in order, too. - changed defaults for BallAndStickPane - tr0001 OMC 32 caught a possible endless loop in BondOptimizer.extendLeft() - added pluggable point IDs and matched default to Prekin output - added check for whether half-bond midpoint is actually needed - added ability to remove a DrawingPane from the GUI, or to remove all - added Util.getVdwRadius(), based on Probe's atomprops.h - added gui.VanDerWaalsPane to do ball/sphere vdW renderings - created much nicer interface for KiNG plugin; removed old one - tweaked layout on MainGuiPane ### 0.08 ### - changed sort order of Bonds to work better with: - added Util.optimizeBondSequence() for cleaner kinemages - experimenting with up-front optimization of the set of all bonds shows this doesn't improve kinemage connectivity once bonds are broken into mc, sc, etc. - added Bond.reverse() to facilitate optimizing the connectivity. Is this a good idea??? - NO! added "mirror" field to Bond instead, so they remain immutable. - elaborated on Util.selectBondsBetween() based on StickPrinter experience - added BondOptimizer, which can now truly maximize the connectedness Adding calls to this from StickPrinter actually speeds things up, as well as reduces the size of the kinemage file. - streamlined the operation of BallAndStickPane a bit - added PseudoBackbone for doing C-alpha traces and DNA/RNA pseudo bb. - finished implementation of pseudo-backbone and C-alpha traces - mocked up a (non-functional) full GUI screen - finished work on main GUI screen (for the time being); it seems to work well ### 0.07 ### - simplified StickPrinter and made it significantly faster (!) - added halfbond capability to StickPrinter - Oops! Putative speed-up was just a bug (not drawing any sidechains). Still, StickPrinter is simplified with no measurable performance penalty. - improved SelectorPane layout constraints - added BallAndStickPane; controls are not functional yet - changed selection API slightly in SelectorPane - added DataCache for caching calculated geometry data for each model - added Sets of Residues to ResClassifier - started moving printing logic out of Test and into BallAndStickPane; protein drawing is now working in BallAndStickPane - simplified BallPrinter - completed all drawing in BallAndStickPane except pseudobb and atom balls - added getElement() and getElementColor() to Util - added BallAndStickPane.printAtomBalls() and hooked it up to the GUI - moved the "covalent" naming out of AtomGraph and into DataCache. This allows us to easily make AtomGraph an abstract class in the future, instances of which might concern covalent bonds, H-bonds, etc etc. ### 0.06 ### - fixed isX() typo bugs in Util - added BallPrinter - further subdivided atoms in AtomClassifier - added BondCrayon, AtomCrayon, and ConstCrayon - modified BallPrinter and StickPrinter to take a Crayon object - added primitive SelectorPane and tested it for selecting sc to draw - added ResRanger for managing range selection statements - added range support to SelectorPane and coupled List to TextField - fixed inclusive/exclusive index issue with BitSet in ResRanger - text field selections are now coupled to the list - testing against 1RTU, 1EMA: the protein MODRES is pink (het) but still connected as it should be ... this seems like a reasonable result. Plus, I can't fix it without screwing up other hets! ### 0.05 ### - added isProtein, isNucleicAcid, and isIon to Util - added ResClassifier to decide protein/nucleic/ion/water/het - added AtomClassifier to decide bb/sc and heavy/H - added BondClassifier to get standard kinemage groupings (bb/sc, prot/het) - added some extra sets to AtomClassifier for convenience - rewrote Test in terms of the new classes -- shorter and cleaner - removed BondClassifier; on further thought, it's not necessary ### 0.04 ### - string interning in moldb seems to have sped things up across the board, though I'm not sure why -- maybe faster comparisons somewhere? - updated Test b/c driftwood.moldb2.ModelGroup became CoordinateFile ### 0.03 ### - refactored Test to accept either PDB or mmCIF input - stopped Test from printing xxxlists when there is no content - created KingMoleculeImporter as a plugin to load PDBs/mmCIFs directly in KiNG It uses Test to do its drawing and (at the moment) is not configurable. - changed AtomGraph and Util.selectBondsBetween() to return a Collection of Bond objects, rather than a SortedSet. AtomGraph still uses TreeSet, but Util uses ArrayList b/c it's faster/cheaper and the Bonds are already sorted. - tested importing 1JJ2 (lg. ribosomal subunit) into KiNG -- works pretty well, except that some hets are "bonded" to protein (same for 1BOV and others...) ### 0.02 ### - added isSS(), isDisulfide() to Util - added selectBondsBetween() to Util - added getCovalentUnbonded() to AtomGraph - added segregation by atom type and lots-like drawing to Test ### 0.01 ### - created AtomGraph, Bond, Util - created Test to do quick-and-dirty tests of the basic functions - using Unix TIME, tested vs. Prekin on 1JJ2 -- comparable speed. Slower on 1UBQ, probably due to JITing (and other overhead?)