SEE ALSO LIGNSR.TXT for the reporting mechanism in the Mol Info Tab. For many examples of dipeptides & dinucleotides, see SALTBR.TXT and DINUC-DIPEP.TXT ------------------------------ scripts.js: ligandsPlusExpression, ligandsPlusSelectSpt, makeLigandsSpt() renders makeLigandsPlusOffSpt() clears functions needed in part to manage set bondmode! moltab.js list is from getHetNam() (moltab.js) N ligands are not Jmol "nucleic" but are "hetero". See JS nucleotide_N_count and ligand_N_count. ligandsPlus excludes hetero non-standard residues in chains (otherwise 1EVV is cluttered, tho ribo-T=5MU is "ligands+" in 1EVV, 1i9v), ligandsPlusExpression: = ~ligandsplus ********** not (protein, nucleic, water) ~dipeptides (polymerlength=2 and protein) 4d2c 1dpp ~backbone_invisible which includes ~unchained_aas (protein and polymerlength=0 and not water) Phe in 1usi. Gly in 4cpa. ~nobackbone_aas (protein lacking calpha) Lys346 in 1usi has N only. Ditto 1h3l, 2fd8. ~unchained_nucs in 4.2 redefined as ((dna,rna) and polymerlength=0) (The old "connected" method (at least for AAs) included chained residues when many altlocs.) New method tests: (checkmark, meaning tested OK, macOS alt-V: √) 4m30:2xAMP with PO4√. 1kdo:CMP with PO4√. 1bkx:A="AMP" w/o PO4√. 4ffL:ADP,ATP√. ~hyroxy_unchained_nucs = ~unchained_nucleosides (nucleic, no phosphate AND IF THE MODEL IS NOT CAO ~unbondable_aas (missing C or N) Gln8 in 4en3 lacks N. ~unchained_x Nucleic acid bases (ADE in 1aha) are not (protein,nucleic,water) so are ligands+. They are not alerted as unusual, and are not ~unchained_nucs. ------------------------------ Re Jmol sometimes designating a standard residue as polymerlength=0 seemingly not correctly, see note mentioning 1Lik in scripts.js. In 1Lik, Thr269 has all its atoms and is peptide bonded to gly270 (polymerlength 89). In 4.3, Thr269 is spacefilled but not listed under Lig+/NSR, which seems OK. ------------------------------ polymerlength is an atom property. polymerlength=1 selects nothing in 4FFL. polymerlength=0 in 4FFL: ATP, ADP, Mg++, unchained Lys, water. polymer is a "sequential polymer number", NOT a length. monomer=0 is the group number for all unconnected groups incl CHO, AA, nucleotides. ------------------------------ EXAMPLES & HISTORY See the help when you depress the Ligands+ button. ------------------------------ doToggleButton(ligandIndex) makeLigandSpt() renders whatever is selected as spacefill or "small" balls and sticks. ------------------------------ Jmol "protein" includes anything with an alpha carbon, but HETERO if non-standard. An example is ligand 3ES in 2xy9 which has a single alpha carbon, hence "protein". Except HETERO for standard single residues or dipeps/dinucs (see corresp with Rachel Kramer Green). She said the handful of cases of dipeptides that are ATOM/SEQRES are errors of PDBe to be remediated. See CHARGE EXAMPLES in moltab.js. Std tripeps/trinucs are ATOM with SEQRES and unique chain IDs. It is desirable to separate NSR from LIG so the initial view spacefills LIG but not NSR which clutters the cartoon. Note that the LIG help has a checkbox to show NSR as ball and stick. PROBLEMS: Mono and dipeptides (and a minority? of dinucleoties) of STD residues are HETERO and protein/nucleic and should be ligand+. SPACEFILL THESE: select polymerlength=2 and protein and hetero If a longer chain had missing residues, leaving a 2-residue fragment, and if both of those residues happened to be non-standard (hetero), this would also select those. We have isStdAA() and isStdNucleotide() in util.js which lists TEST CASES. -------------------------------------------- IMPLEMENTATION Detection of state: toggleIsDown[ligandIndex] ARRAY not function! See makeLigandSpt() scripts.js makeLigandsHelp(): var visibleLigandAtoms = jmolAtomCount("not (protein, nucleic, solvent, ~hidden_jdef)"); THIS FAILS TO INCLUDE A IN 1BKX, AND WOULD FAIL WITH STD DIPEPS/DINUCS ALSO. IT WOULD EXCLUDE NONSTANDARD GROUPS THAT INCLUDE AN ALPHA CARBON HENCE DEEMED "PROTEIN" SUCH AS ??? var totalLigandsPlusAtoms = ligandsPlusHydrogenCount + ligandsPlusNonHCount; modeldat.js ligandsPlusNonHCount = jmolAtomCount("~ligandsplus and not hydrogen") ligandsPlusHydrogenCount = jmolAtomCount("hydrogen and ~ligandsplus"); See ligandSelectSpt which uses ligandPlusExpression (scripts.js). For unusual components, see makeDefineUnusualSpt() (which replaces defineBackboneInvisibleSpt) which defines ~backbone_invisible which is included in ligandSelectSpt For reporting found nucleic C5' atoms in scripts.js: foundNucleotideC5primeCount = jmolAtomCountAllConfigs("selected and ~nucleic and *.c5\'") ~nucleic is used because it includes unknown residues "N".