Changes from 2.32 to 2.33 --> 2.33 released 2013/01/09 Helper Scripts bin/calcSARDC added -singleEns option bin/contactMap a new helper to visualize intramolecular contacts. bin/ens2pdb added support for EnsembleSimulation members specified using a wildcard bin/getBest added the -wildcard option to specify ensemble simulation members bin/pyXplor fix to allow empty string command-line arguments bin/pbsxplor -modified to get log file in the current working directory. -added the -jobs_per_node option to be able to manually control the number of processes run on each node. -now support Torque -f option for fault tolerance. -updated to work on Altix under PBSPro using the SGI-specific cpuset command. On that platform, jobs should be launched using the ncpus resource to specify the number of cores. bin/ramaStrip a new helper to help quickly evaluate Ramachandran quality of a large number of structures. Based on torsionDBPot. bin/xplor -fixup for bad versions of ``which'' which print errors places other than stderr -fixup in allLocal determination logic -fix to allow empty string command-line arguments Example scripts eginput/gb1_rdc/refine.py replace RAMA with torsionDB eginput/pre/refine/newRefine.py change tuples to lists s.t. things work if only a single expt. eginput/PSF_generation/genLigand.py fixed so that it works with the HEME example in the tutorial Python Interface python/ensembleSimulation added memberFromSimulation - to subclass a Simulation -> EnsembleMemberSimulation nmrPot/nbTargetPot.cc bug fix in the neighbor search. This should prevent a progressive degradation in performance during a calculation. python/noePotTools.py create_NOEPot: added optional verbose argument common/potList.cc PotList::rms(): fix treatment when all terms are negative python/prePotTools.py -getNucleusType: change heuristics to query residue name. Now much more robust. -create_PREPot: added verbose argument python/prePot instantiate the base case Restraint to get its methods python/protocol.py updatePseudoAtoms: better handling for default sim values nmrPot/psolPot -now uses SurfTesselation, surface integral integral evaluation, instead of volume integral. -working approximate surface integral gradient python/pyXplor.cc when handling -c from the command-line: now correctly include the rest of argv - needed by idle nmrPot/rdcPot1 -showViolations: now print contribution from each atom pair in all ensemble members python/regularize.py fixupCovalentGeom: changed default sel argument to omit pseudoatoms python/restraintStats.py RestraintStats now supports to optional potential term members: noPotSummary and noViolationStats to suppress unwanted output. python/selectTools.py added threeToOne function for residue name conversion. python/simulation.i -rationalized derived/base relationship between Simulation and classes which derive from it. -__eq__, __ne__: now handle case of simulation compared with other type python/simulationTools.py -StructureLoop: *new argument: pdbFilesIn: if specified, a coordinate file will be read in before each call to structLoopAction. This allows easier parallelization over a list of arbitrarily named input files, for analysis and validation. *added mechanish to pass back arbitrary (pickable) data from structLoopAction to process 0 by writing to the sharedData member. *added the pdbFileIn method, returns the current input structure file name. -StructureLoop.makeFilename: added optional memberNum argument to override default -StructureLoop.run: change behavior if calcMissingStructs and doWriteStructures are specified: now read in pre-existing structure and rewrite them, to make re-analysis easier. -StructureLoop.writeStructure: extraRemarks can now be a sequence of strings -flattenPotList: *added argument: includePotLists. If true, return (non-toplevel) potlists in addition to individual pot terms. *now flattens any type of potential which is iterable (instead of only PotLists). python/socketComm.py collect/distribute: added calls to barrier() at start to update keys python/torsionDBPotTools.py -Removed class TargetTorsionPot from torsionDBPotTools module -torsionDBPotTools module: added TargetTorsionPot class python/torsionDBTools.py -python/torsionDBTools.py: some fixes associated with the introduction of nucleic info -python/torsionDBTools.py: added definitions of nucleic (pseudo)torsion angles python/torsionDBPotTools.py create_TorsionDBPot: got rid of reporting # of terms generated if SimulationWorld_world().logLevel()==none python/torsionDBPotTools.py torsionDBPotTools module: added analyze function nmrPot/torsionInterpolPot.cc nmrPot/torsionInterpolPot.hh python/torsionDBPotTools.py python/potList.i python/restraintStats.py Added noPotSummary member data to torsionInterpolPotND (N=1,2,3) and torsionDBPotTools.TDBPotl Merge from /home/schwitrs/xplor python/torsionInterpolPotTools.py python/varTensorTools.py torsionInterpolPotND (N = 1,2,3) added violations() member function python/torsionDBPotTools.py torsionDBPotTools: subclassed potList.PotList and used instances to pack the terms; this is to facilitate violation analysis python/torsionDBPotTools.py Added elevel entries to torsionDBPot database files and modified create_TorsionDBPot and setup_pot functions (torsionDBPotTools module) to read them and set thresholds nmrPot/torsionInterpolPot.cc TorsionInterpolPotND constructor initializes threshold() to 1e30; TorsionInterpolPotND_Restraint energy member funct. sets diff_ to the unscaled energy (N = 1,2,3) nmrPot/torsionInterpolPot.cc TorsionInterpolPotND_Restraint (N = 1,2,3) now uses name() member function inherited from Restraint; relative to the previous commit this one works nmrPot/torsionInterpolPot.cc nmrPot/torsionInterpolPot.hh TorsionInterpolPotND_Restraint (N = 1,2,3) now uses name() member function inherited from Restraint python/torsionTools.py -setTorsions function no longer accepts reference to angles by name (e.g. phi) python/varTensorTools.py calcTensor_ensemble: added the optional selection argument updated to work for inhomogeneous ensembles with nonuniform weighting updated to support pairwise averaging python/waterRefineTools.py buildShell: fix to deal with >10 water boxes in a dimension. Also now gracefully exits if too many water boxes are required. python/xplorInit.py added the -- option to stop command-line option processing python/xplorSimulation getXplorSimulation: fixed to work for EnsembleMemberSimulations Architecture-specific changes arch/Linux_x86_64/include/alignof.h arch/ARCH/include/alignof.h added platform-specific alignof.h which implements __alignof__ arch/Darwin_10_x86_64/intVar/Makefile reduce optimization for 2011 and 2012 versions of Intel compiler. This may not be necessary for 2013 version... arch/Linux_x86_64/source/Makefile update (optimization downgrade) to get gcc-4.7 working arch/Darwin_8_ppc/Makefile.defs arch/Darwin_8_x86/Makefile.defs added excluded (system) libraries arch/Linux_x86_64/Makefile.defs do substring match for easier alternate gfortran/gcc version spcification Low-level Functionality common/atom added bondedTo method; added cdsMapConvertToInt so Atoms can be CDSMap keys common/atomSel.hh added (read-only) iterator support CDSlib/cdsComplex.cc add unary minus CDSlib/cdsIterator.hh Iterator: changed _container type to pointer; added default constructors; partial documentation common/modified.hh Modified- now allow argumentless constructor- for use without ModifiedBase common/pot Pot::violations now floating point value s.t. AvePot can report on EnsembleSimulation violation averages common/relAlloc.cc a very simple heap allocator to be used for shared memory allocations. common/xplorSimulation.cc pad4: now use snprintf instead of sprintf to avoid very unlikely buffer overrun. CDSlib/mat3.hh CDSlib/vec3.hh nmrPot/utils.hh moved crossMat from vec3.hh to mat3.hh; moved outerProd from utils.hh to mat3.hh; these changes forced additional includes surfD/ -removed unused methods, functions -clean up -Surf: *renamed Max_Tess_Len to maxTessLen accessor *renamed struct SurfacePointOut to AtomPoints in this struct replace in At_nmbr member with atom *renamed out_spt member to atomPoints *new method calcSA for calculating surface area for an existing tessellation. -converted Surf::atoms to CDSList, removed Num_atoms member -changed type of SurfacePointOUT::Sum -SurfacePoint: *added delta member, dCoord method *replaced At_nmbr index with Atom -Tessel::gen_tris: removed calculation of surface area. nmrPot/relaxRatioPot added use of retessellateIfNecessary instead of direct call to calcSurf nmrPot/diffPot -calcEnergyAndDerivs: now increment retessellateCount -now use SurfTesselation helper methods to reduce code duplication -removed surfDiff member from SurfTessellation, added to DiffPot, RelaxRatioPot nmrPot/surfTessellation -SurfTessellation: shuffled members to simplifiy retessellation, cuttoff recalculation logic -added retessellateIfNecessary method to encapsulate normal calling logic -removed use counter stuff -added verbose member bin/findSwig added 2.0.8 tcl/Makefile swig fixes tcl/findTCL added logic to use $tcl_library to search for the include dir Databases databases/torsions/protein/top8K_bb/ Added databases/torsions/protein/top8K_bb/ for protein backbone validation with multiple elevels in each file databases/torsions/protein/top8K_v0 Renamed files in databases/torsions/protein/top8K_v0/ and explained elevel in databases/torsions/README.format Changes from 2.31 to 2.32 --> 2.32 released 2012/09/06 Documentation helplib/faq/node0600.txt include final resid in dimer restraints doc/python/index.html updated base Python documentation link doc/xplor/manual_ypress.tex again corrected switching function definition (eq. 4.9 in the XPLOR manual) Example Scripts eginput/gb1_rdc/analyze_ProbDistPot.py fixed typo in atom selection eginput/saxs_EI/testCalcTensor added calcTensor test with segid-less restraints for symmetric dimer eginput/PSF_generation/genCircPep.py modernized and made to work Topology/Parameters toppar/CNS/ added recent CNS topology/parameter files Python Interface python/findPython: now support version 2.7 python/atom.i added __ne__ method nmrPot/noePot to the Restraint class, added method: bestPair() - for ASSIgn ... OR restraints, the (zero-offset) index of the selection pair which gives the smallest energy contribution. python/pcsTools.py added pcsTools module (contributed by M. Stanton-Cook) This includes the calcXTensor function for calculating the delta chi tensor (alignment tensor and paramagnetic center). python/protocol.py initParams: added optional string argument nmrPot/psolPot fixed setRp() accessor to calls setRadii() changed restraints to be rc pointers nmrPot/rdcPot1 added Restraint::setErr() accessor python/residueAffPotTools.py added reference nmrPot/sardcPot added optimizeScale accessor, allow avectorScale to be set python/simulationTools.py StructureLoop: -added doWriteStructures to obviate the need for writeStructure in structLoopAction. -added calcMissingStructs boolean to indicate that only non-present structures are to be calculated. -pdbTemplate now takes a default value. eginput/gb1_rdc/refine.py now uses these three changes. StructureLoop.genAveStats: initial barrier: disable the timeout. Will now block for all processes to compute structures. added sortFilesByEnsMember- used to match ens weights with proper filename python/socketComm.py Comm.barrier: fixed logic problem for timeout==None python/torsionDBPotTools.py create_TorsionDBPot: optimized for much faster initialization. parse_metaselection now returns smaller selection string (when resid=False) and handles input list (when resid!=False) now counts and reports potential types. The format of the database files has changed. See databases/torsions/README.format python/torsionInterpolPotTools.py new module to be used for splined torsion angle energy terms. python/torsionDBPotTools.py create_TorsionDBPot: increase verbose verbosity nmrPot/varTensor.cc setDa: make error message more informative python/varTensorTools.py calcTensor: -added the optional svdTolerance argument -fixes for dealing with RDC averaging, deal with singular SVD values; will now work for symmetric dimers with a single set of restraints TCL Interface tcl/findTCL added tcl/tk version 8.6 Helper Scripts/Programs bin/calcSARDC added a helper program for calculating steric alignment rdcs given table and structure bin/calcSAXS -when -exptPointsSpline is specified, now compute the second chi^2 value using just these points using splined calculated values. Previously, we always evaluated chi^2 at the calculated points, linearly interpolating the data. The new approach is much more stable with respect to changing numQ. -input files are now sorted by ensemble member so that weights can be matched to structures. bin/pbsxplor.in mod to allow = character in filenames removed bin/xplor_mpi it was not used for anything Low-Level Libraries alloc quieted test output cminpack tests updated to self-test results and be quieter by default. common/atomSelLang allow + characters in atom selection strings common/atomSelLangYacc.y fixed bug where single # was not recognized as a wildcard bin/findSwig updated for swig 2.0.7 Architecture-specific changes arch/Darwin_12_x86_64 arch/equivList added entries for Darwin 12 - thanks P. Mercier parallel.txt updated for current situation on modern Darwin arch/Darwin_10_x86_64/Makefile.defs OMITTED_SHARED_LIBS: many additions due to change in toplevel Makefile Changes from 2.30 to 2.31 --> 2.31 released 2012/05/16 Python Interface nmrPot/atomProb now expose the val(i,j,k) method to Python autoExtent: now include a list of coordinates (corresponding to an ensemble of structures) to check when generating grid extent. nmrPot/distSymmPot.cc showViolations: fix the id field in the output nmrPot/noePot changed members d, dMinus, dPlus and comment to accessors to allow setting nmrPot/posSymmPot -now supports EnsembleSimulations -added variance tensor (ORTEP) component for ensembles (enabled by setVarScale(1)) -removed the single-atom selection sets for simplification. -added addEquivAtoms - takes selection strings for arguments, needed for inhomogeneous ensembles -added member gamma, and made fixes to always maintain proper rotation matrices (determinant=1) nmrPot/relaxRatioPot -added Restraint subclass -renamed some accessors: getMedianTmp --> medianTmp get/setFr --> freq/ setFreq change name rot_Mtrx --> rotMat -added cutoff() read accessor -removed selection() accessor- this can be obtained from selection()->string() -added violations(), showAllRestraints - violated_ is now set -now cache more values to prevent recalculation -now pairwise due averaging over atom selections nmrPot/sardcPot added Restraint::setErr and test python/cdsMatrix.i added SymMatrix +-* methods python/diffPotTools.py RelaxData: now support NOE field and leading hash comments python/ensembleSimulation.i added __eq__ and __ne__ python/ivm.py added the time() and iter() accessors python/noePotTools.py splitTable: -fixed selection of short range restraints (changed < to <=) -fixed bug where an ambiguous restraint was also classified as short range. python/posDiffPotTools.py fixed setup for EnsembleSimulations python/protocol.py matchInexactAtomEntry: -leading/trailling segid whitespace is not significant -added missing simulation argument from an AtomSel- atoms were not matched in noncurrent Simulations. initCoords: fix for deleted bfactors, occupancies if deleteUnknown=True and loading from a noncurrent Simulation. python/psfGen.py pdbToPSF: -improved documentation. -now pdbRecord arg is optional addDisulfideBond: added option to treat a disulfide as a distance restraint pdbToSeq: -now raises custom exception if seqs is empty before returning -now strip leading/trailing whitespace from segid cisPeptide: updated to deal automatically w/ multiple segids python/rdcPotTools.py added chi2 function, ExtraStat python/regularize.py fixupCovalentGeom: always set mass>0, even if not doing dynamics python/relaxData.i broke out the RelaxData into a separate relaxData module python/relaxRatioPotTools.py analyze: now print out per-restraint information python/sansPotTools.py python/solnScatPotTools.py python/solnXRayPotTools.py create_ helpers: added minQ parameter/argument python/sardcPotTools.py added chi^2, rmsd functions Rfactor: add support for sub-selection python/selectTools.py correctSymmetricSidechains: -better handle missing atoms -now checks angle is inside range *after* correction and reverts it if farther away python/torsionDBPotTools.py torsionDBPotTools module: updated torsion angle database potential currently for proteins only. python/varTensorTools.py saupeToVarTensor: now return ensemble VarTensor - to support ensembles of Saupe matrices. python/varTensorTools.py added pairwise averaging to RDCPot. vmd/publicVMDInter vmd/vmdInter added the reap method to clean up thread environment vmd/thread.cc wait: now reset tp member to 0 so pthread_join does not get called twice Fortran Interface source/comand.fcm source/symbol.fcm increased maximum line length to 512 characters Common Low Level Libraries CDSlib/fixedSymMatrix added operator*(mat,symmat) operator*(mat,symmat) and test CDSlib/symMatrix added operator+/-(SymMatrix,SymMatrix) and tests common/atomSelLang -atomSelLang: added support for ranges for index and id properties -made attr >=/<= actually work common/ensembleSimulation.cc added getEnsembleSimulation static function common/pdbTool.cc write(): added TER after final structure if writeChainID==True nmrPot/utils.hh moved outerProd to utils.hh many files: various changes to silent gcc -Wall the most important being changing Simulation::type and Simulation::name from char* to String UNUSED was added to sthead.hh to demark (sometimes) unused functions. TCL Interface tcl/import_nmrstar.tcl formatting (whitespace) changes tcl/findTCL updated to deal with system Darwin installations Helper Scripts/Programs bin/calcSAXS.in added minQ parameter/argument bin/calcTensor.in -added pairwise averaging to RDCPot. -added chi^2 to output bin/getBest added the -members command-line option bin/xplor.in add quotes around $USER in case it is not set. Architecture-specific changes arch/Darwin_10_x86_64/source/Makefile Intel compiler updates - thanks to P. Mercier arch/Darwin_10_x86_64/Makefile.defs updated omitted lib list arch/symlinks updated for Darwin 11 arch/Linux_x86_64/Makefile.defs -OMITTED_SHARED_LIBS: removed libresolv - problems on Ubuntu -updated for old versions of gnu make Changes from 2.29 to 2.30 --> 2.30 released 2012/01/26 Example Scripts eginput/PSF_generation/genLigand.py added proper masses eginput/assignFit/02refine.py changed the random seed... so that subsequent 03assignFit succeeds Fortran Interface source/fxrefin.f catch overruns in bessel function lookup array source/fxmap.f source/xmap.f fix old(?) bug: not enough args in wrtitl source/comand.fcm source/parser.f source/xplorFunc.f fixed memory growth problem caused by repeated calls to xplor_parse() from xplor.command(). The command buffers grew without bound. Now, there are two buffers, one used if the qsubshell argument is true and the other if it is false. This safely allows XPLOR --> Python --> XPLOR calls. Also, if qsubshell is true, the buffer indices are reset to 1, so memory use no longer grows without bound. The BUFSTK variable has been removed- this is a vestige from the ``rotating'' command buffer. TCL Interface tcl/aeneas_tools.tcl standardJointFilter: added -primarySequenceDistanceFilter flag to (optionally) filter out all other assignments if an intra-residue assignment is a possibility. tcl/import_pipp.tcl process2dPippPeakTable: added the -intensityThreshold option Python Interface python/cdsVector added __radd__ __rsub__ __rmul__ __rdiv__ nmrPot/distSymmPot.cc allow atoms to be missing in some ensemble members common/ensemblePot added the ensWeights() read accessor ensWeight() read accessor: added a default memberIndex value common/ensembleSimulation.cc fixed invalid reference to sim pointer python/ivm.py ivm fixup for translate + torsion topology python/planeDistTools.py added a call to protocol.updatePseudoAtoms() python/regularize.py covalentMinimize: the meaning of the selection argument had been reversed! nmrPot/sardcPot -fixed bad ensemble weighting booboo -fixup to consistently use pot->ensWeight instead of member->weight -added the Dmax() accessor -added PAIRWISE averaging, test python/sardcPotTools.py -saupeMatrix: this now returns something, but needs testing. -added useSign arg default val -fix to deal w/ ! comments and properly deal w/ nonmatch condition python/simulationTools.py StructureLoop: added the structInfo member python/trace.py class Trace: added method run() python/xplorInit.py fixes s.t. cwd is last in the Python load path (also changes in bin/xplor.in for this) python/varTensorTools.py -saupeToVarTensor: updated to take optional Dmax argument so that proper (not scaled by Dmax) Saupe matrices can be input. Helper Scripts/Programs bin/calcTensor.in added -plot option, facility to plot calculated vs. observed correlations including error bars representing spread in calculated values bin/ens2pdb.in initCoords: disable maxUnreadEntries check -missing atoms are now deleted, so that invalid coords aren't printed -the -delete command-line option has been added bin/xplor.in -quiet output of ipcrm - so no program or people get confused. -fixups for case when num_threads > number of cores on a numa node. -added smarts for better dealing with the case of the number of processors on a numa node is not an even multiple of NUM_THREADS. Previously, numa nodes would be under/oversubscribed in this circumstance. -fixes for mixed localhost remote.host localhost specifications of machines: to get process id correct. bin/calcSAXS.in add an EnsembleSimulation.sync() after deleting atoms- otherwise confusion ensues if atoms are really deleted and Ne>1. bin/getBest fixed -all to work with ensembles with more than 10 members bin/pbsxplor.in now generate a default output (log) file from the input script filename Documentation helplib/nih-py-csaPot python/csaPotTools.py update concerning units Low Level Libraries CDSlib/cdsSStream fixed IStringStream str() members common/mmapMalloc.cc alloc -reworked MMapMalloc to use alloc from Rusty Russell. Previously, fixed-address mmaps were used, and ensemble simulations would sometimes crash, particularly for heterogeneous ensembles. nmrPot/ Potentials: make error message (when reading restraints) less confusing and deterministic: fix behavior of hitting nonfatal error when reading restraints: the remainder of the restraints would not be read. fixed by clear() ing the input stream. added another supported swig version Added support for python2.7 arch/Makefile.common add: if DEBUG==1, add FFLAGS_NOOPT to FFLAGS Architecture-specific arch/Darwin_10_x86_64/surfD/Makefile updated optimization reduction arch/Darwin_10_x86_64/source/Makefile updated gfortran-4.6 options - thanks to J. Howarth arch/Darwin_10_x86_64/Makefile.defs added optimization flag arch/Darwin_10_x86_64/fortlib/pppack/Makefile reduce optimization level for ppvalu (segfaults w/ -O2 or -O3) arch/IRIX64_6.5/Makefile.defs now use c99 C compiler arch/equivList updates for 64 bit Darwin arch/Linux_x86_64/intVar/Makefile arch/Linux_x86_64/source/Makefile reduced optimization levels to avoid optimizer-induced regressions arch/Linux_x86_64/Makefile.defs updated optimization flags - thanks to P. Mercier arch/Darwin_10_x86_64/Makefile.defs updates from P. Mercier for intel compilers arch/getDarwinCPU added the i3 processor Changes from 2.28 to 2.29 --> 2.29 released 2011/09/20 Example Scripts eginput/assignFit added assignFit example, for assignment using rdcs, csas eginput/pre rearranged and added a second example contributed by N. Anthis eginput/PSF_generation/pdbTest mod for pdb update of entry 2lhb eginput/relaxRatio added example of use for ubiquitin structure determination eginput/sardc/refine.py updated Fortran Interface source/genic.f source/initia.f source/intcor.f source/intcr.fcm removed the MAXLIC fixed parameter TCL Interface tcl/import_nmrstar.tcl readNMRSTARShiftTable: updated to read single character residue names Python Interface common/atomSel.cc comparisons between Simulations now based on modifiedID, not pointer val common/atomSelAction Fit: added the transDiff accessor python/csaPotTools.py makeTable function: fixed so it actually works nmrPot/noePot: -various fixes to better support EnsembleSimulations, including heterogeneous ensembles. -now, sum weighting and per-term weighting should be supported nmrPot/relaxRatioPot updates implemented cut_off leveling of Chi^2 nmrPot/posSymmPot.cc addEquiv... : throw exception if given an EnsembleSimulation nmrPot/sardcPot -gradient fixes added gradient wrt alignment tensor, added gradient contribution due to alignment tensor rescaling -changed get_avector_scale() to avectorScale() -removed avectorLimit fudge factor -code reworked to make it readable. -added domainSel member -fixed definition of variance -showViolations: now print out restraint err -added the err restraint accessor -added the irredTensor accessor -avectorScale is now allowed to be negative -changed diff(): now it is no longer predivided by deltaObsErr This changes the reported rmsd. -returned chisq value was corrected: now it is divided through by the number of restraints. -Restraint: renaming and now expose useSign and distance members with accessors. -added freeDist member to change distance parameter -removed spherical_sampling_init from the public interface python/cdsList_template.i added remove method python/distSymmTools.py -added genPolyRestraints python/ensembleSimulation.i rewritten destructor: now disown after calling deleteSimulation python/monteCarlo.py randomizeTorsions: added range. python/parseTools.py -new module with custom tools for parsing strings as input streams -moved findNested, readFloat to this file. python/potProxy.py fixed up potProxy s.t. AvePot(PotList) are now iterable python/protocol.py initStruct: optionally suppress output of XPLOR commands. Only required for XplorWrapProcs (from non-default XplorSimulations). python/psfGen.py fixes biomt case with ssbonds seqToPSF: allow comments preceeded by # character python/rdcPotTools.py Rfactor_infinite: updates for special cases python/restraintStats.py now use simulationTools.potType instead of potName to id type python/ringGeom.py -ringGeom: pucker function modified to additionally accept a list of torsion values as input -ringGeom: pucker function: changed order of angles and buffed up docstring python/sardcPotTools.py -convertFromXplor: fix for assignment regular expression -readRestraint: fix: now use XPLOR restraint err value -added R-factor to analysis -readRestraint: fixed value of useSign for DIPO-style restraints -added chi2 to extraStats - create_SARDCPot: will now read DIPO-style XPLOR rdc table, deducing the value of distance. Added the useSign argument. python/simulationTools.py -StructureLoop.makeFilename: fixed so optional structNum is really used -genAveStats: increased initial barrier timeout to 1 week (was off by 24) python/torsionTools.py torsionTools: setTorsions function: changed first dir to -1 python/varTensorTools.py calcTensorOrientation: fix for axis atom resid overlap with other resids python/waterRefineTools.py documentation update python/xplorPotTools.py added VEAN support surfD/surfInternal.hh increased constants Helper Scripts/Programs bin/calcDaRh.in added the -segid and -startResid cmdline options bin/calcETensor.in now use loadPDB s.t. heterogeneous ensemble members can be read. (but calcTensor_ensemble does not yet support this) bin/calcTensor.in -fixed bug which scrambled order of output when multiple tables were specified. -added -getTags to give verbose, parsable tensor info. bin/getBest added the -quoted option bin/targetRMSD.in -added the -psf2 cmdline option s.t. two different psfs can be specified. -fixed bug in which -diffSeq was required for different selections, even when the sequences were identical -now report Fit.transDiff instead of Fit.translate: this is the distance between centers of mass. -added the -showRigid cmd-line flag to print out transDiff, and rotation for each rigid body fit. bin/xplor.in -changes to parallel processing s.t. XPLOR_RSH is called once for each remote host and then one process is run (via -smp) for each time the host is listed. This conserves networking resources and may speed startup time. It is essential to be able to use rsh with a large (> ~100 cores). For it to work, like node names must be grouped together. If the node names are not grouped (e.g. -machines node1 node2 node1 node2), then this optimization will not be used. -changes to better support Solaris (grep --> $GREP, etc) -THREAD_FILENAME hack to deal w/problems with multiple processes writing to /dev/null and corrupting mmap-allocated memory on Darwin x86 and ppc platforms -fix logfile naming for case when a single job is running on a remote host. -Change: .0 is not added for process 0 log file Documentation doc/python/tut.tex updates to MultRamp docs helplib/faq/node0150.txt added ACPYPE link helplib/nih-py-csaPot added bit about DaScale, reference helplib/nih-py-xplorWrap added docs on disableOutput, enableOutput doc/xplor/manual_ypress.tex fixup in nonbonded description Low Level Libraries common/dlmalloc.c new upstream version common/ensemblePot.cc calcEnergyAndDerivs: now call modified.clear() common/ensembleSimulation common/simulation SharedAlloc: no longer initialize the esim member to the current EnsembleSimulation: this must now be manually initialized (this is so that SizeOneSimulations are used when appropriate - in the future it's also possible that sub-EnsembleSimulations will be allowed) As a result all CDSVector objects which use SharedAlloc must initialize the alloc member SharedAlloc now has an EnsembleSimulation* member EnsembleSimulation now has a SharedAlloc member these used so that multiple EnsembleSimulations can be active at once (in particular, Ne=1 allocations should work correctly when Ne>1 EnsembleSimulations are current) constructor: change for size one ensembleSimulations: id is no longer reset to the subSim's id. This is so that Simulation::deleteSimulation works properly for size one ensembleSimulations (and doesn't cause a later crash). deleteAtoms: now call Simulation::syncAllSimulations so that everything is properly sized, etc. Otherwise AtomSels return bogus values. Simulation: added the rawID() method, and made id() method overridable. id() is overridden by size=1 EnsembleSimulations to return the id of the subSim. This is to maintain behavior that size=1 EnsembleSimulations are identical to their subSims, but still retain a unique rawID which can be used (for instance) to delete them. EnsembleSimulation::SharedAlloc members now explicitly constructed - to specify EnsembleSimulation CDSlib/cdsVector.hh -added setAlloc method -Rep: no longer call allocator for zero size allocations CDSlib/spline spline: added getderiv member funct. fixed end value of slope in periodic case fixed type in operator added periodic case to derivs spline 1D: added getsecondderiv member function Architecture-specific -add amd64 architecture package for Mac -now used simpler Linux ARCH setttings. -no longer compile IPO for AMD64 Linux package Changes from 2.27 to 2.28 Example Scripts eginput/saxs_EI added EI-free SAXS+RDC example includes mutation script eginput/PSF_generation/genLigand.py now also generates a .top file new behavior: typenames are now truncated to 4 characters w/ leading "G" - if there is a clash- those atoms will have the same typename. Documentation corrected switching function definition (eq. 4.9 in the XPLOR manual) Databases databases/chemShiftTens additional and updated tables from Ben Wylie Helper Scripts/Programs bin/calcTensor.in added R-factor, and R-inf to default output. updated documentation bin/pyXplor.in properly protect single/double quotes in arguments bin/xplor.in added mechanism to propagate INT or TERM signals to remote jobs. fixup for SCYLD misbehavior for num_threads<2 Python Interface python/atomSel AtomSel: get constructor from list of atom indices working in Python python/bigraphMatching.py Tools to perform bipartite graph matching. common/bondAngle python/bondAngle.i added BondAngle class python/cdsVector_template.i fixed fromList (previous only worked if size did not change) python/diffPotTools.py python/ensembleSimulation.i added the Comm wrapper class python/h3JNC.py python/h3JNCPot.py new H3JNC potential term nmrPot/sardcPot avector_real: removed two-layercontainer of container with SharedAlloc merge from xplor-mmap (no change merge) nmrPot/planeDistPot added weight member to Restraint class along with WEIGHT statement in input tables added GAUSSIAN and SIGMOID potential types nmrPot/prePot PREPot::showViolations: improved output for SUM restraints PREPot: added mkSumRestraints fixed bug: some arrays were never sized for stereo mode python/prePotTools.py create_PREPot: added optional paraCenter, sumWeights args to facilitate creating SUM restraints python/protocol.py genExtendedStructure: added support for maxFixupIters=0 initCoords: changed erase implementation from using XPLOR interface initDihedrals: default dihedral restraints: now only add them if the atom farthest from the backbone is present. python/psfGen.py pdbToSeq: better deal with misformatted ATOM records seqToPSF: added ntermPatch, ctermPatch arguments to customize protein termination seqToPSF: -bugfix for ctermPatch -added the "custom" seqType -now treat seq arg as file if its length is > 4 characters -add singleChar argument to interpret sequence as a single-character residue names python/pyConvert Vec3s are no longer converted to tuples python/relaxRatioPotTools.py updates python/restraintStats.py RestraintStats: -added collect method for parallel communication of per-structure stats. Now collect stats on all structures and then subsample based on structNums argument. -added s.structNums member for to simply store seen structures members summarize* structNums is now optional. summarizeViolations: now sort by name instead of index: index is meaningless in the vdw term. python/regularize.py fixupCovalenGeom.fixupLoop_xplor: now catch unknown coordinate (and other) errors in XPLOR minimization and dynamics. nmrPot/sardcPot.cc added missing initializations python/selectTools.py renameResidues 1->3 protein sequence mapping. python/simulationTools.py StructureLoop: docs for averageRestrain: clarify meaning of inconsistentAveStruct. writeStructure: added exception type encountered if pwd.getpwuid fails changes made while unbound genAveStats: -reworked to collect per structure energy/violation info and communicate it back to the proc 0. -now do not try to do any fitting in the case of ensembles waitForProcesses: now commented-out. filename, makeFilename: now take an optional structNum argument run(): now use ensembleSimulation.Comm for ensembleSimulations minimizeRefine(): reworked s.t. flattened PotList is not used in minimization analyze(): remove extra comment listing cross-validated terms which is printed only if the terms contain sublists. python/solnScatPot.i pairDistribution: now initialize count field python/solnScatPotTools.py bugfix python/torsionDBTools.py tools for updated torsion database potential python/torsionTools.py setTorsions: bug fix: if angle specification was in opposite direction of tree def., the rotation would be incorrect. python/varTensorTools.py added configIVM_fixAxis function topologySetup: added fixAxis keyword added eulerAngles function and test changed current_axisResid to 5000 C++ Interface common/atom.hh isValid: now return false for default-constructed Atoms common/atomSelLang AtomSelLang: added the recall keyword added the dollar sign to characters allowed within strings new atomSelLang.setRecallSelection() function common/dihedral.hh added derivs(pref,derivList) convenience function common/ensemblePot common/ensembleSimulation common/xplorWrapProc re-enabled MMapMalloc for better ScaleMP performance now use fflush(NULL) before fork. CDSlib/cdsMap added clear() method, test changed visibility of methods getAtom, getAtomConst, and add to private. operator[], getAtom: optimization removing multiple map passes. CDSlib/cdsMatrix added operator*(vector,matrix) - more efficient for column-major matrices added operator*=(matrix) CDSlib/cdsSStream added second str() method which takes an argument CDSlib/cdsString.hh added synonym for gsub method: replace added find methods added count method CDSlib/cdsVector added append method/test CDSlib/fixedVector.hh added scale method CDSlib/pair.hh simplified the default constructor CDSlib/spline.hh Spline (1D): added constructor from two vectors added deriv(), secondDeriv() methods CDSlib/vec3.hh default constructor: Added initialization (0,0,0) - to make sparta derivs earier . intVar/publicIVM.hh PublicIVM::step: now check for error when catching Finish, return val changed. TCL interface: marvin/MarvinNOEPotential marvin/Peak fixed inappropriate use of non-public CDSMap methods Architecture-specific arch/Darwin_8_x86/Makefile.defs FLD_FLAGS cleanup createF77SharedLibrary: now use $(CC) instead of hard-coded gcc new element for OMITTED_SHARED_LIBS Changes from 2.26 to 2.27 Helper Programs bin/calcSAXS.in -added -exptPointsSpline cmd line option removed debug print message -fixed difference calculation (5th column of output) -change to output residual instead of calcd/expt difference -now check that input pdb files exist missing protons warning now goes to stderr bin/calcTensor.in added the -subSel option bin/testDist.in applied A. Bornstein's patch to make path independent bin/xplor.in -added A. Bornstein patches to 1) get --help-script output when --help is given 2) properly propagate binary xplor's return value -updated fortran i/o buffering settings from Jack Howarth -will now consider the CINGSH env var to locate cing startup script Example Scripts eginput/PSF_generation/addAtoms.py eginput/PSF_generation/addAtoms2.py updated to use high level PDB reader/writer from protocol module eginput/dna_refi/refine_full.py added comments re: use of old parameters eginput/saxsref added example of use of SAXS data in protein structure determination Python Interface nmrPot/csaPot.cc nmrPot/cstMagPot.cc nmrPot/jCoupPot.cc nmrPot/nbTargetPot.cc nmrPot/orderPot.cc nmrPot/planeDistPot.cc nmrPot/posRMSDPot.cc nmrPot/prePot.cc nmrPot/psolPot.cc nmrPot/rdcPot1.cc nmrPot/sardcPot.cc merge A. Bornstein patch for better treatment of spaces in restraint tables nmrPot/atomDensity DensityGrid: added readCCP4 (for maps) + tests, docs changed signature of writeEDM: now takes filename argument added default constructor getData: added swig range checking for arguments nmrPot/prePot.cc -fix: added nissing allocations -PREPot::showViolations: updated output along lines of suggestions from N. Anthis -calcGamma: fixed bug in stereo calc for slow interconversion -PRERestraint::energy(): now truncate the value of diff to 10,000. This to avoid crashes due to very large energies when the atoms get unphysically close. -Restraint::energy: remove truncation of diff_ nmrPot/posSymmPot.cc fixup for error message nmrPot/sardcPot.cc fix: added missing allocations nmrPot/torsionDBPot Added torsionDBPot module with TorsionDBPot2D and TorsionDBPot3D. python/cdsMatrix.i added __iadd__ (performance improvement for large matrices) python/protocol.py -initParams: added the use_dihe optional argument -initRamaDatabase: change nres to a number proportional to the number of residues in the appropriate simulation. Required for use with very large systems. python/pyInterp.cc PyInterp::command: change to get correct return value python/selectTools.py rigidProteinSelections: added entries for the CED residue python/simulationTools.py -StaticRamp constructor: added stride parameter; plus new test -saRefine: fixes to topology, parameter setup python/solnScatPotTools.py fitParams: inner loop optimizations python/spline.i -Spline: added 2nd constructor (taking 2 arguments) -added typecheck -typemap: use of overloaded functions w/ typemapped args requires typecheck typemaps. python/spline3D.i -new 3D spline class with gradient. python/torsionTools.py deleted rotomericStats.py after moving RotomericStats class to torsionTools.py python/varTensorTools.py calcTensor: added the optional selection argument to specify a subset of restraints to use for the SVD fit. python/rdcPotTools.py Rfactor_infinite: added selection argument TCL Interface tcl/aeneas_tools.tcl match2d: reversed the order of range in warning messages about from/toProtonShifts being out-of-range. createShiftAssignments: now check for empty (missing) shift values and simply print a warning message (instead of crashing). tcl/import_pipp.tcl added process2dPippPeakTable (after verifying it works) tcl/marvinNOEpotential.i added sorted versions for some PASD output quantities and updated output for new order of output prompted by CDSMap reimplementation tcl/tclXplor.cc now override built-in tcl exit command so that proper Xplor-NIH cleanup takes place. Output changed because now final messages (and times) are printed. XPLOR Interface source/fenergy.f source/setor.f added missing parameter to SEDIHE. This likely has no affect on the results source/hbdb.f bugfixes: hbdbpatt: -initialize all of hbfiltmap, hbprop elements -now more careful about going out of range -removed multiple infinite loops source/slink.f bugfix: subroutine slink: logical flags for dihedral and improper terms were incorrectly set. This resulted in slinked dihedrals and impropers getting zeroed out. Low Level Libraries CDSlib/fixedArray3D.hh New container class for statically-allocated 3D data. CDSlib/cdsExcept.hh added A. Bornstein patch: additional constructor taking String arg CDSlib/cdsIterator.hh members now protected to allow class derivation python/cdsMatrix -fixed constructor w/ initializer for CDSMatrix -New cdsVector.CDSVector*cdsMatrix.CDSMatrix operation -(cdsVector.CDSVector=v, cdsMatrix.CDSMatrix=m) Faster m*v. CDSlib/cdsMap CDSlib/redBlackTree CDSlib/templateStack.hh modified patch from A. Bornstein: converted CDSMap to use red black tree CDSlib/cdsString -merge A. Bornstein patches: added cast to int change argument of constaints(string) fixed justification of operator<< -readline: fix for reading long (>1024 char) lines, added test of this functionality CDSlib/spline.cc merged periodic 2D fixes (gradient estimation in constructor) from Guille. CDSlib/spline3D New 3D spline template class with gradient. common/atomSelLang.cc added the index keyword common/mmapAlloc -alloc: added (optional) 4th addr argument - used by mmapMalloc -alloc: do not subtract from addr unless it is !=0 common/dlmalloc common/mmapMalloc -initial version of malloc-on-mmap for shared memory allocation This motivated by poor performance on the ScaleMP architecture and suggested by their personnel. -added mutex protection for alloc and free -cleanup: add explicit call to MMapMallocData destructor to prevent resource (semaphore) leakage common/ensemblePot common/xplorSimulation -sharedPID now calls MMapMalloc::alloc (and it is now cleared) -added support for prepending pid to C++ cout output by setting the PREPENDPID env var. This should be expanded to include stdout from the C library. common/ensembleSimulation.cc common/ensembleSimulation.hh updated to use MMapMalloc instead of MMapAlloc bug fix for SharedString: no longer return raw char* ( so binary strings can be better handled, and so string length is properly set ) common/semaphore.cc -added query method for SVSV semaphore implementation -added extraData member. It is used by the SysV implementation to hold the pid of the Semaphor creator. The destructor only allows the creator to call IPC_RMID. common/xplorWrapProc.cc -added calls to MMapMalloc:incr/decrNumThreads before fork/after waitpid -slave no longer deletes sharedData- that is done by the master (who created it - this is necessary to delete the Semaphore (SysV) now slave does call SimulationWorld::finalize() - to clean up its SysV semaphores new debug output added surfD/compute surfD/surf bugfixes Surf class temp_cons member: change type and initialize Surf::quick_sort_planes: replace use of memcpy w/ memmove because of known memory overlap. Documentation Updates doc/python/rdc-expt.pdf added fig needed for tutorial helplib/nih-py-pdbTool update read() docs regarding negative model Platform Specific arch/equivList fixed mac (Darwin) ppc lines updated for 64-bit version of Intel/Darwin arch/getDarwinCPU added full path for system_profiler command (in case /usr/sbin is not in path). arch/Linux_2.2_i686/Makefile.defs GNU C/C++: reduced optimization from -O3 to -O2 arch/Darwin_10_x86_64/Makefile.defs arch/Darwin_10_x86_64/fortlib/Makefile arch/Darwin_10_x86_64/python/Makefile arch/Darwin_10_x86_64/source/Makefile source/darwin64time.f source/osx_x86_64.f untested contributions from J. Howarth arch/Linux_2.4_x86_64/Makefile.defs Intel V11 compilers: add the -ipo flag - improves C++ performance, makes linking take longer. arch/Linux_2.2_i686/Makefile.defs now default to gfortran if LOCAL_F77 is not specified in Makefile.loc Changes from 2.25 to 2.26 Helper Scripts bin/aveStruct script to compute average (unregularized) structure moved and updated from previous location eginput/gb1_rdc/aveStruct.py bin/calcSAXS - widen numeric output fields for increased precision - added -exptPoints cmdline option verbose output changed - added command-line options to fully control fitting parameter range bin/ens2pdb generates pdb entry from ensemble of structures (and does SEGID -> ChainID conversion) bin/xplor -change to allow middle entries in equivList to be recognized -added -rsh cmdline option. -no longer append .0 to outFile if numProcs=1 bin/pbsxplor - added support to propagate the -rsh option or the value of XPLOR_RSH on the submitting machine to the batch job. - fix: output of qsub is to be printed, not returned - added the -N cmdline arg to set pbs name - added -nomail option bin/targetRMSD changed selection of atoms which are moved in the fit to all known Python Interface fixed missing exception handling: this means more errors are catchable. python/cminpack added cminpack + python interface for nonlinear least squares python/cdsList_template.i -added append method -added removeAll method nmrPot/cstMagPot.cc Fixed verbose output of cstMagPot.CSTMagPot.addrestraints() python/diffPotTools.py added call to protocol.updatePseudoAtoms after adding clock atoms python/ivm.py breakBonds: now can optionally take two arguments (to specify two atoms) nmrPot/nbTargetPot.cc added nbTargetPot - can target various functions of atom-atom distance nmrPot/noePot.cc addRestraints: properly clean up partially-built restraints (avoid memory leak) python/potProxy.py Python proxy class used in fixing python potential term reference counting, avoiding reference cycles: ->potential terms can now be freed after they're created. Potential terms are wrapped in a PotProxy which decrements the rc_ptr refcnt when __del__ is called. python/prePotTools.py create_PREPot: fixups for fixTau=False registerTerm: fix to avoid reference cycle now unset thisown for each term to avoid shutdown errors nmrPot/prePot -updates to support fast/slow ensInterconvert -showViolations output improvements python/protocol.py -matchInexactAtomEntry: *updates to better read cyana-generated iupac files: -will now match name H to HT1. -for rule swapping leading digit with trailing: now the entire non-digit portions of the names must match. *added more code for nucleic customRename=True (HN) *now handle malformed coordinate fields -initDihedrals: fixes to work properly with reloading. -initCoords: changed message printed if unreadEntries to add warning -initCoords: return value now also has an entry for PDB remarks -writePDB: now takes remarks argument -cartesianTopology: added updatePseudoAtoms call nmrPot/relaxRatioPot.cc resetTesselationFlags: added resize of omega2 to avoid array overrun python/restraintStats.py -in concert w/ that in XplorPotTools: treat VDW restraints in standard way -getViolations: added method to signal that restraints is unsupported python/psfGen.py seqToPSF: for proteins, now support aria peptide linkages (more link statements) for aria topology files. python/regularize.py -covalentMinimize, fixupCovalentGeom, -fixupCovalentGeomIVM, addUnknownAtoms: now reset the constraints interaction settings before return -addUnknownAtoms_new: fixed selection of which unknown atoms to add. nmrPot/sardcPot python/sardcPotTools.py added SARDCPot contributed by Jie-rong Huang and S. Grzesiek python/selectTools.py added IVM_breakIsopeptides python/simulationTools.py minimizeRefine: added translateRegions argument python/simulationTools.py -StructureLoop.writeStructure: deal gracefully with failures of pwd.getpwuid (seen on scyld systems). -StructureLoop.filename: fixed old string exception -saRefine: added numSteps, htFinalTime, htNumSteps arguments, added high-temp dynamics phase. -testGradient: made exception type more explicit -fixed exception type encountered if pwd.getpwuid fails python/sansPotTools.py python/solnXRayPotTools.py added genFormFactors functions- called by the create_ functions, and also called externally to regenerate form factors w/ new values of q. python/solnScatPotTools.py -solnScatPotTools: added readData func- used for sans and saxs data -fitParams: *initialize bg s.t. this function can be called more than once *fitParams: now rhobNum, r0Num and V0Num treat values <1 as 1. nmrPot/solnScatPot -added setExpt accessor -modified: calcI_N- to include boundary contribution setQValues: to allow the number of q values to change -no longer a C++ template python/torsionTools.py setTorsions: added optional ivm and verbose arguments. python/varTensorTools.py added varTensorTools.registerExptToVarTensor for expts handling python/waterRefineTools.py tools used in explicit solvent refinement. python/xplorInit.py changed socketComm startup timeout to depend on numProcs python/xplorPotTools.py -now add restraints method for class, instead of per instance -> this to prevent a reference cycle. also added VDW ``restraint list'' -violations now returns PY_Restraints XPLOR Interface source/fxparse.f source/fxrefin.f added default value, input checking of TURNS fiber parameter. source/hbdb.f fixes from Alex (via Justin Lorieau) to properly recognize N-terminal protons. source/linuxtime.f source/x86_64time.f frehp: rearrange s.t. verbose mesg prints before abort source/genic.f fixed ancient bug in genic.f wherein subroutine patch didn't check for out of bounds natom count. This bug only struck with structures having residues numbers of special size. A test case has been added for this. source/sup2.fcm source/supccr.fcm patch to reorder COMMON elements - contributed by Jack Howarth Platform Specific: arch/Darwin_8/Makefile.defs arch/Darwin_8_x86/Makefile.defs arch/getDarwinCPU -Darwin findSharedLibs mods s.t. Frameworks are also searched -merged contribution from Pascal Mercier to support 64-bit Darwin. involves renaming PPC platform to Darwin_8_ppc. Examples eginput/gb1_rdc/anneal.py -add HBDB term eginput/gb1_rdc/wrefine.py new water refinement example eginput/pasd/mth1743 added the mth1743 pasd example eginput/pre/newRefine.py now write out a .bumps file which lists close contacts obeying constr inter eginput/PSF_generation/addAtoms2.py fixed selection syntax error eginput/PSF_generation/isopeptide.py added isopeptide example eginput/PSF_generation/PROT2.seq added example of N-terminal acylation eginput/sardc/ New example of use of SARDCPot contributed by Jie-rong Huang and S. Grzesiek Common Code common/atom.cc increased value of INVALID_COORD to be consistent with XPLOR value- important for atomSelLang atom selection. common/atomSel.cc containsIndex: fixed bug in which index range was not checked common/atomSelLang.hh added getNamedSelection (and it checks that the selection is up-to-date) the pseudo keyword now uses this new function. differences from the XPLOR atom selection language: removed two bugs: 1) previously HB# would match HB (in addition to HB1, HB2, etc) 2) previously, an extra trailing ) produced no error common/ensembleSimulation.cc finalizer: now shutdown ensemble threads common/pdbTool.cc -read(): *added check for short lines *now use special rule for (molmol created?) files which lack segid columns *remarks start in column 7 (previously included space in col 6) -writePDBAtom: now write a TER record between segs if writeChainID set common/potList.cc PotList::add now print warning mesg if checks that ensemble sizes do not match common/simulation.cc deleteSimulation: changed simulationList delete from direct ref count decr to assignment. This fixes a nasty bad pointer dereference. common/simulationWorld.cc init: reworked putenv use s.t. arg is char* (not const char*) common/xplorSimulation.cc select: changed from XPLOR to AtomSelLang selection language common/xplorWrap.cc deleteAtoms: now do syncTo at start common/xplorWrapProc.cc before forking: call XplorSimultion::syncTo to get XPLOR atom data in state consistent with that in Simulation. Low-Level Libraries CDSlib/cdsComplex added abs2 method; test of norm/abs2 CDSlib/cdsList.cc -fixed memory leak in resize: for case when cnt>1 -added uniq helper function CDSlib/cdsVector.hh removed unneeded/unused destructor CDSlib/matrixTools.cc callEigen: changed call signature to pass by ref instead of val CDSlib/rc_ptr.hh -fixed destructor memory leak: the CountHolder (counter) was never deleted. -destructor: now, if refcnt gets to zero, delete the ref cnt holder (previously, it was never deleted) -added forceDelete method for manually deleting reference counter object -changed ~CountHolder s.t. it no longer explicitly deletes the pointed-to object - this left to operator-- (this s.t. forceDelete can be used). -added test of forceDelete use. -added release method CDSlib/spline.cc Spline2D: constructor from vector: fixed to read row-major fortlib/blas fortlib/lapack resynced lapack and blas from netlib source TCL Interface tcl/aeneas_tools.tcl protect against divide-by-zero range errors Topology/Parameters toppar/waterRef/ inputs for explicit solvent refinement. toppar/protein-1.0.top toppar/protein-1.0.par added isopeptide linkage patch - contributed by Olivier Serve Changes from 2.24 to 2.25 Platform Specific Changes: now works with Mac OS X 10.6 for Intel platforms Mac OS X build now uses frameworks for Python and tcl. Helper Scripts: bin/calcSAXS -change behavior for calcSAXS: no longer delete missing protons -added -sans cmdline option: for calculation/fitting of SANS curves -added -rhobStart, -rhobEnd cmdline options -now add appropriately scaled bg back to calcd (and expt) on output doc updates. -added -altDeuteratedSel cmdline option -can now fit or specify value of isotropic background contribution using the new command-line options -bg, -bgNum, -bgStart, -bgEnd. -now place info in header of output -added -fractionDeuterated cmd-line argument -added -maxQ command-line option + functionality -added warning if very few protons found -bug fix! - previously always reset rhob to zero after the fit -now print vacuum radius of gyration bin/calcTensor -bugfix for case (not ensembleMode) and multiple pdbs: only a single pdb was considered in the fit -fix for multiple rdc tables: treated potList as list- could generate errors. bin/findClusters added -noFit, -fitSelection cmdline parameters bin/getBest -fixed order of presentation of usage string -can now specify multiple .stats files on the command line bin/pbsxplor -limit length of -N (job name) argument to 15 characters -look for the resources_available.cores resource (if available) to determine ncpus (thanks to Steve Fellini) bin/targetRMSD bug fix: fixed fitSel so it works added calculation of rigid body rotation, translation amounts. Also chaned default setting for fitSel2. bin/torsionReport now actually generate psf and read coordinates if -psf option is omitted. bin/xplor -command-line args -csh-env, -sh-env: no longer export PYTHONHOME -added -cinsh, CING environment support -numabind: now use multiple numa nodes, if a single node hasn't enough cores Example Scripts eginput/dna_refi/refine_full.inp eginput/dna_refi/refine_full.py eginput/dna_refi/refine_full_lj_elec.inp fix nucleic parameter file used to version 1.0 eginput/dna_refi/ensemble.py changed name of average structure file eginput/PSF_generation/genCircPep.py added simpler example of generation of cyclic peptide. The previous example is now named genModCircPep.py eginput/PSF_generation/addAtoms2.py now use faster addUnknownAtoms_new eginput/diffTens: examples using the diffusion tensor as a structural restraint. eginput/gb1_rdc/aveStruct.py now use loadPDB/initCoords/writePDB instead of pdbToPSF/PDBTool eginput/gb1_rdc/analyze_ProbDistPot.py - allow all dof for alignment tensors (for ave. struct calc) - no longer treat StructureLoop.inconsistentAveStruct as an error eginput/gb1_rdc/pairRMSD.py change: now read all coordinates into memory once eginput/pasd/cvn/makeContactMap.py helper to generate residue contact maps like those in J. Biomol. NMR 41, 221-239 (2008). Fortran Interface: source/linuxtime.f source/util.f -hacks/workarounds for treating /dev/null (corresponding to filename off or none) when running -smp on binaries compiled w/ gcc/gfortran-4.4.3: VINQRE: always treat file w/ unit 5 and name /dev/null as unopened. ASSFIL: retry VOPEN w/ different unit # if there is a failure opening /dev/null source/enbond.f source/parmio.f -expanded use of vdwoff to all VDW potential types -reversed (internal) vdwoff meaning Python Interface enabled SWIG-generated keyword support. common/xplorWrapProc.cc common/xplorSimulation.cc XplorWrapProc: change the behavior of simulation.Simulation(clone=True) If the current XplorSimulation is not the default Simulation, it is now properly cloned if that flag is set (previously the default XplorSimulation was always cloned). This required: -arranging for the correct slave to fork/wait at creation/de -saving a ref the XplorWrapProc associated with the cloned XplorSimulation -keeping track of whether the slave is a direct child. nmrPot/jCoupPot.cc calcContrib: now throw exception if atoms are too close nmrPot/solnScatPot.cc -calcBoundaryPoints: fix computation of triangle center points -added bg accessor, support for isotropic background correction -changed boundary layer calc to simply place a sphere at the center of each boundary voxel- no more random generation of points. -boundary volume calculation improvements: now bounded by outter surface generated by increasing atom radius by 3 angstroms and inner surface compsed of triangles from the outter surface dropped along the normals. python/atomAction.py PrintPos: change to print SEGID instead of index python/cdsMatrix.i CDSlib/matrixTools.cc added fix, test for determinant of size 1,1 matrices python/checkWrap.py fixed to find memory leaks in wrapped constructors python/csaPotTools.py added GLY-specific NCA-style auto-parameter assignment python/diffPotTools.py python/planeDistTools.py python/prePotTools.py create_*Pot: added call to updatePseudoAtoms() python/distSymmTools.py genDimerRestraints: added resids2 arg so that different residue ranges can be specified, and the segids argument can be set to None to disable segid specification. python/ensembleSimulation added collect method to EnsembleSimulation, and added coverage test python/ensembleSharedObj.py added collect helper function python/pasd.py tcl/aeneas_tools.tcl tcl/sa_protocols.tcl in anticipation of more some transition to Python, added pasd.py, currently holding default values of some parameters. updated sa_protocols, aeneas_tools to use these parameters. python/pdfEstimation.py tools for probability density function generation. python/posDiffPotTools.py loadPDB now called with deleteUnknownAtoms=True; docs updated python/protocol.py -no longer refer to deprecated Exception.message -syncArrayBeforeDelete: (used to synchronize bfactor, occupancy fields if atoms are deleted) now returns a cdsList instead of a Python list. -matchInexactAtom: change matching rule from 1st char to all but last -added writePDB helper function. PDB contents are returned. -initCoords, loadPDB: *added optional loadOccupanciesBfactors argument to load these fields in to an XplorSimulation. *added processBiomt argument. If set to True, BIOMT PDB will be read, and PSF+PDB entries will be added. -loadPDB: added optional processSSBonds argument python/psfGen.py -changed default value of failIfInsertion -psfGen.pdbToSeq() now raises an InsertionExceptionexception when a nonblank iCode entry is found. This can be disabled if psfGen.failIfInsertion is set to False. -pdbToPSF, pdbToSeq: *added support for reading, understanding BIOMT PDB records *added optional processSSBonds argument -addDisulfideBond: fix to deal more gracefully with missing entries specified by an SSBOND record. python/regularize.py -fixupCovalentGeom optimization: now only loop over those residues included in sel arg. -no longer refer to deprecated Exception.message -addUnknownAtoms_fast: now always catch CovalentViolation exceptions from fixupCovalentGeom -added addUnknownAtoms_new: uses algorithm to iteratively add atoms using addUnknownAtoms_fast. -fixupCovalentGeom: print more info for verbose>4 python/sansPotTools.py -added SANS support for Mg -added fractionDeuterated argument - describes the deuteration of non-exchangable protons. -create_SANSPot: *added arg to deal w/ alternatively deuterated selections *added maxQ, cmptType arguments python/simulationTools.py StructureLoop: -added averageFixed/RigidRegions arguments passed down to minimizeRefine. -writeStructure: now add username/time/date to pdb REMARKs -genAveStats: now print out sorted loops -calcAverageStruct: -now recalc alignment tensors after computation of ave. struct -fix up tensor pseudoatoms for case where regularization is not done, -minimizeRefine: -clean up minc: no need to have two ivm objects -switch to use cartesianTopology helper -rigidRegions, fixedRegions again obeyed. -removed varTensor stuff. ->initial, final tensor values will not be set by calcTensor. - this now needs to explicitly done after averaging coords ->tensor freedom setting should be obeyed. python/solnScatPot calcIfromF: barriers added to prevent races for Ne>1, num_threads>1 python/solnScatPotTools.py -fitParams: will now optionally fit isotropic background scattering optimized parameter search loop. -normalize(): fixed for normalizeIndex=-2,-1 python/solnXRayPotTools.py create_solXRayPot: added maxQ argument python/torsionPMFTools.py tools for generation of database torsion-angle potential surfaces. python/varTensorTools.py -added function getRegisteredTerms() -now use this in massSetup() and topologySetup() python/xplorPotTools.py improved nonbonded violations printout TCL Interface tcl/import_xeasy.tcl added process2dXeasyPeakTable tcl/aeneas_tools.tcl added standard2dInitMatch Databases databases/torsions_raw replaced all remaining instances of rama w/ xrama so that raw torsions work correctly. Low Level CDSlib/array3D.hh added Array3D template with reference counting and resizing; and unit tests CDSlib/cdsMatrix added operator+=(T)/operator-=(T) CDSlib/cdsVector added operator+/i(T) added operator+=(T)/operator-=(T) CDSlib/fixedMatrix added rawCopy method CDSlib/spline.cc Spline2D constructor from zVec: fixed so that the zVec data is read correctly. common/atomSelAction added minDistance function common/derivList operator[]: add check that derivList for sim was allocated common/atomSelLang added the AROUnd selection keyword python/cdsVector -added __iadd__ and __isub__ -added __add__(T) and __sub__(T) Build/Test Process arch/Darwin_8_x86/Makefile.defs findSharedLibs: updated to deal w/ otool results lacking leading / eginput/gb1_rdc/testTargetRMSD improved coverage of targetRMSD arch/Linux_2.4_x86_64/Makefile.defs intel v9 compiler: added intlc lib for forwards compatbility arch/Darwin_8/Makefile.defs arch/Darwin_8_x86/Makefile.defs arch/Linux_2.4_x86_64/Makefile.defs arch/Linux_2.2_i686/Makefile.defs fixed XLIBPATH arch/Linux_2.4_x86_64/vmd-xplor/Makefile no longer try to statically linnk libstdc++ bin/findSwig validated swig version 1.3.40 python/Makefile added link to libpy for all wrapper .so objs- to provide direct symbol linkage. 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.