Changes from 2.23 to 2.24 Example Scripts: eginput/gb1_rdc/analyze_ProbDistPot.py eginput/gb1_rdc/analyze_anneal.py eginput/gb1_rdc/analyze_refine.py eginput/gb1_rdc/anneal.py eginput/gb1_rdc/dihed_g_all.tbl eginput/gb1_rdc/refine.py modified TYR/PHE chi2 torsion angle restraints to be used with useDefaults set in protocol.initDihedral eginput/gb1_rdc/anneal2.py added alternate faster version of anneal.py eginput/protG/anneal.inp updated XPLOR script s.t. .pdb files are always written Help System: online tutorial updates rdcPot docs clarified useSign meaning New FAQ entry entry regarding powell irregular exit messages added google search on some web help index pages web-dist: now copy INSTALL instructions to WEBDIR Helper Programs/Scripts bin/xplor.in -now use numactl to get better memory affinity, particularly important for Ensemble calculations. -will now better handle spaces and single quotes in arguments -removed Darwin env vars which, while once necessary, now mess things up -now allow (option, argument) pairs to be separated by =, for consistency with Python cmdline args bin/pbsxplor.in -add warning message if node isn't found in psbnodes output -added error message and quit if input file can't be found. -fixes for job shell, and not hardcoding rsh use bin/pyXplor.in -reworked special character protection again bin/torsionReport.in -now use circular statistics for more reliable computation of average rotomer angle values. bin/idleXplor idle for Xplor-NIH- available only w/ srcdist. This is a GUI for Xplor-NIH Python development. bin/getBest added -index cmd-line option bin/calcSAXS.in -now support resampling experimental data using -numQ argument -add -rhob, -volumeScale command-line options- these override the fit parameters. -updates for hetereo Ensembles -now can set ensemble weights bin/targetRMSD.in -added -write flag for writing out fit structures -fix so that fitSel is actually used. bin/calcETensor.in -fix for -weights option when space is used for separator Python Interface python/protocol.py loadPDB: added correctSymmetricSidechains argument - passed to initCoords initDihedrals: changed TYR/PHE default restraints to be consistent with selectTools.correctSymmetricSidechains loadPDB: added maxUnreadEntries arg, passed to initCoords. initDihedrals: -added reload argument -now print out # restraints read -changed counting to use (perhaps faster) numRestraints() instead of len(restraints()) RDCPot: added support for ASSIgn ... OR assignment table syntax for precise ambiguous assignment. RDCRestraint::bondVectors method has been removed. added test, and updated docs showViolations: fixed atoms printed for when both selections have wildcards made useSign a per-restraint variable - motivated by ssNMR RDCPotTools: comment-out unused calcTensorSize function removed CC prefactor definition getRDCType: added methyl type (only for THY for now); updated examples python/csaPotTools.py -added alternate NH CSA parameters contributed by D.A. Marvin and S.K. Straus. Doesn't use the HN atom for def. of tensor orientation. -added note on sigma units -doc/python/csa-methods-marvin.pdf python/solnScatPotTools.py python/sansPotTools.py python/solnXRayPotTools.py -added analyze_chi2 function - added chi^2 analysis to .stats file -lifted the restriction that q values must start at q=0 for using the efficient uniform-q algorithm. This slows down gradient calculations a little bit. -getF accessor: now calls modified.update() -normalize: fixup for problem uncovered by use of chi2 function in analyze_chi2- for case normalizeIndex>=0. -switched to linear interpolation for sampling saxs/sans curves, errors -fix for (non-1) vol/rad scale setting. -change parameter range argument processing to make easier to specify default value -fixes for ensemble calculations: calcIfromF: fixed to work properly with ensembles -changed return type of SolnScatPot::qValues(), others to const&. This results in a huge speedup, because it's called in inner loops in calcI_uniform, and calcDerivs_uniform. NOEPot showViolations: fixed distance report output. Now print distance range. python/selectTools.py -convertToAtom: change behavior for Atom arguments when there is a Simulation mismatch. -convertToAtomSel: allow input sel's simulation val to be used -rigidProteinSelections: fixed longstanding selection error for GLU entry -updated helper functions to recognize swig 1.3.36 wrapped objects python/simulationTools.py -RampedParameter.runAction: changed representation of substituted VALUE literal to avoid underflows -added a new function named saRefine() which does performs a simplified simualed annealing protocol. -minimizeRefine/ensembleAvePos: don't try to compute ens. ave. struct for heterogenous EnsembleSimulations. -minimizeRefine: added initial cartesian minimization to fix the bond and angle terms before the main minimization with minPots. -testGradient: cap absolute error threshold at the value tolerance python/torsionTools.py -new tools for analyzing/manipulating torsion angles rotomericStats.py -new tools for rotomeric state analysis w/ circular statistics python/cdsList_template.i __getsplice__: change return type to simple CDSList (from CDSList_out) This so that resulting slice template is instantiated. python/cdsVector_template.i -added support for element-by-element vector division python/ivm.py removed unused method python/trace.py -added hack to search XPLORNIH distribution if filename not found and it's a relative path python/pyXplor.cc -pythonStartup: now properly call Py_SetProgramName() -python_interp: now handle the Python -c cmdline argument common/pot.hh python/pot.i python/potList.i python/publicIVM.i python/pyConvert.cc reference counting cleanups for Pot (and PotList) objects common/pot.hh clear instanceData_ member on initialization s.t. we can properly tell if it's never been initialized by a Python object python/pot.i added decrRefCount method destructor: no longer delete self. This may cause new reference cycles python/potList.i remapped remove method so that associated Pot's ref count is decremented added an unref typemap to decrement all Pot's ref counts before deleting a PotList python/publicIVM.i added an unref typemap to decrement the PotList's ref count before deleting the PublicIVM obj. This unref typemap is necessary for all objects which contain an PotList member. python/pyConvert.cc fromPy(PotList): increment PotList's reference count if the arg is a PotList. If it's a plain Python sequence, then create a Python PotList first - so that all pots have their reference counts incremented- and then decremented when the PotList is destroyed. common/pdbTool.cc common/pdbTool.hh python/atom.i python/pdbTool.i -Added a new method called writeAltLoc() that can write the altLoc field. python/diffPotTools.py python/protocol.py -some small fixups for relaxation data read in subroutine in DiffPotTools.py and for setting pseudo atoms topology in protocol.py python/protocol.py python/psfGen.py -changes so that Ensembles can be loaded w/ different numbers of atoms, and different numbers of sequences. i.e. so that loadPDB works for this circumstance. -Converted xplor.command uses to xplor.fastCommand to avoid sync/syncFrom added new sync arg to seqToPSF, mods to pdbToPSF to sync after complete psf is generated. -added topology/parameter support for metal ion atoms nmrPot/orderPot -initialize Restraint a/bSel using esim instead of its subSim python/orderPotTools.py -updated orderPotTools.analyze to print ave, min, max order parameters nmrPot/relaxRatioPot.cc nmrPot/relaxRatioPot.hh python/relaxRatioPotTools.py -initial support for refining directly against NMR relaxation data. nmrPot/distSymmPot -changed constructor to take two Simulation* args. -addRestraint: carefully set current EnsembleSimulation to obtain the correct shared memory allocation behavior for EnsembleMemberSimulations. python/distSymmTools.py -create_DistSymmPot: added optional sim, sim2 arguments python/varTensorTools.py -mods so that a VarTensor can exist in only a single EnsembleMemberSimulation -copyTensor: fix so that it actually works. -addAxisAtoms: add sim argument update so that ANI residue number can be 4 digits -configIVM_fixRhToOther: bugfix. -cleanups so that hetero EnsembleSimulations work properly. -create_VarTensor: added simulation arg to updatePseudoAtoms call nmrPot/varTensor -fixes for EnsembleSimulation tensor parameter atoms : introduced local-copies of orientation atoms used for case ensembleAxis()==False, ensembleDa/Rh()==True -setEnsembleDa/Rh(): fix so that Da, Rh have same values when going from False --> True -updates to work with hetero EnsembleSimulations -set default value for the freedom member python/atom.i -Python Atom object pos/vel accessors now return new Vec3 objects instead of references. This should have minimal performance impact. python/socketComm.py added extra communication at client startup to try to shake out Darwin bug python/xplorSimulation.i fromSimulation: now supports EnsembleMemberSimulations python/pyConvert.cc fromPython(AtomSel): now allow argument to be an Atom obj common/atomSelLang common/atomSelLangLex.lex common/atomSelLangYacc.y common/testClass.cc supports subset of XPLOR atom selection language now used by EnsembleSimulations, but not by XplorSimulations python/atomAction.py randomizeDomainPos: now use convertToAtomSel common/potList.cc -fixed up energyReport values for EnsembleSimulation::AVETYPE_SUM -calcEnergyAndDerivs: fixup for ensemble aveType=SUM common/derivList -derivList: now have special treatment for EnsembleSimulations. See help file. -expand Ensemble/MemberSimulation sharing to include the subSim nmrPot/posSymmPot added fix for case in which rotation matrix is singular common/ensembleSimulation common/simulation common/xplorSimulation -added read access to chemType array -added residueNum, residueName, segmentName atomNameArr array accessors -now allow heterogeneous ensembles of collections of species -updates for hetero EnsembleSimulations Simulation: changed def of char4 to use FixedVector EnsembleSimulation: now share all atom data (name, chemType, etc) EnsembleMemberSimulation: no longer use subSim's atomString -only potential term which may not handle hetero EnsembleSimulations: NOEPot python/atomSelLang.i python/protocol.py -added atomSelLang wrapper- for named selection registration. -updated protocol.updatePseudoAtoms to use this new interface, and to treat EnsembleSimulations specially: update pseudo atom selection for all member simulations. common/ensembleSimulation.hh -EnsembleSimulation: added makeCurrent static method- -EnsembleMemberSimulation: added appropriate type() return value -now use subsim's select() if size==1 common/ensemblePot -EnsemblePot: changed name of set-accessor setWeights to setEnsWeights nmrPot/atomDensity -Fixed bugs in atomProb based density to atomDensity based grid conversion -WriteEDM fixed with the data output. Data would not get divided by dmax if data is 0. This avoids NaN in edm output. nmrPot/atomProb WriteEDM()-> if the data value is zero, data value is not divided by dmax. This avoids NaN in edm output nmrPot/probDistPot python/probDistPotTools.py python/simulationTools.py -Added new energy function based on cross correlation -Redefined rms() value. -Scaling depends on number of atoms in selection. -probDistPotTools.py forms the frond end for creating probDistPot class -"prob" object is created using probDistPotTools.py now in simulationTools.py TCL Interface tcl/startxplornih.tcl -now clear errorInfo so that previous (ignorable) errors don't cause spurious printouts in the tcl tests. XPLOR Fortran interface source/cstran.f fixes in treatment of CICP abd WCICP arrays. This fixes a major bug introduced on 2009-09-04, where CDIH energy evaluation would be nondeterminant. source/cstran.f finally rationalized use of CICP/WCICP arrays- now allocated by NATOM, their use w/ MCMPHI has been removed. source/hbdb.f setpottype: fix to handle case nij=-2 (i.e. so it doesn't crash) hbdbpatt: moved large 2D arrays from stack to heap to avoid segfaults when running 32 bit code on amd64 (on scalar) databases/torsions_raw/setup_new_shortrange.tbl -updated to call xrama instead of rama Topology and Parameters Low Level C++ routines CDSlib/cdsRegex.hh findIndex(): added default offset value CDSlib/fixedVector.hh added pointer() accessors common/semaphore.cc wait: now protect sem_wait from EINTR. This so that e.g. strace doesn't crash the program. common/xplorWrapProc.cc remove atomRadius array manipulations bin/findSwig added version 1.3.36, changed various files so it works. common/xplorSimulation.cc syncTo: moved assertion into if clauses where it's really required common/simulation.cc common/simulation.hh python/simulation.i Simulation: added syncAllSimulations helper static method common/xplorWrap.cc common/xplorWrapProc.cc now use Simulation::syncAllSimulations where appropriate common/ensembleSimulation.cc enable line-buffering for stderr. Without this, output is lost when the children are killed. common/semaphore.cc unified the Sys V and posix semaphore code in semaphore.cc. This simplifies make dependecies and the compilation of nmrPot/test common/xplorWrapProc.cc generating random seed: now use rand num from SimulationWorld Architecture Specific Notes arch/Darwin_8_x86 updates for gfortran 4.4. Still some problems, so distributed binary still compiled w/ gcc-4.2 arch/equivList update such that AMD64 platforms use the ia32 build if running a 2.4 kernel (this because 2.4 doesn't properly support posix semaphores) arch/Linux_2.6_x86_64 (amd64) switch to posix semaphores - simpler and more robust Changes from 2.22 to 2.23 Example Scripts: new eginput/pre example of using PRE distance restraints with the improved/simpler PRE interface. new eginput/diffTens example set including scripts for relaxation data processing, docking and structure refinement using rotational diffusion tensor-based restraints. eginput/gb1_rdc/refine.py now perform SVD during simulated annealing eginput/gb1_rdc/analyze_ProbDistPot.py New analysis script which includes ProbDistPot to restrain the average structure to the calcualted input structure ensemble. Analyze the structural file produced by running anneal.py. Check for the violations in energy, rmsd and stereochemical violations between average structure calculated with and without using probDistPot. eginput/PSF_generation/genLigand.py helper script to generate top/par info from a pdb file. Currently, CONECT records are ignored, so the molecule should be grouped as a rigid body. eginput/dna_refi/validate.py added validation script eginput/dna_refi/ensemble.py now support -quick flag noeNH force constant reduced from 200 to 1 xray scattering terms now have radiusType specified eginput/PSF_generation/testHBDB.py added test of Python interface helpers for HBDB eginput/PSF_generation/pdbTest updated to reflect change in pdb entry 2ycc (mutation from lys to M3L eginput/runAll now can use the runDirPrefix env variable to specify alternate location for the runDir now set the return status appropriately eginput/PSF_generation/genCircPep.py now initialize random seed (by time) and decrease MD stepsize eginput/PSF_generation/gen-edta-dna.py eginput/PSF_generation/gen-edta-k28c.py added generation examples for CED and TED residues Help System: updated pyXplor -py -pydoc -k so that keyword search works better. Atom Selection Language added the PSEUdo token- used to select pseudoatoms. Python Interface python/diffPotTools.py nmrPot/diffPot added support for relaxation data processing. added support for optimization of diffusion tensor temperature. python/prePotTools.py create_PREPot: added clockResid, clockSegid arguments addClockAtoms: rearranged argument order rework so that preexisting clock atoms can be used. renamed T?X/Y atoms to T?A/B topologySetup: will now fix or free appropriate atoms python/atomAction.py centerOfMass: return (0,0,0) if selection empty, mass=0 or unknown atoms XPLOR Fortran interface source/rama_gaussians.f ALLOCRAMAS: add shortcut return if oldsize==newsize source/hbdb.f fixup for if-clause which assumed logical short circuit (not-Fortran) source/nbonds.f fix possible memory leaks where heap pointer was assumed to be >0 source/x86_64time.f increased heap debugging messages Topology and Parameters toppar/nucleic-1.1.par toppar/protein-1.0.par be more careful about restoring previous echo/message state toppar/edta.par added include protection ; now include ion.par for MN params toppar/ion.par toppar/ion.top added include protection (to prevent loading more than once) toppar/nucleic-1.1.par toppar/protein-1.0.par moved edta.par include protection into that file toppar/axes-1.0.par removed dependency on protein.par: kbond is now hardcoded to a value of 1000 toppar/edta.par toppar/nucleic-1.1.par toppar/nucleic-1.1.top toppar/protein-1.0.par added TED nucleic residue - modified from Junji Iwahara's files. Parameters for the portion of the conjugated EDTA tag shared with CED is now in edta.par- it is only loaded once. protocol.py was updated such that erasing these parameters is possible. toppar/protein-1.0.par toppar/protein-1.0.top CYSP: added missing methyls impropers added CYSP and CED spin-labelled residues to the topar files Helper Programs/Scripts bin/targetRMSD.in fix for case selection != selection2 and diffSeq==True fix so that running with -diffSeq works again changed doFit variable name to be less confusing bin/pbsxplor.in try to get pbs output to a single file in the current directory bin/pyXplor bin/xplor allow the # character in command-line arguments fixup for SMP process startup for localhost-spawned jobs, make separate TMPDIR for each process update TMPDIR to be unique for localhost MACHINES TMPDIR setting: now use /dev/shm if it's writable. Can be overridden by XPLOR_TMPDIR. bin/xplor.in now set TMPDIR to a subdirectory which is created (and destroyed at the end of this script). For this to work, the execs were removed (so that removal would happen after execution of bin.$ARCH/xplor. This change will help reduce spew in /var/tmp and more importantly, will avoid mmapAlloc crashes due to the presence of old mmaped files left when a jobs was aborted. bin/testDist.in set ECHO to /bin/echo on Darwin (thanks to Ben Eisenbraun) bin/findXcookie fixed to deal with case that xauth returns more than one match bin/compareTensors.in new helper used to compare two alignment tensors bin/calcSAXS.in changed default normalizationIndex to -3 increased the precision of the output added -fit option now calls solnScatPotTools.fitParams, and includes the solvent boundary layer. bin/testDist.in added tests in eginput add infrastructure for running quick tests in eginput build setup: modify Makefiles s.t. lapack/blas are autobuilt if LAPACK/BLAS_LIB isn't set. Python Interface python/varTensorTools.py calcTensor: remove rdcs, csas from calc if their scale val is 0 VarTensor_analyze: fix logic for syncAxisAtoms added helper function saupeToVarTensor calcTensor, calcTensor_ensemble: now make alignment tensor orientation right-handed added function unRegisterTerm; added info to ivm topo config function nmrPot/varTensor.cc Rh: protect against returning (slightly) negative values energyMaybeDerivs1: enabled derivative calcs for the case ensembleAxis==True python/protocol.py ion.par/top: added reset support in initParams/Topolgy initCoords: now allow file or string to be specified initCoords: use new bfactors, occupancies pdbTool accessors for speed initCoords: now pass sim to correctSymmetricSidechains matchInexactEntry: logic to read H2 and H3 (HT1 and HT2) atoms loadPDB: now return the InitCoordsResult from initCoords initHBDB: fix to work with multiple segments cartesian/torsionTopology: updated so that rdcPot, prePot and planeDist pseudo atoms get topology autoconfigured python/simulationTools.py 1. Added two new passing arguments to structureLoop(averageRestrainSel & averageRestrain) 2. minimizeRefine: added a straight gradient minimization before calling AnnealIVM() added new code to reflect the changes made in atomDensity & probDist class. StructureLoop: Added argument named averageRestrain in to control the inclusion of probDistPot energy term in average structure calculation. New member named "inconsistentAveStruct" which is set to 1 if the average structure calculated have an energy or violation greater than the calculated structures. In addition, warning will be written on to the ave-structure pdb file common/atomSel.hh AtomSel: removed the non-const version of the indices() method nmrPot/solnScatPot fixed gradient for case useGlobs==TRUE and normalizeIndex>-2 added volumeScale, radiusType added boundary-layer solvent contribution to SAXS calculation. Also- now allow atom radii and excluded volumes used in excluded solvent calculation to float independently (as done in Svergun et al. J. Appl. Cryst. 28, 768 (1995).) Some changes commented-out to allow all tests to pass. optimization: converted F (scattering amplitudes at all angle values) from vector of vectors to matrix. change to meaning of glob entries - now assume weight is normalized energyMaybeDerivs2: various optimizations python/sansPotTools.py python/solnXRayPotTools.py python/solnScatPotTools.py svergun volume/radius params: correct to reverse-engineered values create_SolnXRayPot: added rho0 argument create_SansPot, create_SolnXRayPot: added volumeScale argument analyze: changed floating format of output saxs data added fitParams helper function used to fit solvent parameters of the scattering curve. nmrPot/csaPot.cc nmrPot/cstMagPot.cc nmrPot/jCoupPot.cc nmrPot/noePot.cc nmrPot/orderPot.cc nmrPot/planeDistPot.cc nmrPot/posRMSDPot.cc nmrPot/prePot.cc nmrPot/psolPot.cc nmrPot/rdcPot1.cc added better checking for restraint table input errors python/selectTools.py correctSymmetricSidechains: speed optimizations performance improvement by restricting initial atom selection common/pdbTool added occupancies, bfactors accessors nmrPot/atomProb Added a new ScaleType in atomProb class called normalize. added getGrid accessor python/symmetry.py testC2: now use mat3.rotationAmount python/mat3 added functions: det, rotationAmount added method: scale rotVector: added code for special case (from intVar/dint-node.cc python/cdsMatrix.i SymMatrix: added scale method python/cdsVector_template.i added element-wise operator* added numpy-style (element-wise) vector multiplication added pow, removed duplicate __mul__ python/minimize.py added a simplex optimization routine (from scipy) and test python/potList added the keys() method nmrPot/atomDensity python/atomDensityTools.py -added variable to control the atomRadius of the generated -Updated the atomDensity to incorporate grid rotation & translation -map / added new code for picking Map rotation & translation that gives energy less than the given percent of the max energy. nmrPot/probDistPot.cc New energy term which restrains a structure to a target map (computed from an ensemble, EM map, SAXS curve, etc) nmrPot/atomDensity.cc nmrPot/atomProb.cc nmrPot/probDistPot.cc Done optimization on the files to reduce the computational time. nmrPot/atomDensity.cc nmrPot/atomDensity.hh nmrPot/probDistPot.cc python/tests/probDistTest.py Added rotation and translation to the grid class. nmrPot/atomDensity.cc nmrPot/atomDensity.hh nmrPot/probDistPot.cc nmrPot/probDistPot.hh python/atomDensity.i python/probDistPot.i python/tests/probDistTest.py atomDensity.cc & atomDensity.hh-> class which calculates the reweighted atom densities. probDistPot.hh & probDisPot.cc -> energy term based on reweighted atom density. probDistTest.py-> test files for the energy term mentioned above. common/ensemblePot common/ensembleSimulation intVar/publicIVM implemented sum aveType in EnsembleSimulation signal_childDied: only abort if one of the ensemble processes has exited. EnsemblePot: added a local set of ensemble weights. Updated all appropriate pot terms to use the accessor to get the correct set of weights common/xplorPot common/xplorSimulation added some nonfunctional stubs for XplorPot ganging python/pot all potential terms: removed a built-in reference cycle which prevented Python and C++ Pot objects from being deleted. python/avePot1 common/avePot.cc violations: now do proper rounding in float->int conversion avePot: now save a copy of the averaged pot. term so that it doesn't get deleted. python/xplorPotTools.py fixed HBDB analysis nmrPot/selNBPot.cc NeighborBin::findXYZBin: make sure return result is in range. python/atomSel.i fixed __eq__ method python/atom.i added __eq__ method: can now compare Atom objects python/posDiffPotTools.py now crash if no atoms are selected common/xplorWrap.cc XplorWrap::select: now add linebreaks to lines longer than 125 char common/xplorWrapProc.cc better randomization of MMapAlloc uid nmrPot/planeDistPot showViolations: now print range rather than single target distance python/psfGen.py pdbToSeq: optimizations by reordering and use of elif pdbToSeq: now recognize water residueTypes entries are now autofilled from the registered (in protocol) topology files - when deduceSeqType is first called python/regularize.py fixupCovalentGeomIVM: output formatting fixup fixupCovalentGeomIVM: added translateRegions argument python/ivm.py - fixed problem of run exiting during minimization if temperature=0: do bathTemp=0 check only for integration. added constrainBond method hinge: replaced '==' w/ 'is' when comparing AtomSel python/atomSel fixed __eq__ s.t. AtomSels can be compared w/None; added test TCL Interface tcl/noe_reporting.tcl replaced ln --symbolic with ln -s Internal Variable Module intVar/dint-node.cc HNodeTorsion(): properly treat speecial case where |rotDir| almost 1 removed dubious conditional for bend-type nodes Low Level C++ routines CDSlib/cdsComplex added / operator for noncomplex arguments complex multiplication by float fixed. Test added CDSlib/cdsMatrix added setCol/Row and tests optimization: use memcpy instead of for loop Changes from 2.21 to 2.22 Helper Scripts bin/calcSAXS.in fixed so that the -psf flag is actually used added the -expt command-line option for better comparison w/ experiment added -selection and -normalizeIndex cmdline options add support for normalizeIndex=-3 added -nostderr option so that runAll tests pass added the -fit and -verbose flags now print out chi2 value bin/pbsxplor.in added pbsxplor convenience command - to launch Xplor-NIH jobs without writing a PBS script bin/calcTensor.in added -ensemble flag/capability to properly treat a structural ensemble bin/targetRMSD.in now support selection2, fitSelection2 cmd-line arguments bin/findClusters.in new script use to find clusters of similar structures bin/getBest now support absolute paths ------------------------------------------ Example scripts eginput/gb1_rdc/analyze.py averageFilename: now include SCRIPT eginput/gb1_rdc/aveStruct.py added -psf flag eginput/gb1_rdc/anneal.py eginput/gb1_rdc/refine.py reduce high-temp nonbonded force constant updated to use new massSetup, torsion/cartesianTopology capabilities eginput/PSF_generation/pdbTest added example with resid=0 eginput/dna_refi/ensemble.py fixups to remove parameter errors moved initCoords/covalentMinimize to avoid ANI atom warnings fixed up xray setup for compatibility with new defaults eginput/EIN_HPr_diffTens new example illustrating the use of diffusion tensor-based restraints in protein-protein docking eginput/dna/axis.pdb changed axis atom coords s.t. bond lengths are 1A ------------------------------------------ Topology and Parameter file changes toppar/protein-1.0.par toppar/protein-1.0.top toppar/protein-2.0.par added setting of toppar version variable toppar/protein-2.0.top fixed ALA HB methyl def; added version variable toppar/axes-1.0.par updated to include parameter pseudo atoms used for RDC Da and Rh ------------------------------------------ Changes to low-level libraries CDSlib/cdsString added strip() method CDSlib/cdsMath.hh added cube() inline function CDSlib/cdsList added 2nd DEFAULT_ASIZE template parameter added qsort method fixed array allocation s.t. memory is not wasted (was array of void*, now array of char) fixed to that DEFAULT_ASIZE is applied to the copy constructor added letterObj() method for debugging. template arg mods s.t. g++ 4.2, 4.3 will compile CDSlib/cdsString.cc const fix ------------------------------------------ TCL interface tcl/import_pipp.tcl tcl/import_xeasy.tcl increased verbosity of read functions tcl/aeneas_tools.tcl defaultJointFilter: added options -passNetFrac and -minExpectedNetScore capitalization fix ------------------------------------------ Common C++ Interface common/ensembleSimulation.cc common/ensembleSimulation.hh fixup const method declarations: members of the MemberData struct *can* change for const objects common/coordComparer added CoordComparer class- to measure differences from one step to the next common/pot.hh common/potList Pot: added empty updateDelta method PotList: created implementation which calls updateDelta for each contained potential common/pdbTool.cc pdbTool read optimization. major bottleneck was the use (primarily construction) of the old pdbHash table used to map (segid resid atomName) to id. Replaced this data structure with something faster and more balanced. Other optimizations include less use of StringStream and subString functions which have some overhead. The code includes a fix: previously, the least significant digits of the floating point numbers were filled with garbage. During to rounding differences, this changes the test output slightly. created AtomToIndex class to formalize interaction with the num/name/segid -> index map Also, fix bug encountered for minresids<1. writePDBAtom: clamp values of bfactor and occupancy fields such that pdb format is preserved in the face of invalid values ------------------------------------------ Python Interface python/nbond.i python/nonBondTools.py readXplorRadii: optimization and fixup of functionality for 1-3 and 1-4 contact exclusion generation (by using a C++ routine). This will speed up the first invocation of vdwViolations. nmrPot/planeDistPot.cc addRestraints: print warning if no restraints read addPlaneAtoms: left justify segment name added simulation() accessor python/solnScatPotTools.py analyze changed output format for calcd/exptScale values changed default cmpType to plain python/regularize.py fixupCovalentGeom: don't process residues not in selection python/ivm.py now call updateDelta before each step run: added check for zero temperature nmrPot/solnScatPot mods so that globCorrect can be called in the middle of a dynamics/minimization run if a threshold # of steps have been taken, or if an atom has moved too much. auto glob correct fixes verbose: changed from bool to an int setGlobCorrectReference: now also set globCorrectCalcType info: output auto glob correct info added new normalization type: minimizing chi^2 (normalizeIndex=-3) normalizeIndex=-2 gradient fixed moved calc of excluded solvent scatt contribution from python to C++ layer add read-accessor for radii member python/derivList.i python/pyPot.i update DerivList python interface to work with PyPot::calcEnergyAndDerivs added tests to exercise this updated pyPot docs accordingly. python/simulationTools.py now include summarizeExtraQuantities output in .stats output use registerExtraStats function get extraStats reporting and output working, including for potLists of terms which have extraStat testGradient: added the eTolerance argument python/rdcPotTools.py added R factor, Da and Rh to extraStats removed unused psf_template create_RDCPot: file argument can now be a sequence of filenames now support CAHA measurements python/varTensorTools.py calcTensor: now set oAtom to the origin, if its coordinates are invalid. addAxisAtoms: left justify segment name python/protocol.py added support for versioning of topology and parameter files initCoords: move call correctSymmetricSidechains to after matchInexactAtomEntry call initHBDB: added restraintFile argument for specifying fixed HB restraints. cartesianTopology: fixed breakAllBondsIn statement to work with non-trivial nonstring selections torsionTopology and cartesianTopology now configure the appropriate topology for pseudoatoms associated with VarTensor, PREPot and PlaneDistPot pot. terms massSetup: sets mass and friction settings for pseudoatoms associated with VarTensor, PREPot and PlaneDistPot pot. terms python/planeDistTools.py python/prePotTools.py python/protocol.py python/varTensorTools.py moved initialization of parameters for axis pseudo atoms from *Tools.py to protocol.py. Now use axes.par. python/selectTools.py correctSymmetricSidechains: -added backwards-compatibility hack for incorrect ARG sidechain chi5 torsion definition, and corrected it for future toppar versions -changed allowed range of chi2 for TYR, PHE to 0..180 degrees nmrPot/planeDistPot added useSign method - now allow signed atom-plane distance python/prePotTools.py new set of helper tools for PREPot now properly supports EnsembleSimulation nmrPot/prePot regularize txmin/max accessor cases info: print out much more state information added clock atom read-accessors with rationalized names showViolations: updated to support showAllRestraints python/xplorPotTools.py for HBDB term, now place output of HBDB print in the .viols files python/residueAffPotTools.py create_ResidueAffPot: added intradomainContacts argument surfD new algorithm for numerical representation of a molecular surface. nmrPot/diffPot new potential term for encoding a rotational diffusion tensor restraint python/psfGen.py pdbToSeq: fixes so residue number=0 works python/cdsTypeMaps.i now fail gracefully if None argument is specified python/checkWrap.py fixups to get minimally working again in particular findNested was completely broken... fix to catch variable names with surrounding () in NewPointerObj added -v flag ------------------------------------------ Documentation Updates helplib/nih-py-planeDistPot corrections from J. Ellena helplib/nih-py-prePot regularized txmin/max accessor cases helplib/nih-py-ensembleSimulation now document identical nature of each ensemble member test/fiber.inp added example of writing out diffration data online tutorial: conversion to pdflatex and replaced large bitmaps with pngs updates from Jan. 2009 Xplor-NIH class ------------------------------------------ Platform Specific arch/Linux_2.4_x86_64/Makefile.defs PROFILE=1 -no longer try to get gprof working. It doesn't work with shared libs, so it's hopeless. -now try to get stack callback info from oprofile using -fno-omit-frame-pointer added support for version 11 of the Intel Compilers ------------------------------------------ XPLOR Interface: source/fxmap.f FXBFT2: fixed argument list for BSLTBL call --------------------------------------------------------------------------- Changes from 2.20 to 2.21 XPLOR Interface source/parser.f set print: now attempt to close a file before reopening for write. This may be dangerous, but it fixes use of the -smp flag under Darwin. source/darwintime.f now allow closing of unit 5 (stdin). Dangerous? source/ncs.f source/rotlsq.f changed output from unit 6 to PUNIT source/xplorFunc.f fixups flagged by g77. In particular: it doesn't like initialization of file-static data (initialized in XPLOR_INIT). Hopefully, this will always by initialized to zero and that corresponds to .FALSE. Python Interface DistSymmPot: new Python/C++ potential term: DistSymmPot - for distance symmetry restraints supports both ensemble-averaged symmetry and strict symmetry of each ensemble member intVar/dinternal.cc resetCM: handle the case in which all atoms are fixed python/maxLikelyFit.py -Added a new method in maxLikelyFit.py for calculating the Average RMSD and made necessary changes in mleFit to reflect this. -Fixed the methods in maxLikelyFit.py that is used to write the variance of selected atoms and rotation & translation matrix obtained from maximum likelihood fitting. -Added a new method for writing out the PDB files of the fitted structures along with the mean structure in maxLikelyFit.py noePot: fixed bug in which spaces were required between selection parentheses python/noePotTools.py create_NOEPot: now allow file arg to be list python/nonBondTools.py changed defaultRadiusScale from 0.9 to 0.8 common/pdbTool.cc Changed default value of b factor in pdbTool.cc from 1.0 to 0.0. This matches the default value given by the XPLOR interface. The default occupancy value remains at 1.0, since that matches classic xplor. python/posDiffPotTools.py -analyze: added more info output -set a default threshold value (used to det. # of violations) nmrPot/posSymmPot.cc fixed the definition of violations() to use threshold() common/potList.cc rms(): change calculation method for the case of same type of restraint, but numRestraints=-1. python/protocol.py loadPDB: -added deleteUnknownAtoms argument -added optional model argument -now catch exception in initCoords so that currentSimulation is properly reset. initCoords: -allow maxUnreadEntries to be None to disable the check -fix so that erase option only affects atoms in selection. -add call to selectTools.correctSymmetricSidechains -properly handle 2nd maxUnreadEntries (fractional) component -now returns an object with two lists--one of the b factors of every atom in the simulation, and one of the occupancies of every atom in the simulation. initNBond: changed default rcon and repel values to the final values used in refinement scripts python/pyInterp.i added pyInterp python interface python/psfGen.py -fixup for DNA generation: better way of getting resid range -Added code to automatically parse PDB SSBOND header lines. It's called by pdbToPSF after reading in the sequence, and automatically calls addDisulfideBond for each SSBOND line. nmrPot/rdcPot1.cc -addRestraints: now print warning if no restraints read -added support for varying axis atoms separately in different ensemble members python/regularize.py -fixupCovalentGeomIVM: covalentViols: -added fixupCovalentGeomIVM: -the old version of fixupCovalentGeom, which has grouping features not present in the new version -deal with terms which return violations==-1 -in case multiple structures are found w/ same # of violations, set the return structure to that w/ the lowest energy. -addUnknownAtoms: added optional maxFixupIters arg python/selectTools.py convertToAtom: fixed exception error added correctSymmetricSidechains - to swap atoms to conform to Xplor-NIH conventions: Valid range for phe, tyr, and asp chi2 and glu chi3 is -89.99..90 degrees. Beyond that, the names are getSegsResidues: -changed invocation so that it now accepts AtomSels -Bugfix. Old code was returning a list of residue numbers & names with an entry for each selected atom, resulting in many repeats. python/simulationTools.py fixed b-factor calc in aveStruct.py and in StructureLoop.genAveStats python/simulationTools.py minimizeRefine: added arguments rigidRegions, fixedRegions fixed bug in which only one potential term was scaled nmrPot/solnScatPot.cc weights member: changed accessor from MODACCESSOR to explicit, because setting it can change exptScale, so it must be recalculated. calcGlobCorrect: -fixes so it doesn't have side effects. It should now properly work to correct for small numAngles, even if useGlobs=False. -overriden so that corrected I(q) can be explicitly specified -fixes to normalization - introduce ave. normalization (index=-2) -now throw exception if calcing derivs when using non-uniform calcType -fixed rms definition to better reflect energy python/solnScatPotTools.py analyze: updated calculation of deviation and chi^2 now always scale calcd/expt by the proper normalization python/sansPotTools.py python/solnXRayPotTools.py no longer pre-normalize weights for chi^2 calculation: this is now handled by the potential create_*Pot: now throw exception if no datapoints are defined. moved globRules to common solnScatPotTools location create_solnXRayPot: -fix up treatment of chi^2 weighting for normalizeINdex>=0 -fixup handling of weights and normalizeIndex aSelection now excludes ANI atoms added normalizeIndex and preweighted arguments getCombinedAtoms: optimization to remove creation of AtomSels in an inner loop. This changes output because the atom selection used the hydro keyword, while now all atoms whose name starts with "H" are chosen (the correct behavior). useGlobs: -optimization: remove use of AtomSels inside inner loop of glob determination -fixed so that it handles multiple segments python/varTensorTools.py configIVM: now enable topo setup for case of ensembleAxis python/xplorPotTools.py add some support for the NCS term common/xplorSimulation.cc -fixed setAtomMassArr so that XPLOR-side values would get updated by implementing an overloaded version in XplorSimulation Example Scripts eginput/runAll Removed the -f option renamed eginput/marvin => eginput/pasd eginput/protG/protG_mkpsf.inp actually make peptide bonds... eginput/pasd/cvn/.runAll add example of using mleFit eginput/PSF_generation/genDNA24bp.py added genDNA24bp.py example (using fixupCovalentGeomIVM) eginput/gb1_rdc/anneal.py fix so that commented-out rdc code will work (if uncommented) eginput/gb1_rdc/pairRMSD.py Added a command line option called -noFit. If specified, the structures are not fitted together before the RMSD calculation. eginput/gb3_ensemble/order.py update NOE setup to use Python/C++ NOE term with explanatory comment. Helper commands bin/xplor -The -smp command-line option now works correctly for Intel Macs. It now works on all platforms except for ppc Macs. -fixup for -scyld when num_threads<2 and SCYLD_PROCESSES>#nodes -fixed: changed == to = moved eginput/protG/tang.py to the helper script bin/torsionReport fixed up for degrees --> radians change in Dihedral::value added getBest helper to toplevel bin directory. This helper grabs the structures in a .stats file - it is useful for command-line manipulation. renamed: eginput/dna_refi/plotIrange.py => bin/calcSAXS added -psf and -help-script options bin/pdb2psf -Added a command line option to delete the unknown atoms from the PDB file before the PSF file is been written. -Bugfix. If pdb2psf is called on a file that doesn't contain any periods (eg., 'temp'), the resulting PSF file is named '.psf'. Changed to check for PDB filenames that don't contain periods, and to produce PSF files with appropriate names (eg., 'temp' --> 'temp.psf') bin/calcDaRh.in fix so that rdc scaling actually works. bin/targetRMSD Added a command line option called -noFit. If specified, the structures are not fitted together before the RMSD calculation. Parameters / Topology toppar/protein-2.0.top ARG: swapped chi5 definition to match IUPAC toppar/nucleic-2.0.par added base angle corrections from the 1.1 file Low-level modifications CDSlib/cdsVector.hh added sum() function The gfortran compiler (as of version 4.3) now works for AMD64. Changes from 2.19 to 2.20 XPLOR Interface merged FX-plor functionality. Special thanks to Wen Bian, Gerald Stubbs and Don Marvin for making this possible. See documentation at http://nmr.cit.nih.gov/xplor-nih/doc/current/xplor/ ------------------------------------------------------------ added fortlib/specfun/ribesl.f ------------------------------------------------------------ hbdb allow zero value of hbprnfrq to disable facility ------------------------------------------------------------ source/genic.f source/prototypes.hh replaced the DELTI2 subroutine with deleteAtoms, which has been modified so that it can be easily callable from the C++ interface. ------------------------------------------------------------ source/xplorFunc.f xplor_init: added flag so its not executed twice ------------------------------------------------------------ arch/Linux_2.2_i686/Makefile.defs common/simulation.cc source/linuxtime.f mods to support gcc/gfortran 4.3 on ia32 ------------------------------------------------------------ source/carb.f printcshifts: define RMSD as a weighted average of CA and CB shifts define NUMBER ans the sum of CA and CB violations DECLAR RMSD --> $RESULT DECLAR NUMBER --> $NUMBER ------------------------------------------------------------ source/etor.f added a tolerance parameter dihed_colin_tol: the value of cosine of the angle between two bonds above which the bonds are considered colinear. Previously, it was a hard-coded constant. it can be set via the command set TOLTorsion end the current value can be accessed via the $DIHED_TOL variable. ------------------------------------------------------------ source/x86_64time.f mods to allow compilation using gfortran ------------------------------------------------------------ PASD/Marvin Example Scripts eginput/marvin/cvn/refine.py Added a final refinement stage. Refine.py is based on eginput/gb1_rdc/refine.py, with filenames changed and only NOE and TALOS restraints enabled. eginput/marvin/cvn/talos2cdih.tcl Also added a short TCL routine to convert TALOS restraints into a XPLOR CDIH file, using the rules worked out for Marvin. Marvin reads the TALOS files directly, so it doesn't need this, but refine.py needs an XPLOR constraints dihedral file. eginput/marvin/cvn/talos/pred/ Now shipping the individual-residue TALOS output for the CVN example, since we're using it in the example structure determination. eginput/marvin/cvn/check_talos_predictions.tcl Converted CVN eginput scripts to those used for structure calculations in paper. TCL Interface tcl/aeneas_tools.tcl -Made writing of .peaks, .shiftAssignments, and .exceptions files optional. -Added stereopartner recording to standard3d and 4d initMatch procs to support stripe routines -Added support in standardJointFilter for applying netfilter contact map to different pots than those used to generate it -Bugfixes to correctShiftOffset proc. In determining output report, was comparing calculated offset to minOffsetToApply, rather than comparing their absolute values. -Changed flag name in solvent line proc from shiftTolerance to just tolerance, to match all the other procs' flags. -correctShiftOffset: minOffsetToApply argument: changed default value from 0.02 ppm -> 0.015 ppm bugfixes -Eliminated calls to initializeLikelihoodsFromFilters in standardJointFilter. These were overwriting the previous likelihoods generated from each peak assignment's network score. -Added -verboseOutsideSpectrum flags to match*d procs. Lets me control whether complaints about peaks being outside of the spectrum are added to the remarks. -Removed symmetryFilter proc -Removed primarySequenceDistance proc -Removed generateShiftAssignmentPeakPositionLikelihood proc, which was never used. -Removed markCrowdedPeaks, which is no longer used -Removed stripeCorrection proc, which is replaced by code in newstripe.tcl -Removed netfilter proc: functionality moved to netfilter.tcl -Removed secStructFilter proc - never used. -Updated correctShiftOffset proc, to agree with my old codebase. Now includes flags for minimum number of symmetric peaks, below which no offset will be calculated, and minimum offset to apply, below which I judge that it's just noise and not worth applying. Finally, correctShiftOffset now throws an error if it does find an offset worth correcting, so that the standard*match proc can know that it needs to re-match the peaks. This routine might be worth getting rid of entirely, since it appears to be relevant for IL-4 only. My initMatch scripts for IL-4 now apply Dan Garrett's hand-determined offset corrections to the peak locations before matching, so correctShiftOffset isn't even used in that case. -Removed netFilterMini: replaced by code in netfilter.tcl -Updated standard3dInitMatch in a few ways: A. Can now define solvent ranges here, so that solvent peaks are removed consistently with any hand-solvent range determination B. Now drops shift assignments whose proton shifts are outside of the from and to spectral ranges. This replicates what Dan Garrett does in STAPP, whose parameters don't allow folding or aliasing along proton dimensions. C. Can now define the size of the broad tolerance (in ppm) D. Changed call to correctShiftOffset to handle the possibility of an error being thrown (described above). E. Added -allWeakPeaks flag, which causes all peaks to get distance ranges for weak peaks. Needed because some datasets don't have peak intensities available. F. Added -writeEachStage flag, which forces shift assigns, peaks, and exceptions to be written at several places during initialMatch, to support statistics gathering on prefilters G. Changed to call new stripe filter code H. Changed standard tight tolerance from 0.03 ppm to 0.02 ppm, which is what my 2.1.19 code used. -Made corresponding changed to standard4dInitMatch tcl/deprecated.tcl includes symmetryFilter and primarySequenceDistanceFilter procs- used in old scripts. tcl/netfilter.tcl -moved the network filter code out into a separate file -temporary? change to rollback likelihood calc change. I now just give previous likelihood = 1 for PAs that pass, and 0 for PAs that don't. Was what I had for 1/24/08 marvin runs, which seemed to be more accurate. -Changed behavior when raw intrares scores are low. Was previously setting low scores to be equal to the floor value. But that leaves suspicious residues easily able to make contacts. Changed so that low scoring residues get their intrares score reset to 1.0, which makes it harder (but not impossible) for them to create contacts. Seems to be an improvement, judging by contact maps -Changed netfilter proc to allow it to calculate a contact map on the basis of one set of spectra, and to apply it to a different set. This is because 3dN and 4dNC spectra rarely have any long-range contacts, and therefore add nothing but noise to the contact map calculation. -Bugfix to code that deals with to-from partners. If a given SA has a recorded name for its to-from partner, make sure an actual SA with that name exists, because it could have been deleted (which leaves the name string describing a non-existent SA) tcl/noe_reporting.tcl -added completenessSummarizeMarvinResults proc, which generates PA likelihoods from the best 10% of structures as measured by their local NOE completeness--ie., NOE completeness of just the from and to SAs that go into a particular PA. Uses different structures for each PA. Seems to work better in noisy situations, like ThTP pass2. -Fixed overall NOE completeness calculation used in selecting converged structures. Was using mean of each spectrum's completeness, which is clearly wrong. Now I count numbers of neighbors and accounted neighbors for each spectrum, sum them up, and calcualte overall completeness correctly. -Added new summarizeMarvinResults proc, which ranks structs by # peaks nonviolated. Doesn't use completeness. -Added nunNonviolatedPeaks proc to support above. -Modified chooseBestFraction to support above. -Bugfix to old summarizeMarvinResults--was using -inverseBound flag to set inverse methyl correction. Doh, but I don't use that proc any more. - Added support for not writing avg PDB, .peaks, .shiftAssignments files to newSummarizeMarvinResults and completenessSummarizeMarvinResults. - Bugfix to newSummarizeMarvinResults: Before I create a symlink to a converged PDB file with the "converged" tag in its name, I now check to make sure it doesn't already exist. - Change to completenessSummarizeMarvinResults. I now activate peakAssigns (for calculating individual SAs' NOE completeness) based solely on whether or not they're violated in a given structure. There's no stochastic element to it at all, which is appropriate. I should perhaps eliminate this entire proc as a clever idea that didn't pan out, but I'll make that decision later. tcl/noe_stats.tcl -Changed settings used for updating activation during NOE stats calc to prevent SA inactivation, and to explicitly set inverse bound -Added new tcl file noe_stats, which contains procs to handle activation-sensitive calculation of NOE statistics. -Added procs to calculate number of high likelihood peaks number of good high likelihood peaks number of high likelihood long range peaks number of good high likelihood long range peaks number of shift assignments with no high likelihood peak assignments -added calls to print those stats as part of the standard newStats report. tcl/pdb_support.tcl -Changed readPDBremarks proc to require a -fileName flag, for consistency with readPDB, which also uses the -fileName flag -Added support for writing to the occupancy and b-factor columns of PDB files, using names "aux1" and "aux2". tcl/import_pipp.tcl - Modified to make experiment-specific import routines (eg., read3dCPippPeakTable) optional, and to allow nmrDraw import routines to receive and pass on remarks correctly. All of this comes down to running the low-level procs inside of eval statements, with the remarks variable names being passed along correctly. - Better handling of errors that I catch involving unassigned peaks during process3dAssignedPippPeakTable. I now reset errorInfo appropriately, so spurious errors don't appear in top-level calls to puts $errorInfo. - I now set the previousLikelihood of peakAssigns in process3dAssignedPippPeakTable to 1.0 - Added process4dAssignedPippPeakTable, which is entirely analagous to process3dAssignedPippPeakTable marvin/ShiftAssignment -Eliminated references to EquivPeakAssignmentSet. -Bug fix to support removing shift assignments correctly. marvin/MarvinNOEPotential - Added functionality to remove all peakAssigns and explicit exceptions involving a given shift assignment. This is automatically called when actually removing a shiftAssignment, but is exposed to the user as well. Makes removing shift assigns much easier, since it eliminates a lot of TCL-side code. - Bug fix involving neighbor list regeneration. I wasn't forcing a neighbor list regeneration when I added or removed shiftAssignments or when the inverse caches need updating. - Bug fix in updateInverseCaches. When I delete a shiftAssignment, I clear its toFromPartner's pointer to the removed SA. But I don't clear its toFromPartner SA's toFromPartnerName slot. Now I check whether that name is the name of a valid shiftAssign before trying to set the pointer. tcl/shiftassign_tools.tcl -Added a proc--dropShiftAssignsInShiftRange, which is used in the standardNDinitMatch procs. -Bugfix to recordStereoPartnersForShiftAssignments. -Added support for recording a shiftAssignment's stereo partner in a table. marvin/Peak Changed chooseAnAssignment method to calc overall likelihood of each peakAssignment just as it's done during PeakAssignment::updateActivation, and then to normalize them. If total likelihood is very low (<0.001), it gives up and makes all of that peak's peakAssignments equally likely. tcl/sa_protocols.tcl pass2 proc was missing calls to use the original MC scoring function and to prevent SAs from being inactivated. Fixed. tcl/sa_protocols.tcl Temporary? change to support changing the values of krama and ktalos during pass2 and origPass- tcl/primarySequenceExceptions.tcl Code to create inverse exceptions for every SA pair that's within a particular number of residues in primary sequence. Helps ensure that TALOS alone can set the backbone angles, and deals with problems caused by few observed NOE contacts between residues close in primary sequence leading to missed contacts. Primary sequence neighbors often have very limited sidechain-sidechain contacts because of restrictions placed by secondary structure. tcl/newstripe.tcl New stripe analysis method that avoids using the same peaks as targets for multiple shift assignments - Moved code for counting SAs w/ zero targets into its own routine, so it can be called either after recording all possible targets, or after they've been filtered. - Reorg of prefiltering code (targetIsReasonable). - Now iterates calls to targetIsReasonable during filterTargetsForInitialReasonability, to promote convergence. Note that this doesn't guarantee identical results each time, since it depends on the order in which SAs' targets are filtered. - No longer force from SAs to choose targets before the to SAs. Now just choose targets for all SAs, in random order - Changed scoring function from fraction of intrares + bbnseq partner SAs that are covered by compatible targets to fraction of intrares + bbnseq possible targets that are compatible. - Added optional proc that deletes SAs which have zero targets tcl/import_nmrdraw.tcl tcl/marvin_lowlevel.tcl Change to the flagVal proc, to allow it to match several different targets. For example, flagVal $args [list -pot -potList] will match both -pot and -potList calls in an argument list. Needed by several procs in the new stripe filter, standardInitMatch, etc. tcl/selection_tools.tcl -stereopartnerList proc: added asn HD21/22 and gln HE21/22 as stereopartners. -Changed behavior of previousResidue and nextResidue procs to always return a single residue string, and throw an error if >1 next- or previous residue is found. tcl/sa_tools.tcl -Bugfix to structPrecision. Was allowing (optional) grabPDBfiles call to overwrite main coordinate set before it was copied to the comparison set. -Added automatic generation of symbolic links to converged structures, so they can be grabbed easily by other scripts without having to refer to the avg pdb file's remarks lines. Probably useful -Added createViewScript proc, for VMD inspection of converged structures -Changed standard method for generating mean coords to allow vdw minimization during cleanCovalentGeom. tcl/talos_tools.tcl -Folded in individual-residue TALOS input/output from my old codebase. This creates restraints more conservatively, direct from TALOS's res_*.tab files for each residue. The acceptable range is set to the observed range of database hits, plus a padding (default 5 degrees). There's also a minimum range (default 20 degrees) to prevent over-restriction from cases where you have very tightly grouped database hits. -This also adds the ability to write out the resulting TALOS restraints as XPLOR dihedral restraints. -This code also has a bugfix relative to my old codebase. Situations where the database hits wrap around +/- 180 degrees are handled gracefully. This was causing surprisingly large numbers of bad (or extremely broad) TALOS restraints in my old codebase. ------------------------------------------------------------ ------------------------------------------------------------ Python changed default Python version for output from 2.4 to 2.5 ------------------------------------------------------------ new: python/symmetry.py contains test for dimer C2 symmetry ------------------------------------------------------------ added distance symmetry potential: same as the XPLOR NOE distance symmetry restraints for normal Simulations, but enforces symmetry between EnsembleSimulation members. ------------------------------------------------------------ atomSel module added asUnion/union function nmrPot/posSymmPot.cc -fixed bug in gradient -now throw an exception if there are fewer than 3 equivalent atom sets -changes to PosSymmPot mostly to expose internals so that the translate/rotate operations could be repeated externally rationalized return type of equivAtomSelPairs and equivAtomPairs -added rotMat, centroid and translatedCoords accessors nonBonTools.py vdwViolations now takes extra arguments to optionally determine violations involving only selected atoms. python/xplorPotTools.py PotData.__init__: added try...except clause for getting violation info motivated by distance symmetry NOE restraints for which the noe print statement doesn't work. now print out XplorPot::scale in analysis (.viols file) now get, print rmsd, violation info from the CARB term ------------------------------------------------------------ rdcPot added gyroA/B output to info() atomSelAction: RMSD: constructor can also take an AtomSel argument Fit.translation now returns a Vec3, not a tuple. ------------------------------------------------------------ python/simulationTools.py StructureLoop: -rmsd to average structure is now calculated correctly. Previously, rmsd was calculated to unregularized structure. -constructor: added averageRegularize flag to allow disabling regularization. -added the structureNum method -averageFilename now supports the SCRIPT replacement of pdbTemplate. -fixups for EnsembleSimulation calcs: -now call barrier in constructor to clean up list of running processes early -run(): made cpuTime calc EnsembleSimulation-safe StructureLoop.genAveStats: allow for missing files when generating statistics (instead of crashing) StructureLoop.run() now sets a number of members to the instance (self) object, including cpu time, calculated structure precision and restraint statistics. Also, it now returns the instance object. StructureLoop.writeStructure: set the default potList and altPotList arguments from StructureLoop's averagePotList and averageCrossTerms, respectively calcAverageStruct: now takes new arguments potList and regularizeSteps, used for optional regularization by minimizeRefine minimizeRefine: fixed typo in clause which ensures covalent energy terms are present. testGradient: -added a text header for EnsembleSimulation gradient tests -fixes for when dealing with EnsembleSimulations: it should now actually work correctly and now supports xyz components convertToPotList: can now take a bare potential object ------------------------------------------------------------ python/solnScatPotTools.py python/solnXRayPotTools.py added Xiaobing Zuo's nucleic acid volume values- can optionally activate these values. added Mn,Zn to supported metal atoms create_solnXRayPot: changed the default selection from not hydro ------------------------------------------------------------ ivm -added untested rotate2 node type -fixes s.t. IVM.hinge() actually works with previous argument types -optimization of breakAllBondsIn method- moved loops to a C++ extension defined in the .i file. -added simulation() accessor step(): now check if newTimeStep is smaller than minStepSize and throw an exception if so. -additional optimizations ------------------------------------------------------------ python/residueAffPotTools.py added 1999 Mizagawa/Jernigan contact potential create_ResidueAffPot: added optional argument interdomainContacts. fix justification (to left) of segname now has optional potentialName argument to switch between different potentials ------------------------------------------------------------ python/selectTools.py numResidues: fixed default argument (so a null selection correctly selects zero atoms) added getSegids() helper added convertToAtomSel() helper ------------------------------------------------------------ avePot: fixed gradient error which sometimes would double the gradient ------------------------------------------------------------ python/psfGen.py seqToPSF: right justify space-padded segid the length of segName is now handled correctly. deduceSeqType: will now throw an exception if a residue name is longer than four characters pdbToSeq: added helper code to catch the case of truncated ATOM records: short lines such that the segid has fewer than 4 characters. ------------------------------------------------------------ python/regularize.py fixupCovalentGeom: -now catch and ignore small timestep errors from the IVM -new algorithm which works residue-by-residue and uses fast SetProperty and new AtomSel helper functions. -vdw fixup -added fixupLoop_xplor: now do residue-by-residue fixup in XPLOR addUnknownAtoms: now just exit if there are no unknown atoms fixupCovalentGeom: tighten XPLOR TOLT parameter for this routine simple fixes to covalentMinimize ------------------------------------------------------------ python/protocol.py added initHBDB helper function matchInexactEntry: added new name transposition rule. matchInexactAtomEntry: import regularize.CovalentViolation initCoords matchInexactAtomEntry: add strictResNames flag argument moved covalentMinimize and fixupCovalentGeom to regularize.py genExtendedStructure: now use fast atomSelAction.SetProperty genExtendedStructure: changed the default atom selection to exclude RDC axis atoms. This so it will now do the right thing when called after the RDC terms are set up. pdbLocation: switched to new .gz ftp location downloadPDB: now use urllib2 loadPDB: fixup resetting of current simulation added addUnknownAtoms_fast, and call to it from addUnknownAtoms if the missing atoms are separated by a single bond from a known atom ------------------------------------------------------------ pdbTool added strictResNames flag and ability to require strict residue naming changed exception type returned by PDBTool::read to IOError ------------------------------------------------------------ atomSel added helper functions intersection(), notSelection() and union() which create pseudo selections ------------------------------------------------------------ common/xplorWrap.cc deleteAtoms: added call to XplorSimulation::syncFrom after deletion ------------------------------------------------------------ simulation all Simulation objects are now reference counted Simulation::deleteAtoms: the argument is now a list of atom indices instead of a selection string. the Python .i files added an indirection to keep the previous behavior. added atomMassArr/setAtomMassArr accessors ------------------------------------------------------------ common/atomSelAction.cc python/atomAction.py moved SetProperty from atomAction to atomSelAction for optimization. Renamed previous definition to SetPropertyArr ------------------------------------------------------------ common/xplorWrapProc.cc freeAtomData: bug fix: now use dynamic_cast and check result when down-casting to obtain a XplorWrapProc. ------------------------------------------------------------ python/socketComm.py collect: added diagnostics in case of readData failure ------------------------------------------------------------ added posDiffPotTools a potential term to help evaluate structural RMSD ------------------------------------------------------------ selNBPot added CENTER aveType to selNBPot ------------------------------------------------------------ restraintStats TermEntry now has methods to calculate mean, dev of energy, rmsd and viols ------------------------------------------------------------ added python/maxLikelyFit.py module for molecular fitting based on maximum likelihood estimate. written by Robin Thottungal ------------------------------------------------------------ jCoupPot better diagnostics if bad selections are encountered ------------------------------------------------------------ Low Level Libraries ------------------------------------------------------------ CDSlib/cdsList.hh sort method: try to make a default comparer argument ------------------------------------------------------------ CDSlib/rc_ptr.hh allow proper cleanup of pointee. no longer set counter member to zero. copy constructor: made safe for null counter members added methods for manual reference count manipulation: incr, decr count added methods for casting up/down TYPE class heirarchy: cast, dyn_cast mods so that destructor zeros counter member Helper Scripts ------------------------------------------------------------ calcTensor, calcETensor, calcDaRh have been moved into the bin directory added mleFit and domainDecompose helper programs seq2psf: added the -cisPeptide option and usage test targetRMSD: add check that all atoms used for fitting are known calcTensor: fix crossTabs initialization type added -crossValidate option bin/xplor -handle the case in which the machines list starts with localhost, but also contains nonlocal machines. -formalize and document arch/equivList format tcl/findTCL support for recent versions where TCL_INC_SEPC is replaced by TCL_INCLUDE_SPEC Example Scripts -added validation scripts these check that the calculated results are of suffient quality. These can take a long time to run. Run with eginput/validate -eginput/runAll added -keep command-line option ------------------------------------------------------------ eginput/gb1_rdc/ * added analyze_anneal.py, analyze_refine.py for analysis, validation *refine.py -added SCRIPT to averageFilename -accept function: loosened tolerance on rdc rmsd -properly ramp the Vgyr scale factor - added a cross-validated PosDiffPot term to compute rmsd to the crystal structure. - bumped the number of calculated/analyzed structures to 20, and added a -quick flag to reduce it back to 3 *anneal.py -now start from randomized torsion angles instead of extended structure - anneal: - initialize coords from model.pdb - these coords are not used in calcs - remove initial calcTensorOrientation- but add it after extended structure is generated - set averageContext in StructureLoop *analyze.py - allow for missing structure files (instead of crashing) ------------------------------------------------------------ eginput/dna_refi/ensemble.py fixup selections: hydro --> name H* ------------------------------------------------------------ eginput/PSF_generation *testNAG.py increased maxFixupIters * added addAtoms2.py * added writeChainID.py example Changes from 2.18 to 2.19 new helper script: bin/targetRMSD - to compute rmsd to a known structure arch/equivList - Mac platform updated to run Darwin_9, confirmed by user feedback added parallel.txt write-up describing parallel structure calculation capabilities configure script improve error message for case appropriate xplor binary is not present. XPLOR interface: removed the BUFMAX parameter from comand.fcm a consequence is that the rotating command buffer no longer rotates: it just gets larger added two array helpers: assign_char_2d and get_char_2d removed the NDSMAX parameter - associated arrays are now on the heap removed the MXRTP parameter removed the MXRTI parameter removed the NHBMAX constant parameter fixed ASSIgn docs for xdipo/dipo potential added xadc XPLOR term contributed by G. Bermejo (reference ???) source/parser.f changes to sizes of heap-allocated strings. Probably not needed. XPLOR angle, bond, dihedral and improper violations: added NUMBER declar'd variable Python Interface gyrPotTools: updated Vgyr ranges to match those in the paper added Rg targetType - needs gradient, testing of Rg targetType pdbTool: added ability to write to the ChainID field (by setting the writeChainID flag). PDBTool::read(): better support for a subset selection- these atoms are no longer added to the unplaced list. protocol: loadPDB: added simulation argument addDisulfideBond: fixed to make working, plus docstring initDynamics: fix so that eTolerance isn't specified as negative if bathTemp argument is omitted. initCoords: now allows selection to be a plain string fixupCovalentGeom: changed default angle and dihedral tolerances from 5 to 2 degrees. This picked up some problems in less-used parameters. matchInexactAtomEntry: handle case when occupancy or Bfactor are invalid numbers xplorPotTools: now get number of XPLOR restraint terms from XPLOR NUMBER variable added restraints class support for the ANGL XplorPot term python/psfGen.py moved addDisulfideBond from protocol to psfGen w/ compatibility call spline: added support for periodic splines added Spline2D - bicubic interpolation, w/ gradient vec3: __neg__: fixed so that it doesn't have side effects dihedral: overhaul of Dihedral class changed return units from degrees to radians added derivs method changed constructor (old constructor is emulated by Atom typemap) densPotTools: create_DensPot: fixed location of an import statement added cstMag potential for refinement against chemical sheilding tensor magnitudes. Reference forthcoming. nonBondTools: allow atom names to contain the +'' character simulation: added Simulation::deleteAtoms ivm: ivm.hinge: change arguments to be more sane. backward compatibility maintained. added support for Python2.5 Example scripts eginput/PSF_generation/testDiS.py added disulfide test/example eginput/gb1_rdc/bicelles_new_hnc.tbl removed one rdc due to consistent violations eginput/gb1_rdc/refine.py accept: loosened required rdc tolerance updated eginput examples in eginput/gb1_rdc/ eginput/protG/calcDaRh.py small fixes CH normtype should now work modePowder should now be correct noise argument should be better handled documentation fixes eginput/protG/calcTensor.py - added normType option for RDC scaling - fixes to correctly handle multiple rdc experiments - added rdcWeights option to correctly weight multiple experiments - added the following command-line flags: -psf, -useDistance, -maxDa - fixed bug in which tensor atoms were improperly reset before calculating rmsd. eginput/PSF_generation/addAtoms.py added call to fixupCovalentGeom Parameter/Topology Changes toppar/ion.par and toppar/ion.top: changes to avoid conflicts with protein.top/par toppar/nucleic-1.1.par nucleic base proton angle parameters: adjust angles proton+heavy atom angles so that they add up to 360 degrees. Previously, there were always violations of >2 degrees. Internal Variable module: fixed handling of diatomic molecules resetCM(): now perform reset if fixed atoms are present - previously it just exited if there were any fixed atoms. corrected center of mass calculation: this improves algorithm stability for the case of nonuniform masses. Marvin/PASD tcl/noe_selecting.tcl Changed definitions in isShortRange and isLongRange to do exactly what the C++ code in PeakAssignment.cc does, in order to eliminate confusion. eginput/marvin/cvn/convert_restraints_to_xplor.tcl removeLowLikelihoodPeakAssignments: fixed name of the -cutoff flag LICENSE added government rights clause from A. Hubbs switched from cvs to bzr version control software. documentation fixes, additions Changes from 2.17 to 2.18 Helper scripts -bin/seq2psf added the -protonateHIS flag -added bin/targetRMSD C++ infrastructure CDSlib/cdsComplex.hh fixed up pow(complex,pow) added functions operator*(int,complex) and pow(complex,exponent) CDSlib/cdsMatrix.cc now support multiplication with GenMatrix; SymMatrix*vector now works added rawCopy method CDSlib/cdsVector.hh splitRep: made this method public CDSlib/fft.cc disambiguate ::pow call for Irix fixed call to ::pow added wrapper class for FFTPACK CDSlib/fft.hh added wrapper class for FFTPACK CDSlib/fftpack.hh removed redundant consts int --> long conversion: needed for 64 bit arches added wrapper class for FFTPACK CDSlib/matrixTools.cc determinant: reworked to have saveData- for optimization explicitly coded size 2 and 3 expressions - much faster than lapack calls. added function determinant (from PLU decomposition) and tests CDSlib/symMatrix.cc now support multiplication with GenMatrix; SymMatrix*vector now works added missing #include CDSlib/vec3.hh crossMat: reworked to use only constructor intVar/publicIVM.hh added recenterLargeDispl to PublicIVM: used in syncPos. Disabled by default. common/atom.cc atom: pos, mass, vel, fric read accessors have been inlined. This required #including simulation simulation: which required un-inlining Simulation::atomByID and rearrangement of #includes made usual constructors inline common/atomSel.cc AtomSel: moved binary methods out to stand-alone functions intersects --> intersect isMonomericallyEqualTo --> monomericallyEqual primarySequenceDistanceTo --> minResidDiff Added primarySequenceDistanceTo function. This is broadly useful, so it belongs here. Need to add a test for it. common/atomSelAction.cc updated Fit and RMSD to use AtomSels for fitting, comparison common/mmapAlloc.cc added the deleteFile function so that the mmapped file can be deleted regardless of order called. common/pdbTool.cc better treatment of altloc and icode entries: nonblank icodes are now ignored altloc enties in allowAltLoc are read, otherwise entry is ignored. added commented-out check of residue name write: check if atom coordinates are within range (valid). Warn if not. common/pot.hh: calcEnergy() now returns float_type instead of EnergyReport common/simulationWorld.cc added memoryUsed function common/xplorSimulation.hh added clone argument to constructor - if True, the new XplorSimulation will be a copy of the current one. If False, if will be a brand new XplorSimulation, with no atoms, etc. common/xplorWrap.cc fixed bug: SELRPN messages were printed when XplorWrap->select called added the qatmchk argument to the XPLOR energy() subroutine. This defaults to .TRUE. for all XPLOR use. Within the C++ interface it is .FALSE. This is for performance in addition to provide proper (not crash) behavior, particularly when gradient minimizing. common/xplorWrapProc.cc XplorWrapProc::freeAtomData: make sure pointers are correctly mmap or free - deallocated exec'ed children are now started -quiet -- banner is not printed disable master_exit_handler: it kills the slaves, and they don't get a chance to clean up. two bugs fixed: the master process now has a xplorDerivs instance variable - it had been using the static variable, leading to problem when multiple XplorWrapProcs were used. shutdown/cleanup change: now only the slave deletes sharedData. It seems to be cleaned up anyway when the slave exits- causing semaphore errors when the master had tried to clean up. added the clone argument to the constructor: if false (old behavior) a new xplor process is exec'd, if true the existing forked process info is used. static variable firstCall in function allocSharedData replaced by a variable in the instance-specific sharedData structure - this so that calls to XplorSimulation after the first one would be successfull. xplorwrapproc_slave: added a wait loop so that the slave process waits for the master at startup fixed bug: SELRPN messages were printed when XplorWrap->select called added the qatmchk argument to the XPLOR energy() subroutine. This defaults to .TRUE. for all XPLOR use. Within the C++ interface it is .FALSE. This is for performance in addition to provide proper (not crash) behavior, particularly when gradient minimizing. common/xplorWrapProc.hh two bugs fixed: the master process now has a xplorDerivs instance variable - it had been using the static variable, leading to problem when multiple XplorWrapProcs were used. shutdown/cleanup change: now only the slave deletes sharedData. It seems to be cleaned up anyway when the slave exits- causing semaphore errors when the master had tried to clean up. see the commit message for xplroWrapProc.cc Example scripts: eginput/PSF_generation/testPDB2PSF mods for disuse of seqres, accompanying psf fixes eginput/gb1_rdc/README added targetRMSD.py script, test eginput/gb1_rdc/analyze.py updated to split NOE restraints and turn off ANI VdW interactions now report a proper VdW energy eginput/gb1_rdc/anneal.py updates: note proper # structs now generate new extended structure for each structure calculated added missing (optional) cart_cool definition fixed typo eginput/marvin/cvn/cvn_n15noe.shifts Corrected some typos in 15N shift table: 1. Several residues had two lines of, eg., HA1|HA2 instead of HA1|HA2 and HA2|HA1. Fixed. Residues affected: 2 5 6 15 27 28 45 65 78 96 2. Also changed selections for phe/tyr deltas & epsilons from CD1|CD2 to CD*, since they're almost certainly averaged. Residues affected: 4 9 29 54 80 100 3. Finally, note that previous version had a typo in definition of Y29 epsilon carbon: Was CE1 | CD2. Changed to CE#, which fixed the problem. Note that this shift table should be the input for TALOS, not the 13C one (which lacks entries for backbone carbonyls, for some reason). eginput/marvin/cvn/initMatch3dC.tcl eginput/marvin/cvn/initMatch3dN.tcl Updated to reflect name change of correctShiftReferencing proc to correctShiftOffset eginput/protG/README added calcDaRh.py - determine Da, Rh in absence of structure info eginput/protG/anneal.inp rework parallel startup logic again - for case of num_procs>numStructs fixes to avoid non-integer structure count eginput/protG/calcDaRh.py added calcDaRh.py - determine Da, Rh in absence of structure info eginput/protG/calcTensor.py will now (optionally) print out back-calculated RDCs fitSel can also now be specified on the command-line updated to support command-line options nmrPot/Makefile added gyration tensor volume potential term added selNBPot/ residueAffPot-- empirical potential to capture hydrophobic forces. Current potential based on a K. Dill contact map. added planeDistPot approximate molecular volume calculation from analytical surface area nmrPot/gyrPot.cc added square well potential gyration tensor volume potential term nmrPot/gyrPot.hh added square well potential gyration tensor volume potential term nmrPot/neighborBin.hh deal with case where too many bins would be created - atoms are very far apart changed template parameter from pointer-to-atom to atom instance. also added an ATOMLIST template parameter. no longer refer to an atom radius member- instead just pass a simple spacing argument. nmrPot/noePot.cc added support for ASSIgn ... OR restraint syntax initial changes to support the TO keyword in the ASSIgn statement: in the restraint class, replaced sel1, sel2 members with selPairs() accessor The python layer includes a compatibility layer such that sel1 and sel2 continue to function. now throw an error if the ASSIGN .. OR syntax is detected added planeDistPot distance-to-plane restraint potential term nmrPot/selNBPot.hh added dSwitch bug fixes in neighbor determination added selNBPot/ residueAffPot-- empirical potential to capture hydrophobic forces. Current potential based on a K. Dill contact map. nmrPot/surfaceArea.cc added null destructors optimizations changed many instances of rc_Neighbor to SA_Neighbor* removing this indirection lead to a large speed-up did same with rc_Vertex: no big gain from that. comment-out updateNeighbors: not used for moveTol==0 re-added neighborBin for optimization overlap: added moveTol argument tried to make nonzero moveTol work. No luck yet. replaced code with transpose with left-vector multiply now derivs from ModifiedBase removed TouchingList::init various optimizations, using const where possible, using raw pointers instead of ref counted pointers bug fix: now initialize sim member cache neighbor list in new neighbor member singleAtomDerivs: add optional scale parameter avoid divide-by-zero error by adding small value to Omega getOverlappingAtoms: use touchingList if cRadius allows it added A member- previously determined surface area. Used to avoid unnecessary (possibly dangerous) derivative calculation. optimization (?) to outerProd Vertex constructor: added initializers now expose more info: Omega angle nmrPot/volume.cc added null destructors cache atom.pos() coded derivatives of tetrahedra in nonlazy fashion changed deriv support from VecVec3 to DerivList added sa_saveData member added derivative info approximate molecular volume calculation from analytical surface area nmrPot/volume.hh added null destructors changed deriv support from VecVec3 to DerivList added sa_saveData member added derivative info approximate molecular volume calculation from analytical surface area Python Interface python/atomAction.py SetProperty: can now specify array of values. added getProperty function. added function: centerOfMass randomizeDomainPos: fixed error in CoM calc python/cdsMatrix.i support inter-symMatrix/matrix multiplication added much SymMatrix support - multiplication by matrix, vector, svd, inverse added space before trailing template > for later swig versions SymMatrix: fixed constructor, so that size-only can be specified. removed get method changed set method to use underlying method. moved cdsComplex stuff to cdsComplex.i python/cdsTypeMaps.i removed unused variable from DEFAULT_REF_TYPEMAP DEFAULT_REF_TYPEMAP - Python-to-C++: add attempt to directly copy any underlying C++ object to the target C++ object without going through the fromPy machinery - this is an optimization. python/cdsVector.i now references the correct documentation added CDSVector python/cdsVector_template.i added space before trailing template > for later swig versions added __str__, __mul__, __div__ python/csaPot.i allow positive values of Da, and changed sign convention added inline functions for computing CSA powder patterns python/csaPotTools.py python/densPotTools.py fixup to correctly count the mass added explicit destructor, call to base class destructor create_SurfaceArea: added radiusType argument, support for heavyatom radius parameters support for XplorWrapProc XplorSimulations create_DensPot: don't crash if number of attached protons is unexpected create_DensPot: now disable convex hull by default explicitly set moveTol to zero (will crash with any other value) replaced calcEnergyAndDerivs with calcEnergyAndDerivList changed default atom selection corrected capitalization of createDensPot corrected default target value fixup for atom radius setup. make timing info optional density potential and test python/derivList.i added __get/setitem__ methods get method return val is no longer const - impt. for Python pot terms python/fft.i added fft module python/findPython python/findSwig python/gyrPot.i gyration tensor volume potential term python/gyrPotTools.py create_GyrPot: added softScale, hardScale arguments updated documentation now create two terms - hard and soft. change default lower hard range from 14.5 to 14 replaced tag atom selection with selectTools.numResidues added square well potential create_GyrPot: added resScaleFactor argument, changed default value reduced default scale factor to 1 analyze: output format fixups gyration tensor volume potential term python/hybridMC.py use getXplorSimulation instead of xplor.simulation python/ivm.py cleanup run: now checks for atoms with large displacements before dynamics. python/mat3.i added inverse python/minimize.py conmin: added stepsize argument python/noePot.i initial changes to support the TO keyword in the ASSIgn statement: in the restraint class, replaced sel1, sel2 members with selPairs() accessor The python layer includes a compatibility layer such that sel1 and sel2 continue to function. python/noePotTools.py create_NOEPot: added splitRestraints, deltaResidLR arguments, functionality python/noeTest.py python/noeTest.py.out python/nonBondTools.py update to work with XplorWrapProc now allow chemical types to contain underscores readXplorRadii: updated to correctly use 1-4 list now read nonbonded exclusion list from the PSF and use that too vdwViolations: change default value of radiusScale from 1 to defaultRadiusScale=0.8 python/planeDistPot.i distance-to-plane restraint python/planeDistTools.py update to work with XplorWrapProc helper functions for distance-to-plane restraint python/protocol.py fixes to xplor manual URLs added helper function: initCarb13 loadPDB: added optional string argument matchInexactAtomEntry: added check for residue name mismatch loadPBD: added verbose argument added pseudoResNames: residue names to ignore when counting unreadable pdb ATOM entries initCoords: maxUnreadEntries is now a tuple, and value increased. downloadPDB: now remove temporary .pdb file initCoords: overload maxUnreadEntries to allow number to be specified as fraction of the number of residues. readPDB renamed to downloadPDB loadPDB: now has two arguments, to load from file or url matchInexactAtomEntry: now bomb if a nonnumeric resid is encountered altloc- now treat with PDBTool.allowedAltLoc initCoords: added maxUnreadEntries argument - to bomb on psf/pdb mismatches added loadPDB, readPDB helpers, to aid in reading PDB entries from the net reverted to previous version of genExtendedStructure genExtendedStructure: added genWithoutProtons argument to trigger an alternate algorithm in which a sub-XplorSimulation was created without protons and first fixed-up. Then protons were added with hbuild. The idea was that this would be a faster algorithm. Unfortunately, it turned out to not be the case. fixupCovalentGeom: now check that the same pot combination is never used twice in a row. added an additional verbose level. genExtendedStructure: added maxFixupIters argument python/psfGen.py pdbToSeq: new arguments: useSeqres: defaults to false, better to read sequence from ATOM records useChainID: useChainID - overrides segment name by default also: now terminate sequence determination when an ENDMDL record is found seq2PSF: added support for n-terminal ACE residue fixes so that a nondefault XplorSimulation can be used residueTypes changed from tuples to lists python/residueAffPotTools.py included simulation argument in AtomSel constructor create_ResidueAffPot: added sequentialCutoff argument analyze: fixed attractive reporting. added repulsive report SelNBPot/ ResidueAffPot documentation added selNBPot/ residueAffPot-- empirical potential to capture hydrophobic forces. Current potential based on a K. Dill contact map. python/restraintStats.py summarizeTerms: now break out terms in PotLists in a separate listing, s.t. the total energy is approximately the sum of all terms. added number of restraints column to the summary output. python/selectTools.py numResidues: removed spurious print statement updates to rigidNucleicSelections added convertToAtom python/simulationTools.py testGradient: added tolerance and epsilon arguments gradient difference is now scaled by gradient magnitude testGradient: added optional components argument now output is better formatted, and has a header. StructureLoop constructor: logic to better handle case where # procs > # structures. Avoid error message and print informational message. added comment concerning refactoring StructureLoop.genAveStruct testGradient: updated the docstring python/surfaceTools.py create_SurfaceArea: added radiusType argument, support for heavyatom radius parameters support for XplorWrapProc XplorSimulations quiet XPLOR output python/varTensorTools.py update to work with XplorWrapProc calcTensor_ensemble: added svdTolerange parameter; _analyze: fix problem with axes exactly alon xyz direction python/xplorSimulation.i getXplorSimulation: added default argument Fortran source added the DIRS XPLOR term from N. Tjandra RAMA potential term: in files: databases/torsions_gaussians databases/torsions_quarts/ databases/torsions_raw Changed delphic torsion setup scripts. In code that selects free and disulfide bonded cysteines, I no longer use the existence of an HG atom as an indicator of whether or not a residue is in a disulfide. Rather, I actually look for an SG atom that's bonded to the current residue's SG. Thus, situations where the HG is missing, but no actual disulfide bond exists, will not be treated as if they were disulfides, eliminating a small source of errors. In cases where users have deleted the HGs and implemented the disulfide using NOEs, the DELPHIC torsion restraint will treat the cysteines as if they were not disulfide bonded. Since NOE-based disulfides are not likely to have correct CB-SG-SG bond angles, there's no point in trying to have correct CB-SG-SG-CB torsion angles. This change to the setup scripts also eliminated a source of These corrections may result in minor changes to xplor output of various scripts! Specifically, they will probably eliminate a few lines of "no atoms selected" style errors in the output of the DELPHIC torsion setup calls. MANY THANKS to Chun Tang from GMC's lab for catching this! source/darwintime.f split out GETSYS into separate file for x86, ppc source/energy.f added the qatmchk argument to the XPLOR energy() subroutine. This defaults to .TRUE. for all XPLOR use. Within the C++ interface it is .FALSE. This is for performance in addition to provide proper (not crash) behavior, particularly when gradient minimizing. source/nbonds.f upinb: suppress normal printing of 'Ran out of space' message source/update.f suppress SCRATC-warning: message if WRNLEV==0 source/noe.f Eliminated weird status message. Whenever R-6 averaging was selected, xplor would print "R-6 averaging.", for no apparent reason. Wouldn't do that for any other averaging type. Updated documentation of the help message for the NOE ASSIgn statement to reflect the existence of the ASSIgn ... OR syntax. Marvin/PASD updates marvin/MarvinNOEPotential.cc Added hasExplicitInverseException routine, and added == operator to ExplicitInverseException marvin/Peak.hh Added isCrowded flag to Peak class marvin/PeakAssignment.cc Added isBackbone flag, isBackboneSequential function. Moved primarySequenceDistance routine to ShiftAssignment class to make it available in more cases. marvin/ShiftAssignment.cc Moved primarySequenceDistance calcualtion from PeakAssignment to here tcl/aeneas_tools.tcl change set A 1. Bug fix to reportUnassignedAtoms: No longer complains about missing proline Ns 2. Added -bbn-seq flag to PSD filter 3. Added markCrowdedPeaks proc, for use by stripeCorrection 4. Updated stripeCorrection for markCrowdedPeaks 5. Updated stripeCorrection to handle cases where no target is expected (eg., in 3dN with only intraresidue peaks used as targets) 6. added netFilterMini, the poorly-named residue-pair version of the network filter 7. Added convenience routines for processing: standard3dInitMatch standard4dInitMatch standardJointFilter 8. Added passSummaryJointFilter, which I'll probably remove change set B 1. Made match*d tolerant of shiftAssigns that don't have chemical shift values. 2. Gave match*d ability to not use shiftAssigns with low previousLikelihoods. 3. Improved reporting of peaks outside of the spectrum in match*d. 4. Gave recordUnfoldedPositions the ability to work with a subset of a pot's shiftAssignments. 5. Corrected a not-yet-tickled bug in removeDiagonalPeaks. If you're enforcing heavyatom positions being near the diagonal as well (only occurs in 4dCC spectra), then I forgot to multiply by 1/sqrt(2). 6. Explicitly set previousLikelihood of newly created ShiftAssigns to 1.0. This doesn't actually change behavior, since the C++ default was 1.0. 7. Changed networkFilter to not count pairs of SAs that are to-from partners by default, since they don't generally have peaks or peakAssignments corresponding to them. tcl/atomSel.i AtomSel tcl wrapper code: extend TCL wrapped class with intersects method to minimize code change. tcl/import_nmrstar.tcl Added two features: 1. Can handle cases where shift entries have an author_residue_id code. 2. Expanded automatic mapping of nmr-star atom names to xplor atom names. There should be very little need for editing nmr-star shift tables by hand any more. tcl/marvin_lowlevel.tcl reverted change: status messages go on stdout, not stderr Added binCenter routine, which is used by the correctShiftOffset proc. Also re- re- re- corrected the updateUser routine, which needs to spit its output to stderr, rather than stdout. It does NOTHING if xplor isn't called with the -verb flag, so changing it to stdout BREAKS the expected output. Please leave this as is, and flag any test or example scripts that use -verb as errors instead. changed verbose output from stderr to stdout tcl/noe_reporting.tcl Greatly expanded statistics reported by the summarizeMarvinPass routine. tcl/noe_selecting.tcl Added likelihoodLessThanOrEqualTo and likelihoodGreaterThanOrEqualTo procs tcl/sa_protocols.tcl Added cleanup of covalent geometry XplorPots, and made some minor changes to the "new" pass3 protocol, which includes inverse forces and is used with likelihoods direct from jointFilter.tcl, rather than from a pass of structure calculations tcl/sa_tools.tcl Added flag to grabPDBfiles to allow user to specify a particular model number within the PDB file to read tcl/selection_tools.tcl Fixed incorrect error message tcl/shiftassign_tools.tcl Added ConsolidateIdenticalStereopartners proc, which handles some bad shift tables I found on the BioMagResBank. Also added some minor bugfixes, one of which was caught by the initMatchTest Topology and Parameter files toppar/ion.par added ion.top/par from J. Howarth - probably cribbed from CNS toppar/ion.top added ion.top/par from J. Howarth - probably cribbed from CNS toppar/nag.par NAG topology and parameter files contributed by John Vakonakis toppar/protein-1.0.par added missing IMPRoper for ACE methyl VMD interface vmd/publicVMDInter.cc added colorMeth argument to bond method many documentation updates Changes from 2.16 to 2.17 ************** C++ Layer changes ************** now use the supplied lapack, blas by default CDSlib/cdsVector.cc added alloc member - so that instance information can be stored. added loadRawArray method - to load contents from a C-style array. CDSlib/rc_ptr.cc added reset method + test CDSlib/sthead.hh added global typedefs: MutexType SemaphoreType. These can be overridden by platform-specific includes common/avePot.hh scale no longer sets/uses subPot's value - now they're multiplicative common/derivList.hh changed argument names so that swig would supply default Simualtion* arguments. common/ensemblePot.cc sharedPID member: added mechanism to detect intervening calls to fork(), and fail if detected common/ensembleSimulation.cc barrier: re-enable exception thrown upon loss of member synchronization moved atom data arrays out of Simulation::SharedData into its parent. Lesson: never, never place pointers in shared memory. mods due to changes in Semaphore, Mutex: now explicitly place Simulation::bThreadMutex and EnsembleMemberSimulation::sem in shared (mmapped) memory, and explicitly clean them up mods due to changes in Simulation common/mmapAlloc.cc added debug statement alloc: added optional uniqueID argument- overrides static value free: now correctly handles 0 pointers common/mutex-sem.cc semaphore: changed sem type to SemaphoreType - this is currently defined in arch.hh (in arch/$ARCH/include) - from a pointer type. This avoids one memory dereference, but more importantly, allows better control of where in memory the full Semaphore object resides. [ note that previously, sem was manually placed in mmaped memory for shared usage. Now a shared Semaphore should be placed in shared memory explicitly. ] Mutex type is now explicitly MutexType, and not a void*. The current implementation is in terms of an underlying semaphore. This might be a template argument in the future. Again, memory localization is simplified. common/pdbTool.cc added useChainID flag chainID --> segname override; initial altLoc support common/simulation.cc resizeAtomArrays method removed, replaced with resizeAtomData. add/clearBondedPair methods removed changes to support XplorWrapProc: all atom, and bond data now live in member data of type AtomData moved atom data arrays out of Simulation::SharedData into its parent. common/xplorPot.cc added simulation() method energy and derivs methods now call down to corresponding XplorWrap methods common/xplorSimulation.cc renamed static method simulation() to defaultSimulation() mods to accomodate XplorWrapProc wrap() method is no longer const. added override of resizeAtomData constructur: now append child pid to simulation name for nonlocal XplorSimulations syncTo: pass modified member to slave process common/xplorWrap.cc changes as in header added energy and derivs methods made public, virtual methods to support XplorWrapProc added local flag openFile: fixed removal of ASSFIL info message added en/disableOutput and fastCommand specializations to XplorWrapProc const changes; added energy/derivs methods; select changed to virtual common/xplorWrapProc.cc XplorWrapProc: wrapper to run XPLOR as separate process, w/ shared memory communication. This allows one to set up multiple XPLOR simulations with different structures within one instance of Xplor-NIH. intVar/Makefile added -LEXEDIR intVar/dint-test.cc fixup for printCM --> printStepDetails change intVar/dinternal.cc -printCM renamed to printStepDetails and exported to PublicIVM -large timestep warning now doesn't print unless printStepInfo is enabled intVar/publicIVM.cc syncPos: added (untested) recentering code intVar/publicIVM.hh printCM renamed to printStepDetails and exported to PublicIVM nmrPot/csaPot.cc nmrPot/rdcPot1.cc nmrPot/varTensor.cc VarTensor: added initial support for ensembleAxis() this to support varTensorTools.calcTensor_ensemble nmrPot/noePot.cc added *untested* log normal potType nmrPot/surfaceArea.cc mods for getting at internal deriv info mods to expose class details to SWIG - mostly meaning unnesting classes ************** Platform-specific changes ************** Darwin/Intel updates so that LOCAL_CC, etc work ok now use -llapack -lblas for LAPACK_LIB createF77SharedLibrary: remove FLD_FLAGS now supply default values of CC, CXX added default value for F77 arch/Darwin_8_x86/python/Makefile removed DARWIN_LAPACK_LIB redirection arch/Darwin_8_x86/source/Makefile disable some optimization reductions reduced optimization level to avoid crash in orient tests: orientations, parser Irix arch/IRIX64_6.5/Makefile.defs added explicit def. of BLAS_LIB (to libscs) Linux/x86 arch/Linux_2.2_i686/Makefile.defs update for intel compilers version 9.1: add -axP flag which allows generation of much faster Fortran code on Core machines, with a slight penalty on althons. for pgi build, add -lpgsse2 for lapack added default values for CC, CXX ************** User-invoked scripts ************** bin/pty-xplor (used by VMD-XPLOR) change from an indiscriminate wait to waitpid... bin/pyXplor.in whitespace protection: added missing quotes bin/seq2psf.in added the -custom_rename option - for nucleic acid naming bin/xplor.in -now export XPLOR_EXE to environment: so XplorWrapProc can spawn proper exe -updated behavior for finish-up when running parallel jobs: now wait for only the first child job (process 0). That job has already waited for the other active jobs in python/xplorFinal.py ************** Documentation updates ************** online tutorial merged changes from class of 2006/12/08 online Xplor reference manual added references for wildcards in the NOE syntax section. helplib/nih-py-avePot scale no longer sets/uses subPot's value - now they're multiplicative helplib/nih-py-ensembleSimulation updated w/ note about straddling potential terms helplib/nih-py-ivm updated hinge() method docs helplib/nih-py-noePot updated deviation docs a bit helplib/nih-py-varTensor nmrPot helplib/faq/node0950.txt updated hyperlinks into the XPLOR manual ************** Example script updates ************** eginput/PSF_generation added pdbTest download and verify psf generation and coordinate reading added testPDB2PSF script and support files validate PSF generation. eginput/PSF_generation/addAtoms.py updated dynamics stespsize eginput/cmdline added testParallel.py basic validation of parallel execution and communication capability eginput/dna_refi/ added ensemble.py - ennsemble refinement using RDCs, CSAs, solution scattering info added plotIrange.py - calculation solution X-ray scattering curve eginput/dna_refi/refine_full.py fixup to pdbToPSF by addition of customRename arg move covalentMinimize to before tensor atom creation eginput/gb1_rdc/ added pairRMSD.py to calc pairwise positional rmsd eginput/gb1_rdc/refine.py changed CDIH threshold back to the default value eginput/gb1_rdc/sa_tmv_bice_rgyr.inp reworked to run properly when -parallel is specified eginput/marvin removed il4, protg example cases Disulfides are now treated with bonds, not NOEs. Scripts include support for running example in quick mode. quick mode: -only calculates 20 structures per pass. -only calculates structure of the first 36 residues of CVN. -write_subset_*.tcl does the first matching of the complete set of peaks to the first 36 residues. These scripts write out PIPP PCK tables of the assignable peaks that are then used by the initMatch*tcl scripts, which should speed them up considerably. -subset_talos_pred.tab is just an edited version of talos_pred.tab, covering only the first 36 residues. initMatch scripts use shift referencing correction, stripe correction, network filtering, and primary sequence distance filtering. Replaced pass1 with pass2, since I now have good starting likelihoods from the network filtering. resByRes.tcl produces a report of the contacts to and from every residue. eginput/marvin/cvn/check_talos_predictions.tcl Eliminated direct readin of parameter file--now handled automatically by readParamPsfPdb eginput/marvin/cvn/cvn_c13noe.shifts Corrected a wrong residue name in shift table eginput/protG/.runAll fixed calcTensor line eginput/protG/anneal.inp cosmetic change ************** Python Interface Changes ************** python/Makefile dist rule: copy .lines files over .so build rule: added LAPACK_LIB python/atomAction.py fixes for selections entered as strings randomizeDomainPos: various fixups added methods: copyAtomCoords randomizeDomainPos removed global import of vec3 module contents python/cdsList.i added instantiation of CDSList_double python/cdsMatrix.i added constructor from list of lists changed int to float to get proper type deduction of sqrt added typemaps for DComplex added SymMatrix added eigen(SymMatrix/CDSMatrix) functions added trace, det functions python/derivList.i changed argument name python/ensembleSimulation.i added fromSimulation downconverter function python/ivm.py enabled printStepDetails minimizeEscape: changed default numSteps added docstring setBaseAtoms: fix to support multiple Simulations breakAllBondsIn: optimization: not good enough- this must be placed in the C++ layer. fixed treatment of finalTime when minimization==True: ignore it python/nonBondTools.py updated to use new PRINT_FILE and PREV_PRINT_FILE xplor variables python/protocol.py updated hyperlinks into the XPLOR manual matchInexactAtomEntry: added rules for strange nucleic base HN atom naming revived/rejuvinated covalentMinimize- it is used by two scripts in eginput/dna_refi initCoorde: added useChainID flag matchInexact: handle chainID, altLoc fixupCovalentGeom: handle increased levels of verbosity fixupCovalentGeom: *constraints interaction statement now placed after initNBond, so it doesn't get clobbered. *nicer verbose printouts fixupCovalentGeom: added rigidRegions arg, xSim fixup fixupCovalentGeom: added maxViols optional argument for minimization, now step dEPred to current energy / 10. This to avoid large step sizes when we start very close to the minimum. now print out violations in extraTerms updated to support multiple XplorSimulations multiple methods now have optional simulation argument removed unused covalentMinimize function fixups for fixupCovalentGeom cartesianTopology: fix to allow sel object to be an AtomSel instead of only a string fixupCovalentGeom: mods to allow this to run on nonlocal XplorSimulations: use the IVM instead of XPLOR's dynamics and minimization engines (note that the runtime is longer, but the number of iterations is about 10x smaller) updated to use new PRINT_FILE and PREV_PRINT_FILE xplor variables initDihedrals: added optional string argument, for specifying restraint table as a string fixupCovalentGeom: added extraTerms argument - additional pot terms to be satisfied. fixupCovalentGeom: updated to work when using EnsembleSimulations initNBon: added more docstring about cutnb/tolerance relationship python/psfGen.py pdbToSeq: fixes so that the segment name gets read/set correctly. added ACE as a protein residue type seqres: fix case of missing chainID in SEQRES field- now we really read the SEGID from the first matching ATOM field deal properly with chainID (override segid) psfGen.seqToPSF: Marius' custom nucleic atom renamings are no longer longer the default but still available via the customRename flag. deduceSeqType: added URA to URI as residue name which will trigger identification as RNA. python/pyConvert.cc fromPy(double): fixed error checking to not crash when a complex is given python/pyInterp.cc constructor: initialize exitStatus python/sansPotTools.py create_SANSPot: added weightByExpt toggle python/selectTools.py fixes to properly deal with multiple Simulations: sim arguments to functions removed python/simulationTools.py StructureLoop: changed default value of averageCompSel to omit axis atoms. python/socketComm.py removed debug messages barrier: added cookie info (calling frame's line number) to barrier message Connection constructor: handle failure of gethostbyaddr: fall back to just using ip number to identify the remote host. Comm: constructor: increased default timeout length to 1.6 days python/solnScatPotTools.py added Chi^2 to analyze output python/surfaceArea.i mods for getting at internal deriv info instantiate newly unnested classes python/varTensorTools.py added calcTensor_ensemble; added support for ensembleAxis to saupeMatrix and analyze python/xplorFinal.py xplor.exitStatus is now treated differently: any nonzero value will cause error message to be printed, and final time stats to be skipped. python/xplorInit.py parseArguments: support the case that argument ``options'' is a single string parseArguments: formatting changes in error message. python/xplorPot.i added support for restriants() method for the CDIH term. the method is registered during XplorPot construction python/xplorPotTools.py updates to support multiple XplorSimulations updated to use new PRINT_FILE and PREV_PRINT_FILE xplor variables added support for restriants() method for the CDIH term. the method is registered during XplorPot construction PotData constructor: added support for numRestraints - for CDIH term only. motivated by Jurgen Doreleijers python/xplorSimulation.i getXplorSimulation: fixup so that this works for size=1 ensembleSimulations. moved getXplorSimulation here from protocol.py added converter (downcaster) from Simulation added helpers: enable/disableOutput fixups for python shell and select wrapper methods added python convenience methods: shell, select, command, fastCommand ************** XPLOR code changes ************** source/ccalls.c getusername: fix for case of failure in getpwuid source/energy.f source/etor.f source/pick.f source/cstran.f fix nasty bug in etor: the check for bond colinearity would fire off at fairly large values of the dot product. source/funct.fcm source/selrpn.f source/string.f copyst subroutine: now set new copyst_err logical if target string size is too small selrpn: make use of copyst_err to set selerr appropriately. This allows C++ AtomSel object to throw an exception on such errors. source/hbuild.f format statement syntax fixup source/noe.f added log-normal potential type source/parmio.f fix for problem first noted in 1998: http://www.bio.net/bionet/mm/x-plor/1998-August/001729.html vdw radii were incorrectly calculated from nbfix statements. This impacts the repel potential, and allows atoms to get too close. source/parser.f source/xplorFunc.f added DECLARed variables PRINT_FILE and PREV_PRINT_FILE involved increasing the length of CMDPMX in symbol.fcm getvar_asString: now calls TRIMM on returned string source/prot.f Correction to the electric field part of proton shift calculation. I wasn't summing up the effects of every heavy atom on each proton--rather, I was just returning the last heavyatom's effect on each proton. David Wilton from Mike Williamson's lab caught this. source/xplor.c added -sharedProc cmdline flag with call to C++ xplorwrapproc_slave changed new_argv initialization to ANSI C - for pgcc fortlib/lapack/Makefile no longer include routines which are already in blas fortlib/lapack/dsecnd.f commented out unnecessary external declaration for ETIME intrinsic ************** Changes to the Marvin/PASD facility ************** marvin/MarvinNOEPotential.cc -Eliminated generation of inverse exceptions for peaks expected to be near the diagonal, since that's handled by TCL. -Also eliminated a double-counting of accounted & unaccounted neighbors in updateNoeCompleteness. The original code produced the same numbers as the current code, but spent twice as long doing it. -Added method to reset the explicit inverse exceptions list tcl/aeneas_tools.tcl Added initializeLikelihoodsFromFilters Several changes: 1. match* routines now check whether a ShiftAssignment actually has a proton/heavyatom shift before trying to match it to a peak. To support an (unused by default) option in stripe matching, which turns off SAs that don't have stripe targets. 2. Eliminated recenterShiftAssignments. Replaced with stripeCorrection. 3. Eliminated origGenerateNetworkLikelihoods, try2GenerateNetworkLikelihoods, maxLinksInAgreement, and generateNetworkLikelihoods. Replaced with networkFilter. 4. NetworkFilter can accept multiple pots and analyze them together. 5. Eliminated stripeFilter and gatherTargetShiftValues. Replaced by stripeCorrection. 6. Added correctShiftReferencing. Detects any constant offset between the from and to proton dimensions and corrects peak positions to eliminate it. 7. Added ability to create (with createExplicitExceptions) explicit exceptions for peaks expected to appear within solvent lines. Note: file also includes beginnings of secondary structure Hbond detection (with secStructFilter), but it doesn't work well yet, and is not used in released scripts. addition in stripe filter--ability to update shiftAssignments' shift values to the targets'. Lots of changes to the netFilter code, but mostly to the obsolete versions. Modified enforceExpectedSymmetry proc into new symmetryFilter proc. match*d now uses improved mechanism for handling unfolded peak locations. UnfoldPeakPosnToMatch is now the key proc, and it always returns two possible unfolded locations: one with an even number of folds, and one with an odd number of folds. match*d tries all combinations of those possibilities in searching for peak position/unfolded SA posn matches. multiple files: Update to use atomSel class's == and intersects operators. Replaced occurrences of old TCL procs atomSelsEqual and atomSelsOverlap. tcl/import_pipp.tcl -Added a proc to write PIPP PCK tables. Doesn't yet handle PIPP-style assignments. Also doesn't handle writing slice numbers. Also missing ability to generate the DATA AXIS lines that are used to set spectral ranges. Other than that, it's quite complete :-/ -Improved comment-skipping in PIPP tables -Added rules in code for importing PIPP shift tables, ignoring lines beginning CUR_TYPE and ignoring lines commented out with a leading #, as Dan Garrett sometimes has. tcl/noe_reporting.tcl Changed format of one output line. Several additions: 1. reportNOEaccuracy can now report on the accuracy of peakAssigns above a certain likelihood, or those below a certain likelihood. Used to eval accuracy of accepted peakAssigns and rejected peakAssigns, respectively. 2. reportNOEprecision now also reports on NOE discrimination, the fraction of peakAssigns that is either > a high likelihood cutoff or < a low likelihood cutoff. High NOE discrimination correlates with convergence. 3. markGoodPeakAssignments reports number of unassigned peaks, for convenience. 4. initialPeakAnalysis can now be set to report statistics based on counting all peakAssigns, or only those whose likelihoods are within a given range. Useful for evaluating performance of filters. -Added calculation of fbad-long using previousLikelihoods arising from peakAssign filters -Expanded residue-by-residue reporting function to combine several pots' peaks into one report. -Modified summarizeMarvinResults proc. Added separate flags for violation and high-likelihood values to be used while rescuing filtered PAs, so that the structures' accuracy need not be too great to bring in filtered PAs. -Added logic in PA rescuing, so that I don't add PAs to peaks that already have high-likelihood PAs. -Expanded reporting of the filtered-PA-rescuing stuff. tcl/noe_tools.tcl -Corrected wording of a thrown error--old version indicated wrong flag syntax -A few Marvin peak reading & writing improvements: -Extended ability to parse both current marvin-formatted .peaks files and older marvin-formatted .restraints files. -Improved xplor-formatted output. Added check for peakAssignments with intersecting to & from selections, so that they won't be written to xplor files--classic xplor can't deal with them. -Also improved handling of bounds corrections--I now find the maximal upper and lower bounds corrections for all the peakAssignments of a given peak, and use those in generating the xplor ASSIgn's distance bounds. -added support for Michael Nilges's extended-OR format for NOE ASSIgns. If a given marvin peak has multiple peakAssignments to be written, the peak is written as an ASSIgn (sel) (sel) d dmin dplus OR (sel) (sel) OR ... restraint, which the current classic NOE code can parse correctly. -Two peak-reading bugfixes, plus I moved removeLowLikelihoodPAs from aeneas to here, and added removeFilteredPAs. RemoveFilteredPAs is used at the end of initMatch scripts to clear out the filtered PAs. -RemoveLowLikelihoodPAs is used in convertToXplor, as a final cleanup before creating xplor-style NOE tables. -Added consolidateClosePeaks (from make_random_noes.tcl). -added support for reading & writing the number of failed filters for each peakAssignment. -Caught a few bugs in the xplor-format NOE reading routine. -now remove all explicit inverse exceptions before reading a new file of them tcl/pdb_support.tcl Added support for reading specific models from a PDB file tcl/sa_protocols.tcl pass? protocols have been reworked. tcl/sa_tools.tcl -added code to print a Python traceback when an exception is encountered -Eliminated minor memory leak from non-cleaned-up atomSel. -Includes beginning of PDB cluster analysis. Not used in released scripts. -use appropriate env variables instead of paths relative to XPLOR_DIR tcl/selection_tools.tcl -Added a fairly complete test script for all the procs in selection tools. -Some bugfixes to selection tools, engendered by the test. -new code: previous and nextResidue procs -memory leak fixes in makeSelectionNonStereospecific and in stereopartnerForSelection. tcl/shiftassign_tools.tcl -Added ability of initialShiftAssignmentAnalysis to make reports based on all peakAssignments, or only on those with likelihoods within a given range. Analagous to the changes in initialPeakAssignmentAnalysis. -Corrected & expanded reporting of NOE completeness, so that it agrees with numbers generated by MarvinNOEPotential::updateNoeCompleteness. Also reports specifically on accuracy of explicit exceptions that do not correspond to a peakAssignment (ie., were generated by network filtering, or diagonal exclusion) -added proc to group shiftAssignments by residue, which is used in a few places (eg., netFilter's intraresidue neighborhoods) tcl/talos_tools.tcl -Added proc to read in a TALOS .tab file and write out an xplor cdih table. Previous code reads TALOS and creates dihedral restraints directly, with no chance to output an xplor-formatted file. This isn't pretty, but it'll do for now. Useful when going to python scripts, where TCL readTalos isn't convenient. -Added ability to skip commented lines ************** Parameter/Topology updates ************** toppar/nucleic-1.1.par toppar/nucleic-1.1.top intended changes somehow got dropped from the previous version version string in note updated added missing impropers for NH2 base groups and H2'/'' bumped minor version number fixes to stereochem defs to match IUPAC - contributed by J. Doreliejers toppar/nucleic-2.0.par toppar/nucleic-2.0.top naming corrections added missing impropers version number bump to 2.0 toppar/protein-2.0.par toppar/protein-2.0.top naming corrections added missing impropers version number bump to 2.0 ************** VMD interface changes ************** vmd/vmdInter.cc remove some ill-advised radius-setting statements ------------------------------------------------------------ Changes from 2.15 to 2.16 General now provide native intel/Mac binary package documentation: XPLOR reference manual has significant updates various updates/corrections to Python reference manual mailing list now searchable from http://dcb.cit.nih.gov/mailman/listinfo/xplor-nih -- thanks to Gmane. pty-xplor: added the -xhost command-line option xplor, pyXplor scripts: now protect space, special characters in command-line arguments XPLOR interface added pseudo-CSA (PCSA) potential term, test case from A. Grishaev see A. Grishaev, J. Ying, A. Bax (2006) "Pseudo-CSA restraints for NMR refinement of nucleic acid structure" J. Am. Chem. Soc. 128, 10010-10011. source/ccalls.c frename: now remove trailing spaces from old as well as new (contributed by J. Howarth) frtn_gethostname: workaround for some broken gethostname added new FRTN_CLOCK c function source/cstran.f,v changed dihe restrain info message, and now print to DUNIT source/fantalin.f source/fantacross.f output fixups, inspired by J. Howarth source/hbdb.f fixed array bounds error noted by J. Howarth source/orientations.f added ugly hack/memory leak to get working on Darwin_x86 source/saxs.f saxsinit2: initialize glocc array to 0 rearrange argument decl's, variable definitions to normal conventions source/linuxtime.f source/x86_64time.f change VCPU to call new FRTN_CLOCK c function source/xdipolar_coup.f,v fixed rhomicity definition in help text source/xplor.c changed argument treatment: now all options we know about are removed from the arg list (except for -tcl) Python Interface builtin xplor module added helper function xplor.parseArguments() for argument parsing and validation. varTensor: will now throw exception if Rh (rhombicity) is specified outside the legal range cdsVector: added constructor taking size and fixed value arguments findPython: USE_MACOSX_FRAMEWORKS is now an env var ivm.py: subtle change to breakBond: in 1st arg passed to convertToSelectionIndices protocol.py: matchInexactAtomEntry: -added rule matching H to HN -added matching rule, examining final character. Came from ILE difference in XPLOR, charmm22 ff. fixupCovalentGeom: -change treatment of sel argument: do not re-evaluate selection -save and reset mass values -placed default tolerances in argument list -split constraints interaction selection line so that longer selections are possible before COMAX errors. -exit: fixup exit message, and customize the exception thrown initCoords: added optional erase argument psfGen.py: dna residueType: added URI residue deduceSeqType: differentiate DNA/RNA by presence of URI pdbToSeq: fixed extraction of the resid field to get all four characters. pdbToPSF: changed seqToPSF to not deprotonateHIS- can be done in pdb pyConvert.hh: added toPy(FloatPair) pyXplor.cc: pythonStartup: now employ xplorInit.py to do initial argv parsing python_interp: now executes xplor.scriptName (instead of first item on argv), if it's not empty. change: now run xplorInit.py in the context of the module ``xplor.'' xplorInit: much less is now enclosed in strings added parseArguments helper sansPotTools.py: exchangableName: now print warning message if residue is not supported, don't crash moved solventVolumeSet definitions to solnScatPotTools create_SANSPot: added preweighted option added radiusScale (now properly treat excluded volume) added fractionD2O (now deal with D2O solvent) added exchangeFraction (to deal with exchangable protons in D2O) added normalizeIndex argument now clip negative I values to zero added useGlobs function and glob defs. -support separate proton globbing changed scattering length units by 10 also fixed units in comments. changed used SolnScatPot version from complex to real added specialized useGlobs frontend simulationTools.py: genFilename: updated to use xplor.scriptName. StructureLoop: added averageSortPots argument - terms to use to sort structures genAveStats: now call averageContext inside stats loop added averageTopNum as alternative to averageTopFraction added averageAccept function argument to report on only allowed structures. StructureLoop.genAveStats: deal properly with the case of no acceptable structures change location of averageContext call: now done for each structure, so that things like globCorrect() get set properly. added convertToPotList function testGradient: added alwaysPrint option documentation update socketComm.py startServer: write message to console on failure python/solnScatPot.i added pairDistribution function added import during module initialization python/solnScatPotTools.py add Pr function: weighted pairwise distance distribution function. supports EnsembleSimulations with proper averaging. useGlobs: added verbose entry which turns on single-glob atom listing python/solnXRayPotTools.py useGlobs: support for verbose argument moved solventVolumeSet definitions to solnScatPotTools moved useGlobs from solnXRayPotTools.py to solnScatPotTools.py and generalized, then placed wrapper back in solnXRayPotTools.py python/varTensorTools.py calcTensor: now able to calculate the tensor from an ensemble of structures (not necessarily an EnsembleSimulation) python/xplorInit.py fixed up to deal with command-line options, arguments added xplor.parseArguments: uses writeConsole to print command-line error message change: now run xplorInit.py in the context of the module ``xplor.'' much less is now enclosed in strings eginput/gb1_rdc: .py files updated StructureLoop in .py files now implements averageSortPots argument eginput/protG: added calcTensor.py to calculate alignment tensor from expt rdcs + structure grid_search.inp - add comments on use tang.py - updated to deal with segids, unknown resid types TCL interface tcl/Makefile deal with empty TK_INIT_DIR def tcl/findTCL handle case of missing tk_library USE_MACOSX_FRAMEWORKS is now an env var C++ Layer Changes rdcWavePot: updated atomSel.cc: reimplemented intersects() method for speed. noePot.cc: updated defaults to be consistent with those in noePotTools change: now default to HARD potType NOE tables increased maximum distance to 10^6 (in ASSIgn statement) added a check that atom selections don't intersect. allow zero distances Changes from 2.14 to 2.15 General * Parallel job synchronization now uses tcp communication - allows some nodes to be down at startup (will ignore those hosts). Also allows for xplor-nih or whole machines to crash and not hang the parallel calculation- structures scheduled on those nodes will be ignored. - requires communication over port 9021 (or that specified by the -pport option) *Changes to the command-line xplor script: -fixed -smp so that -parallel need not be specified. -support for new socket communication facility: added support for socketComm functionality with -pport, -phost options and XPLOR_PPORT, XPLOR_PHOST env vars. added -crash_on_startup flag to cause crash if a process doesn't report in at startup (for parallel jobs) now redirect file descriptor 9 to stdout before redirecting to the log file so that we're able to send messages to the user: parallel calcs now print cpu info summary to stdout at exit -remove LD_ASSUME_KERNEL hack - this caused problems on newer distributions. This change may break things on FC2. *startup message: now include the hostname *Parameter changes: -protein-1.0.par: added missing angle parameter for SP patch -protein-1.0.top: fixed the YP patch 1cz 1oh 2p angle definition Python Interface Binaries now built with Python version 2.4. Source also builds with version 2.3 ./configure: now always performs Python precompilation to avoid race condition on parallel startup. Also precompile files in bin.$ARCH Fix XPLOR scripts so that sure we're always using optimization. atomSelAction: Fit: fixed ugly bug which could cause the rotation matrix to become an inversion matrix. most C++ potential terms with restraints: added numRestraints() method added showAllRestraints boolean - if set all restraints are output in the showViolations() method (but violated terms are flagged). PDBTool: added support for PDB MODEL records read() now returns list of unmatched PDB ATOM entries PotList: change to rms(): now use individual terms' scale() to weight the rmsd calc, if the terms are all of the same PotType. also weight by # restraints. Also made a fix to violations(). Simulation::atomString: output has been rationalized. SimulationWorld: added cpuTime method XplorPot: added delegate so that rms(), violations() methods return useful values XplorWrap: select() will now raise an exception if there is an error. added fastCommand() method PREPot: update adding SUM restraints - PRE contributions from distinguishable groups which contribute to the same relaxation process SolnXRayPot: renamed to SolnScatPot. Now supports complex scattering amplitudes added glob defs for DNA. cdsMatrix: fixes to *, - operators cdsVector: fixes to - operator ensembleSimulation: added helpers: singleThread, multiThread, commBarrier better EnsembleSimulation cleanup at exit Modified behavior with EnsembleSimulation fixed protocol.py: initCoords: added support for optional model parameter added support for unmatched pdb ATOM entries. guessing logic- togther with the with matchInexactCoords helper. initDihedrals: fixed default chi2 restraint definitions. initTopology: fix to allow pathnames relative to pwd and TOPPAR (and absolute names too). added initRandomSeed, initialRandomSeed helpers Distribute seed value to other parallel processes if the seed if not explicitly specified. torsion/cartesianTopology: added oTensors argument which takes a list of VarTensors to set up according to the setFreedom() method. psfGen: cisPeptide: fixed so that it actually works for the non-proline case. seq2PSF: fix in several patchings to deal properly w/ multiple segids. pyInterp: allow triple-single quotes in scripts redirected from stdin. Python shell: better handling of error conditions- exceptions are now thrown back to C++, proper exit status is returned python startup: errors in startup will now throw exception. Previously only a warning message was printed. rdcPotTools: fixes to dipolar coupling scaling. Allow using correct gyromagnetic ratio signs. added DaScale helper function restraintStats: fixes for violation amounts now accumulate and print crossTerms separately from main potList simulationTools: StructureLoop: added averageCrossTerms argument to constructor - so that non-refined-against terms are listed in statistics, average printouts allow averagePotList, crossTerms to be plain python sequences added new optional paramter: structureNums. Can use this instead of numStructures, startStructure calcAverageStructure: now treat ensembles correctly: calculate the average of the ensemble-averaged structure. averageCompSel changed from "not hydro" to "not name H*" genAveStats: now print out the rmsd values for fitted selection in addition to the comparison selection. Also write out these two strings. writeStructure: added extraRemarks argument now writes out seed from protocol.initialRandomSeed now report pos. rmsd to ave. of calcd struts analyze(): can now give a single Pot as an argument (doesn't have to be a sequence) varTensorTools: calcTensor: no longer reset oAtom to origin- rather, keep it at its current position. fixed handling of non-NH normalized restraints fixed handling of restraints w/ more than one bond vector analyze: fixed calculation of Euler angles added xyzFromEuler helper configIVM_fixAxis/RhToOther: fixes for ensemble simulations. vmdInter.py: VMDObject.labels: now allow sel arg to be string change to object naming so that using file in subdir works xplorPotTools: now supports COLL term added minimize.py - optimization algorithms various small updates to the examples gb3_ensemble: added order.py example script - refine against order parameters Platform Specific *Darwin: -threads now supported in VMD interface -updated to be compilable by gfortran -rationalized Python libraries linking- they no longer need to be linked to the xplor binary *better support for running on Scyld clusters: -can now specify SCYLD_PROCESSES env var and command-line -parallel -now eval $cmd so that redirection works on scyld clusters XPLOR Interface *enbond: moved NCSOP to heap, removed MNCSYM parameter *hbdb: removed naamax parameter, and now allow it to grow dynamically. fixed an array range underflow in hbdbpatt *plane: PLNINR: reinitialize PLN_NUM to 0 so that the init statement works. *xplor.f: change behavior for case in which a filename is specified: now redirect it into stdin, so that the PYTHon and TCL XPLOR commands work in this mode. *new variables are defined: START_TIME, START_DATE variables *tutorial/nmr_ensemble: filled in missing contents *multiple modifications to modernize the code - thanks to J. Howarth. Changes from 2.13 to 2.14 XPLOR interface changes new XPLOR SAXS module from Alex Grishaev A. Grishaev, J. Wu, J. Trewhella, and A. Bax, JACS 127, 16621 (2005) ncs.fcm: removed MAXNGR static arrays - now dynamically allocated hbdb.f: removal of pause statements, prompted by J. Howarth XPLOR tests: added new sani and saxs tests Python Interface changes new solnXRayPot module for refinement of SAXS and large-angle xray scattering data. improved support for Potential terms derived from C++ terms. Eliminates the step of reconstituting a Python wrapped object by deducing its type. XplorPot: threshold, rms(), and violations() methods now work for supported terms. simulationTools.xplorThreshold has been removed. XplorWrap: added new methods: disableOutput, enableOutput to manipulate XPLOR's echo and wrnlev variables for convenience, xplorInit places references to these in the global xplor module. IVM: fix for error condition in buildNode: better identify bend atoms in bad hinge specification null out IVM's tree_ member when throwing an exception - so that it doesn't get destructed in this state (causes crash) python cdsMatrix module: added CDSMatrix_complex cdsVector: added dot(), __mul__(float), __pow__(), sum() analyze functions: now work better with AvePot terms noePotTools: create_NOEPot: now initialize aveType to "sum" nonBondTools.py: made messages from XPLOR interface a bit less verbose rdcPotTools: specified different nucleic acid NH distance to use in calcing Da_prefactor. protocol module: initNBond: added selStr argument. onlyCA is now deprecated. omit ANI residues in constraints interaction statements initDynamics: added parameters eTol_minimum, etol_factor added addDisulfideBond helper function torsionTopology: modified to call selectTools.breakDisulfides() structureLoop module: StructureLoop: updated so that calcing ave. struct. works for EnsembleSimulations when generating violation statistics, now only use averageTopFraction structures (not all structures) disable creating backups for fit structures if averaging or taking stats StructureLoop.pdbFile(): now use old object if the name has not changed. This necessary to retain remarks info. better per-restraint statistics over all calculated structures. varTensorTools: fixes for fixAxisToOther function added orthogonalize() helper function Python Swig change for C++ ACCESSOR and MODACCESSOR modules resulting in large size decreases, simplification in coding. added posSymmPot: position symmetry- a more powerful version of the NCS term. Python tests: added rdcPotTest3, mat3Test, solnXRayTest Python docs: csaPot: fixed def. of csa tensor atom s in assignment table. mat3: updated SymMat3 constructor, element access member docs TCL Interface changes PASD/Marvin: renamed class Restraint to Peak. tclPosnSymmPot: Support for Atom and AtomSel based accessors Changes to the eginput example scripts: PSF generation: added complex circular peptide example dna_ref: added refine_full.py script gb1_rdc: added standalone analyze.py script anneal.py: changed noe setup so extra terms can be added easily updated for XplorPot threshold change protG: anneal.py: updated to produce .viols, stats files anneal.inp: removed spurious NOE parameter clause (thanks to Francesca Marassi) Parameter/Topology changes nucleic-1.0.par changed the 5-terminus H'-H'' improper angle values to match it's minimized value protein-1.0.top phosphorylating patches: fixed patch SP, added patch YP low-level changes: CDSlib/complex.hh: added operator-= added operator*(Complex,T) added function IEXP(floatType) CDSlib/mnbrak.cc: small fix vec3.hh: added explicit constructor from integer, so the literal ``0'' can be used. modified.cc: registerTo: don't register sim if it's already been registered. avePot.cc/hh: fixed calcEnergy/Derivs s.t. the scale factor is not applied twice. overide scale, threshold accessor methods to use values from the subpot. Note that the wrong value will be obtained if the object is accessed as a Pot (the base class). Virtual methods might be a better idea. Fortran code: removal of arithmetic if statements, (courtesy of J. Howarth) prePot: optimization in inner loop build change: now should better handle transitive linked shared libraries now include required lapack, blas source- but it's use is optional. mac build now on Darwin_8, (OS X 10.4.4) no longer tested on Darwin_7 added gamma and rjbesel functions from the specfun netlib library. Changes from 2.12 to 2.13 PASD/Marvin: - fixed so that the eginput scripts now work. - changed linear pot to have continuous derivatives - improved error checking. eginput scripts: added gb1_rdc/violStats.py - script to gather violation statistics over multiple structures. updated gb1_rdc/anneal.py to collect violation statistics updated runAll script so can now specify multiple target directories. XplorPot: a single instance can now specify multiple XPLOR terms. This to work around errors when VDW and PVDW are called separately. noePot: added Average PotType updated Python interface tutorial Source/lowlevel changes created fortlib directory and moved libfft there added pppack to fortlib template library: added Spline class C++ cleanups. Contribution from Jack Howarth. EnsemblePot now derives from ModifiedBase Pot: now derives from ModifiedBase added threshold MODACCESSOR. EnsembleSimulation: fixed up addDependent, removeDependent, markAsModified methods Pair class is now a template in CDSlib. XPLOR interface: updated sbound.f to remove NMCTAB parameter nbonds.f: don't print close atom warning messages if messages=off. bin/makedepend: now omit entries which end with a slash (/) so it doesn't create dependencies on directories. testDist: now remove WORKDIR before running tests noePot, rdcPot, csaPot, jCoupPot: now have direct access to list of Restraint objects added violation value to printViolations() header Python interface: added spline module Python Interface: fixed violation reporting in *Tools.py: threshold values are no longer reset to 0 before analysis. monteCarlo.py: bug fix for randomizeTorsions (affected Marvin/PASD) split off nonBondTools.py from simulationTools.py protocol.py: contributed by Greg Zornetzer: fix for fixupCovalentGeom(): specifying a selection with bonds to a non-selected region would mess up the interface region. addUnknownAtoms(): added arguments: dyn_stepsize, dyn_numStepMull, verbose reduced default stepsize to 0.02ps simulationTools.py: StructureLoop: added genViolationStats flag to constructor, for printing out violation statistics. if averaging structures, overwrite the calculated structures with versions fit to the first structure. Changes from 2.11.2 to 2.12 Frontend Scripts - seq2psf: added -amidate_cterm option multiple chains are now supported - xplor script: more relaiable treatment of the PYTHONHOME env variable Parameters - added fixed nucleic.top/par topology/parameter files. IVM - fixed bug for torsion angle dynamics with a bond which is initially *exactly* parallel to the xz plane. Python Interface - new functionality in protocol.py: addUnknownAtoms() see example in eginput/PSF_generation/addAtoms.py - simulationTools.py: StructureLoop: added writeStructure() method which creates a .viols file for each structure - testGradient: fixed so that it works with an non-ensemble Simulation - changed PotName for some terms to be more consistent - atomAction.py: SetProperty: fix so that properties with Capitalized letters (such as residueName) are handled properly. - cdsVector.py: norm: now always reduces to a float_type scalar return value added vec_norm(): performs a norm on each element of a vector added log() - simulationTools.py: analyze(): terms now register themselves for reporting using registerTerm(), and simulationTools doesn't need to know about them. fixes for nonbonded analysis for repel=off added fileSuffix global variable used when creating temporary files to avoid races in EnsembleSimulation calculations - simulationWorld.py: added pure-python world() function to access the simulationWorld() static function. - trace.py: added function addModuleName() to make tracing arbitrary modules easier. - protocol.py: fixupCovalentGeom: allow sel argument to be a plain string initDynamics(), initMinimize(): no longer set ivm's constrainLengths. This is part of the topology setup. added cartesianTopology() helper for ivm setup. added initTopology() initParams/initTopology(): will now take sequence type specifiers which use the new parameters, topology files configured in module local dictionaries. - psfGen.py: now add remark to autogenerated PSFs - to denote their origin * seqToPSF: now use protocol.initParams/Topology for initialization. added the amidate_cterm option changed default seqType to 'auto' added disulfide_bonds/bridges arguments. added support for seqType 'rna' * pdbToPSF: now use seqType 'auto' in call to seqToPSF - pyPot: rewrote the PyPot constructor to remove need to supply the second self argument. - added tests: tkInterTest, ivm3, bigPatch note that tkInterTest will fail if DISPLAY is not set (or X11 access is otherwise not available) . XPLOR interface - optional output reduction improvements - updates to allow extra-large residues in patching (removed SEGDIM parameter from segmnt.f) - fixes to problems in Fortran code discovered by Darwin's GuardMalloc - fixes to some paraRestraints code - fixes to machine dependent code found by gfortran developers - fixes to deal correctly with case (>8 bonds) - torsion angle database term: fixed bugs caught by Guillermo Bermejo VMD-XPLOR interface - fixed race condition which caused errors when trying to follow the dynamics of an ensemble. - pty-xplor: set pager to cat- real pagers cause pty-xplor to hang in python mode - added findXcookie to bin files distributed - for more reliable remote Xplor-NIH/ VMD-XPLOR execution. Low-Level Changes - atomSel: added intersects() operator==() methods, - template libraries: cdsIterator.hh: mods so that can be re-assigned. cdsString.cc: added copy() method which returns a non-reference counted copy. cdsVector.hh: added scale() method for symmetry with CDSMatrix class - compilation/development added support for intel Fortran/C++ compilers, version 9 added version 1.3.25 to list supported swig versions findPython: now also defines PYTHON_VERSION PASD/Marvin: - Significant changes to the Marvin/PASD code - *** old scripts will need to be modified *** - note carefully the following change to the initial matching script: now, the spectral range must be specified by giving the actual beginning and end of the spectrum (in ppm) along each dimension. - introduce new datatype, ShiftAssignment * represents a single entry (or pair of covalently bonded entries) in a chemical shift table. * facilitates analysis of the likelihood of a particular spin's location in the structure and/or the likelihood of its chemical shifts being correct. * note difference from the previous version, which only kept track of the likelihood of a particular assignment of a particular NOE peak being correct. - full discussion of these changes will be available in an upcoming paper. Changes from 2.11.0 to 2.11.2 PASD/Marvin fixes to correctly handle symmetry peak filter. Platform specific updates: - Darwin version 8 (Tiger) is now supported - amd64: added some support for use of Pathscale fortran frontend xplor script - consistent use of TMPDIR env variable, if it is set. - semaphore cleanup: grep for current user- to avoid permission violation messages. Python Interface: protocol.initNBond(): added onlyCA flag to enable only CA-CA repulsion. gb1_rdc/refine.py example script: - further improvements s.t. no explicit parameter configuration is performed in the structure loop. - now will compute average structure. - increased the rdc force constant simulationTools.analyze(): - now report the number of vdw violations - now print violation info in a .viols file. simulationTools: - added waitForProcess() barrier function. - StructreLoop: * added capability to compute average of all structures * added analyze method which prints violation info to a file with the structure filename + a '.viols' suffix. * added StaticRamp class * added InitialParams, FinalParams class, which initialize or finalize ramped parameters. fix to CDSMatrix::resize to copy old contents added CDSVector_int to cdsVector.py CDSString: optimization of operator+=(CHAR) PotList: added a copy() method EnsembleSimulation input multiplexer (using stdin) - now only use if *both* stdin and stdout are ttys. XPLOR source: - removed/converted blanket SAVE statements in darwintime.f and dynio.f - ccalls.c: frtnchdir: reworked to use Fortran's string length argument. - update from A. Grishaev - updates the segm statement. - nbonds.f: * added DECLAR statements for REPEL nbond parameters * removed limit on iatmx (max num of bonded atoms) by overloading the CMPLTD return code of MAKINB. - combined xlftime.f and darwintime.f --> darwintime.f - noe.f: reduced the severity of error of calling PRINT for classes in which POTEntial is set to SYMM, HIGH, or 3DPO. parameters: added patches, parameters for phosphoserine, phosphocysteine to the standard protein.top/par files. Changes from 2.10 to 2.11 - xplor run script: added the -scyld cmd-line argument for running on scyld clusters. added the PROTSHIFTS env var for access to proton chemical shift database. under Linux, now cleanup unused Semaphores at startup. low-level: - fixed error in reference-counted classes which rendered them non-thread safe. - fixed Solaris-specific ensemble bugs. - fix for strange Solaris /bin/sh behavior - pty-xplor (used by Xplor-NIH) fixups under Solaris Python interface - now correctly build and test Tkinter package. - pyXplor script: now properly protect spaces in command-line arguments. - psfGen module: added the dAmino() function to convert a residue to a D-amino acid. - simulationTools: now perform NOE analysis. - added NOEPotTools- helper functions including create_NOEPot() - protocol.py: initMinimizie: added added dEPred to argument list. added initCoords() helper function. - varTensorTools: added calcTensorOrientation function - xplor (toplevel) module: added the requireVersion() function - added posRMSDPot potRMSDPotTools for both RAP and bfactor refinement. XPLOR interface: - hbdb: fixes for problems with long filenames. - more robust determination of username. - Darwin: fix so that file versioning works properly. Examples in the eginput subdirectory: - added gb1_rdc simple examples using NOEs and multiple RDCs. Included are both XPLOR and Python scripts. - protG/anneal.inp: fixed bug in vdw loop. - PASD/Marvin: fixups in eginput/marvin/il4 example data. - improvements to runAll script. Low-level changes: - RandomNum: added integerInRange() member. - jCoupPot: fixed variance calculation. - AtomSel: added reevaluate, constainsAtom and isMonomericallyEqualTo members. - Pot: added resetPotName() method. - IVM: small changes to Powell minimizer. added vel/setVel accessors. - cdsVector module: added sqrt function. - VMD: better cleanup of vmd atom selections. - EnsembleSimulation: added input multiplexer for the case in which stdin is a tty. This allows proper interactive behavior for numthreads>1, and should help with debugging. ---------------------------------------------------------------------- Changes from 2.9.9 to 2.10 general: new parameter/topology file naming convention: NMR protein refinement should now use protein.top / protein.par new command: tclXplor calls xplor -tcl. Can be used as command interpreter Darwin/ MacOSX change: version number now only includes the first digit. This so the arch/equivList doesn't need to be updated so often. Darwin: fixed Xplor-NIH-as-tcl-extension functionality xplor master script: - now can specify parallel machines using the MACHINES env variable instead of the -machines option on the command line. - updated Linux ARCH def to deal with minor dot release numbers. - IRIX: properly treat LD_LIBRARYN32_PATH if it is set. eginputs: - added runAll script to run (most) scripts in eginputs. - fixed up scripts to use protein.top/par files. - minor updates to protG/anneal.inp Python Interface: EnsembleSimulation: - can now specify nonuniform weighting. - fixed issue in which coordinate changes made in XPLOR shell were not propagated back to EnsembleSimulation. PotList: - change in behavior when an attempt is made to add a term with an instanceName already contained in the list: now the code throws an exception (previously, the second term was silently ignored). OrderPot: - new potential term to enable refinement again order parameters. CSAPot: - atomOrder accessor changed to support 15N CSAs. - fixed variance calc. AtomProb: - now normalize output map so that the largest map value is 1. PrePot: - update from Junji Iwahara ShapePot: - fixes- deal better with apparent singularities in angle diff. calc. - new degenerateTol member- determination of eigenvector/value pairing is now modified close to degeneracy- chose such that eigenvectors are those which align most closely with those in ensemble member 0. - added Pairwise target type- minimize pairwise differences. Python CDSVector: added fromList accessor. ivm: - added stepsizeThreshold member. If set, will try to avoid small timesteps by performing minimization when the stepsize falls below this value. mat3: - added trace function. - added rows()/cols() accessors. protocol: initParams(): - added optional weak_omega argument to allow small deformations of the peptide bond. - added optional reset parameter to clear any previous parameters fixupCovalentGeom(): - made a bit more robust. genExtendedStructure(): - added pdbFilename argument - fixed up the use of the optional sel argument. added covalentMinimize(), initHBDA() helpers. psfGen: pdbToPSF(): the pdbRecord argument may now be a filename instead of a string seqToPSF(): added optional deprotonateHIS argument. added cisPeptide() function to make cis-peptide bonds. ShapePot: added analyze tools. SimulationTools: better handling of analysis of existing files. No need to specify numStructs. added testGradient() helper. JCoupPot: added jCoupPotTools including create_JCoupPot() and analyze() helpers. PotList: analyze summary now prints sum of violations, not average. varTensorTools: added massSetup() helper. analyze(): print out more Da/Rh info, if using an ensemble. XPLOR interface: hbdb update from Alex Grishaev: adds ability use multiple segments other fixes to prevent crashes fixup time reporting under AMD64, Solaris SET MESSages statement: now allow NONE to be a valid keyword (same as OFF). xplor command: allow XPLOR script to be specified as an argument. It no longer needs to be redirected through stdin. ---------------------------------------------------------------------- Changes from 2.9.8 to 2.9.9 XPLOR interface: fixed problem in which Xplor-NIH would clobber /dev/null if the program was run as root. plane.fcm: removed static arrays from planarity restraints. general: configure script: added -symlinks option pdf2psf: fixup in reading arguments. seq2psf: added disulfide bond support with -disulfide_bond and -disulfide_bridge options PASD/Marvin fixup for problems at startup. Python Interface updated eginputs/protG/anneal.py cdsVector, mat3, vec3 updates. Need documentation. python interpreter speedups (large) when tracing is off. python: added version, version_info to xplor module. XplorPot term now supports the scale() accessor. ---------------------------------------------------------------------- Changes from 2.9.7 to 2.9.8 XPLOR interface added support for set PRINT=off end statement, to suppress (most) output. related- now reroute much output through PUNIT instead of unit 6 (stdout). Python interface protocol.py: added genExtendedStructure() - generates a random initial structure. fixupCovalentGeom() - corrects bonds, angle, dihe, atom overlap. modified initNBond() - added optional nbxmod, tolerance parameters. torsionTopology() - added optional parameter to fix omega angle. psfGen.py: re-enabled and fixed the terminal atom chain break code seqToPSF(): now takes sequence as list or string rdcPotTools: added support for CAHN expts. provided by Alex Maltsev ringGeom, structureTools: structure analysis tools. selectTools: IVM_groupRigidSidechain(), convertToSelectionIndices(): optimizations updated the following to correctly deal with multiple segments: IVM_breakProlines, IVM_breakRiboses, IVM_breakDisulfides, IVM_groupRigidBackbone, groupRigidSel rigidProteinSelections: ARG entry: removed CE atom from rigid group list simulationTools: StructureLoop constructor: added the startStructure argument, fixes trace: fixes to work better with non-XplorNIH python interpreter varTensorTools: calcTensor(): fixes, now works with CSA expts too. replaced readline with editline (license issues). pyXplor script now treats cmd line arguments correctly. PDBTool: fixed a memory leak, added addRemarks() method to Python interface. PASD/Marvin auto-assignment added AENEAS (Automated Experimental NoE Assignments based on Shifts): -accepts chemical shift, NOE peak position tables, matches them up, filters them in reasonable ways, to produce an initial NOE restraint table. -now the primary input mechanism for Marvin. -examples of use in the interleukin-4 and cyanovirin example cases. Support for 3dC, 3dN, 4dCC and 4dCN NOESY data Automatic detection of solvent lines Terminology change: Rather than refer to, for example, Hi, Ci, and Hj in a 3dC experiment, they're now referred to as fromProton, fromCarbon, and toProton. Reduced output during covalent geometry cleanup. Improved energy minimization. Other various potential terms: Ensemble calculations: children now ignore the terminal suspend signal. performance, robustness improvements. CSAPot: fixups, cleanups restraint: corrected the tensor() method NOEPot: fixed segfault when reading a bad restraint (in code compiled with Intel compilers). RDCWavePot: bugfixes ShapePot: performance improvements. paraRestraints code fixes Examples/Documentation documentation additions, fixups protein G example: update anneal.py: cleanup, modernization. Now psf and initial coords are generated on the fly from sequence info. added tang.py script for pretty printing of torsion angles from an ensemble of structures. Architecture specific notes: combined Darwin+other os distribution should now work. Darwin build: python libs now linked against xplor executable, rather than shared libs so that extension module has a better chance of working. Linux builds: workaround for segfaults in recent Redhat 2.4 kernels which incorporate the back-ported thread library. The 2.2 kernel binary package has been discontinued. Please contact us if you are affected by this decision. Parameters parnah1er1_mod_new.inp: contribution from Zeena Johar: new impropers added to define chirality of ribose carbons Running Xplor-NIH added xplor_mpi - helper script for running Xplor-NIH under MPI. testDist: now doesn't clean up if a failure occurs. Low-level code CDSMap- added iterator over key/value pairs CDSStringStream, fdstream- fix for memory leak (beyond my control) under Intel compilers FixedMatrix- added setDiag(vector) added EnsemblePot base class for ensemble potentials allows for code reuse and simplifies the use of synchronization barriers, with better performance characteristics. Modified update: support for telling which aspect is modified (simulation or potential variable) XplorWrap: add pid to temp filenames (used to communicate with XPLOR), to avoid resource contention. (e.g. MPI jobs on local host). support for SWIG version 1.3.22 ------------------------------------------------------------ Changes from 2.9.6 to 2.9.7 General changes new documentation page at http://nmr.cit.nih.gov/xplor-nih/doc/current/ documentation page with update Python documentation also available at the command-line via xplor -pydoc XPLOR manual updates added two scripts: -bin/pdf2psf to generate a structure file from a pdb file. -bin/pyXplor to facilitate using Xplor-NIH as a Python interpreter. new architecture supported: AMD64/X86_64 (Opteron/Athlon64). Python interface changes: protocol.py: updated, added torsionTopology() selectTools.py: added getResids() surfaceTools.py: added calcSA() rdc/csa orientational tensor setup for IVM simplified with freedom() accessor, and varTensorTools.topologySetup() XPLOR interface changes define four variables: $echo $prev_echo, $messages $prev_messages to better control echoing, messaging. suppress many messages when messages==off csa.f: fixed rmsd calculation segmnt.f: added NUMBer statement to the SEGMent statement - to allow starting resid to be specified - without renumbering. Marvin/PASD changes: allow import from nmrDraw, NMRSTAR, XEASY, and PIPP data formats. initial matchup of NOE peak locations and chemical shift tables is now handled by Marvin: - STAPP no longer needed. - symmetry-related peaks are detected. - restraints/assignments fully annotated with NOE peak, chemical shift source info. eginputs/marvin/cvn and eginputs/marvin/il4 were re-worked to illustrate the new data import facility. Parameter changes topallhdg.dna: swapped ADE H61|H62 positions and CYT H41|H42 positions Other changes ensemble calculations: -improved performance by not blocking instead of spin for num_threads>1 -added singleThread(), multiThread() methods -better treatment of irregular shutdowns -subtle IVM bug: different ensemble members could have different temperatures. -fixup for JCoupPot for Ne>1 -new ability to share python objects across an ensemble. surfaceArea: many fixes and improvements including approximations and data-caching to improve performance. pdbTool: xplorAtomName now better translates * characters. will now read/write to a string buffer. added rms() and violations() as required entries in the Pot interface ------------------------------------------------------------ Changes from 2.9.5 to 2.9.6 General changes removed limits on all PSF parameters- the arrays have been moved from Fortran common blocks to the heap. Xplor-NIH startup size is now about 25MB smaller, and it will handle systems as large as your computer's memory will allow. Removed the CSTACK- and the associated summary line at exit. PASD/Marvin - improved memory cleanup - improvements to peak picking code. - general fixups. Developer changes added source/i1mach.c for machine constants XplorVars changed to a singleton class removal of SWIG type registration code- replaced by calls to TypeQuery. ------------------------------------------------------------ Changes from 2.9.4 to 2.9.5 General changes merged isac code for floating RDC alignment tensor. [from H.J. Sass, G. Musco, S.J. Stahl, P.T. Wingfield and S.Grzesiek, J. Biomol. NMR 21: 275-280 (2001). ] merged hbdb code from A. Grishaev. ``An empirical pseudo-potential that encodes for the relative arrangement of two protein peptidyl units linked by a backbone-backbone hydrogen bond.'' faster program startup by lazy initialization - only start python/tcl when they're needed. bin/testDist now prints and tallies CPU times of the tests Linux_2.4_i686 build verified working on 2.6 kernels, and on AMD64 (opteron) processors. Python interface: added CSA potential. reworked RDC potential (old scripts will not work - please see eginput/protG/anneal.py for examples of how to fix) [tensor moved to a separate VarTensor class ] added Gauss-Bonet surface area (with gradient) calculator. See python/tests/saTest.py protocol.py: added initParams(), initStruct(). updated initMinimize, initDynamics to be more complete. selectTools: added minResid() simulationTools: added pdbFile() method which generates a pdb file name from a template. pdbTool: updated so that the filename() accessor actually works. XplorPot() - can now specify argument as lower case. general: atom selection arguments can now be specified as a python string TCL interface: PASD/marvin automatic NOE assignment package updates. added DerivList wrapper Parameters: updated dna/rna parameters. Developer Changes: CDSlib update: Complex type updates cdsList: added pop() method, can now interact with generic vector cdsVector: can now interact with generic vector cdsSStream: added str_volatile() (old behavior), changed str() to return a copy of the streambuf chull: convex hull calculator class matrixTools: added setRow/Column manipulators source ( Fortran source ) updates: README: includes style rules for XPLOR Fortran submissions. freehp: now clear the heap index (set it to zero). added ability to turn off vdw energy ------------------------------------------------------------ Changes from 2.9.3 to 2.9.4 General changes merged the PARArestraints module from http://www.postgenomicnmr.net/SW/PARArestraints.html new script: bin/seq2psf to generate psf file from sequence do seq2psf --help for info. Fixup so compilation with NOTCL=1 actually works proton chemical shifts: added setup file to databases/protshifts, example in test/protoncshift2.inp Examples and Tests eginput: updated: mef_dna, analysis_SRY, dock_dipolar_chemshift, sry, marvin, DNA-SRY, PSF_generation, SRY_data_preprocessing marvin: added cvn example, other script fixups protG: important fixes to anneal.inp, anneal.py Unit tests: test: updated carboncshift.inp, added protonchift2.inp, paraRestr.inp, pyCmd.inp, tclCmd.inp python: added matTest.py, protocolTest.py updated rdcPotTest.py Python Interface changes: important bug fix for IVM improved analysis capabilities. See e.g. eginput/protG/anneal.py update to RDC potential. Added calcTensor, makeTable helpers added additional linear algebra capability cleanup of distributed python directory now built with Python-2.3.3 new Dihedral class for measuring dihedral angles updated help entries TCL Interface changes: marvin: updates, fixes interface fixups Platform specific: Darwin port: support for newer OS versions better support for IBM xlf ia64 port: support for version 8 of Intel compilers fix \0 characters in username x86 port: fixups for compilation with pgf77 and g77 Developer changes: improved distclean rule update to classes: CDSMatrix, auto_ptr, new datastructures, algorithms: circular doubly-linked list, convex hull template algorithm symmetric heap matrices+support support added for swig-1.3.21, but it seems to have problems. ------------------------------------------------------------ Changes from 2.9.2 to 2.9.3 Core XPLOR code Darwin port: now compiled with the ibm xlf compiler- with a big speed improvement. Many improvements to build more easily with and without fink. A big thanks goes to Jack Howarth (howarth -at- bromo.med.uc.edu) for doing most of this work. General changes eginput: updates, and addition of new example scripts. ia64 port is improved: full regression tests now report a single error (in the XPLOR interface). Python Interface changes - includes paramagnetic relaxation enhancement module based on the modified Solomon-Bloembergen equation and multiple structure representation for paramagnetic groups. This module contributed by Junji Iwahara. Please contact him at iwahara-at-helix.nih.gov(replace -at- with a @) for further information. - RDCPotTools: -- added the following methods: saupeMatrix, normalizedScalarProduct - PotList interface improved to allow use of a simple Python sequence in most instances. Also, the potentials returned by indexing a PotList object are now cast back to their original type (instead of being generic Pots). - SimulationTools: added analyze() function to analyze terms of a potList and return a concise summary appropriate for the remarks section of a PDB file. - can now access argv. - help files updated. TCL Interface changes - update to interactive interface. - can now access argv. Developer changes initial entry point changed from Fortran to C (xplor.c)- so that argv is more easily used. upgraded to pcre-4.4 added symlink support for Darwin-7.0, Darwin-7.2 added XPLOR tests for the TCL and Python interfaces. improved Fortran rtl initialization, when needed. ------------------------------------------------------------ Changes from 2.9.1 to 2.9.2 Core XPLOR code constraint inter code: fixed bug encountered when a double selection contains more than 9999 atoms ia32/linux port: fixed bug in which \000 would sometimes be written in the username output sani potential: fixed bug encountered when using the ``square well'' potential type General changes a FAQ is included in helplib/faq eginput: updated protG .inp, .py scripts many changes and additions for other examples. ia64 port is better, but full regression tests still report two errors. Python Interface changes rdcPot: now supports averaging of dipolar couplings rdcPotTools.py updated selectTools.py updated simulationTools.py: StructureLoop now will deal appropriately if the number of structures is smaller than the number of processes vmdInter.py: added loadFiles() helper for loading ensemble of structures Developer changes added new install rule. Define INSTALL_DIR in Makefile.loc and make install creates an installation of Xplor-NIH separate from that in the source directory. iostream .h headers are now wrapped by .hh versions in CDSlib symbols in cdsMath.hh changed namespace from CDS to CDSMath matrixTools: svd matrix size fixed in python interface moved tcl/python test scripts to tests subdirectories enumNameMap.hh: added functions to help with conversions reworked Simulation id code VMD-XPLOR interface py-xplor: now explicitly set intr char to ^C. This had caused problems with vmd-xplor on SGIs vmdInter code: made color setting more robust.