Changes from 3.7 to 3.8 --> 3.8 released 2023/11/08 Topology, Parameters and Databases toppar/atcun.par/top -added missing angles around the ligating nitrogens toppar/extra/ctsa-3.2.top -moved ctsa.top/par to here, because they're not compatible with protein-4.0.top/par toppar/extra/ctsa-4.0.top -versions compatible with protein-4.0.top/par -offloaded nonbonded parameters to repel database -added peptide bond exclusions toppar/extra/ctsa.top -symlinks to 4.0 versions databases/repelPot/ctsa-4.0.dat -offloaded nonbonded parameters to repel database databases/repelPot/protein-3.2.dat -protein-3.2 RepelPot parameters databases/repelPot/protein-4.0.dat -added parameters for 4.0 databases/repelPot/protein.dat@ -symlink to protein-4.0.dat toppar/nag-3.2.par -NAG parameters moved to protein-3.2 compatible file toppar/nag-4.0.par -NAG parameters for protein-4.0, with symlink toppar/protein.par toppar/protein.top -switched default protein parameters/topology to 4.0 toppar/protein-3.2.top -removed the R1 residue (it is the duplicate of CYSP) -protein-3.2: added presidues ASPH and GLUH and associated params toppar/protein-4.0.top -added group statements to RESIdues to match protein-3.2 (and earlier). These help maintain a sensible atom order when first and last patches are applied -added missing patches to phosphorylate serine, threonine and tyrosine -removed all nonbonded parameters, including many commented-out terms; these are now read-in from databases/repelPot/protein-4.0.dat -CTER patch: fixed carbonyl oxygen names at the C-terminus -added FIRSt, LAST, option comments where needed Helper Programs bin/calcSAXS.in -added -inner/-outerBoundaryFilename options bin/contactMap.in -fix to make work on macs bin/evalDihedrals.in -new helper for evaluating dihedral restraints given one or more structure bin/evalDists.in -new helper for evaluating distance restraints given one or more structure bin/mleFit.in -bin/mleFit.in: added semicolon as delimiter of ordered region selection to facilitate parsing bin/plotLog.in -added the -start/stopString options such that only a subset of lines are processed to be plotted bin/xplor.in -set PYTHONWARNINGS to disable numpy message about subnormals being disabled -added support for REPELDB, separated RepelPot parameters -added the -help-env option and usage_env function - to list environment variables which affect Xplor-NIH runtime. -added behavior triggered by the XPLOR_CORESIZE env variable Example Scripts eginput/pasd/nef - many updates to this example: renamed: initMatch3d.py => initMatch.py -This version should support 2D, 3D, 4D spectra -fixed proton tight tolerances to those in old initMatch3d jointFilter.py -added -refFilename option -can read all existing distance restraints, using them in the contact map -now used single (per spectrum) .pasd file (replacing .peaks, .exceptions .shiftAssignments files). -allow specification of all or subset of distance restraints whose connectivity info to use talosToNEF.py -detect symmetric multimers, and handle multiple segids pass2.py pass3.py -changed defaults for highLikelihoodCutoff, violCutoff arguments to processStructurePass -allow specification of reference structure -allow optional specification of distance restraint saveframe name(s) -use random initial coords, instead of extended structure -now specify .pasd file names instead of spectrum names -dihedral restraints now use dihedralPot functionality (but saveframe name is still specified) -analyzeStructurePass.py functionality now performed after structrure calculation (i.e. within the pass2 or pass3 script). analyzeStructurePass.py -changed default value of inFileGlob; changed defaults for highLikelihoodCutoff, violCutoff arguments to processStructurePass -added -likelihoodCut command-line option fold.py -cleanup -now implement the -dist argument for specify names of distance restraint saveframes refine.py -cleanup -added the -dist and -refFilename arguments -switched from CDIH to DihedralPot -changed averageFitSel to include all backbone heavy atoms makeNEF.py -switched over from spectrum names to .pasd file names -copy all distance restraints from the input .nef file -in call to removeLowLikelihoodPeakAssignments: changed cutoff to 0.9 -call to removeLowLikelihoodPeakAssignments: switched back to likelihood cutoff of 0.25 -replace calls to cif.Cif() with nefTools.makeNEF() pasdContactMap.py -new contact map tool using restraints in NEF format. eginput/PSF_generation/genLigand.py -added entries for lutetium eginput/PSF_generation/tags/diHisCu/addDiHisCu.py -fixup for actual location of dihiscu patch/parameters eginput/strictSym -removed input .pdb, .psf files, and instead add the scripts which generate these files: genC2.py and genQuadC2.py Python Interface *** Updated Python version to 3.11 *** python/avePot.py -allow argument of AvePot ctor to be a callable so that the current simulation can be set to the local member before the term is created. camshift/camshift1.cc -CamShift1::addResidue: added terminal carbonyl oxygen name common/aWeights.cc -setWeights: proper fix for setting pseudo-atom positions which are exactly colinear cif/cif -CIF class: added the catsUseLoops member. When set, use behavior seemingly required by NEF files. -Cif::formatCategory: fixed to provide documented behavior python/deerPotTools.py -create_DEERPot: o add the tagInfo and tagSim optional arguments o the varyWeights argument can now be a aWeights.AWeights object. python/densityGridTools.py -trimDensityGrid: added the rectangular algorithm for chosing the subregion python/posDiffPotTools.py -create_PosDiffPot: now allow synthetic AtomSels (created by atomSel.union or atomSel.notSelection) to be used for the case that selection2="initial" python/ensSymSimulation -new class EnsSymSimulation - an ensemble of structures each of which has strict symmetry. nmrPot/gyrPot.cc -constructor: no longer reset the atom selection to all atoms if no atoms are in the passed selection. python/nefTools.py -CIF class: added the catsUseLoops member. When set, use behavior seemingly required by NEF files, s.t. all categories after the first use loops instead of key-value pairs, even for 0 and one-membered arrays. -seqFromNEF: o fix s.t. pseudo-atoms (dummy linkage type) don't cause a crash o seqFromNEF: fixes for dealing with cyclic proteins -genMolecularSystem: fixed for generating cyclic protein systems -getBlockNames: change behavior for the case of an empty return value: previously, an exception was thrown, but now an empty list is returned -renamed makeCif --> makeNEF python/noePotTools.py -readNEF: now print warning if distance bounds are strange (lower or upper bound specifications are less than zero) nmrPot/pairPot -changed the default value of PairPot::rMin from 0.5 to 1e-3. Also, the gradient was fixed to be zero if r1, print additional info about number of nonbond exclusions. common/simulation -currentSimulation: now return 0 if currentSimulation is not valid -validSimulation: rework to query only those Simulations in simulationList python/simulationTools.py -testGradient: o added support for alwaysPrint="nonzero" functionality o now if passed an iterable potList, use that instead of creating a new one: In this way, an AvePot(PotList) is not removed. o can now pass non-PotList sequence. -minimizeRefine: added verbose argument. -saRefine: o added the finalTemp argument, and change its default value to 5 K -- previous value of 0 caused crashes. o no longer set the freedom members of any VarTensor objects. python/socketComm.py -Comm classes: added singleProc, multiProc, multiProcNoBarrier methods, test -startServer: increased the backlog argument from 5 to 1024 to get rid of kernel messages ``kernel: TCP: request_sock_TCP: Possible SYN flooding on port XXXX. Dropping request. Check SNMP counters. '' nmrPot/solnScat -added inner/outerBoundaryFilename members for writing out boundary surfaces in SolnScat::calcBoundaryPoints. Also, changed sign of volume components, and exclude negtaive volume voxels python/solnScatPot.i -now separately instantiate CDSMatrix (separate from that in cdsMatrix module). This cannot be mxed with cdsMatrix.CDSMatrix_complex sparta/pdb.cc -updated to understand C-terminal oxygen names nmrPot/tagPairDist -added the tagEnv() accessor nmrPot/tagPairDist.cc -saved atoms for TagEnvironment::movedTooMuch: now only save/compare atoms in nonTagSel- not all atoms in the corresponding Simulation python/tagPairDistTools.py -readWeights: made regexp for reading weights more permissive (now allows artibrary number of spaces) -createTags: o fixed call to TagTool ctor to specify nonTagSel- need for tags/protein in different Simulations. Also fixed up analyzePr for this case. o added tagInfo, tagSim arguments to allow setting up an TagInfo object outside of the returned object. -analyzePr(): add the idClosest optional argument python/tagTool.py -tags and protein can live in different Simulations. Some standardization of naming, restructuring, and documentation happened R1 tag name changed to CYSP so as not to duplicated RESIdue in topology- it's still a valid name, though, -TagInfo.simulation member has been rationalized -added getDBentry, getDBname -addAtoms: tagName is now reset to dictionary key -TagInfo.attachTag: corrected the selection used to specify what is to be attached. -TagTool.loadCoords: allow tagNum>=num read tag conformations -TagTool.attachTag(): added fullSim argument, which can be used to override the identity of the TagSimulation to which tags are attached. -analyze(): fixed support for multiple TagEnvironments python/torsionDBPotTools.py -torsionDBPotTools.setup_pot() now removes all endocyclic bonds from global torsions list for torsionDB-affected PROs -define_cispro_impropers: properly parse PSF !ATOM section using column numbers. This fixes a failure mode with the previous code if the segid was a valid integer python/utils.py -moved getDBfilename from tagTools module; added dbEnvVar argument to allow specifying environment variable name of directory where the file might be located -fileContentsOrString: added the dbEnvVar argument for the same purpose python/varTensorTools.py -addAxisAtoms: add simulation argument to initParams call python/xplorInit.py -now suppress disabled-subnormal messages in python/xplorInit.py common/xplorSimulation -added xplorSimData member with residueType* accessors/database: lists of residue names registered for the particular XplorSimulation. Documentation helplib/nih-py-ivm -added notes about velocities getting reset to zero when a minimization step type is chosen TCL Interface tcl/shiftassign_tools.tcl -saTools.analyzeShiftAssignments: no longer set PeakAssignment active member, so it only does analysis. Do activation before calling tcl/marvinAssignment.i -PeakAssignment added backward compatible accessors for activation Fortran Interface source/genic.f source/rtf.fcm source/rtfio.f source/segmnt.f -removed the MXRTT limit on the number of angles defined in the topology database - now this is dynamic, with the current value in num_RTT Low Level Functionality CDSlib/matrixTools.hh -added outerProd(vec,vec) python/cdsMatrix.i -removed CDSMatrix - unnecessary redundancy common/avePot.cc -energyMaybeDerivs0: now sync() localDerivs, so that subSim's contribution is summed into that of esim->member() python/cdsVector.i -added norm_Vec3 instantiation for norm(CDSVector) CDSlib/cdsVector.hh -aborted (commented-out) operator*(s,vec) for general type of s- the wrong overloaded function of this name gets picked sometimes common/derivList.hh -non-const operator[](Simulation*): now set synced flag to false -init(): no longer treat EnsembleSimulations specially- all this is now handled in EnsembleSimulation::syncDerivs and EnsembleMemberSimulation::syncDerivs. Also, unnecessary member simulation's derivLists were created previously. -isInitialized: perform extra test to make certain the passed Simulation has a lookupID in range common/ensemblePot.cc common/potList.cc -calcEnergyAndDerivs: scaling of derivList now happens in EnsembleSimulation::syncDerivs, if necessary common/ensembleSimulation.hh common/ensembleSimulationBase.hh -moved shared atom quantities to Base class -syncDerivs methods for both EnsembleSimulation and EnsembleMemberSimulation: now perform avetype="sum" derivlist scaling and synchronizing with subSim common/ensembleSimulationBase.cc common/ensembleSimulationBase.hh -clean up used members; added pure virtual resize methods ; moved ctor to .cc file -removed unused ensembleIndices_ member; now explicitly initialize memberNumAtoms/Bonds -much work to get fill out requierd methods and to get shared memory working intVar/dint-node.cc -construct: improve error message for case of colinear bonds in bend node configuration pasd/peakAssignment pasd/shiftAssignment -simplified inWrong/RightNeighborhood accessors to be ACCESSORs -change isActive/activate/inactivate accessor to simply active python/pyConvert -added the PyConvert_ModuleError exception -added new scheme s.t. swig pointer conversion functions are no longer called directly. but through the new functions convertSWIGptr and makeSWIGptr. Type info is now initialized when needed, s.t. not all modules need be loaded before first call to one of these functions. -Fixed fromPy(PotList): previously would not properly handle raw Pots: now throws proper exception common/simulation.cc -hack to avoid double deletion issue in deleteSimulation common/simulationWorld.cc -finalize: now clear randomSeederList before return surfD/ -various code cleanup surfD/chull.cc -add_on: protect against empty e->adjface[1] surfD/compute.cc -Surf::compute_components: recover gracefully from issues in the convex hull or dual calculations (generating no triangles) surfD/dual -work to recover gracefully from issues with the CHull; -dualize_hull, gen_fc_face now return bool values, false on unexpected condition -alloc_fc_edges: now robust to empty temp_e->adjface[1] -gen_fc_face(): added failing return for case when temp_f is NULL surfD/io.cc surfD/surf.hh -added methods, functions for creating STL-formatted output Strings Surf::asSTLstring, stlToSatring common/xplorWrap -added method openTmpFileWithContents: wrap openFile in loop to catch case where temp file created in C++ layer is not found on the Fortran side; now use this in command, fastCommand, select -openTmpFileWithContents: now exit program if the underlying directory will not stat (stat returns 0) python/xplorSimulation.i -getXplorSimulation: added support for EnsSimSimulation, and now is recursive, instead of looping Makefile -exeinst rule: now try to deal with symlinked libraries using CANONICALIZE to get the actual target, and readlink to determine if the library name is a sym link. Changes from 3.6 to 3.7 --> 3.7 released 2023/05/26 Helper Programs bin/aveStruct.in -changed behavior s.t. -selection option sets -fitSelection if only the -selection option is given bin/calcSA.in -calcSA: removed bad interference between -reportSelection and -byResidue options (originally, byResidue only considered residues which contained atoms in reportSelection) bin/hbScore.in -updated s.t. the headers are printed after details (if requested), so they're right above the respective numeric output bin/mleFit.in -fixed variance output in the case that fit files are not written. bin/plotLog.in -added -xdelta, -title options, and the histogram plotType -now supports histograms of non-numeric input values bin/slurmXplor.in -fixed logic for passing arguments to Python-script options using the = character separator -fixes for handling special characters in command-line arguments Examples eginput/capsid -switched from XPLOR VDW to RepelPot in structure calculations eginput/deer -added a README file, a brief description of calcPr helper program, including references eginput/pasd/nef o initMatch3d.py -switched from TCL to Python for standardInitMatch o refine.py -added a refinement script o nef2xplor.py -simplified output .tbl filenames -added creation of dihedral restraint table(s) o fold.py -update to use DihedralPot instead of CDIH Topology, Parameters and Databases toppar/protein-4.0.par/top -Added toppar/protein-4.0.*, the Xplor-NIH versions of the CNS topology/parameter files, with 2018 (nuclear) MolProbity radii. toppar/ion.par/top -Renamed types (OUF->OUS, SUF->SUS) for sufate atoms in toppar/ion.* to avoid duplication with toppar/protein-4.0* toppar/edta.par -replaced all references to the now inexistent dihe scale constant by 50.0 Python Interface nmrPot/atomProbProjection nmrPot/atomProbHeight -changed bare qc member to an accessor common/atomSelAction python/atomSel -added the AtomSelAction::GetProperty class -AtomSelAction::Base: added the returnMethodName read-only accessor. This is now set by AtomSelAction classes which return values, so that a rewritten Python version of AtomSel.apply, now returns the named method. This greatly eases the use of the getter classes. python/bigraphMatching.py -python/bigraphMatching: made some debugging lines compatible with python 3 python/cdsMatrix_template.i -CDSMatrix ctor from list of lists: now throw exception if arg can't be converted to PySequence python/cdsVector -added the __mul__(CDSVector) method, -added instatiation of __mul__ as FloatMul. Not very convenient. Would prefer to properly overlad operator* python/chemShiftTools.py -convertRestraints: added the "tuples" outFormat option. Also, all formats should now support both returnDict values. python/densityGridTools.py -trimDensityGrid: deal with case that selected region exceeds the bounds of the original map. python/dihedralPotTools.py -create_DihedralPot: o added nef, nefRestraintName, useSegid arguments - will now read NEF records o added restraintString argument for non-NEF input -added makeTable function python/iupacNaming.py -added functions getCurrentScheme, get/setSavedScheme -to/fromIUPAC: added the check argument: support for setting/getting/checking the current naming scheme fixes to iupac<->xplor conversions python/maxHeightPot.py -added gamma, softMaxType accessors -constructor: added the optional target argument python/maxLikelyFit.py - added meanCoords method - fixed PDBWrite to agin write out coordinates for each fitted structure, but now with a configurable suffix instead of a fixed prefix python/nefTools.py -getBlockNames: fixed code in exception block -seqFromNEF now correctly identifies cys_peptide residues; throws exception because we don't know which residue NEF refers to python/noePotTools.py -readNEF: can now handle the case where target_value is omitted: it is regenerated as the midpoint between upper_limit and lower_limit -makeTable: now call selectTools.makeAtomSelString so that restraint tables can be written in a different naming convention python/pasdPotTools.py -create_PASDPot: added support for reading from a combined .pasd file containing peaks, shiftAssignments and exceptions, optimally, separated with separators. python/pasd -pasd.__init__: o createShiftAssignments: make more robust to missing/bad shift values and shift uncertainties' o moved to pasd.saTools o sparkyPeaks: added the idColumnName, ability to read and use the Sparky peak id, instead of generating a new one. -moved asciiHistogram, reportNOEprecision reportNOEaccuracy to pasd.reporting -moved removeIntraSegidPAs, removeInterSegidPAs to noeTools -added new modules to support pasd.protocol.standardIntMatch -match4d changed id-ing of dimensionality from tolerance specified to which spectral ranges are specified in the arguments. -pasd.netfilter: o added name H for bbSel to support IUPAC o added members to returned value containing info on the generated contact map -pasd.noeTools.getDistanceBinsFromIntensities: now allow distanceBins to be a list of distances representing upper bounds. -pasd.peakTools o added removeLowIntensityPeaks function o analyzePeaks: now, in reporting, differentiate between intermolecular and long-range peaks/peak assignments o nefPeaks: Fix s.t. 2D spectra are properly read. -pasd.protocol: o added functions for writing out individual PASD files, and ability to disable writing in standardInitMatch. o correctShiftOffset: added name H for bbSel to support IUPAC o removed writePASDFiles function (only used by jointFilter) o jointFilter: - added the refStructFilename argument, deprecate refPDB argument - replaced the call to writePASD files with individual write calls (and call other required functions). o write* functions: fileAccess argument added, passed to TCL versions to support appending to files. o added pasd.protocol.standardInitMatch and supporting functions with capability of writing a unified .pasd file o added processStructurePass (replacement for newSummarizeMarvinResults) for analysis of strucuture passes o createExplicitInverseExceptions: optimized the final loop adding exceptions including shiftAssignments which overlap SAs in existing exceptions. -pasd.reporting: o added whichBin helper function o asciiHistogram: added numXdigits argument o reportNOEprecision: changed heavyatomSel argument name, added longRangeCut argument, and changed default value of tclOutput. o reportNOEaccuracy: improved output, added info on intermolecular restraints -pasd.saTools: o renamed initialAnalysis --> analyzeShiftAssignments o cacheConnectedArray: fixed to work properly for crit argument string of "three", "four", "five" o added the function reportShiftAssignLikelihoods o createShiftAssignments: support shift lists missing error values. -pasd.selectTools: o stereopartners: fix to LYS entry; o stereoPartnerForSelection: default return value changed to None o added support for IUPAC naming o added makeAtomSelString function python/pasdPeak.i -added overlappingSAs helper function pasd/peak.cc -change to isLongRange(): now returns true if isIntermolecular is true pasd/peakAssignment.cc -updateIsBackbone: update selection for IUPAC naming pasd/shiftAssignment -added overlappingSAsByIndex optimizing helper function common/pdbTool.cc -write: add missing TER record at end of final sequence -verbose() accessor: changed to int type -added the numRead() accessor -read: don't print out warning for unrecognized ATOM record unless verbose>1 python/posDiffPotTools.py -create_PosDiffPot: o added the cmpRMSD() method to the energy term returned o added support for psf="none": reading in comparison coordinates without a PSF common/potList python/potList.i -added the makeCopy method nmrPot/probDistPot python/probDistPot.i -changed prStruct member name to atomProb_ ; initial work to support fitting to a map generated from an ensemble of structures -added code to provide (read-only) access to the (removed) prStruct member -now computes an ensemble map, and gradient -added ensembleRotateCenter accessor python/probDistPotTools.py -removed unused angle for PA1 pseudo-atom, used to encode the center position of the electron density map -massSetup change: default mass will now be mass of the probDistPot.atomProb's selection -updates to support EnsembleSimulations, i.e. maps arising from an ensemble of structures -for EnsembleSimulation calculations, now shift to using a separate set of projection pseudo-atoms for each ensemble member. This is necessary for ensembles of SymSimulations (using strict symmetry), where absolute position of the active degrees of freedom (the protomer) determine packing. -create_ProbDistPot: added ensembleRotateCenter argument -topologySetup: added support for ensembleRotateCenter=False python/protocol.py -update CIF header URL, documentation -protocol.initTopology now allows white space in front of link statements in topology file -initCoords: o now report number of ATOM records read - using the new pdbTool.PDBTool.numRead() method. This number includes entries matched by matchInexactAtomEntry o set selection argument to module-global variable (which stil has the value "all"). o now print num ATOM records read for all non-zero (non- False) values of verbose. o add numAtomsRead to the returned InitCoordsResult object. -matchInexactEntry: o added shortcut for case of no resAtoms- in this case a warning message is not printed (because this segid, resid was not in the selection argument). o instead of True or False, now return values of 0,1 or 2. Matches return 1, 2 for a miss if the selection argument is specified in initCoods or the atom entry is expected to match a pseudoatom, and 0 otherwise. python/psfGen.py -psfGen.seqToPSF: added N-term patch specific to protein-4.0.top (for HYP resname) python/selectTools.py -numResidues: added short circuit logic for 0, 1 values -correctSymmetricSidechains now correctly treats protein-1.0-based ARG python/simulationTools.py -calcAverageStruct: return value is now a namedtuple -minimizeRefine: suppress printing of energy messages during minimization. -testGradient: random component now supported for EnsembleSimulations common/softMax python/softMax.i -coded softMax and logSumExp algorithms with gradients common/tagSimulation -combined the genCopy functionality into addCopy() -added support for posSel and rotateSel to be members of a different Simulation python/torsionDBPotTools.py -torsionDBPotTools.create_RepelPot14 funct. now passes verbose argument to returned repelPotTools.create_RepelPot call python/torsionPotTools.py -split off readNEF from Xplor_readNEF. The former is also used by dihedralPotTools.create_DihedralPot -readNEF: o original assumed target was centered in the smallest section by limits - now reads nef target and appropriately calculates tolerance (delta) o corrected delta determination from limits; raise exception if target not centered within limits, or selection is bad python/utils.py -moved aveDev here from the restraintStats module python/vecPairOrientPot.py -new Python-coded energy term restraining the angle between two interatomic vectors. TCL Interface tcl/aeneas_tools.tcl -switched over many routines to call Python version -fixes for arg name change in the Python standardInitMatch -standardJointFilter: subsume writePASDFile function tcl/marvinAssignment.i -added the smartPtr() method for the PASD ShiftAssignment class tcl/marvin_lowlevel.tcl -nextXplorWord: added hack to skip reading lines after a -note literal- this to help support .pasd files combining peaks, shiftAssignments and exceptions tcl/noe_tools.tcl -writeMarvinPeaks, writeExplicitInverseExceptions: added the fileAccess argument to support appending to existing file. tcl/noe_reporting.tcl -initialPeakAnalysis: switch to calling Python version -initialPeakAnalysis: pass description argument tcl/shiftassign_tools.tcl -commented-out expandHalfStereopairShiftAssignments -expandStereospecificShiftAssignments now calls to Python version -initialShiftAssignmentAnalysis: now calls Python pasd.saTools.analyzeShiftAssignments() -writeShiftAssignments: added the fileAccess argument to support appending to existing file. Low Level Functionality CDSlib/cdsVector.hh - vector() methods: fill in all of the template members (so that non-default values of SIZE_T and OFFSIZE_T can be instantiated) - added operator*(Vec,scalar) to make certain noncommutative multiplication can be handled - added a copy method which performs a deepcopy - no test added yet common/ensemblePot.cc -calcEnergyAndDerivs: now do deep copy for assignment of derivs0 - this is the places the copy here, instead of someplace further on where splitRep is called- *or not* - if raw pointer access is used common/ensWeights.cc -EnsWeights gradient: fixed bug for minfrac>0: wScale factor was applied twice. This fix should improve results for scripts performing population optimization using EnsembleSimulations. common/potList.cc -calcEnergyAndDerivs: now do deep copy for assignment of derivs0 - this is the places the copy here, instead of someplace further on where splitRep is called- *or not* - if raw pointer access is used common/xplorWrap -added debugging data for openFile failure mode bin/findSwig -now support swig verions 4.1.0, 4.1.1 Architecture-Dependent Changes Darwin_arm64: -workaround for Mac OS X bug where crash/hang occurs in tcl finalizer of child process when cleaning up after fork. arch/darwinParseSharedLibs -added script to parse otool -L output and replace the literal @rpath with something useful. source/osx_arm64.f -fixed manual string length specification s.t. NULL doesn't appear in output, causing all tests to appear as binary files, thus messing up the grep for CPU time. arch/Darwin_arm64/source/Makefile -optimization downgrade for parser.f to avoid segfault in test/macrotest.inp arch/Linux_x86_64/Makefile.defs -added definition of CAONNICALIZE, used when building binary distributions so that shared libs are only copied once. -No longer attempt to rebuild symlink trees in distribution. Changes from 3.5 to 3.6 --> 3.6 released 2022/10/24 Helper Programs bin/analyzeRepel.in -added the -selPair option to compute interactions between a subset of atoms bin/calcPr.in -new helper program to compute the pair distance distribution arising from doubly-tagged proteins. bin/calcSAXS.in -calcSAXS-bufSub functionality subsumed into this helper. bin/calcTensor.in bin/calcTensor.in -files specified by the -crossValidate option can now be in space-separated format. -reworked to get rid of matplotlib deprecated message bin/calcTrace.in -helper program to compute DEER curve from doubly-tagged molecules. bin/configure.in -now suppress warnings during python module precompilation -configure: added check to switch to shipped certifi cert file if the system cert store does not work; bin/getBest -getBest now assumes -symlinks if -symlinkSuffix is provided -fixed the symlinkSuffix behavior bin/mleFit.in -added ability to fit a MODEL-separated set of coordinates in a single PDB file. bin/plotLog.in -added the bar potType bin/pty-xplor -various fixups, mostly cosmetic, but one consequential: switch from SIGALRM to SIGUSR1 for parent/child communication, as under recent versions of xterm on XQuartz, SIGALRM is somehow blocked. bin/slurmXplor.in -get the -N option working; now place the -o outfile in the directory in which slurmXplor was invoked bin/targetRMSD.in -targetRMSD now assumes -write if -fitSuffix is provided bin/torsionReport.in -added a selection option- this dramatically speeds-up calculation for large systems bin/xplor.in -added stub location to hold cert file definition bin/xplor.in -for -slurm case: add --overcommit option *required* after SLURM 21.08.05: the task which spawns xplor via srun now counts as a task for slurm accounting purposes, so we are less one for spawned jobs. Since this task consumes approximately zero resources, we specify overcommit. Commands run directly from the batch step do not count against resources - perhaps there is some way to designate this script as the batch step. bin/calcPRE.in bin/calcPr.in bin/calcSAXS.in bin/calcSAXS2.in bin/calcTensor.in bin/calcTrace.in bin/plotLog.in -updated matplotlib set_window_title to non-deprecated usage Examples eginput/deer/validateCalcPr.sh -added test of calcPr eginput/emRefine/dock.py -added moveAtoms argument to call to centerOnMap. Otherwise this procedure will not work for maps away from the origin - because pseudoatom translation/rotation is not yet supported for volumetric maps (by AtomProb) eginput/pasd/nef/validateFold.sh -loosened the successful number of long-range restraints -added accuracy check of fold structures to discovered PDB coords eginput/PSF_generation/genLigand.py -added commented-out skeleton for finding and enforcing planarity for atoms bonded to three atoms eginput/saxs_EI/EIA-PEP -exercise the bufSub algorithm in the calcSAXS helper. Topology, Parameters and Databases toppar/dihiscu.par toppar/dihiscu.top -toppar/dihiscu*: changed N-Cu bond and N-Cu-N angle to averages between NTA- and IDA(like)-based structures (small changes) toppar/waterRef/parallhdg5.3.pro.new -added d-amino improper parameter for N-terminal residue databases/tags/CED.top -removed terminal protons, oxygens databases/tags/R1-deer-20220902-fit1.0_0.5_2.5_73.pdb databases/tags/R1-database.pdb@ -updated R1 rotamer coords/weigths/parameters Python Interface - Python versions 3.9 and 3.10 validated common/atom -added Atom::selectionString with test python/atomAction.py -randomizeDomainPos: now uses mat3.randRot() nmrPot/atomProb nmrPot/atomProbHeight nmrPot/atomProbProjection -added AtomProbHeight specialization -changed zmax --> height; gradient fixed -AtomProb*: added info() methods -moved maxType from AtomProb to AtomProbHeight -changed AtomProb base class gridVals member to MODACCESSOR member gridParams - this is a safer way of accessing the member, and a more apprpriate name. -fixup for uint32_t subtraction issue python/aWeightsTools.py -createPseudoAtoms: explicitly disable angle auto-generation -psfTemplate: remove bond angle python/cafeMolTools.py -readCovalentParams: bumped default Repel radius up to 6 Angstroms to better avoid bad contacts in the CafeMol 12-10 term -readCovalentParams: increased bead radius from 2 to 5 Angstroms - with this value, torsion angle randomization is less likely to cause problems from nbond close contacts nmrPot/deerPot -changed accessor names for intrinsic weights from weights1/2 and setWeights1/2 to iWeights1/2 and setIWeights1/2 python/deerPotTools.py -create_DEERPot: change handling of paraAtomRadius, probWidth, distanceSigmoidWidth to use facility where they are recorded in the tagCoord file. -now use tagPairDistTools.selectionMaybeInt to convert input to selections -analyze: o added column of intrinsic weights to weights1/weights2 output o simplify code for computation of centroid positions nmrPot/densityGrid -added the x/y/zValues() accessors -added the shift method -writeEDM: careful treatment of unsignedness of x/y/znum versus what is acceptable .edm output -fixes mostly to get rid of type mismatch warnings -added copy operator; fix some type mismatches python/diffPotTools.py -fill_in_results: protect results.Chi_2_Dof computation from DoF < 1 python/distSymmTools.py -genDimerRestraints: added support for auto-generation of residue number range by omitting the resids argument. common/ensembleSimulation.cc -shutdown(): now only call Simulation::makeCurrent() if size>1 or the current Simulation is being shutdown. Otherwise, the current Simulation is gratuitously changed. python/globDiffPotTools.py -loadGlobAtoms: quiet XPLOR PSF messages -create_GlobDiffPot: case where an atom (specified in globMap) is missing: previously threw exception. Changed to instead print warning message. python/ivm.py -autoTorsion: o optimized search for atoms not in any hinge. o optimized loop getting all grouped atoms into hingeList if one hinge is specified for any atom in the group. nmrPot/pairLPPot -added pairLPPot, Lee-Ping nonbonded term for racer force field python/maxHeightPot.py -analyze(): added report on gamma value. python/pasd/__init__.py -sparkyPeaks: added the heightColumnName argument - previously didn't really use peak height/intensity info -added the updateUser helper function. python/pasd/match.py -new module containing match4d function to replace three matching functions in tcl/aeneas_tools.tcl -match4d inner loop now implemented in C++, and OpenMP parallelized -match4d: added debug message and updated call to Peak_match4d for changed signature pasd/peak -Peak ctor: added default name argument; added the match4d inner loop from pasd.match.match4d -match4d: parallelize loop matching shift assignments to peaks- make certain that the CDSString object is only referred to using copy() in the parallel region. -switched to manipulating const ShiftAssignment pointers; match4d: no longer takes PASDPot argument -addShiftAssignment: make this thread-safe in the sense that this member can be called in a multi-threaded region while the ShiftAssignment is shared, by obtaining a copy of sa->name() s.t. reference counting does not occur. python/mat3.py -added mat3 randOrient and randRot functions, with test -added constructor from three row- or column- vectors python/maxHeightPot.py -added the MaxHeightPot term to minimize the height in a specified direction python/nefTools.py -seqFromNEF: added support for the +HE2 variant nmrPot/pairDist.cc -changed weight1/2 to private members, added getter setter accessors -ctor, removeAtoms1/2: fixed s.t. weights are always normalized, if appropriate nmrPot/pairPot.cc -energyMaybeDerivs, updateNeighborBin: now throw exception if number of atoms has changed since construction of the term; certainly we can't continue if atoms are deleted. Does it make sense to silently ignore atoms added after construction? Currently, terms such as RepelPot must be instantiated *after* any atoms (including pseudo-atoms) are added. common/pdbTool -format(): now calls determineFormat if format_="unknown"; determineFormat: no longer does check or throws exception -readCIF: now check return value of cifData.parse -readPDB(): will now return unplacedAtoms for the case of zero atoms in the PSF python/planeDistTools.py -create_PlaneDistPot: now register to associated XplorSimulation, as this is what will be manipulated by the IVM -now only call simulationTools.registerTopoTerms if pseudo-atoms are added common/pot.hh -updateValues(): now clear modified common/potList.cc -PotList: fixed modified clearing nmrPot/prePot.cc -setCoeff(): no longer set modified - this is called by calcEnergy, so it's always left in a modified state python/probDistPotTools.py -centerOnMap: added the moveAtoms argument to move the molecule, instead of the map pseudoatom -probDistPotTools.analyze() now includes output from info() method python/protocol.py -splitModel: added default value to explicitModel argument -topologySetup in aWeightsTools, ensWeightsTools, hmxPotTools, probDistPotTools modules: added the options argument. This is now set to [rigidSidechain] in the call from protocol.torsionTopology . -updated pdbLocation -added checkPseudoTopology function with calls in torsionTopology, cartesianTopology: checks that all pseudo-atoms are explicitly configured in the specified IVM. -added the unknownEntries member to InitCoordsResult so that PDB ATOM records which can't be matched are recorded. python/psfGen.py -cisPeptide: reimplemented s.t. the residue on the C-terminal side of the peptide bond need not have resid=startResid+1 (so it now works for deletions, and cyclic peptides). -cisPeptide: fixed logic for proline links -added Amber HIE, HSE histidine variant residue names -added CYANA's CYSS residue variant (CYS w/out HG); updated atomSelTest output which results -seqToPSF: seq argument can no longer be a directory python/racerFF.py -added initial support for Racer coarse-grained RNA force field nmrPot/racerHBPot -new HB energy term. common/softMax.cc -added the SoftMax class python/saTensorTools.py -analyze: now explicitly unregisterTopoTerm of created VarTensor (automatic garbage collection no longer works) python/selectTools.py -isCisPeptide: made backwards-incompatibile change so that the definition of the Omega angle is consistent with that in psfGen.cisPeptide. Also, generalized so that the consecutive residue numbering is not required. python/simulationTools.py -add unregisterTopoTerm, and made calls to gcRegisteredTopoTerms do nothing. This change means that pseudo-atoms associated with energy terms must be explicitly removed from an IVM's configuration if so desired. python/solnXRayPotTools.py -added entry for potassium, and references (contributed by Cristian Escobar Bravo) python/tagPairDist nmrPot/tagPairDist -added tagRadius and tagAtoms query accessors -make TagPairDist a proper stand-alone class, and import it when tagPairPot and deerPot are imported -changed accessor names for intrinsic weights from weights1/2 and setWeights1/2 to iWeights1/2 and setIWeights1/2 python/tagPairDistTools.py -sortRotamersByIWeight: now copy all tag atom coordinates, not only that of paraAtom. -added selectionMaybeInt to do conversion from (something which can be converted to an int) to an atom selection selecting a residue number. Use this in createTags. -added setParaAtomRadiusDistanceSigmoidWidth to set these parameters from explicit value, a default value or value from tagEntries. -change setProbWidth to do do the same. -add check that only a single set of intrisic weights is present -moved Pr/tag distance and weight info from deerPotTools.analyze to tagPairDistTools.analyzePr nmrPot/tagPairPot -changed accessor names for intrinsic weights from weights1/2 and setWeights1/2 to iWeights1/2 and setIWeights1/2 python/tagPairPotTools.py -create_TagPairPot: change handling of paraAtomRadius, probWidth, distanceSigmoidWidth to use facility where they are recorded in the tagCoord file. -analyze(): now call tagPairDistTools.analyzePr common/tagSimulation -added the baseAtom() method. Note that this is currently implemented with a lookup array, which should be fast, but it is another array of length numAtoms python/tagTool.py -doRandomizeTorsions: added attachAtoms argument, used to specify which tag atoms to hold fixed. -topologySetup: added options argument to operate only if rigidSidechains is specified in the options argument -TagDBInfo (tagInfo): new members probWidth, distanceSigmoidWidth, paraAtomRadius added -addAtoms: o more careful calling of updatePseudoAtoms so it can be relied on during internal IVM calls o now read in new TagDBInfo values to tagInfo, if present in coordLibrary -added analyze function to print these values in header of output PDB. -analyze: fix restraints-reading code s.t. it operates only on terms with a tagEnv method python/torsionTools.py -added a selection argument to the RotomerStats ctor- this dramatically speeds-up calculation for large systems python/utils.py -fileContentsOrString: added the contentRegExp argument s.t. non-filename strings without newlines can be passed as contents. python/varTensorTools.py -calcTensor: allow fewer than 5 observed RDCs if fewer than 5 singular values are used- this occurs for symmetric homodimers- where 4 RDCs can be used to determine an alignment tensor. -create_VarTensor: o added support for use with SymSimulations o now register to associated XplorSimulation-if simulation is not an EnsembleSimulation python/xplorDoc.py -added HTMLDoc.filelink to return an empty string- these do not work online (file:// is not going to work here), and leaks local info. Could be fixed if pages are generated for all source files -ModuleScanner.html_getfile: fixed by adding imports -TextDoc: added docroutine method - needed to process restructured text blocks. -HTMLDoc.markup: now include all restructured text parts to get stylesheet (needed for nicely-formatted math), This may cause problems if multiple stylesheets are emitted. -ModuleScanner: added a hack to suppress an INFO message from OpenGL.acceleratesupport. It is possible this is triggered by the xpra package. python/xplorPotTools.py -PotData.__init__: added DANI support python/xplorSimulation.i -addAtom: now strip atomName - leading and trailing space should not be significant/present common/xplorWrap.cc -openFile: now perform a ::sync() if the specified file isn't present, before failing Low-Level CDSlib/cdsString -thread-safety comment added -copy ctor: changed order of applying reference count -cdsMapConvertToInt: now a template function -len is no longer mutable, so will not be changed in const objects; added a matches(String) implementation; cdsMapConvertToInt: no longer contains a static variable CDSlib/cdsList.cc -copy ctor: changed order of applying reference count CDSlib/cdsMath.hh -feq: fixed return value (to bool) CDSlib/cdsVector.cc -copy ctor: changed order of applying reference count common/modified -Modified: added the asString() pretty-printing method CDSlib/randomNum.hh -setSeed: added numReseeds argument- with default value of 23 s.t. numbers are dissimilar for the first few calls to uniform(). The previous random number sequences can be obtain by setting numReseeds to 0. CDSlib/redBlackTree -removed TemplateStack dependence - now use CDSList; comment-out Enumerate method -removed unused class (CDSList serves fine for my purposes CDSlib/spherePoints. -pointsOnSphere now takes a (seeded) RandomNum argument so that *different* random sequences can be generated - this impacts nmrPot/solnScat.cc. CDSlib/cdsSStream.cc -str_volatile(): manually set string length - change required by CDSString len implementation change TCL Interface tcl/aeneas_tools.tcl -standard3dInitMatch: added info message for verbose output -cleanups (removals from aeneas_tools) -replaced all calls to match2d/3d/4d to call pasd.match4d tcl/import_pipp.tcl -moved unfoldPeakPosnToMatch, unfoldedPeakPosnMatches from aeneas_tools to import_pipp tcl/noe_reporting.tcl -initialPeakAnalysis: added more info to message printed when no peaks assigned tcl/tests/stripeTest.tcl -added outputting shift assignments Fortran Interface source/hbonds.f -added the param hbond PRINt statement to allow disabling of HBONDS: lines during energy calculation -HBDSET: added mssing comma in write statement Architecture-Dependent Changes - Linux - x86_64: reduced g++ optimization to -O0 for whole TCL interface when compiled using gcc-12 - Darwin: in Makefiles replaced cp with $(CP): on Darwin this becomes the ditto command, because cp does not seem to properly copy .dylibs. - cif/cifScanner.lex changed definition of YY_INPUT macro: had used istream::readsome, but this is not reliable (and didn't always work on Darwin_arm64), so I switched to using istream::read, followed by a call to istream::gcount to get the actual number of bytes read. - Darwin: added support for the M1 ARM architecture (Darwin/arm64). Changes from 3.4 to 3.5 --> 3.5 released 2022/05/10 Helper Programs bin/analyzeRepel.in -new helper program bin/calcTensor.in -switched parseArgument options over to form with description included -fixed ensWeights config error -added -ensWeights option bin/detChirality.in -now exit with error message if no structures are specified bin/plotLog.in -for lines specified on the command-line, now convert positions into floats, so they can coexist properly with other plotted values bin/ramaStrip.in -moved set_window_title to manager- upcoming matplotlib change -switched xplor.parseOptions options argument over to new version which includes descriptions. bin/targetRMSD.in -added -useBIOMT option bin/xplor.in -added the -help-all argument, and, for Python helper programs, removed usage_common output from -help output. Now -help and -help-script result in the same output, while -help-all reports -help-script and -help-common output. -add --exact flag to srun for versions after 20.11.02 Python Interface nmrPot/atomProbProjection.cc -AtomProbProjection::calc(): fix s.t. grid is generated, if is has never been set python/atomProbTools.py -moved setVdWRadii radiusByName weightByAtomElectrons weightByResidueElectrons from probDistPotTools to atomProbTools common/atomSel -added removeBySelIndex member; with test python/cafeMolTools.py -genPSF: added ability to deal with multi-segid (chain) structures, including dimers; now check name of first atom/glob, and if it's P, change beginPatch for P-terminated 5' - but this currently terminates all chains the same. nmrPot/deerPot -create_DEERPot: now use already-read weights -added the removeTagAtoms1/2 methods python/deerPotTools.py python/deerPotTools.py -create_DEERPot: - added the tagTool monkey-patched member to the returned DEERPot. If the final time of a DEER trace is larger than 1ms, then times are interpreted as in microseconds, and scaled down to seconds. -fitBackgroundModdepth: - added absSlopeVals, modDepthVals for start points of grid search. -analyze(): - now write out Vintra contribution in a separate column - now sort intrinsic tag weights nmrPot/densityGrid.cc -readCCP4: allow the NULL character to pad the MAP entry (previously onlyh allowed space character). nmrPot/dihedralPot.cc -fixed showViolations() output; operator>> -improved error handling of input nmrPot/eefx.cc -energyMaybeDerivs: fixed issue where f(z) is not defined for z=0 -resetSelectionPairs: fix arguments to addSelectionPair python/eefxPotTools.py -create_EEFXPot: improved group cutoff check error message python/gyrPotTools.py -analyze: added title to .viols output -create_GyrPot: fix targetVol specification s.t. if specified, a single term is actually returned python/jCoupPotTools.py -added reference and standard Karlpus coefficients python/pasd/__init__.py -readSTAR: now return the initialize starData Cif object. -starShifts: now handle case where errors are not present with the addition of a new defaultErr argument. -findUnassignedAtoms: some optimizations/simplifications. -convertShiftsFromTCL: added the optional err argument s.t. errs are now contained in the returned list of tuples. -createShiftAssignments: expand the definition of intermediate dimension nuclei from those atoms bonded to the from- or to- nuclei to allow 2-5 intervening bonds, or to define the connectivity using a through-space distance bound. For this the arguments to/fromConnectedCriterion were added. -asciiHistogram: now don't crash on empty passed data. eginput/pasd/nef/initMatch3d.py -switched over to Python-based findUnassignedAtoms, - -createShiftAssignments python/pasd/noeTools.py -getDistanceBinsFromIntensities: fixed logic for using default intensity bin values. python/pasd/protocol.py -jointFilter: - added selection argument to pass to netfilter. - added required required TCL package require call python/noePotTools.py -genRestraints: added optional targetDist argument python/protocol.py -initCoords: moved fixMethylImpropers/fixProtonImpropers into argument proper. -loadPDB: now allow the useVariantResnames keyword argument passed to seqToPSF -downloadPDB: added the content argument with the ability to download and return the CIF header. python/psfGen.py python/psfGen.py -seqToPSF: fixed behavior when residue with variant's name is present in the topology. -seqFromPDB: don't call processBiomtEntries if there are no remarks350 nmrPot/pairDist -added removeAtoms1/2 methods; added test python/pasdPotTools.py -create_PASDPot: fixed call to utils.fileContentsOrString python/posDiffPotTools.py -create_PosDiffPot: improve handling of selection2 argument for the case where it's an AtomSel python/probDistPotTools.py -moved setVdWRadii radiusByName weightByAtomElectrons weightByResidueElectrons from probDistPotTools to atomProbTools -centerOnMap: changed warning message python/protocol.py -initStruct: use proper Python bool for erase argument python/pyInterp.cc -command: no longer print error message for nonzero exit status nmrPot/repelPot -added contactDistance method python/regularize.py -fixupCovalentGeomIVM: allow rigidRegions, translateRegions argument to be strings specifying single region -fixupCovalentGeom: changed use of VDW term (useVDW=True) to only be used in combination with the bond term python/shapeBeadRep.py -create_BeadRep: added xsim.sync call after creating bead atoms nmrPot/tagPairDist -added the removeTagAtoms1/2 methods python/tagPairDistTools.py -createTags: - default outSegidPref is now blank - clamp tagTool.defaultSegid to 3 char in length -removed rotamerWeights function -setWeights: - now allows weights array to be longer than num rotamers - now use pot.tagTool.weights if weights argument is omitted. - added warning if no weights to set -added sortRotamersByIWeight function nmrPot/tagPairPot -added the removeTagAtoms1/2 methods -restraints() method: now returns a reference to the restraints_ method python/tagPairPotTools.py -create_TagPairPot: - formatting change - now check that restraint selections select>0 atoms - now use already-read weights - added tagTool duck member to returned pot - now actually use instanceName argument; analyze: now sort intrinsic tag weights python/tagTool.py python/tagTool.py -added R1 residue to default protein.top, so added support for specifying a system in the TagDBInfo topology entry. Changes required in TagTool.addAtoms() -attachTag: - new requirement that tagged residues have a segid < 2 characters. - fix code to clamp to 4 char segids - now use segid of tagged residue as prefix in tagSimulation segid copies. -TagDBInfo: added otherNames for resname aliases -addAtoms: - initParams for tag- make certain it happens only once. This is ugly. - now read weights, if present and store them in the self.weights member. - now only read ATOM records if the resName is in otherNames - only call addUnknownAtoms if atoms are actually missing. python/torsionTools.py -genXplorRestraint: removed debugging output python/utils.py -added function fileContentsOrString python/varTensorTools.py -calcTensorOrientation: now check return value of IVM.run() and make additional attempts at minimization if it returns a failing condition. python/xplorDoc.py -added support for ... blocks which include reStructuredText python/xplorInit.py -parseArguments: -parseArguments: - updated to support options argument which contains option argument and option descriptions, which are used to auto-generate usage information. --help output: reduced left margin for option - parseArguments: fixups s.t. the options argument can contain mixed string and tuple entries. TCL Interface tcl/aeneas_tools.tcl -createShiftAssignments: now use keyword arguments so as to not be as dependent on the Python calling signature. -createShiftAssignments: now use Python implementation Databases databases/tags/R1-database.pdb@ databases/tags/R1-deer-20201030-fit20_95.pdb -switched default R1 database to version CDS created from lysozyme data Examples eginput/emRefine -simple example of refinement against an electron density map eginput/gb1_rdc/refine.py -added reference for Karplus coefficients eginput/pasd/nef/initMatch3d.py -switched over to Python-based findUnassignedAtoms, createShiftAssignments eginput/pasd/nef/jointFilter.py -fix for input exceptions file name eginput/pasd/nef/summarize_pass2.py -converted TCL -> Python code eginput/PSF_generation/genLigand.py -added values for flourine - getRadius: provide better message when atom key is not available. eginput/PSF_generation/genLigandCif.py -use pdbx_model_Cartn_x/y/z_ideal if experimental coords not present for all atoms -added the -typePrefix option (to avoid conflicts with other genLigand-generated top/par sets eginput/saxsref/refine.py -modernize script a bit Low-level -configure is now generated from bin/configure.in CDSlib/cdsString -strip: added optional argument to specify whitespace to be stripped CDSlib/cdsVector -added the remove(index) method common/ensembleSimulation -EnsembleSimulation::sizeOneSimulation(): added the create argument- a new SizeOneEnsemble is created only if it's true. barrier(): now return earlier if size==1 - s.t. barriers for size=1 EnsembleSimulations can occur in single-threaded regions. common/simulation -now sync() method is implemented by default, calling the appropriate EnsembleSimulation::sizeOneSimulation's sync common/symSimulation.cc -addCopy: added check for selections with non-empty strings, but which select zero atoms. common/tagSimulation.cc -updateValues: no longer call markAsModified common/xplorWrap.cc -xplorwrapproc_slave: doubled initial timeout period -XplorWrap::openFile: sometimes, on cold nodes (computers on which Xplor-NIH has not recently been run by the current user), we get: %VOPEN-ERR: IOSTAT= " 29 " %ASSFIL-ERR: error opening file /run/user/... %ASSFIL-ERR: Error accessing file %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BOMLEV= 0 reached. Program execution will be terminated. on the first call to XplorWrap::command. It appears, that the write of the command file has not occurred prior to opening it (in Fortran) for read. This mod calls stat() on the file in C++ before the Fortran open call to hopefully fix this race condition. This may incur a performance penalty. Topology and Parameters toppar/carbohydrate-nmr.param toppar/carbohydrate-nmr.top -updated carbohydrate topologies/parameters - reference included toppar/extra/zn-finger.top -re-enable HIS-proton deletion in two patches- this will cause a warning if the HD1 proton is not present. toppar/protein-3.2.top -added the R1 MSTL residue toppar/protein-3.2.par -reformatted comment to be legible Changes from 3.3 to 3.4 --> 3.4 released 2021/11/18 Helper Programs bin/calcSA.in -now will read multiple PDB files and compute the average over these. bin/headerHelp.in -better handling for nonexistant term names. bin/jupyterXplor.in -fixed call to which'' - to POSIX command -v bin/mleFit.in -added missing parentheses in call to variance file's call to close (so that the file is always written). bin/xplor.in -improve determination of scriptName such that previously determined value overwritten if it is not an existing file. bin/slurmXplor.in -fixed the memory specification to mem-per-cpu instead of mem (per node). Previous value was actualy memory per job Python Interface python/atomProbTools.py -new module to aid in creating and casting AtomProb subclasses. python/cafeMolTools.py -added some support for the CafeMol coarse-grained RNA force field. python/chemShiftTools.py -convertRestraints: NMRSTAR tables: -get error and properly include it in generated restraints. -add GLY protons and IUPAC names to accepted atom names. python/deerPotTools.py -fitBackgroundModdepth: now raise an exception if normalize=True, as this is not currently supported by DEERPot -create_DEERPot: added the optional probWidth argument python/densityGridTools.py -split off sliceToBytes from sliceToImage -mergedSlicesAsImage: - now implement magenta/green color scheme of Geissbuehler, Lasser (2013) - added offset and verbose arguments - add ability to deal with DensityGrids with different grid parameters -sliceToImage: - fixed minVal subtraction, and deal with constant-value maps. - added the usePalette argument. -added functions create_DensityGrid, covarianceValues python/dihedralPotTools.py -create_DihedralPot: added the optional allowBadRestraints argument. python/eefxPotTools.py -create_EEFxPot: - now throw exception if asList==True - added call to testGroupCutoffDist for sanity python/findPython3 -LIBDIR, INCLUDEDIR: now strip prefix off of directories, rather than take final path element -reworked logic for PYTHON_PREFIX, so it is compatible with other paths (LIBDIR and INCLUDEDIR, from which it is stripped) python/gyrPot.i -get Python return values for gyrTensor and eigenPairs methods - the latter is a cheat python/mat3.py -replaced star import with names used python/noePotTools.py -added allowBadRestraints to NOEPot, create_NOEPot to accept restraints specifying nonexistent atoms without throwing Exception python/pair12_10PotTools.py -added pair12_10PotTools module supporting the Pair12_10 energy term python/pairDHPotTools.py -added support for the pairDHPot term. python/pasd/noeTools.py -moved distance-bound code from tcl to Python python/pasd/__init__.py -readSTAR: now include error in tuples returned -changed definition of distanceBins elements to include intensity fraction from strong to weak -findUnassignedAtoms: -simplified selections in default value of expectedNonassigned. -handle shift lists which include > 2 elements (i.e. including err field) python/pasd/noeTools.py -getDistanceBinsFromIntensities: added optional distanceBins argument; added default binning fraction info for bins which are missing it (i.e. distanceBins definitions only having distance bounds) python/planeDistTools.py -massSetup: fix (skip configuration) when freedom is ignore or fix python/probDistPotTools.py -addAxisAtoms(): fixed call to initParams to avoid deprecated warning -create_ProbDistPot: added mapType argument s.t. map type is specified at object creation, with a call to atomProbTools.create_AtomProb. -analyze: - increased by 2 the precision of reported correlation value. - added info on Gaussian blurring -added function weightByAtomElectrons -added function setVdWRadii -changed precision in call to registerExtraStats python/psfGen.py -seqToPSF: fix logic finding linkage info for nucleic acids. -seqToPSF: for rna: fixed use of begin/endPatchCmd python/pyConvert -added toPy(SymMat3) - which returns a SymMatrix python/rdcPotTools.py -python/rdcPotTools.py: corrected internuclear distances -python/rdcPotTools.scale_toXH (X=N,C) added custom argument -rdcPotTools: Added function scaleDa, to which now scale_toNH, scale_toCH, and newly added scaleRDC use python/regularize.py -fixupCovalentGeom: now turn off output for cloned XplorSimulations python/relaxRatioPotTools.py -removed * import - this messes up the auto-generated documentation python/restraintStats.py -updates for addition of precision member to ExtraStats class python/selectTools.py -IVM_flexibilizeRiboses: now, no longer process riboses which are already in IVM groups (an optimization) python/simulationTools.py -testGradient: now allow components to be the string "all" python/tagPairDistTools.py -createTags: - added tagCoordFilename, paraAtomname arguments which get passed to new call to tagTools.updateDBentry - added the optional probWidth argument -analyze: - now print distance and total weights to the .viols output - always print second set of weights so that distance weights are reported . python/tagTool.py -added function updateDBentry python/termAnalysis.py -registerExtraStats: added precision argument python/torsionTools.py -setTorsionsFromTable: added the optional selection argument python/utils.py -split off processReStructuredText from printReStructuredText, adding the part and settings_overrides optional argument, and adding support for html outputType -char_range: added the num argument python/xplorDoc.py -spilldata defined in TextDoc.docclass: - fixed body which appears to be from an HTML version - taken from the pydoc version. If the getdoc function were class-local, then I could use pydoc.TextDoc, instead of reimplementing it. -render_doc: refreshed from pydoc 3.9 version python/xplorInit.py -parseArguments(): added the minArgs and maxArgs arguments C++ Level nmrPot/atomProb - now can be used as a base class -change in arg sent to resize() to avoid integer overflow nmrPot/atomProbProjection -added AtomProbProjection class dedicated to computing projections to simplify AtomProb code -now supports Gaussian blurring -changed transformed coord formula to R(q-qc) + t -now have new member - qc, the atomSel centroid -centerOnMap: - added separate definition for classes with qc member - fix calculation for projections -analyze: print out centroid, if it exists nmrPot/csaPot -added removeRestraint nmrPot/deerPot -added the g1 and g2 accessors used to specify electron g-factors of the two tags -changed obs setter's name to setObs; removed unused norm method nmrPot/densityGrid -readCCP4: -don't let znum be set to 0 -change logic for identifying an MRC file to allow orix, oriy, oriz to specify the origin -on verbose output, now print identified format -removed accessors rotMat, rotMatT, transVec, origin -toGrid methods: now use rounding instead of cast to int; readCCP4: -added members variance, interpolate and rotateTranslate -added function correlation -changes for being able to read density maps with > 2^31 data elements; this required changes to CDSVector to handle the larger size. -ctor w/ zslice value: now initialize zdelta to 1 nmrPot/dihedralPot -added allowBadRestraints option, s.t. ill-formed assignmnets don't cause exception to be raised nmrPot/eefx -added testGroupCutoffDist -energyMaybeDerivs: added energy component output to verbose report on close contacts nmrPot/gyrPot -moved SymMat3 def into CDSlib nmrPot/noePot -added allowBadRestraints to NOEPot, create_NOEPot to accept restraints specifying nonexistent atoms without throwing Exception nmrPot/pairPot nmrPot/repelPot -added PairPot template- this makes very easy the addition of non-bonded terms depending on only inter-atomic distance. -converted RepelPot to use it -reworked to make certain NeighborBin spacing is consistently set correctly when repel is changed nmrPot/pair12_10Pot - new 10-12 nonbonded term implemented using PairPot. nmrPot/pairDHPot.hh -added pairDHPot - a Debye-H\"uckel term implemented using PairPot nmrPot/probDistPot -ctor: add optional atomProb argument - now have to keep track of whether it is internally generated for proper cleanup nmrPot/tagPairDist -added nonTagSelection accessor nmrPot/tagPairPot -Restraint ctor: fix the use of the weight1/2 arguments -added the nonTagSelection() accessor common/xplorWrapProc.cc -XplorWrapProc::XplorWrapProc: now close of file descriptors 3 and up on fork. For clone=true, first call xplor_cleanup_output, and afterwards call xplor_init_output to properly deal w/ i/o in Fortran layer. Failure to close the file descriptors will lead to duplicated output when files are closed in the Python layer at shutdown. TCL Interface tcl/aeneas_tools.tcl -moved distance-bound code from tcl to Python Fortran Level source/insertText -converted to Python3 source/parser.f -now close the previous DISPLAY_FILE when set display is called source/x86_64time.f -vclose: print out UNIT number on error -VCHKTT: now check unit 5 only once, and save the result to avoid gratuitous reopening source/xplorFunc.f -XPLOR_CLEANUP: now unset the initialized flag -split off xplor_init_output, xplor_cleanup_output from xplor_init, xplor_cleanup, respectively - allows calling from XplorProcWrap for clone=true. Low-level Functionality CDSlib/cdsList -added SizeType, OffSizeType typedefs CDSlib/cdsVector -added SIZE_T, OFFSIZE_T template parameters so that vectors can hold full-memory-range objects, while not impacting size/speed of use for smaller vectors. CDSlib/fixedVector.hh -added SizeType, OffSizeType typedefs CDSlib/matrixTools -created single, templated EigenPair struct CDSlib/subVector.hh -added SizeType, OffSizeType typedefs to generic Vector, SubVector CDSlib/symMat3 -moved SymMat3 def into CDSlib CDSlib/vector.hh -added SizeType, OffSizeType typedefs to generic Vector, SubVector Examples eginput/pasd/nef/runTalos.sh -now allow TALOSN to be an externally-specified env var specifying the talosn executable. eginput/PSF_generation/genLigand.py -added code to deduce bonding in absence of CONECT records -deal better with situations where there are chemType collisions; added the -chemType option to manually specify chemType if needed eginput/PSF_generation/genLigandCif.py -fixed improper force const value eginput/runAll -changes to fix output and naming of .out and .err log files Databases, Topology, Parameters toppar/cafeMol_rna.top -topology info for a coarse-grained RNA force field Architecture Specific arch/getDarwinCPU -updates for Intel i9 and arm64 platforms arch/Linux_x86_64/Makefile.defs -fixed adding -fallow-argument-mismatch argument for gfortran versions 10 and up arch/Linux_x86_64/tcl/Makefile -compiler optimization downgrades for gcc-11 arch/Linux_x86_64/vmd-xplor/Makefile -disable custom definition of createLibrary - falls back to createSharedLibrary in arch/Linux_x86_64/Makefile.defs Changes from 3.2 to 3.3 --> 3.3 released 2021/06/11 Helper Programs bin/aveStruct.in -update to support colon-separated altLoc field in PDB filename bin/calcDaRh.in -added support for space-separated columnar RDC table format bin/calcPRE.in -added the -sbmf and -taut options. -add fix for ens size>1 -fix behavior with multiple plots generated for ensSize>1 bin/calcSA.in -added -outfileName option to write out PDB file with b-factor field filled with computed surface area. -added the -psf option -added printout of total surface area bin/calcSAXS.in -update to support colon-separated altLoc field in PDB filename bin/calcTensor.in -added -addUnknownAtoms option -added support for space-separated column input table for tables ending in .dat or .txt -added the -DaRh option, by which Da and rhomicity are specified, and the orientational portion of the alignment tensor is determined from input RDC values and the given structure. -added the -txtNames option s.t. atom names can be speicified for .txt input tables -added special rule for -genNames when atoms cross the peptide bond (NC' RDCs) -preliminary plotVsResid support -fixes to allow bad restraints in cross-validated RDCs bin/compareTensors.in -updated/generalized the ability to read Saupe matrix info from PDB headers. bin/domainDecompose.in -added -deltaThreshold -smallestDomain options attempt to treate multiple segids- doesn't yet work bin/energyPlot.in -fixed handling of cycle=lines bin/findClusters.in -check that atoms in selectin are actually present (and erase previously read coords) bin/getBest -fixup to get --output-rst working -added the -extension option bin/mleFit.in -replace call to PDBTool.read() with protocol.initCoords; check that files arn't missing atoms in specified selection -mleFit: now doesn't write structs twice when both -pVariance and -writeStructs are invoked bin/ramaStrip.in -update to support colon-separated altLoc field in PDB filename bin/slurmXplor.in -More careful with defaults: --mem option now specifies memory per task, and defaults to 2G -ntasks now explicitly defaults to 1. -The SLURM_MEM_PER_NODE is set to the -mem value s.t. srun picks up the value when run from the xplor script. -slurm output filename is now based on Xplor-NIH output filename. bin/targetRMSD.in -added maxUnreadEntries=None argument to loadPDB calls -update to support colon-separated altLoc field in PDB filename -added -removeMissing functionality for cases in which one of the selections is missing atoms. bin/torsionReport.in -update for change to rotStat.circularStat return value bin/xplor.in -fix to allow -pydoc -h to work -changed TMPDIR setup: 1) now TMPDIR (parent) defaults to XDG_RUNTIME_DIR, if it is set 2) added the -tmpdir option to explicitly override the parent TMPDIR setting. 3) this can also be set (and propagated to spawned processes) using the XPLOR_TMPDIR environment variable. -more complete quoting of input arguments s.t. trailing spaces are preserved -added TAGDB env var for tagPairPot Python Interface python/atom.i -fixed and documented Atom::bondedTo -added the __hash__ method python/atomAction.py -multiple functions: fixed for case where current Simulation is not that refered to by selection argument python/aWeightsTools.py -split AWeights-specific functionality from ensWeightsTools to aWeightsTools python/cdsMatrix.i -added the add(), and rawData() methods python/cdsVector.i -cdsVector: added the exp function, test python/chemShiftTools.py -added support for reading NEF shifts -now allow glycine alpha carbons -convertRestraints: now include err in genereated restraints -convertRestraints: added returnDict argument- this to support grouping shifts by nucleus type- is required by SpartaPot -nameConvertType: added support for IUPAC "H" amide proton name python/cifTools.py -genAtomSite: fixed treatment of occupancy, bfactor by adding occupancyPrecision, bfactorPrecision arguments with default values, and allowing these to take non-floating point values. python/csPotTools.py -added support for NEF input. Added iupacNaming argument. -update analyze term, and now register it. -create_CSPot: o pass verbose setting through to created pot term o added the selectionFilter argument o now find chem shift block using getBlocksOfType, instead of by name. python/deerPotTools.py -Helpers for DEERPot python/densityGridTools.py -added function sliceAsImage() -added functions sliceToImage and mergedSlicesAsImage python/dihedralPotTools.py - helpers for DihedralPot python/eefxPotTools.py -initEEFx: added verbose argument, passed through to initParams python/ensWeights.i -setWeights(): add barrier *before* setting weights to avoid racing (e.g. in ensWeightsTest) python/maxLikelyFit.py -orderedResidues: make more robust with respect to selection argument not being a string python/nefTools.py -readNEF: o changed first parameter to optionally be a NEF string o added optional makeDisulfideBond argument. -seqFromNEF: return disulfide bonds found in covalent_links entries in a disulfides list. -genMolecularSystem - added covalent_links section for disulfide bonds -nefShifts: now include chem shift err in returned list -added getBlocksOfType where sf_category, if present, determines block's type -getBlock: allow shortcut block names for those which start with the blockType python/noePotTools.py -create_NOEPot: gracefully handle block without nef_distance_restraint attribute. python/pasd/__init__.py -nefShifts: fix TCL output python/posDiffPotTools.py -create_PosDiffPot: added the removeMissing argument for cases when atoms are missing from one selection- this is handled by the new function findMatchingSubSel. -findMatchingSubSel: now support multiple segids python/posRMSDPotTools.py -RAPPot: ctor: add optional tol argument python/prePotTools.py -create_PREPot: changed default values of selection1/2 python/probDistPotTools.py -changed the name of the create_ function- added assignment for backward compatibility -create_ProbDistPot: o changed sel parameter name to selection o added rotateCenterMap argument, to enable rotation/translation of projection map o implemented with 4 pseudoatoms for orientation plus an extra for translation -added massSetup, topologySetup, centerOnMap functions -analysis: add print out of orientation/translation if enabled. -now properly register topologySetup -added the weightByResidueElectrons function python/protocol.py -added support for begin/endPatch optional kw args passed to seqToPSF (via pdbToPSF) -initTopology: rationalize s.t. the system argument does as the docstring describes. -Now, initResidueNames() is only called for the specified system, and no longer with forceReread==True. -initOrie: add the optional distCutoff variable used in databases/rna_rna_pairs/rna_nonconsec_setup.tbl -writePDB: added writeConnect argument, support for writing CONECT records -torsionTopology: fixes s.t. flexRiboseRings works when some regions are configured for Cartesian topology. -initCoords, loadPDB: added support for setting PDBTool.allowedAltLoc method using the allowedAltLoc parameter. -splitModel: now support altLoc field (a non-integer value) added this support to loadPDB, initCoords -added massSetup calls for probDistPot -writeCIF: enable the occupancies and bFactors arguments, and allow the to take the value "default" to fill the respective field with ".". -updatePseudoAtoms: now allowed for Simulations not based on XplorSimulations. -initStruct: added the verbose optional argument -genExtendedStructure: replace "sel" argument with "selection"- but retain the former as deprecated for now. -initParams: o deprecate silent parameter- replace with verbose o change behavior of weak_omega option to be a scale factor -initTopology: add the verbose parameter -cartesianTopology: o change default value of sel parameter from "all" to "not PSEUDO" o change previous behavior where pseudo atoms were always excluded. -initBiomtCoords: don't crash in case there are zero ATOM entries with a ChainID that is present in the PDB. -loadPDB(): o added support for useSeqres, deleteMissingResidues, and deleteMisingAtoms. o added support for psfGen.seqToPSF's convertToGly argument python/psfGen.py -deprecate argument names ntermPatch, ctermPatch. These are replaced with beginPatch and endPatch, respectively. -pdbToPSF: o now only pass begin/endPatch arguments to seqToPSF, instead of all via kwargs o add the deleteMissingResids and deleteMissingAtoms options to read the REMARK 465 and REMARK 470 PDB records, respectively, and delete atoms as indicated. -initResidueNames: made initResidueNames_seen a per-system list -updated seqFromCIF to include seqType entry in each element of the seqs attribute. -seqToPSF: o no longer hard-code termination patch names- they are now setable using the module-global variables default_beginPatch, default_endPatch o added the convertToGly option o change default value of deprotonateHIS from True to False -add function findResidueName -seqFromPDB: o fix logic for altRec identification to be short-circuited if a backbone atom is encountered o don't place tag residues in altRec fields if backbone atoms are present o proper support for useSeqres=True -seqres(): o make compatibile with seqFromPDB return value o now read the DBREF record for the start resid o seqres: now deduce sequence type from length of the shortest residue name: rna for 1, and dna for 2. o added new logic to determine startResid for chains when useSeqres=True: the DBREF record may not have the actual start resid- only the portion corresponding to the sequence in the database. This *may* be accounted for in a SEQADV record, but the documentation does not make clear how this is accomplished. -seqres(): seqType is now "protein" if not "rna" or "dna" -pdbSeq, pdbToPSF: a blank pdbRecord argument is again allowed, but now prints a warning. python/pyConvert.cc -fixed fromPy('single char') for Python3 python/pyXplor.cc -pythonStartup: added a python reference to the initial PyInterp python/rdcPotTools.py -spaceSeparatedToRestraint: o fixed for case of segid being specified o added support for C-N RDCs across the amide bond. -Rfactor: added selection argument -showViolations(): now only print deviation if ensemble size > 1, only print useSign if at least one is false; now print per-restraint scaling, if at least one is not 1. -scale_toNH/CH: now don't crash if rdc has no restraints python/regularize.py -fixupCovalentGeom/IVM: change default selcetion to omit pseudo atoms -fixupCovalentGeom: add True/False return value python/repelPotTools.py -analyze: added instanceName to output -now print out atoms with unknown coords before throwing exception python/residueAffPotTools.py -create_ResidueAffPot: changed default sel value to known and not PSEUDO python/selectTools.py -numResidues: fixed for sparse selections (which don't select atom selected by the tag keyword) -groupRigidSideChains, IVM_groupRigidSidechain: changed default selection from "not PSEUDO" to "all" -added the numElectrons function python/simulationTools.py -gcRegisteredTopoTerms: garbage collection now depends on the value of xplor.interp.traceLevel -minimizeRefine: fix s.t. it works if the ANGL term is missing -registerTopoTerm: o remove bit which sets/checks for __topoRegistered member o fix bug in clause dealing with EnsembleSimulations python/simulationTools.py -StructureLoop.run(): fixed placement of s.sharedByStruct assignment so that it is written to even if structure is not written - this reverts a change made 2013-11-01. Note that filtering top results is always required. python/spartaPotTools.py -added supprt for reading chemical shifts from NEF data -now always configure Sparta obj using Xplor-NIH-native atom naming -get dictionary-split restraints from convertRestraints for NEF input -create_SpartaPot: o added the selectionFilter argument o now find chem shift block using getBlocksOfType, instead of by name o use from/toIupac logic in potlist setup python/tagPairPotTools.py - helpers for TagPairPot. python/talosTools.py -convertTalosN: protect against missing angle entry python/torsionTools.py -added verbose argument to torsionTools.setTorsionsFromTable -RotomericStats: o binAngles: now works without angleFilename o circularStat: now also returns min/max values o getAngles: capitalized Omega angle name -genXplorRestraints: add comment argument/functionality -added ramaNumber function -genXplorRestraint: o add new possible value for value argument: None, in which case the value is read from the current structure, o added "omega" to supported names. python/torsionPotTools.py -Xplor_readNEF: no longer depend on target_value being present python/varTensorTools.py -calcTensorOrientation: add the verbose optional parameter to allow for more quiet output. -addAxisAtoms: no longer increment current_axisResid- simply retain test that axis atoms with given resid do not already exist. -added simulation argument to calls to addAxisAtoms and updatePseudoAtoms python/xplorDoc.py -merged changes from Python 3.7->3.9 required to get HTML class documentation -ModuleScanner: backbport changes from pydoc.py s.t. keyword lookup works again python/xplorInit.py -added docs on builtin members and functions -provide fix for case where -m is specified, but no script name -added helper function: callerName C++ Level CDSlib/cdsMatrix -added the copy(CDSMatrix) method which doesn't do ref cnting; minor changes which may help with OpenMP thread safety -CDSMatrixRep: calling delete [] on a zero-initialized pointer can cause problems under OpenMP num threads >1. Protect against this. CDSlib/cdsVector -added element-wise operator*() -constructor from C array, size: now perform copy so original array is not overridden -operator*(v1,v2): fixed by adding splitRep -added sign( vector ) function template -added operator==(), operator!=() CDSlib/fixedMatrix -added cols, rows accessors CDSlib/fresnel.hh CDSlib/nontemplate/fresnel.cc -added normalized fresnel integral special function code from the cephes library - CDS code from 1995 CDSlib/gaussQuad -added template class for Gaussian Legendre Quadrature - 1D integration CDSlib/mat3 -added fromRows, fromCols methods nmrPot/atomProb -added isProjection accessor, initial projection support -calcMap: verbose output now reports number of contributing atoms -added orientation accessor, and d_dR member filled, by calcGradient() for use in projection calculations -added translation accessor, and d_dt member filled, by calcGradient() -added the atomWeights member common/atomSel -Added AtomSel.difference() function, its doc and test -AtomSel ctors: changed argument name from defaultSimulation to simulation to follow documentation, common sense. -ok member is now true by default- only set to false if there's a problem reading in operator>> -intersection: can now take an arbitrary number of arguments common/atomSelLang.cc -propList: fix to preserve order for ordered selections -select(): abbreviations can now be nested. -abbreviations(): square brackets now removed from abbreviation names returned as keys. common/aWeights -split off angle-encoded weights from EnsWeights into separate class - AWeights camshift/camshift.cc -CamShift::stringToType: recognize GLY HA atoms -stringToType: now support IUPAC-named amide proton camshift/camshift1.cc -Dihedrals::add(): now protect against invalid read when selection does not include cterminus -HBond::calcBondEnergy: protect against taking power of small (including negative) arguments. -Prot::getChemicalShift(): now protect against invalid sidechain atoms -ctor: fixed bug in use of AtomSel tag keyword nmrPot/csPot -restraint reading: better error handling, reporting -reworked restraint reading to make sense, and be nmore robust -added the selectionFilter member to ease specifying a subset of chemical shifts to use as restraints nmrPot/deerPot -added files for new DEERPot term nmrPot/densityGrid -added support for 2D maps (.mrcs files) which have one or more 2D slices, stored in separate Z-layers. The zSlice accessor has been added to specify slice. -removed DensityGrid::get -added minVal method -added zSlice argument to copy ctor for generating a 2D map -readCCPN(): now allow NZ!=NS for slice maps nmrPot/dihedralPot.cc -Dihedral energy term to replace XPLOR CDIH term. common/ensWeights -split off angle-encoded weights from EnsWeights into separate class - AWeights camshift/iupac.hh -removed unimplemented (unneeded?) static functions nmrPot/pairDist -now normalized by prodcut of atoms in selections by default; added normalize accessor; expose members as public; fixed bug when selections are not the same; fixed gradient error -added derivatives wrt position weights nmrPot/pairDistPot -new energy term common/pdbTool -added read/write support for CONECT records -added altLocs method -numModels(): fixed for case when read() is not called beforehand -determineFormat: gracefully handle case of blank input file contents nmrPot/prePot.hh -ctor: changed argument name preDefs --> restraints -added sel1/2Filter members and ctor arguments nmrPot/probDistPot -added atomProb(), targetMap() accessors -added atom accessors defining projection orientation, and accumulate appropriate gradient wrt energy -added support for pseudo-atom representation of map translation nmrPot/psolPot.cc -fixed missing factor of 1/3 in expression for <1/r^6> -energyMaybeDerivs1: check for situation of uniform observed values when using correlation targetType, and print a message and throw exception. -fixed misuse of Simulation::currentSimulation(), instead of sel.simulation() in two instances. This leads to crashes when using with SymSimulations. intVar/publicIVM.cc -idAtom: change atom identification to use atom.string() nmrPot/repelPot.cc -bumps(): now call modified.update() so it can be called without previously calling calcEnergy common/simulation -added optional force argument to deleteAtoms method sparta/sparta.cc -addAtomType: some IUPAC suport: for atom names HA3 and H -various optimizations for vectorization and OpenMP parallelization nmrPot/spartaPot -added the selectionFilter member to ease specifying a subset of chemical shifts to use as restraints surfD/ -changes to use C++ structures, reduce use of bare pointers; removed matrix allocation routines from utils; important: fixed bug by limiting calls to Tessel::gen_linear_recurse based on output array size common/symSimulation.cc -addCopy: added call to AtomSelLang::clearCache s.t. atom selections include the newly added atoms nmrPot/tagPairPot -added TagPairPot term for restraining to an input P(r). common/tagSimulation -added TagSimulation - A Simulation which contains copies of atoms in a subsimulation, with the positions of atoms related to those in the subsimulation by translations and rotations relative to subsimulation atoms. nmrPot/utils -moved/renamed eulerFromRotMat/rotMatFromEuler from relaxData to potUtils common/xplorWrap.cc -deleteAtoms: add shortcut return if no atoms in selection or simulation common/xplorWrapProc.cc -ctor: now print errno message and throw exception if fork fails Examples eginput/gb1_rdc/fold.py -replaced HBDA, HBDB with HBPot -replaced CDIH XplorPot with DihedralPot eginput/PSF_generation/addAtoms.py -fixed up histidine protonation state. Thanks Guillermo! eginput/PSF_generation/genLigand.py -added info for MN+2, and changed mass lookup logic -correctly read continued CONECT records for atoms with > 4 bonds -use this info to generate a full set of impropers for centers with > 4 bonds -fix s.t. impropers are included for ligands which aren't at the beginning of the PDB. -now use correct impr force constant eginput/PSF_generation/writeCIF.py -added "default" values for the occupancies and bFactors arguments to writeCIF. Databases, Topology, Parameters toppar/axes-1.0.par -added angle parameter to hold the PA1 atom in the xy-plane for probDistPot calculations toppar/protein-3.2.par -updated for changed weak_omega behavior- now can specify the omega angle scale factor toppar/eefx/protein_eefx2.par -added support for weak_omega, scale factor for omega improper angles databases/rna_rna_pairs/rna_nonconsec_setup.tbl -now require XPLOR @distcut variable to be set externally databases/rna_rna_pairs/rna_rna_pairs_correct.setup3 -set XPLOR @distcut variable before executing databases/rna_rna_pairs/rna_nonconsec_setup.tbl eginput/deprecated/rna_refi/rna_orient.setup -set XPLOR @distcut variable before executing databases/rna_rna_pairs/rna_nonconsec_setup.tbl Architecture-specific Makefile.arch bin/xplor.in -rework .old supprt: now .old is required for glibc older than 2.17, corresponding to RHEL/CentOS 6 arch/Linux_x86_64/Makefile.defs -added the -mtune=core-avx2 compiler option which instructs the code to use the AVX2 instructions, if they are available Changes from 3.1 to 3.2 --> 3.2 released 2020/12/17 Helper Programs bin/mleFit.in -added support for multiple segids newly added in maxLikelyFit module. bin/ramaStrip.in -added the -model option: now analyze all models by default configure -added plotLinear to list of scripts for -symlink option Example Scripts eginput/PSF_generation/genLigand.py -added support for reading CONECT records to generate bond, angle and impropers for tetrahedral-centers, along with the required parameters. eginput/PSF_generation/genLigandCif.py -added the -fixup option -Added impropers for protons around planar heavy atoms - so they don't wobble out-of-plane. -fixed up generated comment-string eginput/gb1_rdc/analyze_fold.py -added ordered keyword to averageFitSel argument of StructureLoop eginput/gb1_rdc/refine_eefx.py -updated to do proper initialization eginput/pasd/nef/makeNEF.py -now use nefTools.shifts_writeNEF() instead of custom code. eginput/psl/deoxycumambrin/deoxycumambrin.par eginput/psl/deoxycumambrin/deoxycumambrin.top -added missing impropers eginput/psl/deoxycumambrin/refineLoop.sh -instead of using single structure for subsequent calc, use all with consistent chirality eginput/psl/deoxycumambrin/refineStereo.py -updates found to produce more consistent results: . On first iteration when no (or "none") input structure is specified, randomize torsion angles. . input structure can now be a glob s.t. calculations begin with multiple structures. . VDW term's nbxmod changed to 5 in rampedParams - not sure this is required/useful. . now call fixupCovalentGeom before structure calculation. eginput/pre/fitting/ => eginput/deprecated/pre_fitting/ -deprecate eginput/pre/fitting- it is not our normal workflow Topology/Parameters toppar/protein-3.2.par toppar/protein-3.2.top -added the SPA patch and required masses and parameters -added the PTPO patch -added the PPTR patch Python Interface common/atomSelLang -added fric, charge, x,y,z vx,vy,vz atrributes; implemented lazy attribute initialization cif/cif.hh -added the setDataBlocksToRead/CategoriesToRead setters python/cifTools.py -added the models() helper function. -Added the addToAtomSite function, now used by genAtomSite nmrPot/eefx -EEFxPot: add bump report for VdW clashes; report the number of these as violations() python/eefxPotTools.py -added analyze function which reports clashing atoms python/globDiffPotTools.py -create_GlobDiffPot: added the globMap argument to specify mappings between atomic and glob coordinates; added loadGlobAtoms s.t. glob/bead PDBs do not require PSF files -updated to deal properly with segids, and help with locating gaps in the PDBs. python/maxLikelyFit.py -orderedResidues: now support multiple segids python/nefTools.py -added rdc entry to catPrefixes -readNEF: -now allow psfGen.seqToPSF to deduce seqType -added some support for residue variants -added the shifts_writeNEF function. It is now used by shiftsFromList. common/pdbTool.cc -explicitly return -1 for numModels for CIF format files nmrPot/planeDistPot.cc -corrected error in computing center averaging distance python/posDiffPotTools.py -create_PosDiffPot: added additional option for selection2: it can now be the string "initial" in which case the AtomSel is taken from selection, and the coordinates are whatever is loaded when the function is called. python/potProxy.py -__init__: obj's thisown is set to False to break the reference cycle python/probDistPotTools.py -create_probDistPot: now set the asociated Simulation's noFit flag to True python/protocol.py -initOrie: for rna, now allocate more assignment slots bases on the loop in databases/rna_rna_pairs/rna_nonconsec_setup.tbl where the value seems to scale with the square of the number of residues. Added informational message about how many restraints are being allocated. -writeCIF(): added the modelCoords argument supporting multiple PDB model entries -initTopology: added called to psfGen.initResidueNames python/psfGen.py -seqToPSF: . implemented patches in VarientResidue - now supports phosphoserine with the SEP residue name, using the new SPA patch. . added the TPO residue variant . added the PTR residue variant . added the useVariantResnames argument -addResidueName: added the isVariant argument. This supports the new behavior that variants defined in a topology file override those listed in this module. python/pyPot.i -added keyword args to ctor; fix docs on arg name nmrPot/rdcPot1.hh -Restraint::energy() method now public python/selectTools.py -numResidues: now do the work in AtomSelLang, rather than in Python common/ensembleSimulation.cc common/simulation.hh common/symSimulation.cc -added the noFit flag to Simulation: for ensembleSimulations and symSimulations, this is set to true, otherwise it is false. This is used by simulationTools.StructureLoop to decide whether calculated structures should be fit. For EnsembleSimulations and SymSimulations fitting is either ill-advised, or quite tricky. python/simulationTools.py -StructureLoop: . added pdbFilesInCorrectSymmetricSidechains argument so that sidechain conformation switching can be disabled. . changed default value of averageTopFraction to 0.5 . now use Simulation::noFit() to determine the default value of averageFitSel, and warn if fitting is performed when it is set. . added support for maximum likelihood determination of the ordered residues in a structure - triggered by adding the "ordered" keyword to the averageFitSel argument. -AnnealIVM: fix s.t. numSteps=1 doesn't cause divide by zero C++ interface: nmrPot/eefx.cc -bumps(): fixed index-out-of-bounds problem python/pot.i -cleanupPythonInstanceData: now clear pot->instanceData_ after decref'ing it. intVar/publicIVM.cc intVar/publicIVM.hh -removed manual manipulation of potList_ ref count CDSlib/rc_ptr.hh -dtor: now set counter pointer to null after freeing Low-level bin/findSwig -added version 4.0.2 arch/installer.sh.in -now delete old versions of downloaded packages and distribution directory -added the -noEnter and -symlinks command-line options Changes from 3.0 to 3.1 --> 3.1 released 2020/09/22 The configure script now has a mechanism to check for dependencies during Xplor-NIH configuration. Currently, only the bc program is tested for. A downloadable installer script is now built for both architectures. Helper Programs bin/calcSA.in -new helper program for calculating molecular surface area. bin/energyPlot.in -now support -vsTime for -printOut. Note that the output will be garbled if minimization info is included in the input log file. bin/findSwig -added version 4.0.1 bin/genSurf.in -added -E option to set maxTessLen bin/getBest -added support for the -output-rst command-line option so that errors do not appear on the helper program web pages. It currently doesn't do anything else. bin/pty-xplor (used by VMD-XPLOR) -updates for Python3 bin/slurmXplor.in -now allow back-ticks in Xplor-NIH arguments bin/xplor.in -added the -argfile option to pass arguments by file when using $rsh, because we cannot control how shell-special characters might be interpreted in this case. Example Scripts eginput/cmdline/testCmdLine.py -added test for arguments including a literal backtic eginput/pasd/nef/initMatch3d.py -renamed initMatch3d should should now handle more general spectra, including determining the identity of the labeled attached heavy atom eginput/pasd/nef/ -reworked example to perform complete calculation, generate a NEF output file, and run a fold calculation. eginput/pasd/nef/genTalosNInput.py eginput/pasd/nef/runTalos.sh eginput/pasd/nef/talosToNEF.py -script tools to generate NEF output from Talos-N, given an input NEF file (with chemical shift values). -makeNEF updated to add trailing stop and save lines for loops and savesets, respecitvely. eginput/PSF_generation/genLigand.py -added an informational message eginput/PSF_generation/genLigandCif.py -added P non-bonded parameters; now try using first character of atom name if nonbonded params are not found. eginput/psl/deoxycumambrin/refineStereo.py -unify w/ vatiparol example: removed static random seed and doubled final IMPR energy scale. Topology/Parameters toppar/eefx/protein_eefx2.par -added missing parameters for CTN (amidated C-terminus) patch -added parameters including atom type CCIS - the C atom in cis-peptides toppar/waterRef/parallhdg5.3.pro.new toppar/waterRef/topallhdg5.3.pro.new -added placeholder values for CYSP Python Interface common/atomSelLangLex.lex -for byres keyword, now allow other characters after first 4 (e.g. byresidue); added test python/avePot.py -removed def of class AvePotPtr- base class no longer exists when using swig-4, and this class doesn't seem to be used. -import pyXplorHelp from avePot1 to provide module help python/cdsList_template.i -changed members to long int from int to avoid overflow python/help.i -fixups for swig-4 python/nefTools.py -added nefComment function; split out getBlockNames from getBlock as a separate function -added functions distanceRestraintHeader and addOneDistanceRestraint as a common resource for writing NEF distance restraints - use these in noePotTools, pasdPotTools.py python/noePotTools.py -create_NOEPot: now raise exception if nefRestraintName is specified but nef is not. -makeTable: changed OR format to be more concise and readable. -readNEF: instead of using NEF ID, use XplorNIH_label field for comment, if it is present. -readNEF: added the optional verbose argument nmrPot/pairDist -added pairDist - for calculating a P(r) python/pasd/__init__.py -nefPeaks: o now can auto-determine from/to nulcei identities; o the return value now contains new keys: numDims, from/toHeavyatom, and from/toProton. o change peak to contain the literal 'from NEF' python/pasd/noeTools.py -added function removeLowLikelihoodPeakAssignments -added the function makeNEFRestraintLinks python/pasd/protocol.py -fixed Python3 mixed tab/spaces issue python/pasdPotTools.py -added writeNEF function -writeOneNEFAssignment: fixed bounds values -writeNEF: added the optional origin argument; now return a tuple of the NEF string representation and information about which peaks gave rise to each distance restraint. python/pot.i -removed help function- causes clashes when using swig-4; added import of rc_ptr.hh for swig-4 python/potList.i -changes for swig-4: instantiate rc_ptr, split off C++/Python entries in ExtendPotList python/potProxy.py -__del__(): removed explicit call to underlying proxied object's __del__. python/prePotTools.py -fitRho0: fixed chi^2 scaling to use square of the errors. Also added optional scaling argument to specify alternate (non-chi^2) scaling options. python/protocol.py -initTopology: no longer concatenate per-system linkage definitions- these should be reset to avoid improper or too many definitions. -initDihedrals: reworked to generate a single string containing all restraints s.t. num assignments can be precalculated and the correct NASS value entered. python/protocol.py -pdbLocation: switched from ftp to http- ftp seems to be block when connecting from NIH. -downloadPDB: improved error handling. python/protocol.py -removed debug message python/pyInterp.i -swig-4 change: replaced SWIGPY_TypeQuery with SWIGPY_MangledTypeQuery python/pyPot.cc -ctor: changed CDSVector constructor name from CDSVector_Vec3Ptr to CDSVector_Vec3 python/pyPot.i -swig-4 change: no longer call _swig_setattr to set thisown python/rdcPot.i -removed typemap, instantiation of CDSMap python/simulationTools.py -AnnealIVM.__init__/run: fixes in specifying s.numSteps, s.step based on a report from John Kirkpatrick. -convertToPotList: allow a None argument python/slice.hh -changed members to long int from int to avoid overflow python/torsionPotTools.py -Xplor_writeNEF: added the optional origin argument python/torsionTools.py -setTorsions: when setting up an IVM, specify that flexRiboseRing in torsionTopology affects no riboses, so that sugar torsions are recognized. python/xplorDoc.py -properly refer to objects defined in the pydoc module -swig-4 changes: need to pull more in from pydoc module python/xplorInit.py -added xplor module import so that this module can be imported for documentation-generation purposes. -workaround for when running jupyter* scripts so that the Xplor-NIH lib paths are retained -fixed logic for len(argv)<2 TCL Interface tcl/indexTCLPackages.tcl -add informational message when processing .cc files to better catch problems. XPLOR Interface source/vector.f -XRSUB: previously, would overwrite following string with spaces. Fixed. Changes from 2.53 to 3.0 --> 3.0 released 2020/05/06 Xplor-NIH is now based on Python3. This version is built using Python3.7, and also validated using Python3.8 (where it produces somewhat different output). Old user scripts should be *mostly* compatible with the new version. The following issues may be encountered: 1) The print statement is now replaced by a function, requiring parentheses around all arguments, so that print "hello" becomes print("hello") This is the most common required change. 2) Python3 doesn't allow a mixture of tabs and spaces when they are significant for indentation scope. 3) The division operator ``/'' now performs floating-point arithmetic. Use ``//'' for integer division. 4) The module string no longer contains the function join- instead simply use the string object member of the same name. 5) The syntax for catching exception instances has changed. Helper Programs bin/calcTensor.in -calcTensor now can take more than one input psf bin/energyPlot.in -added the -ymax option bin/genSurf.in -added more command-line help bin/hbScore.in -properly handle case of zero bb H-bonds; update definition of bb H-bonds bin/headerHelp.in -switch from imp module to importlib.util.find_spec for getting path to module. bin/slurmXplor.in -changed the --workdir option to the short form: -D In slurm version 19.05 the long name was switched to --chdir, but -D will work throughout. bin/xplor.in -support for XPLOR_NOLINEBUFFER env var -expand the allowed characters for a script name to start with, so that the --help option also give --help-script output for more scripts (including those specified by absolute path). -added PDF_OPEN_COMMAND env var with values for Linux and Mac platforms Python Interface nmrPot/distSplinePot python/distSplinePotTools.py -new energy term: distance restraint using a splined distance-dependent function. common/ensWeights.cc -weights() now calls barrier s.t. consistent results are obtained python/pasd/__init__.py -python/pasd/__init__.py: added pipeShifts function to read CSs in NMRPipe format nmrPot/prePot.hh -Added setObs() and setErr() methods to PRERestraint class python/prePotTools.py -prePotTools.py: added twoStatePREPot python potential python/psfGen.py -seqToPSF: added documentation of LINK comments in Xplor-NIH topology files -pdbToSeq: added support for includeHETATM=True for PDB files nmrPot/psolPot -added centerOffset parameter; removed 3 unused parameters -added rmin, centerOffset to info() output; removed power parameter -rationalized rmin: it should never be less than r_vdw+r_solute-centerOffset. -added physicalAtoms member python/publicIVM.i -IVMError: added backwards-compatibility message member set from args[0] python/pyConvert.cc -fromPy(String): fix so that Strings can be read from non-ASCII input python/ramaPushPot.py -added missing headerHelp string for call to registerTerm -configure(): now sort terms for reproducible results python/rdcPotTools.py -readNEF: gracefully handle missing NEF fields python/repelPotTools.py -create_RepelPot: extraRadii: now multiply by 2. python/shapeBeadRep.py -create_BeadRep: suppress # calls info for normal verbose setting python/socketComm.py -changes s.t. socket communication is done using bytes instead of strings -Comm.barrier: handle case where timeout=None -Connection.writeData: the Python3 implementation of file.write for binary objects no longer blocks to write multiple buffers, so now a loop is required, just like for socket.send. python/sparta.i -add Python-level support to SPARTA::getDerivs return value (list of DerivDataElement) python/termAnalysis.py -registeringModules: added two missing modules python/torsionDBPotTools.py -create_TorsionDBPot: o fixed to allow use of threshold=None. o changed order of arguments in to reflect their importance. o now if a residue doesn't yield a restraint for a term (e.g., phi/psi/chi1 for the N-terminus), it won't add a restraint to other terms in the database file; i.e., a residue has to satisfy all terms or none in the file will be active. o added functionality to configure 1-4 repulsive interactions that complement TorsionDBPot. -create_RepelPot14: fix to avoid redundant interactions in rings nmrPot/torsionInterpolPot -nmrPot/torsionInterpolPot.* added constructors from scalars as string. python/torsionPotTools.py -Xplor_readNEF: o now first argument can be object returned by readNEF. New argument nefRestraintName specifies the table to read; it can be omitted if there is a single dihedral_restraint block. o now given target value is used, while lower_limit and upper_limit are used to get delta angle. python/trace.py -Trace.trace(): now suppress repeated output from a file's line 1 python/utils.py -printReStructuredText: Python3 fixups for generating txt and pdf output. Also, for pdf, set timeout for pdflatex command, and print diagnostics if there is a failure -printReStructuredText: for outputType=pdf, now use value in PDF_OPEN_COMMAND rather than hardcoded value of xdg-open. python/varTensorTools.py -varTensorTools module: added function generalizedDegreeOfOrder python/xplorDoc.py -replace calls to inspect.getargspec with inspect.getfullargspec to avoid exceptions with some functions -got rid of docroutine methods of HTMLDoc, TextDoc: use versions from base classes in pydoc. -fixes to get the command-line -pydoc -b option working. -some fixes added for the command-line -pydoc -k option were added, but it is still buggy, and doesn't seem to produce information on Xplor-NIH-specific modules. -the command-line -pydoc -g option is no longer operational. Use -pydoc -g instead. python/xplorInit.py -switch stderr to line-buffered always. Otherwise, error messages can be lost. Also, when stderr and stdout are mixed, the result is more garbled than necessary. -now line-buffer stdout in addition to stderr, by default, but introduce XPLOR_NOLINEBUFFER env var to allow disabling -parseArguments: use os.path.join instead of string concatenation -temporarily disable code to reset LD_LIBRARY_PATH at startup- need test cases where failures occur; -writeConsole(): convert output msg to bytes -now set locale and encoding. If not set, these can depend on environment variables, and will be different user to user, machine to machine. This can affect the appearance of output, and can cause files with non-ascii characters to cause program crashes. -argument processing code: reworked so that -pdf no longer has to come before -help* -changed handling of environment variables such that they do not adversely: o LD_LIBRARY_PATH - now remove XPLOR-specific settings so that launched programs don't try to link to libraries shipped with Xplor-NIH. o environment variables whose names start with PYTHON are now unset so that launched programs do not inherit them. This so that local system programs written in Python do not attempt to use modules shipped with Xplor-NIH. C++ interface: common/atomSelLangLex.lex -fixed error in atomSelLang lexer which prevented segi'' from being recognized as a valid property CDSlib/spline -added Spline::size() accessor python/pyXplor.cc -PyMainModule::~PyMainModule: o changed suppression of stderr during Python_Finalize- to now use a Python-native approach. Move DECREF to after stderr is closed. o now check Py_IsInitialized() before calling into Python API surfD/io.cc -SurfOutput(): reformatted the output to be more similar to the original Example Scripts eginput/pasd/cvn/makeContactMap.py -suppress warning from PostScript backend about lack of transparency support eginput/PSF_generation/genLigand.py -fixed sulfur mass, added phosphorus -will now handle blank residue names. -Prints an informational message if target resid/segid is not found. -For cases where the residue has resued atom names, will now generate -new, dummy names and write out an associated PDB. eginput/PSF_generation/genLigandCif.py -fixed sulfur mass, added phosphorus -updated genLigandCif.py to generate more complete topology/parameter values- so that the flexible ligands can be treated. eginput/PSF_generation/tags/proxyl/addPROXYL.py -proxyl.top/par files no longer explicit added, because the proxyl residue is now in protein.top/par. eginput/PSF_generation/tags/mtsl/addMTSL.py -Updated eginput/rna/refine.py -eginput/rna/refine.py: fixed problem when inputting several rdc files -fixups for rdc calcTensor bits Topology and Parameter Files toppar/extra/ctsa.par -toppar/extra/ctsa.par: rewrote nonbonded params in terms of MolProbity radii defined in protein.par toppar/nucleic-3.1.par toppar/nucleic-3.1.top -Added residue INO to nucleic-3.1.* toppar/protein-3.2.par toppar/protein-3.2.top -protein-3.2.*: changed types in CIAP residue to be within 4 chars toppar/extra/zn-finger.par -missing bond, angle parameters involving NR1-ZN+2 added by Xiao Wang Databases databases/torsions/rna/rna09_v0.dat -Added residues INO and AP7. Architecture Specific - Ported to the Linux/armv7l architecture. Binary not yet packaged. Changes from 2.52 to 2.53 --> 2.53 released 2020/01/28 Helper Programs bin/calcPSol.in -added the -selection command-line argument -fix to deal with ensembles, including heterogeneous -added -ensWeights, -targetType, -optEnsWeights command-line options -fix for non-ensemble calc -added the -radiusOffset command-line option, and a test if insufficient number of restraints are read. bin/seq2psf.in -added the -singleChar option bin/targetRMSD.in -add checking for atom mismatch in selection/selection2- to help find atom mismatches in PDBs with different atoms. bin/xplor.in -added comment associated with previous commit changing countMachines logic for case when slurm is used, but srun is not. Example Scripts eginput/gb1_rdc/foldNEF.py eginput/gb1_rdc/refine.py -replaced HBDB with HBPot eginput/pasd/cvn/makeContactMap.py -fixed to prevent Matplotlib deprecation warning messages eginput/pasd/mth1743/bmr5106.str -used to input chemical shifts for initMatch3dC.py eginput/pasd/mth1743/initMatch3dC.py -new initMatch Python script eginput/pasd/mth1743/talos2cdih.tcl -script to convert TalosN output to XPLOR restraints eginput/pasd/mth1743/makeNEF.py -create NEF file with chemical shifts, dihedral and distance restraints eginput/pasd/mth1743/testNEF.py -test that output of makeNEF.py can be read eginput/PSF_generation/writeCIF.py -added writeCIF.py test of CIF writing (and reading) capability -single character sequence version of PROT1.seq eginput/strictSym/ -added example of using Xplor-NIH's strictSym facility Topology and Parameters toppar/extra/zn-finger.par toppar/extra/zn-finger.top -added initial zinc-finger topology/parameter files Python Interface cif/cif -added useTrailingPound functionality -Cif::formatCategory: multiline strings in single component data members should start on a new line with a ; character prepended. python/cifTools.py -cifTools now has working genAtomSite function -genAtomSite: added an optional dataBlock argument so that order can be controlled. python/hbPotTools.py -readConfigFile: support per-map energy scaling -analyze: . add title line . now actually report appropriate filename for each H-bond nmrPot/hbSurf -added energy scale factor -HBPot::NeighborBin::updateBin: fixes to checking for too many neighbor bins, including the possibility of integer multiplication overflow. -now apply mappings scale to HBSurf -added support for per-map energy scaling python/nefTools.py -genMolecularSystem: added required field: nef_sequence.index -added getBlock, helper function to get datablocks corresponding to specific types of restraints, with name optionally given nmrPot/noePot -added the "closest" NOEPot aveType - similar to "shortest", but instead chooses the inter-atomic distance closest to the value specified by the restraint. -operator>>(): (restraint reading) better checking of io errors when reading restraint bounds. Now print more informative diagnostic message -not allow distance offsets to be negative python/noePotTools.py -NEF: changed field named distance_restraint.restraint_id to _distance_restraint.restraint_index as required by the specification -added required nef_distance_restraint.weight field -create_NOEPot: added nef and refRestraintsName optional arguments, with support for reading NEF restraints. -fixes in output format for NEF writing -genRestraints: added the distOffset optional argument python/pasd/__init__.py -nefShifts: switch to use nefTools.getBlock python/pasd/noeTools.py -reworking of tcl/noe_tools.tcl. Currently, only implements writeXplorAssignments -writeXplorAssignments: added safety parentheses around output atom selection strings. -noeTools.writeXplorAssignment: added per-assignment statement comment consisting of the PASD peak name -writeOneXplorAssignment: reworked to omit duplicate assignment pairs from output python/pasd/protocol.py -jointFilter(): fix handling for case of missing refPDB common/pdbTool -readCIF: allow the following fields to be optional: -pdbx_PDB_ins_code, occupancy, B_iso_or_equiv -PDBTool: added the remarksCatName accessor for reading Xplor-NIH remarks from mmCIF files -readCIF: fixed logic for reading only first model if model<=0 -added support for reading CIF XplorNIH_remarks.text items in as remarks python/posDiffPotTools.py -create_PosDiffPot: when there's a length mismatch between selection and selection2, find the first atom for which there a name mismatch and print the atom identities. python/protocol.py -added writeCIF function -writeCIF: now place remarks before atom_site python/psfGen.py -seqFromCIF: support optional pdbx_PDB_ins_code field -allow for no model field being present -seqToPSF: fixed singleChar=True behavior for proteins nmrPot/psolPot -added minDist() to PSolRestraint, and report this in PSolPot::showViolations -added gradient wrt ensemble weights -findImportantAtoms: change logic when bad triangles are detected. Now don't fail unless there are zero good triangles -added the radiusOffset accessor member python/psolPotTools.py -analyze: now call fitRho0 on terms which use correlation targetType python/torsionPotTools.py -NEF: changed dihedral_restraint.restraint_id to dihedral_restraint.restraint_index. -Added field nef_dihedral_restraint_list.potential_type -fixes in output format for NEF writing vmd/vmdInter -reworked the facility for drawing lines- fixing a couple of crucial bugs vmd/vmd.cc -updated for changes in the line-drawing routines in VMDInter vmd/publicVMDInter -expose and update VMDInter line-drawing capabilites python/xplorDoc.py -fixed xplorDoc.HTMLDoc.docroutine to correct the arglist for notrace_decorated functions. python/xplorInit.py -save copy of original LD_LIBRARY_PATH before cleanup TCL Interface tcl/cdsList.i -CDSList wrapper: added fromList, smartPtr methods. Added alloc size template argument, but doesn't seem recognized by SWIG's TCL interface tcl/tclTypeMaps.i -added DEFAULT_IN_TYPEMAP specifier tcl/marvinNOEpotential.i -updated so that CDSList_String, CDSList_PeakPtr can be instantiated in TCL tcl/noe_tools.tcl -writeXplroNOEs now implemented using Python's noeTools.writeXplorAssignments tcl/shiftassign_tools.tcl -writeOneShiftAssign: aded parentheses around output selection strings- they are required for readOneSiftAssign above Architecture Specific -changed Darwin* ARCH name to simply Darwin - no more need for arch/getDarwin or arch/equivList for the Mac as we ship a single binary. arch/Darwin_12_x86_64/Makefile.defs -Intel compiler updates from Pascal Mercier arch/Linux_armv7l/ -added armv71 architecture Changes from 2.51 to 2.52 --> 2.52 released 2019/09/24 Helper Programs bin/calcPSol.in -added the -prefactor option bin/calcSARDC.in -reworked to use gcRegisteredTopoTerms instead of unRegisterTopoTerm bin/calcTensor.in -multiple PSFs now now be specified to the -psf option bin/getBest -added the -prefix option. Can be used to specify different directory if structure files/stats file is moved to a different directory. bin/headerHelp.in -helper to generate documentation for per-term information included in the PDB header of otuput files bin/mleFit.in -fixed doc string to include default atom selection bin/runSparta.in -fixes, now works with NMRSTAR tables bin/slurmXplor.in -removed -jobs_per_node and -max_procs options. -Now use simpler and more accurate method to generate MACHINES list -now pass the -slurm option to xplor script -changed mechanism of obtaining SLURM node names bin/targetRMSD.in -now allow none literal to be specified for -psf and -psf2 options. -To help find differences if fitSel and fitSel2 are of different length, find the first instance where the atomName or residueName differ and print bin/torsionReport.in -added the -selection option to operate on a subset of residues bin/xplor.in -now check the suffix of the script name to check for -py or -tcl, and run the appropriate interpreter. -added the -slurm option (settable via the environment: XPLOR_SLURM=true -added CAMSHIFT env vars -increased default XPLOR_STARTUPDELAY value to 0.1 sec -added support for the XPLORNIH_BASE_URL, XPLORNIH_HEADERHELP_URL variables -for Python help- redirect stdout to xplor executable so that the reStructuredText can be processed. -rearrangement of helpargument processing Example Scripts eginput/gb1_rdc/testNEF.py -replace unRegisterTopoTerm with gcRegisteredTopoTerms eginput/pasd/nmrstar/genRandomCoords.py -generate extended coordinates eginput/pasd/nmrstar/pep.psf -regenerated to use default top/par values -added minimal test of runSparta Topology and Parameter files toppar/eefx/charmm22/topallh22x-eefx.pro toppar/eefx/protein_eef.top toppar/eefx/protein_eef22.top toppar/eefx/protein_eefx2.top toppar/waterRef/topallhdg5.3.pro.new -added missing PEPP LINK statement toppar/waterRef/parallhdg5.3.pro.new toppar/waterRef/topallhdg5.3.pro.new -fixes for ACE linkage Python Interface python/atomSel.i -union(): reimplemented using an iterative algorithm. The previous recursive version could hit Python's recursive limit. common/atomSelLang -added the AtomSelLang abbreviation facility with functions AtomSelLang::addAbbreviation and AtomSelLang::abbreviations camshift/camshift -CamShift is now a base class for CamShift1 and CamShift2 classes, with a factory function named generator to call the proper constructor -added termsUsed accessor to add ability to limit to subset of contributing terms camshift/camshift1 -what was previously the CamShift class is now CamShift1 -HBond::complete: fixed logic for terminal residues -remove the member calcDerivs which shadows parent member- use that instead -disable HBOND and DISULF terms by default- there is no corresponding gradient for these camshift/camshift2 -changes to make it derive from the CamShift base class camshift/camshiftdb.cc -modification such that to conform with atom naming convention in camshift2 database file python/chemShiftTools.py -split out spartaPotTools restraint reading code into new function convertRestraints in module chemShiftTools. Reads plain restraints and NMRSTAR format. nmrPot/csPot -reworked to support multiple CamShift versions by specifying a version argument -cleanup unused parameters rename member Sel --> atomSel -added camshift accessor -added ability to access restraints, and obtain per-ensemble chem shift values python/csPotTools.py -create_CSPot: added support to read non-native chemical shift tables nmrPot/hbPot.cc -constructor: rework logic for acceptor and donor list num member so that the acceptor and donor strings can be used multiple times in the config file. python/hbPotTools.py -readConfigFile: reworked logic s.t. the surface files can be located in the system default location when the configuration file is in a different directory. python/nefTools.py -added the shiftsFromList function python/pasd/__init__.py -starShifts: . changed default segmentName value to None . added the residOffset argument. . now always return a list of selection strings -mappings name map used by correctedSelection() to map IUPAC atom names to those used by Xplor-NIH expanded and corrected. python/pasdPotTools.py -highTemp1/2_updateTerms, cooling_updateTerms: change default arg values, expose more internal setting via additional arguments. python/planeDistTools.py -create_PlaneDistPot: added call to gcRegisteredTopoTerms, and add explicit check if a term of this name is already a registeredTopoTerm python/potProxy.py -PotProxy.__del__: no longer call simulationTools.unRegisterTopoTerm python/protocol.py -torsionTopology: changed default value of the flexRiboseRings argument to [nucleic] abbreviation. -matchInexactAtomEntry: added rule 21 for matching O to OH2 in restype WAT -initNBond: make certain that repel value passed to XPLOR is never None python/psfGen.py -addResidueName: now also updates the appropriate atomSelLang abbreviation for the specified systemType -added initResidueNames: removes logic from deduceResidueType -seqFromPDB: . added support for single residue chains . fixed lostRes treatment when there is a gap in residue numbers . more work on logic for sequence termination caused by gap in residue numbering nmrPot/psolPot.cc -Restraint::operator>>: fixed error message -added optional argument to setCoeff() python/repelPotTools.py -checkGetRepel: changed s.t. the value of repel is not modified if a Xplor-NIH parameter set version is not detected. -initRepel: only set repel value if it is not None python/saTensorTools.py -analyze: change to garbage-collected simulationTools.registeredTopoTerms. python/selectTools.py -IVM_groupRigidBackbone: added docs about which angle is constrained python/simulationTools.py -registeredTopoTerms: no longer reap these with unRegisterTopoTerm, but rather use garbage collection when the number of Python refcnts falls below a certain number. This achieved with new gcRegisteredTopoTerms. -writeStructure: add blurb on headerHelp to PDB REMARKs section python/socketComm.py -Comm.__init__: slightly better error message on failure to do initial read of newProcNum python/spartaPotTools.py -create_SpartaPot: added option to specify which save set is to be read python/termAnalysis.py -moved term analysis code from simulationTools to new termAnalysis module -introduce headerHelp facility python/trace.py -notrace_decorate: now add __arglist__ member to function wrapper which is used by xplorDoc.TextDoc.docroutine so that the correct arglist (with default values) is printed by help routines python/utils.py -added printReStructuredText function python/varTensorTools.py -added function generalizedDegreeOfOrder -VarTensor_analyze -now reports GDO -output renames matrix and scalar product -added composite_RDCRfactor and composite_Chi2 for to get values for the .stats file -create_VarTensor: change to garbage-collected simulation.registeredTopoTerms -create_VarTensor: disabled test if term with this name already exists. What does it matter? python/xplorInit.py -added the --output-rst option which affects the output produced by --help-script -parseArguments: added support for the -pdf argument. Now rst output is handled by utils.printReStructuredText -when processing -help-script option: now read all input from stdin and print/format this after the help-script document. This is so that --help produces sh-script-level argument info in addition to that from Python script -parseArguments: added missing import in error path python/xplorPotTools.py -added support for printing XREF R-factors in PDB header and in .viols file Databases databases/camshift/camshift-2.0.db -added database for version 2 of CamShift Changes from 2.50 to 2.51 --> 2.51 released 2019/05/01 Helper Programs bin/calcPRE.in -added support for auto-generating restraints -don't plot experimental curve if it's auto-generated -added arguments to help with tag optimization: -groupedSel -tagInteractSel -highTempTime -annealingTime -added doAnalyze argument. bin/detChirality.in -centers argument can now be colon-delimited, in addition to being space-delimited bin/xplor.in -added the -startup_delay option, for starting up many simultaneous parallel processes Example Scripts eginput/psl/deoxycumambrin -convert to using refineLoop.sh script eginput/psl/deoxycumambrin/gen.py -now randomize torsions on each attempt to generate coordinates, and take structure with fewest violations Topology and Parameter files toppar/eefx/charmm22/topallh22x-eefx.pro toppar/eefx/protein_eef.top toppar/eefx/protein_eef22.top toppar/eefx/protein_eefx2.top toppar/nucleic-3.1.top toppar/protein-1.0.top toppar/protein-2.0.top toppar/protein-3.1.top toppar/protein-3.2.top toppar/waterRef/topallhdg5.3.pro.new -added LINK comments to these topology files. Going forth, any required linkage information should be made available in the appropriate .top file Python Interface nmrPot/atomDensity -implemented per-atom radius -added gradient wrt radius - rolled into atomProb class, and deleted -calcMap: reworked to use local DensityGrid only if necessary - not for FLAT or VOLUME mode python/atomDensity.py -new module added for backward compatibility with old atomDensity module nmrPot/atomProb -updated to subsume functionality of atomDensity -ProbDist function classes: now include rc (cutoff radius) within each class -added the VOLUME ScaleType -QuarticDist::invert: corrected the formula common/atomSel.cc -added third argument to AtomSelAction::run: an index specifying offset in the selection -added deleteAtoms method python/atomSel.i -atomSel.union extended so it can now take one or more AtomSel arguments -union: change implementation of len(args)=1 case, and support len(args)==0 common/atomSelLang -added the BYREs AtomSelLang selector with tests, documentation -atomSelLang added support for space-separated property identifiers -AtomSelLang: catch case of missing range bound and throw exception nmrPot/densityGrid -changes required to subsume functionality of the old atomProb Grid class and cleanup -OpenMP parallelized DensityGrid::operator+= and DensityGrid::scale -DensityGrid::operator+=, scale, maxVal: changes for vector, OpenMP optimizations python/densityGrid.i -added getData method for backwards compatibility - and some code cleanup nmrPot/eefx.cc -energyMaybeDerivs: OpenMP optimization python/ivm.py -added the groups() method intVar/publicIVM -new method: simulationGroupList - return indices of atoms present in Simulation - exclude IVM-internal indices python/minimize.py -conmin: now pass costTol to linemin as the (new) tolerance argument nmrPot/noePot -NOEPot: added distMultMat support python/noePotTools.py -added distance correlation metric -added restraint distance correlation to computed extra stats (for .stats file) pasd/shiftAssignment.cc -simplified ShiftAssignment::primarySeqDistToSA python/pasd/__init__.py -added function removeBondedPeaks -corrected lower bound distance -reworked pasd.distanceBins s.t. lower and upper distances are specified for each intensity bin; estimateUpBound was renamed to estimateBounds python/pasdPotTools.py -added numMCsteps as optional argument to cooling_updateTerms, highTemp1/2_updateTerms, and pass them through to maybeShuffleAssignments python/pdbFormat.py -PDB format tools -fixed resName entry (4 characters, not 3) nmrPot/posSymmPot.cc -PosSymmPot::energyMaybeDerivs1 optimization: remove repeated indexed access to DerivList nmrPot/prePot -distMult: added check that the dimensions of the matrix are appropriate for the averaging sizes in each existing restraint nmrPot/probDistPot -changes for switching from AtomDensity to AtomProb -added calcRadiusGrad accessor flag and radiusGrad member for gradient wrt radius to be computed in energyMaybeDerivs0 python/probDistPot.i -handle error conditions more gracefully with freearg addition; import atomDensity module so that member is understood without requiring importing in user scripts python/protocol.py -matchInexactAtomEntry: modified rule 6 to match protons in all residues with methylene groups where PDB uses the naming trailing digit convention 1,2 -> 2,3; this caused the output of many tests to require updating -matchInexactEntry: now use pdbFormat.getAtomEntry instead of using manual columns positions for PDB ATOM record access -optimize initCoords with notrace_decorate decorator -initRandomSeed: now print warning message if called after EnsembleSimulation created: the seed must be treated carefully in this circumstance -added protocol.linkages dictionary to hold XPLOR linkage statements for protein and nucleic sequence types; to use a linkage definition different than the Xplor-NIH default, !LINK comments should be placed in the topology file python/psfGen.py -now decorate pdbToSeq with notrace_decorate for optimization -seqFromPDB: now support side chains with multiple conformations by returning these in the altRecs member of the seqFromPDB return object -pdbToPSF: now support the use of these altRecs entries in PSF generation. -duplicateSegment: added resid, nameSel and fast optional arguments in support of alternate configuration sidechain PSF generation -seqToPSF: now use protocol.linkages for residue LINK statements nmrPot/rdcPot1.cc -RDCPot1_Restraint::singleContrib: fixed to gradient prefactor python/regularize.py -fixupCovalentGeom: added suppressExceptions argument now returns state including number of violations nmrPot/repelPot.cc -addSelectionPair: fix the test for missing parameters s.t. only atoms in selPair are tested. Previously, all atoms in sel1, sel2 arguments were searched for nmrPot/sardcPot -addRestraint: improved message given when the input error value is too small python/selectTools.py -convertToAtomSel: with list of atoms argument, now take simulation from first atom -groupRigidSideChains/Protein/NucleicAcid, IVM_groupRigidBackbone, correctSymmetricSidechains, groupRigidSel: make default arguments more intuitive -IVM_groupRigidSidechain, IVM_breakRiboses: optimization: don't consider atoms in ivm-grouped regions python/shapeBeadRep.py new module to generate a coarse-grain representation comprised of overlapping spheres of varying radii. python/simulationTools.py -minimizeRefine: added the minimizeSteps argument -calcAverageStruct: updated averageRestrain code for removal of atomDensity and changes to atomProb -testGradient: added the selString argument to allow restricting tested atoms python/socketComm.py -Comm.__init__: added the startupDelay argument nmrPot/solnScat.cc -SolnScat::calcBoundaryPoints: add sel as argument to calcSA. Otherwise, calcSA uses the intersection of the current simulation and sel. For SymSimulation calculations, the current simulation is the protomer's simulation, and the intersection contains zero atoms. python/spartaTools.py -create_Sparta: added the verbose argument python/spartaPotTools.py -create_SpartaPot: now pass the verbose argument to create_Sparta() -create_SpartaPot: fine tune when verbose=True gets passed to create_Sparta -create_SpartaPot: now throw exception if no chemical shifts are read sparta/pdb -work to OpenMP parallelize collect_HN_S2_and_EF including optimization removing CDSMap access from energy/gradient loops -getOrbitalShifts: loop optimization sparta/sparta.cc -getPred2ndShift: disabled some OpenMP parallelization due to it being non-thread-safe python/structureTools.py -getAngles: fixup, by removing reserved as'' keyword used as a variable here python/torsionDBPotTools.py -define_cispro_impropers: now print warning message instead of crashing when there are missing atoms python/trace.py -notrace_decorate: -now use functools.wrap to get the wrapped function's docstring and name. Still missing function signature in the help output. -changed behavior of nested (repeated) calls to trace()/resume() such that trace behavior is not resumed until after final matching call to resume python/utils.py -added char_range function python/varTensorTools.py -addAxisAtoms: now throw exception if attempted on SymSimulation. -calcTensor: catch case of zero singular values- happens with strict symmetry -calcTensor: fixes for when VarTensor and RDC/CSAPot have different simulations (as for SymSimualtions) -calcTensor: updated check for too few restraints fix conversion of selection argument to AtomSel to use a VarTensor from an experiment term (RDC or CSA) python/xplorInit.py -when starting parallel processes, now employ the XPLOR_STARTUPDELAY env var in setting the startupDelay argument to socketComm.Comm common/xplorWrapProc.cc -XplorWrapProc::XplorWrapProc(): use only the PID as the UID for shared memory identification. This fixes deadlocks occuring with XplorWrapProcs created soon after program start by parallel processes. Low-level Functionality CDSlib/pair.hh -added OrderedPair class -made operator== const nmrPot/eefx nmrPot/spartaPot sparta/derivData sparta/pdb sparta/sparta -changed dictionary storage of deriv info to per-OMP thread lists of entries TCL Interface tcl/noe_reporting.tcl -newSummarizeMarvinResults: more robust location and removal of input file suffixes- previous implementation assumed 3 character filename extension tcl/aeneas_tools.tcl -standard initMatch functions: added the noCorrectShiftOffset flag tcl/aeneas_tools.tcl -generateDistanceBounds: fix bug where the value 1.8 was hard-coded as the lower bound -reworked pasd.distanceBins s.t. lower and upper distances are specified for each intensity bin; estimateUpBound was renamed to estimateBounds Changes from 2.49 to 2.50 --> 2.50 released 2018/12/20 Helper Programs bin/calcPRE.in -add the -distMultMat option -now delete missing atoms by default. -no longer requires a PSF. -now calls fitTauc at end of tag optimization -now always refit tau_c using fitTauc when -fitTauc is specified -added the -noFitTauc option -added the -crossTable option bin/calcSAXS-bufSub.in -added the -addUnknownAtoms option bin/plotLog.in -added the xlog (semilog with logarithm along the x-axis) plotType Topology and Parameters toppar/extra/ctsa.top/par - topology and parameters for DOTA tag attached to cysteine. Python Interface common/atomSel -added the allValid method python/chirality.py -absoluteChirality: reworked algorithm to handle branches, and be more comprehendable. nmrPot/prePot -added the distMultMat member for multiplying 1/r^6 distance contributions. This was used to simulate the presence of a dimer/tetramer mixture when only a single ensemble member's coordinates are present. -PREPot::qFactor: now call modified.update() python/pasd -is now a Python package -some methods have had their names shortened. -sparkyPeaks: fixed to use the name prefix argument correctly. -added pasd/protocol.py: high-level procedures python/pasd/netfilter.py replaces the TCL version, has some additional functionality: - can now specify known contacts python/prePotTools.py -fitTauc: now do grid search with different starting values python/psfGen.py -new function addResidueName, to add a residue name to list of known residues -seqFromPDB: fix behavior of usrChainID=False when segid is blank python/pyInterp.i -added fromStringRep function to convert from string representation to SWIG Python object. -command(): now disable tracing unless it is explicitly specified. python/rdcPotTools.py -create_RDCPot: add reference to created oTensor. This fixes a lifetime error which cascades into improper IVM configuration of the associated pseudo-atoms. python/solnXRayPotTools.py -create_SolnXRayPot: now throw exception if the aSelection argument has an invalid atom (undefined coordinates) python/spartaPotTools.py -create_SpartaPot: added support for NMRSTAR format python/trace.py -re-implemented suspend/resume with settrace/gettrace functionality. -Added the notrace_decorator function for function optimization. python/varTensorTools.py -create_VarTensor: now throw an exception if another VarTensor with the same name is already registered. Examples eginput/dock_dipolar_chemshift/dock.py -added an updated docking script eginput/pasd/cvn/makeContactMap.py -updated to have -cutoff, -dresid arguments; now handles systems with multiple segids, and with residue numbering not starting from 1 eginput/PSF_generation/tags/proxyl/addPROXYL.py -changed to add call to addResidueName as converage test, instead of explicitly setting sequence type eginput/psl/vatiparol/README -README docs updated for loop procedure Low-level Functionality CDSlib/matrixTools.cc -inverse: now throw exception for singular 1D matrix -added new norm template- use as a generalized abs function TCL Interface tcl/aeneas_tools.tcl -standardJointFilter: split off output into new writePASDFiles function -added the -noStripeCorrection option to standard initMatch functions Changes from 2.48 to 2.49 --> 2.49 released 2018/09/26 Helper Programs bin/calcPRE.in -fixes for when a single structure is specified, and for when no tag optimization is performed. -added ensemble support -added -singleEns option -added flag: -plotCorrelation for plotting calcd vs. expt. better support for not writing structures. -updated to use StructureLoops storeCoordinates option when structures are not written -fix bug present if no -plot option is specified bin/hbScore.in -added the hbScore helper program bin/seq2psf.in -added the -outFile option -added the deprotonateHIS flag -documented -cisPeptide option bin/slurmXplor.in -no longer specify the --exclusive flag to sbatch so Xplor-NIH jobs will share nodes by default. bin/xplor.in -added docs about important environment variables -fix in setting up countMachines: some (old?) versions of uniq include a tab character in the output -fix placement of xlibs_spec when debugging Example Scripts eginput/gb1_rdc/refine.py -fixed pdbTemplate to use SCRIPT placeholder eginput/pasd/cvn/pass2.py -a new Python pass2 script eginput/relaxRatio/dock_rrp.py -fixed order of IVM setup eginput/runAll -added option -xplorPath so that the tests can be separated from the binary location Python Interface python/atomSel.i -added AtomSel_fromPtr a.t. TCL AtomSel objects can be used in the Python interface python/atomSelLang -added simpler function nameSelection, test use -added generalized attribute facility common/atomSelLangLex.lex -changed the value values of the segid specifier to be only "segi" or "segid" nmrPot/distSymmPot.cc -fixed the value of numDistances used in gradient calculations python/distSymmTools.py -genDimerRestraints: added the extraSels argument python/gyrPotTools.py -get the correct number of residues by passing whole AtomSel, instead of just the selection string -create_VGyrPot/create_RGyrPot: use sel argument correctly to compute numResidues nmrPot/hbSurf -added HBSurf class for cubic interpolation of r, theta, phi h-bond potentials of mean force nmrPot/hbPot -added 3-D HBPot energy term from potentials of mean force- no gradient yet python/hbPotTools.py -helper functions for generating, creating and analyzing HBPot terms nmrPot/noePot -NOEPot: added deleteOverlapping python/noePotTools.py -makeTable: will now handle an argument which is a sequence of NOEPots python/pasd.py -starShifts: . fix in exception message . now support missing AmbiguityCode . for tclOutput, add outer parentheses to selections so PASD routines can read them. -added function findUnassignedAtoms, and supporting function convertShiftsFromTCL. This now implements the functionality of reportUnassignedAtoms in tcl/aeneas_tools.tcl -readSTAR: added the addSaveSet optional argument -starShifts: added the segmentName optional argument -added structureMetrics function -added asciiHistogram function -added function peakAssignLikelihoodsFromStructs -added functions removeDiagPAs, removeInterSegidPAs, removeIntraSegidPAs, reportNOEprecision, reportNOEaccuracy -atom name mappings (used for reading NMRStar files): added maps for when trailing number is missing from stereochemically equivalent carbons (for residues with symmetric sidechains) python/pasdPotTools.py -added pasdPotTools module - contains helpers for PASD protocols python/planeDistTools.py -create_PlaneDistPot: now set D to 0 if not specified nmrPot/prePot -added rho0 scaling accessor -added parallelization of EnsembleSimulation calculations. This should now also handle heterogeneous ensembles python/prePotTools.py -spaceSeparatedToRestraint: added the residCharPrepend and illegalValues arguments -added fitRho0 helper function python/protocol.py -matchInexactAtom: change affecting rules 7-9: these now only apply for names longer than one character. -initCoords: now q and b attributes are supported if loadOccupanciesBfactors=True python/psfGen.py -seqToPSF: extended the deprotonateHIS argument to allow it to specify residues which have missing HD1. nmrPot/rdcPot1.cc -changed default aveType and threshold to match those specified in rdcPotTools -addRestraints: now disallowed after localTensors are defined python/selectTools.py -convertToAtomSel: . added ability to convert from raw SWIG string pointer representation. . convertToAtomSel: now can accept sequence of atoms python/simulation -added typemap s.t. Python types can be specified as arguments to setAtomPosArr python/simulationTools.py -StructureLoop: . added storeCoordinates flag to override default behavior. Previously, atomic coordinates were transfered using PDB files. With the addition of this flag, coordinates can be stored in memory and transfered to other Xplor-NIH processes via the socketComm mechanism used to transfer other quantities. . changed storeCoordinates default value to False -RampAction: added numSteps, curStep, fractionDone members The variable name of the RampAction object has been changed from ParameterRampInfo to rampInfo -AnnealIVM: added fractionDone member -minimizeRefine: now supports EnsembleSimulations tcl/tclInterp.cc -TCLInterp::command: TCL errors now force the throwing of a Python exception; added test python/xplorPotTools.py -getHBDBbonds: now support presence of segid TCL Interface tcl/aeneas_tools.tcl -reportUnassignedAtoms: now implemented in Python function pasd.findUnassignedAtoms -reportUnassignedAtoms: marvinPyth uses the global namespace, so variable names can clash. renamed variable shifts to avoid clash -standardJointFilter: added the flags -minLikelihood -maxLikelihood -standardInitMatch* functions: when calling removeDiagonalPeaks, now use tolerance computed from from/toProtonTightTol instead of hard-coded value appropriate for solution NMR -standard4dInitMatch: arguments -peakFileName and shiftAssignmentsFileName now optional tcl/selection_tools.tcl -stereopartnerList: fixed entry for leucine CGs Architecture Specific arch/Linux_x86_64/Makefile.defs -updated for 2018 Intel compilers. -updates for gcc version 8 arch/Darwin_12_x86_64/Makefile.defs -removed libfreetype from OMITTED_SHARED_libs arch/Darwin_x86_64@ -added symlink so Darwin version no longer significant Low-level python/cdsList.i -added macro for instantiation python/cdsVector.i -added sort helper function for CDSVector_double CDSlib/spline3D.cc -OpenMP parallelized CDSlib/vectorTools -added min/max vector tools template functions CDSlib/cdsMap -fixed spelling of entries method... CDSlib/cdsString.cc -split: repalced use of non-thread-safe strtok with strtok_r to fix problems with OpenMP parallelization. marvin/ => pasd/ -renamed directory marvin --> pasd; files MarvinNOEPotential.?? --> pasd/pasdPot.?? -class name change MarvinNOEPotential --> PASDPot -much simplification, bring more in line with Xplor-NIH coding practices. Maintained compatibility using wrappers in TCL interface. pasd/PASDPot -added sim member; added optional Simulation argument to ctor -OpenMP parallelized two top-level energy calculation -added PASDPot child terms which allow independent reporting of DistPot's and InvPot energies, and independent scaling of energies -PASDPot: removed useInversePot accessor. Now that term is simply not computed if its associated energy scale is 0. XPLOR Interface source/parser.f source/xplorFunc.f -added DISPLAY_FILE DISPLAY_FILE variables to reflect output destination for the set DISPlay_file statement Changes from 2.47 to 2.48 --> 2.48 released 2018/05/03 Helper Programs bin/calcPRE.in -added the calcPRE helper program for computing PREs given coordinates. bin/calcPSol.in -qFactor: will now not crash for the case of -table generate -added -singleEns option, and preliminary ensemble support. Not tested. -added the -addMissingAtoms option bin/contactMap.in -support for PDB MODEL specificatin -support for -smp parallel operation -fixups for color-enumerated maps -fixed filename printed in processOneFile bin/detChirality.in -properly added detChirality as a helper program to determine chirality of specified centers. bin/energyPlot.in -new helper program to plot energy terms during structure calculation. Aids in debugging protocols. bin/ens2pdb.in -added -hetatmSel option which generates HETATM and CONECT records -fixed segid renaming so that map can now be many to one -added the -renameResname and -altLocOccupancy options -altLoc config: now put all altLoc entries for an atom consecutively.. bin/getBest -added the -indices option -fix for case when multiple .stats files are processed bin/jupyterXplor.in -added jupyter notebook and console support via jupyterXplor command. Invoke with jupyterXplor notebook or jupyterXplor console commands. bin/targetRMSD.in -bin/targetRMSD* now allows input of several psf files - improved documentation bin/targetRMSD.in -fixed multi-psf behavior to work for -psf2 option bin/xplor.in -introduce xlibs subdirectory to hold all shared libs so that they do not interfere with system programs. Update LD_LIBRARY_PATH to include this dir on each invocation of xplor binary. -disable the LD_BIND_NOW=1 workaround for Intel Compilers, as Intel has fixed the bug which required it. This should improve performance. -XPLOR_PPORT: no longer static to avoid a port listening collision. This is possible if two parallel Xplor-NIH jobs are started on the same host in rapid succession. Now XPLOR_PPORT depends on PID modulus 1000, thus making a collision very unlikely. bin/torsionReport.in -added support for PDB MODELs Low Level Functionality Makefile -exeinst rule: now place all dependent libraries in new bin.$ARCH/xlibs subdirectory many .cc files: -change constant name of built-in constant: HUGE -> HUGE_VAL python/cdsMatrix.i CDSlib/cdsMatrix.cc -added max/min functions Fortran Interface source/util.f -WRNDIE: changed unit for writing warning message only to PUNIT Python Interface python/atomSel.i -include accessor.i so ordered() method works; reworked replacement ctor to better handle argument errors nmrPot/eefx -potential fix for overlapping inequivalent selPair bug -NeighborBin: check for integer overflows; noe place this class in a namespace s.t. linking doesn't class with NeighborLists in other .cc files common/pdbTool -added hetatmSel accessor to specify atoms for HETATM records; removed unused writeAltLoc method python/posDiffPotTools.py -create_PosDiffPot: o updated to handle ordered AtomSels o fixed for case when PDB file not specified. nmrPot/posSymmPot -added support for planarFit mode for fitting structures determined in an implicit membrane. This term removes translation parallel to the membrane surface and rotates about an angle perpedicular to this surface. nmrPot/posSymmPot.cc -working now with planarFit==True nmrPot/prePot python/prePot.i -changed toggles for specifying whether various correlation times are fixed to the accessors fixTauc, fixTaut, fixTaui; added swig wrappers for backward compatibility. -Restraint: changed weight to ACCESSOR, added swig wrapper for setWF; info: now print aveSize if >1 -removed assignType from PREPot class: restraints are now non-specifically assigned on a per-restraint basis. -operator>>: allow for newline between 2nd and 3rd selection when reading restraint. -added correlation funType, test, docs -PRERestraint method renaming, with wrappers added for backward compatibility python/prePot.i -reordered so that rc_ptr_PRERestraint gets all extended method python/prePotTools.py -create_PREPot: added scaleType argument -added functions correlation and fitTauc -added correlation to output in .stats, .viols files python/protocol.py -writePDB: added occupanies and bFactors arguments python/psfGen.py -seqToPSF: added the simulation argument python/psolPotTools.py -added helper fitRho0 python/regularize.py -fixupCovalentGeom.fixupLoop_xplor: fix verbosity check for unknown coords warning nmrPot/rdcPot -RDCPot: added per-restraint energy scale factor --added getLocalTensors() accessor - used to specify a local coordinate frame. Applicable to PCS Chi tensor definitions. nmrPot/repelPot.cc -violations: added call to modified.update()... -ctor: added check that all atoms have nonbonded parameters. -now store groupNames (Atom chemTypes), and do the test for parameters in addSelectionPair -fixed BUG! for case where a sel Pair has inequivalent members which have a non-null intersection -NeighborBin: check for integer overflows python/selectTools.py -convertToAtomSel: added the optional ordered argument, and changed to follow the value of ordered() of arg, if it is an AtomSel. -getSegsResidues: now return a named tuple common/simulation.cc -String atom property setters: fix behavior when new value is String whose length is >4 characters python/simulationTools.py -StructureLoop.run: now save initCoords return value in initCoordsRet member. -minimizeRefine: add optional simulation argument to allow use on non-current Simulation common/symSimulation.cc -syncDerivs: fixed stupid bug in centroid-using code which forced an N^2 calculation python/torsionDBPotTools.py -create_TorsionDBPot: o no longer converts axis values to float, removed energy list: energy values directly handled in data dict as before (simpler code and no performance issues noted) o now attempts protein-specific definitions only if system is 'protein' o support for specifying a non-current Simulation associated with the selection argument. -replaced parse_metaselection by three simpler functions which now work if resid specification appears in middle of metaselection -setup_pot is simpler and more general (any potential residue type specification for peripheral residue -denoted by offset- in metaselection would work), without sacrificing speed. -setup_pot: fixed confusion between atom name and the name of the potential -setup_pot: changed verbose messages python/torsionTools.py -setTorsions: fix support for the simulation argument -added function genXplorRestraints python/xplorPotTools.py -increased the default DIHE threshold value python/xplorInit.py -now remove LD_LIBRARY_PATH elements which have XPLOR_DIR as a parent - so that non-xplor executables don't try to link against xplor or distributed libraries -now place orig_LD_LIBRARY_PATH in the xplorSimulation module before modifying it. This is so it can be reset before execing the xplor binary in xplorWrapProc. python/xplorSimulation.i -in XplorSimulation ctor wrapper: now restore LD_LIBRARY_PATH to initial value for the case clone=False: in this case the raw xplor binary will be exec'd. Example Scripts eginput/rna/fold.py eginput/rna/refine.py -Minor edit to eginput/rna/ structure calculation scripts -simplified selection string (minor change) eginput/psl/deoxycumambrin/validateChirality.sh -reworked to avoid the '| head' construct which gives broekn pipe errors on tree nodes eginput/gb1_rdc/fold.py -changed energy term from Rgyr to Vgyr eginput/psl/deoxycumambrin -updated protocol to work, and improve validation eginput/psl/vatiparol -reworked for robustness. Now shell script invokes structure calculation script multiple times until convergence is achieved. Documentation doc/xplor/Makefile -now copy FXPLOR example files to HTML dir helplib/nih-py-pot -added entry for Pot base class -various fixes for generation of web documentation Architecture Specific arch/Linux_i686/tcl/Makefile -optimization downgrade - seems to be required for gcc version 6 bin/xplor.in -changed Darwin ARCH to exclude OS release number Changes from 2.46 to 2.47 --> 2.47 released 2017/12/20 common/atomSelLang.cc -defined (fixed) atom ordering for compound selection strings by modifying xplor AtomSelLang::orArr and AtomSelLang::andArr, and updating test and documentation. python/anglePotTools.py -delAndCreateCenterAnglePots: changed order so that it works... nmrPot/eefx -addSelectionPair: now takes AtomSel as args instead of String -changed printAtomInfo to atomInfo, returning a string nmrPot/eefx python/eefxPot.i python/eefxPotTools.py python/nonBondTools.py python/repelPotTools.py -moved resExclude code from repelPotTools.create_RepelPot to nonBonTools.getNBParamsFromXplor -updated EEFXPot to use resExclude instead of nbExclude so that it can be used with SymSimulations. python/eefxPotTools.py -create:EEFxPot: aded selPair argument o enabled a warning when non-hydrogen chem types can't be found in the EEFx parameters o added IMMx arguments thickness, profileN, a o fixed operation of selection argument (previously, it was ignored) python/nonBondTools.py -refactored code which reads nonbonded info from PSF and parameter files into nonBondTools.getNBParamsFromXplor. Consumed by eefxPotTools, repelPotTools -getNBParamsFromXplor: updated to generate correct group lists when processing a SymSimulation common/pdbTool -PDBTool: added support for reading HETATM records if includeHETATM accessor set python/planeDistTools -fixes so things work with SymSimulation setup. python/potProxy -dtor: now call simulationTools.unRegisterTopoTerm. This is necessary for object deletion because a reference is held in simulationTools.registeredTopoTerms nmrPot/prePot -removed CENTER, R_3 aveTypes; added SUM aveType, aveSize to help with symmetric multimers -removed showCurrentTauc method; moved def. of setTauc to .cc file for eventual change to update clock atoms (currently clock atom positions are not modified) python/prePotTools.py -added helper function getTagResidSels - used to get info for setting up nonbonded interactions involving tags with multiple conformations python/protocol.py -initStruct: added the string argument, for uniformity with initParams/Coords -initCoords, loadPDB: added includeHETATM optional argument (defaults to False) -initCoords: o fixed placement of check for extra (bad) keyword arguments o when deleteUnknownAtoms=True, use Simulation's deleteAtoms instead of xplor.command, and added call to updatePseudoAtoms after deleteAtoms() -loadPDB: now accepts the deprotonateHIS kwarg (passed through to psfGen.seqToPSF) -After merge from ~schwitrs/bzr-repo/xplor python/psfGen -pdbToPSF: now accepts the deprotonateHIS kwarg (passed through to psfGen.seqToPSF) nmrPot/repelPot.cc -neighborInfo(): added call to modified.update() so results are up-to-date (and no crash occurs) python/repelPotTools.py -create_RepelPot: throw exception if any atoms with unknown coordinates are included in selection common/simulation -added the validSimulation() Simulation* validator. If Simulations* were reference counted, this would not be needed python/simulationTools -moved registerTopoTerm/unRegisterTopoTerm/getRegisteredTopoTerms from varTensorTools to simulationTools -un/registerTopoTerms: un/register term from/to underlying XplorSimulation so that topology setup is correct for SymSimulations, where the underlying simulation is manipulated via the IVM. -registerTopoTerm adds sentry __topoRegistered member to pot term to be queried by unRegisterTopoTerm. -StructureLoop: added the pdbFilesInErase optional argument. python/symSimulation.i -extended the Python dtor to call Simulation::deleteSimulation, as is done for EnsembleSimulation (XplorSimulation uses swig's unref feature). python/varTensorTools -massSetup: simplified Topology and Parameters toppar/eefx/protein_eefx2.top -CYSP residue: changed chemtype of HA to HB toppar/protein-3.2.top -added CLYS patch for di-ubquitin Helper Programs bin/calcPSol.in -silly fix for when PDB has no models. bin/contactMap.in -changed the default printAtomContacts to False -added the -popEnumerated option so that population levels can be explicitly represented by color. bin/ramaStrip.in -changed wintitle to default to name of first pdb specified bin/targetRMSD.in -updated to use ordered AtomSels if psf2 != psf -fixed to delete unknown atoms when diffSeq=True Examples eginput/eefx/membrane/fold_EEF.py -cleanup in EEFX pot setup eginput/gb1_rdc/g_new.psf -Replaced eginput/gb1_rdc/g_new.psf by that generated with protein-3.1.top. As a result, modified scripts to use protein.par instead of protein-1.0.par eginput/psl/ -switched from ectein example to deoxycumambrin + vatiparol. The scripts have been somewhat reworked to improve reproducibility and ease of use. eginput/rna/validate.py -initialize coords, s.t. create_RepelPot doesn't crash; use nucleic, instead of nucleic-3.1 Low Level python/cdsVector.i -added instantiation of dot(CDSVector,CDSVector) python/pyConvert -fromPy(CDSList): removed throw decorator, as it's difficult to enumerate exception types for this template containing a container class -fromPy(Atom): improved error messages CDSlib/cdsString -subString: implemented negative indexing, thus changing behavior of negative indices (previously these specified the end of the string) Changes from 2.45 to 2.46 --> 2.46 released 2017/09/20 Python Interface python/anglePotTools.py -new module from the PSL work implementing a Python bond-angle term and associated tools. python/atomAction.py -centerOfMass now raises exception when sel selects unknown or no atoms python/cdsVector_template.i -cdsVector: added min, max functions nmrPot/densityGrid -readCCP4: added zeroNegatives optional option -added setData(CDSVector) python/densityGridTools.py -New helper module with function trimDensityGrid for trimming a atom density map to a give set of atomic coordinates. python/ensembleSimulation.i python/protocol.py -added updatePseudo for EnsembleSimulation::deleteAtoms: requires a special case trap in updatePseudoAtoms itself. Perhaps only for Ne=1 EnsembleSimulations python/ivm.py -added fixedAtoms accessor -stepsizeThreshold: set default value to None so that its use is not accidently triggered by a negative time step. -fixed stepsizeThreshold to properly query accessor. nmrPot/noePot -added "shortest" aveType with test and doc update. python/noePotTools.py -create_NOEPot: added the simulation2 argument common/pdbTool.cc -support mmCIF files with '.' in the insCode field python/protocol.py -loadPDB: make certain updatePseudoAtoms is always called. python/prePotTools.py -registerTerm: now register all dependent Simulations. This required for SymSimulations, where the Pot is registered to SymSimulation, but coordinates in the underlyaing Simulation are actually manipulated. -mods to work with SymSimulations. Overall is more general, but mixed EnsembleSimulation/SymSimulation will not work nmrPot/prePot.cc -fixups s.t. clock atoms can be in different simulations from coordinate atoms nmrPot/probDistPot.cc -fixed s.t. non-unit scale works for potType other than diff -fixes so that help facility works python/psfGen.py -support mmCIF files with '.' in the insCode field -cisPeptide, dAmino, seqToPSF, pdbToPSF: added call to updatePseudoAtoms -pdbToPSF: added the suppressExceptions argument for allowing processing of partial sequence information if a sequence in a given segment is not understood nmrPot/psolPot.cc -findImportantAtoms: now allow up to three bad triangles -retessellateIfNecessary: make certain tessellation happens if the BadTessellation exception branch is taken. -energyMaybeDerivs0: changes s.t. modified.clear() is called after any radius updates. -ensemblePot-ized: now supports EnsembleSimulations. -changed name of setWF to setWeight. -grandMaybeGrad: strength reduction optimizations. -PSolRestraint::deriv: optimized use of DerivList -energyMaybeDerivs0: added omp pragma. python/psolPot.i -fixes s.t. members of Restraint base class are available python/ramaPushPot.py -new energy term based on TorsionDB creates transient repulsive terms which guide torsion angles away from forbidden regions of torsion angle space. python/regularize.py -addUnknownAtoms: added a maxFastIterations argument to avoid infinite loop nmrPot/repelPot.cc -added neighborInfo helper method to get data on neighbors - useful for debugging. -fixed bug in treatment of the nbExclusions in the constructor where some interactions betweeen atoms with the same residue number in different segids would be omitted. -ctor: check for identical segids used pointer comparison, not string. Fixed. -addSelPair/findNeeded: optimization fixup to recompute only the needed atoms for the current selPair. python/sardcPotTools.py -Rfactor: fixed for useSign=False restraints python/selectTools.py -fixed String exceptions -rigidNucleicSelections: o added residue AP7 o THY CM -> C5A o enlarged selections -Deleted groupStrictRigidNucleicAcid and strictRigidNucleicSelections functions. python/simulationTools.py -StructureLoop: added the ivm argument used to assure consistency with averageFitSel -StructureLoop: changed default setting of averageFitSel for EnsembleSimulations: no fitting performed -fixed averageFitSel default logic -StructureLoop: allow averageCompSel arg to be None python/symSimulation.i -now include modified.hh to get ModifiedBase portion of definition sparta/pdb.cc -SPARTA_PDB::calcHBonds: fixed logic for segid comparison - previously -didn't work because atom.segmentName() returned garbage char* python/torsionDBPotTools.py -create_Terminal14Pot: o added nucleic acids o corrected the name of TDBPotl python/varTensorTools.py -topologySetup: added support for the ignore freedom specification -calcTensor: added svdNum argument as alternate method of explicitly specifying how many non-zero SVDs to include. python/xplorDoc.py -writeIndex: changed code to generate google search box python/xplorInit.py -rcDir, rcPyDir: no longer create config directory if they do not exist. This creates a race condition when multiple processes are starting up. Another solution would be to do these checks after socketComm is configured, but as these config directories are not currently used, we chose the simplest solution. -parseArguments: when encountering an unknown option, now print the correct usage string (cmdline) python/xplorSimulation.i -command, shell, deleteAtoms: udpated to call updatePseudoAtoms TCL Interface tcl/noe_tools.tcl -check and throw error if bad -likelihoodCutoff argument is specified XPLOR Interface source/ccalls.c -frtn_clock: switched from clock_gettime to gettimeofday for portability to Darwin. source/darwin64time.f source/x86_64time.f -XXNXTFI: increase max path length to 1024 characters (from 132). This caused many problems with long paths. source/hbdb.f -alloc_segarrays: no longer attempt to free pointers on the first call- to avoid segfault on Darwin. source/xplorFunc.f -now report wallclock time instead of CPU time. This is so that output is useful when OMP_NUM_THREADS>1 Topology and Parameters toppar/eefx/protein_eefx2.par -added improper parameters for D-amino acids toppar/waterRef/parallhdg5.3.pro.new -added impropers for d-amino residues -added default value for $par_nonbonded XPLOR variable toppar/nag.par/top -fixed stereo improper for C5 toppar/protein.top/par: default now bumped from 3.1 to 3.2 toppar/protein-3.2.par toppar/protein-3.2.top -mods to those in version 3.1: o gave CZ of ARG and TYR non-carbonyl radius o added CTYR-OH-PPP angle o Added CIAP (Cysteine-iodoacetamido-PROXYL) residue Low-level CDSlib/cdsVector.hh -added (untested) max and min functions python/cdsVector_template.i -fixed the definition of min/max (by changing norm(double) common/atom common/ensembleSimulation common/simulation common/symSimulation common/xplorSimulation -changed accessors taking/returning char* objects to use String instead common/atomSelLang.cc -improved error message when getting inconsistent named selection message- to aid in debugging vmd/publicVMDInter.cc -psfWrite: fixed use of sprintf with Simulation String accessors. sparta/sparta.cc -changed container type from reference to pointer. common/derivList.cc -mods to propagate derivs between layered SymSimulations common/simulation.cc -mods to propagate modified status to layered Simulation -getXplorSimulation: added support for nested SymSimulations python/Makefile -PYTHON_SRC: added densityGridTools.py python/pyXplor.cc -command, shell module shortcuts: now use XplorSimulation versions, -instead of those from XplorWrap source/x86_64time.f -GETSYS: now use ARCH env var for this to make it easier to identify the subarchitecture/os of the build machine surfD -reworked to allow OpenMP-parallelization of surface tesselation facility: o removal of thread-shared Constraints and Current_atom variables - they're now per-thread quantities on the stack. o changed circular linked list of Torus to a simple CDSList. o removed functions and variables from Surf class to help with thread parallelization. Variables now passed on stack. Architecture-specific added the Linux_x86_64.old architecture for systems with glibc versions earlier than 2.12. The .old version will be frozen compiled with version 16.0.3 Intel compilers, while Linux_x86_64 will be compiled using more recent compilers. arch/Linux_x86_64/Makefile.defs -OMITTED_SHARED_LIBS: added SELinux libraries arch/Linux_x86_64/source/Makefile -added ARRAY_F_DOWNGRADE for gcc version 7 arch/Linux_x86_64/surfD/Makefile -compiler optimization reduction for Intel compilers -optimization downgrade for 2017 Intel compilers: without this, Surf sometimes gets in infinite loops. arch/Linux_x86_64/tcl/Makefile -TCL wrapper optimization downgrade arch/equivList -updated Mac Darwin_12_x86_64 entry so that subsequent releases work -added a line so that Linux_x86_64 machines use Linux_x86_64.old if Linux_x86_64 is not present arch/getGlibcVersion -helper to get major/minor glibc version Helper Programs configure -now hardcode __VERSION__ in a second pass over the .in files bin/aveStruct.in -added support for averaging over MODEL records bin/calcSARDC.in -added the -noUseSign command-line option -added the -aveType option bin/calcSAXS.in -changed treatment of -ensWeightsRegexp option: now it has a default value which will be used only for Ne>1 ensembles. It should be overridden by the -ensWeights option bin/calcTensor.in -added the -genNames command-line argument for generating RDCs not present in an assignment table. -added svdTol command-line option. It may be useful for systems with symmetry. bin/contactMap.in -added the -suppressDiag option -added the -cmpPDB,-cmpPSF options bin/getBest -fix filenames when subdirectory was specified in the script bin/pdb2psf.in -add the -selection option for selecting a subset of atoms to be in the PSF. bin/targetRMSD.in -added suppressExceptions=True argument to loadPDB, to allow partial processing of PDBs which can't be completely understood by psfGen.seqToPSF bin/testDist.in -now place output in a file in the testOutput subdirectory, if it exists and is writable -output dir support: fixed OpenMP num threads spec in filenae. bin/xplor.in -now allow TOPPAR env var to be overridden -fixes for -pyshell when pyXplor is used as an interpreter- helper programs gave pyXplor usage info before this fix -updated to give usage info for pyXplor and tclXplor invocations -renamed the -version flag to -features. Added new -version argument to return the version only -don't apply the LD_BIND_NOW hack to Linux_x86_64.old architecture Example Scripts eginput/pasd/cvn/cvn.psf eginput/pasd/mth1743/mth1743.psf eginput/sardc/gb3.psf eginput/saxs_EI/ei.psf -PSF files regenerated for updated top/par entries in default files eginput/gb1_rdc/fold.py -added note regarding how use of hbdb during folding can lead to reduced precision eginput/pasd/cvn/convert_restraints_to_xplor.tcl -removeLowLikelihoodPeakAssignments: fixed name of the -cutoff flag (again). eginput/psl/ -initial partially worked version of PSL scripts from G. Cornilescu eginput/eefx/fold.py -earlier turning-on of all atom REPEL term plus other updates s.t. -quick runs complete eginput/pre/fitting/calc.py -initialize coordinates so energy term setup doesn't fail eginput/rna/refine.py -placed torsionDB and repel14 togther in script -now load 'nucleic' rather than 'nucleic-3.1.par' -generate_aptamer_psf.py: now doesn't explicitly set default toppar value Changes from 2.44 to 2.45 --> 2.45 released 2017/04/19 Python Interface python/atomAction.py -added mass helper function nmrPot/atomDensity -added AtomDensity::writeCCP4 with test python/avePot.py -AvePot ctor: update to allow wrapping of non-proxied Pots. python/csaPotTools.py -Merged changes from F. Marassi- introduce the Nss parameters. nmrPot/densityGrid python/densityGrid.i nmrPot/atomDensity -split DensityGrid into its own module - and added some python code for backward compatible access through the atomDensity module python/eefxPotTools.py -added imports from membraneTools for functions moved there for backwards compatibility python/ensWeightsTools.py -now report weights statistics in .stats file python/ivm.py -setBaseAtoms optimization python/membraneTools.py -new module with helper functions for assisting calculations with implicit membranes. Contributed by Ye Tian. python/nefTools.py -removed spurious beginning of line spaces. -updates for NEF 1.0 -seqFromNEF: - add support for dummy linking - fix support for null residue_variant - fix support for null cis_peptide -genMolecularSystem: - pseudoatoms now get dummy linking - fixed cis_peptide output. This really doesn't work as cis-ness is not yet tested (read from coordinates), but proper null value (.) is now output. -removed cross_linking from sequence info -toNefAtomname: added conversion for XPLOR * wildcard -genMetadata: added tag _nef_nmr_meta_data.format_version -fromNefAtomname: fixed translation for NEF % character python/noePotTools.py -writeNEF: fixed wildcard finding algorithm to be more robust and inclusive: no longer generates doubled wildcards, and should do better when matching multiple digits python/pasd.py -added sparkyPeaks, xeasyShifts common/pdbTool -renamed models() --> numModels(), and created models() member which returns a list of models -readPDB: fixed logic for case when no model is specified. We want to read the first model and then exit. Previously, we assumed that models where numbered from 1, so the default behavior failed. python/pdfCore.i -pdfEvaluate: OpenMP parallelized python/posDiffPotTools.py -create_PosDiffPot: added optional absoluteFit argument nmrPot/posSymmPot -added support for absolute fitting with new absoluteFit accessor nmrPot/prePot python/prePotTools.py -PREPot::setT?Type: now require that corresponding clock atoms exist. This required a change in one test script, and in the create_ function -setClockDeriv: protect against updating clock atom derivs in non-member 0 members -addClockAtoms: o now only add clock atoms to ensemble member 0 o moved simulation arg to end for backward compatibility o fixes for Ne>1 EnsembleSimulations nmrPot/probDistPot -added correlation() method -added correlation potType (corrected correlation definition) python/probDistPotTools.py -added analyze function python/protocol.py -initCoords/match InexactAtomEntry: added the assumeSegid optional argument, so we can more easily load pdbs using psfs with no segid and visa-versa. -loadPDB: now can pass failIfInsertion through to psfGen.psfToSeq. -matchInexactAtomEntry: with strictResNames==True, now consult psfGen.variantResidues before deciding that residue names don't match. -initHBDB: improved selection documentation -downloadPDB: broke out connectAttempts variable into module-scope version so that it can be set externally. python/psfGen.py -added residue variant capability and HSD amd HSE residue types + test -pdbToPSF: added the useChainID optional argument which is passed through to seqToPSF -pdbToSeq: failIfInsertion is now passed via kwargs to seqFromPDB, seqFromCIF -autoProcessPdbSSBonds: abort if an insertion code is found. python/rdcCorrPotTools.py -Rfactor: updated selection conversion to correspond to current EnsembleMemberSimulation::atomID() definition python/rdcPotTools.py -create_RDCPot: added the optional subSel argument -write/readNEF: changed NEF tag use_sign --> xplor_nih_use_sign readNEF now applies it correctly to the energy term. -readNEF: properly deal with missing xplor_nih_use_sign key nmrPot/repelPot.cc -NeighborBin: optimization: now figure out which atoms need to be considered by generating an isNeeded entry for each atom which is updated in add/removeSelecitonPair. Previously, this was generated each time neighbors() was called. -energyMaybeDerivs: now compute selPairEnergies in a thread-safe fashion python/residueAffPotTools.py -create_ResidueAffPot: fixed AtomSel with simulation argument unspecified python/restraintStats.py -updated to support statistics on vector quantities python/sardcPotTools.py -added initial, provisional version of writeNEF -simplified internal SARDC implementation by replacing RDC prefactors with a single value, scale. The computation of this factor has been moved to sardcPotTools. For XDIPO-style restraints, a new useDist argument has been added to create_SARDCPot. python/selectTools.py -added function isCisPeptide python/simulationTools.py -StructureLoop: o added the writeSelection optional argument o pdbTemplate argument: changed default value to SCRIPT_STRUCTURE.pdb and SCRIPT_STRUCTURE_MEMBER.pdb for EnsembleSimulations. -StructureLoop.run: - fix to check for all ensemble files with calcMissingStructs logic - added logic to allow the number of atoms to increase during a structure calculation, yet still reinitialize the coordinates of the atoms which were not added in subsequent calls to structLoopAction. - the check that initCoords has sim.numAtoms() has been expanded, and now a warning is printed. -genAveStats: protect re-writing of lowEnergyStructure with barriers to avoid races when other processes read it. -registerExtraStats: documentation update that lists of values can now be reported on common/symSimulation.cc -syncDerivs: missing transpose of rotation matrix! -added rotateSel, rotateAmount s.t. the symmetry axis can vary surfD/io.cc surfD/surf.hh -added surfOutput for output like the original surf program - for use with VMD python/torsionDBPotTools.py -create_TorsionDBPot: now check that threshold value is found in db files: throw an exception if not. python/varTensorTools.py -varTensorTools.calcTensor: added the suppressExceptions option; this is now used in simulationTools so that situations where there are fewer than 5 RDCs/CSAs don't cause program crash during final analysis. python/waterRefineTools.py -refine: - keepWaters now works within simulationTools.StructureLoop when averageFitSel is not null. - added call to updatePseudoAtoms after deleting and remaining waters at the start of this function. This is required when keepWaters=True and the number of structures calculated is less tham the Xplor_NIH number of processes. python/xplorInit.py -requireVersion: fixed logic when requesting a point release of the current version -deal with strings in version_info: they're considered 0 python/xplorSimulation.i -XplorSimulation: added the addAtom method; used by hmxPotTools -deleteAtoms: added warning if there's a current EnsembleSimulation TCL Interface tcl/noe_tools.tcl -writeOneXplorNOE: add in parentheses in ASSIgn statement in case they're left out of the top-level atom selections Examples eginput/eefx/fold.py -changes merged from the tutorial eginput/PSF_generation/tags/mtsl/addMTSL.py eginput/PSF_generation/tags/proxyl/addPROXYL.py -eginput/PSF_generation/tags/mtsl/*py: 10 altconf option now works eginput/gb1_rdc/ -renamed anneal2.py --> fold.py (including analysis script) eginput/gb3_ensemble/noise_calc_for_two.py -protect file output writing from races by non-process 0 processes eginput/protein -added symlink to gb1_rdc directory Low-level nmrPot/atomDensity nmrPot/probDistPot -cleanup, including separation of derivative of energy wrt density (now in ProbDistPot::energyMaybeDerivs0) from the gradient of density wrt atomic position (still in AtomDensity::calcDerv). This will make it much simpler to evaluate alternate energy functions -moved PotType enum from AtomDensity to ProbDistPot -ProbDistPot::energyMaybeDerivs0: added omp/vector parallelization pragmas CDSlib/array3D.cc CDSlib/cdsVector.cc -set(): precompute array limit in const variable so loop can be vectorized nmrPot/densityGrid.cc nmrPot/densityGrid.hh -inlined toGridX/Y/Z common/ensemblePot.cc -ctor: added registerTo(esim). This to try to avoid situations where the EnsemblePot exists after the EnsembleSimulation common/ensembleSimulation -barrier: added better test of lost synchronization by checking the -barrierID of all ensemble members. -atomID: changed to return member's rawID for non size=1 EnsembleSimulations. This makes sense, but is at odds with the preceeding comment. It may fail in some XplorWrapProc situations, but all tests pass -shutdown: disable all signal handlers before final barrier. This to avoid situation: job finishes (xplorFinal.py executed in process 0), but other processes have not finished shutting down yet, when the queuing system sends SIGTERM to all remaining processes. This causes coredumps for the jobs not yet completely shut down. python/ensembleSimulation.i - _eq_, _neq_: properly treat case that other is None - now python disowns even size-one EnsembleSimulations. - added shortcuts for sizeOneSimulation, getEnsembleSimulation, currentSimulation static methods python/ensWeights.i -setWeights: added barrier where it really gets called CDSlib/mat3.hh python/cdsMatrix.i -moved rotVector from .i file to CDSlib bin/includeCC -fixed regexp for nonduplication to be more robust. Helper Programs bin/calcPSol.in bin/targetRMSD.in -now use new models method to get list of models present. Previously, we assumed that models always numbered from model 1 bin/calcSARDC.in -in plots, scale down subSel font size so it doesn't overwrite R-factor value bin/calcSAXS-bufSub.in bin/calcSAXS.in -changed call from xplor.simulation.deleteAtoms to ens.deleteAtoms to avoid warning message -fix background treatment in output calcd curve bin/calcTensor.in -1) added -crossSel command-line option s.t. a subselection of the cross-validated RDCs can be used. This can also be used with a single table. -2) the use of -crossValidate no longer implies -showRDCs -made plot square -corrected axes lims bin/domainDecompose.in -get default values to print in usageString bin/genSurf -added genSurf helper for vmd-xplor - to replace the surf program bin/getBest -added the -symlinkSuffix option bin/plotLog.in -reduced default font size - necessary due to increased font size with matplotlib-2.0 bin/ramaStrip.in -udpated contour color setup for newer version of matplotlib bin/targetRMSD.in -now allow very many unknown atoms -improved error message if there is an error reading pdb file/model. bin/xplor.in -fixup s.t. the killChildren signal handler is only registered for process 0 -fixup s.t. -debug can be used in parallel mode Architecture Specific arch/equivList -on 64 bit machines, Mac OS X 10.10 is now required. 10.12 is now supported. bin/xplor.in -added LD_BIND_NOW workaround for Linux_86_x64 Intel Compiler newer glibc interaction. Databases databases/torsions/dna/dna_v0.dat -Added elevels to dna torsion database databases/torsions/rna/rna09_v0.dat: -added elevel entries toppar/eefx/protein_eefx2.top -added GLYP patch for n-terminal GLY Changes from 2.43 to 2.44 --> 2.44 released 2016/11/30 XPLOR Interface source/hbdb.f -improved warning message source/psf.fcm source/psfio.f source/xplorFunc.f -added XPLOR structure DOSCratch statement source/orientations.f -READORIEGAUSS: be more verbose about printing warning message when the number of quarts exceeds MAXORIEGAUSSIANS Python Interface python/atomSel.i -added AtomSel splice support common/atomSelLang.cc -cached simulation determination: now use Simulation::modifiedID to get a base Simulation, so that things work ok for nonlocal EnsembleMemberSimulations python/diffPotTools.py -added guessed radii for phosphorous nmrPot/eefx -fixed e14fullscale setter name -NeighborBin::updateBin: protect against trying to allocate too many bins -EEFxPot::energyMaybeDerivs: o micro-optimizations o converted derivAccumList to derivNeighborList: avoids CDSList::append in inner loop, and storing index, Vec3 values o re-enabled the nj b' added baseSize to constructor, and added weightsFromAngles method -derivedSpecs: added constant term, and separated baseWeights from weights s.t. derivedSpecs are always used -minFrac: now applies only to baseWeights -setWeights: now use nonlinear least squares to get weights as close as possible (frequently won't be possible to match exactly for non-unit matrix derivedSpecs). -computeWeights: now always check for normalized weights common/ensembleSimulation -EnsembleMemberSimulation::modifiedID: moved definition to .cc file -EnsembleMemberSimulation::modifiedID: change of behavior for nonlocal ensember members -sync: now call AtomSelLang::clearCache if num atoms change in a member -add/removeDependent: now different behavior for nonlocal members python/evRestraints.py - new module python/gyrPotTools.py -added averaged Rg and gyration volume to quantities reported in .stats python/ivm.py -IVM: added addConfigAction. These are now called by protocol's torsion/cartesianTopology before other topology setup. python/nefTools.py -made residue_type --> residue_name switch -readNEF: o fix to honor startResid o now support nucleic acids, cyclic proteins, and cis-residues -moved psfGen.seqFromStar to seqFromNEF, updated for NEF 1.0 nmrPot/noePot -added weight and probability NOERestraint members, and WEIGht and PROB specifiers for restraint tables -addRestraints: fix problem accessing bogus pointer after catching addition of bad restraint -genRestraints: added the deltaSequence and asList arguments python/globDiffPotTools.py -added globDiffPot code and test python/pasd.py -nefShifts: added name argument to support files w/ multiple cs lists nmrPot/posSymmPot -PosSymmPot: added per-atom centroid weighting s.t. all-atom to glob restraints can be implemented -added weight() accessor -PosSymmPot::calcRotMat: make more robust in the face of negative eigenvalues -addEquivAtomSelPair: now throw exception if order atomSel is specified python/posSymmPot -Fix so that equivAtomSelPairs method works python/prePotTools.py -Qfactor, tauc: now support AvePot'd terms (is this a good idea?) python/protocol.py -initCoords: added call to XPLOR struct DOSCratch statement -initParams/Topology: o added optional system argument to specify which system's parameters a file should be used for. o now check _par_vers for all defined systems so specifying system is seldom necessary. -initOrie: o rationalized the use of selection, so now it can be a proper AtomSel. As a result, removed the simulation argument. o should now handle arbitrarily-sized systems as the maximum number of restraints and residues is no longer hard-coded. o the selection string is no longer used in case where pairs are specified. o incremented numResidues by one. There may be an off-by-one problem in the setup for residues. -initPlanarity: added the basePairs argument, allowing restraints to be automatically generated if a list of paired based is specified. -addTopologySetup: added topologySetup function registration. This is now used in torsionTopology and cartesianTopology, instead of having to import and call each potential-specific term. -initNBond: replaced repel logic with call to repelPotTools.getCheckRepel nmrPot/psolPot -rms(): added call to modified.update() to that it's current. python/psolPotTools.py -added Q-factor reporting -changed default value of domainSeleciton to exclude pseudoatoms python/pyConvert.cc -toPy( Pair ): -now call initSIGPY() to initialize swig pointer types python/rdcPotTools.py -read/writeNEF: updated to treat all RDCs associated with a particular alignment tensor. -readNEF: updates to support calcTensor script -added function to compute calcd/obs correlation; now print this in analyze, and in stats -Rfactor: change behavior if denom is zero: now return -1 python/regularize.py -renamed addUnknownAtoms to addUnknownAtoms_old and -addUnknownAtoms_new to addUnknownAtoms, with a addUnknownAtoms_new alias nmrPot/repelPot -changed behavior of bumps() method to return bumps for all selection pairs by default -added rMin accessor -added the eMax accessor per-interaction maximum value -added calcSelPairDerivs and selectionPairDerivs members/accessors to obtain per-selection pair gradients. -selectionPairEnergy: added call to modified.update() so calcEnergy need not be first called. -RepelPot::NeighborBin::updateBin: now protect against overallocating memory for very large systems, and against uninitialized atom positions -RepelPot::NeighborBin::updateBin: deal with case of zero atoms -RepelPot: fixed gradient for scale!=1 ; added test python/repelPotTools.py -create_RepelPot: added suppressException optional argument added the checkGetRepel function to implement repel consistency check, and fix this to really catch inconsisten protein and nucleic acid parameter sets. -added printSelPairStr object to RepelPot python/selectTools.py -correctSymmetricSidechains: use more straightforward logic in generating the default selection, and no longer convert to atom indices -convertToAtomSel: now support conversion from indices -getSegsResidues: rationalize s.t. selection isn't prematurely converted into indices -new function genPlanarityRestraints common/simulation.hh -added numDependents accessor- useful for debugging python/simulationTools.py -renamed RampParam --> RunAction -added IVMAction class python/socketComm.py -startServer: listen: increased the backlog value from 1 to 5 -Connection.writeln: switched to using lower-lever socket send function instead of file object interface, because the later is not safe against interrupted system calls. python/surfD -fixup to allow generate call to update_radii() from Python common/symSimulation -added centroidProj component to SymSimulationOp, addCopy surfD/compute.cc surfD/surf -calcSA: now takes a selection s.t. the surface area of a subregion can be computed python/torsionDBPotTools.py: -added create_Terminal14Pot function to avoid eclipsed conformations for dihedrals not covered by torsionDB. python/torsionPotTools.py -Xplor_readNEF: -fixed for NEF 1.0. -now print proper error messages for restraints we can't handle. Example Scripts eginput/gb1_rdc/testNEF.py -now verify RDC restraints from NEF eginput/gb1_rdc/makeNEF.py -now write RDC restraints to NEF eginput/gb1_rdc/anneal2.py: now use Terminal14Pot new addConfigAction topology setup eginput/eefx/fold.py eginput/eefx/refine.py -modernized the EEFx setup eginput/eefx/membrane/fold_EEF.py -modernize examples eginput/pasd -updated with NEF version 1.0 example; added validation eginput/capsid/ eginput/gb1_rdc/refine.py eginput/pre/refine/newRefine.py eginput/rna/ eginput/sardc/refine.py -updated to use RepelPot and Terminal14Pot, or commented that such an update is recommended Topology/Parameters, Database entries databases/rna_rna_pairs/rna_quarts_setup.tbl protect against using partner info (from store4) when it is not set. In this case, the values are garbage, and in some cases these will generate XPLOR errors. toppar/protein-3.1.par toppar/protein-3.1.top -added top/par for residue LYR, Lysine with retinoic acid from F. Marassi -added residue AIB (alpha-aminoisobutyric residue) toppar/eefx toppar/protein_eef.par@ toppar/protein_eef.top@ -renamed eefx top/par files and symlinks to match those in the eefx2 paper Helper Scripts bin/calcPSol.in -added Q-factor reporting; added support for back-calculating sPREs with no experimental table (with -table generate -genSel) -now print out fit value of probe concentration -added support for multiple pdb files, including MODEL entries and ranges. -fixed rho0 calculation when multiple structures specified bin/calcTensor.in -added NEF support -documentation update -now don't clobber tensor pseudoatom coords when structure is read bin/slurmXplor.in -now support the --ntasks slurm sbatch argument -now set the --cpus-per-task slurm argument based on ensemble and OMP parallel settings -now use -s argument to hostname when comparing to node name to have a better chance of matching. Architecture-specific arch/Darwin_10_x86_64/Makefile.defs -updates for the 2017 Intel Compilers - courtesy of Pascal Mercier -for gcc: added OpenMP flags if USE_OPENMP set Changes from 2.42 to 2.43 --> 2.43 released 2016/08/31 Example Scripts eginput/cmdline/testParallel.py -commented, and now no longer dependent on ssh/rsh eginput/gb1_rdc/analyze_refine.py -various update/modernizations eginput/gb1_rdc/anneal2.py -RepelPot setup change: now use 1-4 interactions during high temp. dynamics, but not during simulated annealing. This seems to work well eginput/pasd/cvn/validate.py -loosened accuracy threshold from 1.0 to 1.1 angstrom; increased coverage threshold from 4.5 to 5.5 lr hl assignments per residue eginput/pasd/nef/initMatch3dN.py -fixed up to use portable string rep to pass pointer from Python to TCL eginput/pre/atcun_motif/addATCUN.py -addATCUN.py: atoms added before optional replicatio -New eginput/PSF_generation/tags/atcun_motif/addATCUN.py eginput/pre/refine/generate.py -switch to default nucleic.top eginput/pre/refine/validate.py -replaced RAMA with TorsionDB - HHn RDCs: loosen tolerance from 1 to 1.2 Hz - refRMSD accuracy tolerance: loosened from 0.83 to 0.95 angstrom - refRMSD fit selection: now omit phosphate oxygens, as they are swapped in the reference structure eginput/pre/refine/newRefine.py -replaced RAMA with TorsionDB -initCoords: no longer call correctSymmetricSidechains: may conflict with defs in dihedral table -after reading input file: now flip coords of O1P/O2P -now erase and rebuild all proton coords -now use final force constant throughout for DNA torsionDB term -now use nbxmod=4 with VDW -now use hingebend nodes for all riboses eginput/pre/atcun_motif/ => eginput/PSF_generation/tags/atcun_motif/ eginput/protG/anneal.py -fixup to allow small repel value to initNBond eginput/PSF_generation/genDNA24bp.py -modernized and made more robust eginput/sardc/gb3.psf eginput/sardc/refine.py -fixup for protein.top/par update, and use of torsionDB eginput/analysis_SRY eginput/sry eginput/prot_prot eginput/fbp eginput/DNA-SRY eginput/T1T2 eginput/mef_dna -moved these examples to the deprecated subdirectory Helper Programs [ Now build helper script/program documentation from their command-line accessible documentation. This documentation is available at the new page: https://nmr.cit.nih.gov/xplor-nih/doc/current/helperPrograms ] bin/calcSAXS.in -added support for :model suffix syntax for pdb files bin/contactMap.in -added the -printAtomContacts and -noPlot options bin/getBest -fixed logic for case when both -suffix and -symlinks are specified -added --help-cmdline/description/usage for compatibility with automatic document generation facility bin/plotLog.in -merged features from forked plotLinear. New options: -asTime, -legendLocation, -line, -figsize bin/xplor.in -removed debug text -split usage function in two with new addition usage_common whose output can be obtained by itself with the new -help-common option Parameters/Topology toppar/atcun.top/par -New atcun topology and parameter files toppar/edta.par toppar/nucleic-1.2.top -TED: added missing impropers for linker planarity toppar/eefx/protein_eefx.par -Modified protein_eefx.par toppar/nag.par toppar/nag.top -fixed improper def in patch region databases/torsions/dna/ -Added databases/torsions/dna -Moved protein-3.0.* => protein-3.1.* toppar/nucleic-3.1.top -changed TED H6 chem type to match that of thymine toppar/nucleic-3.1.par -flipped sign of C2' improper s.t. is has proper proton IUPAC naming toppar/nucleic-3.1.par toppar/nucleic-3.1.top -added missing THY methyl improper toppar/protein-3.1.top -fix ARG symmetric branch naming - it is now consistent with the docstring for selectTools.correctSymmetricSidechains toppar/nucleic.par@ toppar/nucleic.top@ toppar/protein.par@ toppar/protein.top@ -bumped default versions to 3.1 (using molprobity radii) Python Interface nmrPot/atomDensity nmrPot/probDistPot.cc -DensityGrid: added the setData accessor -Density Grid: removed members alen, gridCoords and method getGridCoords common/atomSel.cc -intersection: optimization, and addition of optional createString argument which can be set false for optimization if the string is not required -intersection, asUnion: now return first selection if two selections are identical common/atomSelAction.cc -Fit::construct: now throw exception if selection contains fewer than 3 atoms. common/atomSelLang.cc -atom method (for ATOM selector): optimization -AtomSelLang: added caching of atom name/resid/segid info. This greatly speeds repeated AtomSels for large structures. Of course, the cache must be updated when atoms are added or changed. Also, the cache entries must be deleted entirely if atoms are deleted. -changed static variable atomSelLang_result to static class member AtomSelLang::result -changed AtomSelLang::return type to typedef -added atom ordering to AtomSelLang, Simulation and AtomSels -added AtomSelLang::setUseSegmentCase to help support circumstances where case is significant in segmentNames. If you have a lower-case segment name (or chainID) place this at the top of your script: import atomSelLang atomSelLang.setUseSegmentCase(True) common/atomSelLang.cc -changed AtomSelLang::ResultType from boolVec to class python/Makefile -PYTHON_SRC: added chirality.py nmrPot/csaPot.cc -now use BogusAtomSel for axis atoms in restraints to arbitrary text can be specified between parentheses python/csaPotTools.py -create_CSAPot: added the optional string argument so restraints can be directly specified nmrPot/eefx -reverted setter accessors named useOption(val) back to setOption(val). The rationale is that the getters are named option(), and that the Xplor-NIH standard is that accessors be named option/setOption. python/eefxPotTools.py -create_EEFxPot: slight tweak to paramSet configuration python/noePotTools.py -create_NOEPOt: splitRestraints setup: changed naming of terms, removing digit. now support NOEPot terms with > 1 selPair (ASSIGN ... OR entries) -readNEF: now print number of sucessfully loaded restraints in addition to number found common/pdbTool -write functions: now wrap the atom id number at 100,000 so that it no longer overflows its field sparta/pdb.cc -SPARTA_PDB::updateNeighborLists: add optional arg to call to intersection for optimization common/pot.hh -Pot::calcEnergyAndDerivs argument changed from reference to pointer. clang and gcc-6 did not work with any optimization with the previous defs using the idiom of passing a dereferenced null pointer when gradient evaluation was not desired python/protocol.py -added learnParams function -initNBond: change the default repel value to 0.9 for nucleic and parameter versions 3.1 and later. Also check that the repel value is appropriate if a recent parameter set is used. Finally, check for mixed use of pre- and post-3.1 parameter sets. Added the new optional suppressException argument. python/psfGen.py -cisPeptide: now raise an exception if no peptides are selected python/regularize.py -fixupCovalentGeom/IVM: fix call to initNBond to leave out repel value s.t. it will work with both pre- and post-version 3.1 top/par settings nmrPot/repelPot.cc -ctor: protect against bad values in nbfix term, and print warning -info: now call modified.update() so that it doesn't crash if called first python/repelPotTools.py -added use14 arg to create_ and initRepel funcs -create_RepelPot: catch cases where sigma or LJ B parameter is zero and reset to 1 to avoid NANs in C++ ctor -initRepel: o support case of AvePot-wrapped term. o now set the 1-4 scale factor to 1 o fix the version detection logic s.t. repel is set to 0.9 for newer parameter sets. -create_RepelPot, initRepel: added logic from protocol.initNBond for setting default repel value and checking for inconsistancies in repel and parameter sets -repelPotTools.analyze: prettify selection pair output python/selectTools.py -IVM_flexibilizeRiboses: added default value to sel argument, and updated so that it only acts on riboses. -IVM_breakProlines/Riboses: made more robust for the case of structures with missing atoms. python/simulationTools.py -StructureLoop.genAveStats: o lowest energy structure's energy is now re-evaluated prior to final writing (after fit). The energy reported in the .stats file was frequently different from that in the PDB headers before this change, when it was thought that this was unnecessary as the lowest energy structure is not changed by the fitting procedure. o all instances calling atomSelAction.Fit: now enclose in try .. except statements, so catch cases where fewer than 3 atoms are attempted to be fit. o When rewriting fit structures, preserve extraRemarks -StructureLoop.run: deal correctly with the case structure doesn't pass averageAccept. Previously, averageContext would not be called on these structures before they were written out. python/torsionDBPotTools.py -optimizations: o create_TorsionDBPot: no longer convert energy values to floats: this is now done by PyConvert in the TorsionInterpolPot* constructors. o setup_pot: now pass very simple, single atom selections to the constructor for each term. Previously, the complete metaselection was passed, leading to bad N^2 slowdowns for large structures. o parse_metaselection: modified to remove _RESID* entries and return their specified offset (if any). This modification means that each metaselection now requires a resid _RESID* component. o Added 'dna' system to torsionDBPotTools nmrPot/utils.hh -moved BogusAtomSel to utils vmd/vmdInter.cc -objName: no longer convert names to lower case python/xplorInit.py -parseArguments: o added the cmdline, description, and usageString arguments o will now internally handle --help-cmdline, --help-description, and --help-script options. o updated help-script behavior to add title, and change order to description, cmdline, usage. XPLOR Interface source/update.f -suppress warning messages about erased terms if WNRLEV==0 TCL/PASD tcl/sa_protocols.tcl -fixup for protein.top/par update: final repel value now 0.9; now call Python protocol.initNBond, instead of directly calling into xplor -fixes for repel radius scale factors to be consistent with protein-3.1.par Architecture-Specific Changes arch/Linux_x86_64/source/Makefile -updated for 2016 Intel Compilers -optimization downgrade for fenergy.f with 2016 Intel Compilers -apply array.f optimization downgrade for gfortran version 6 arch/Linux_x86_64/common/Makefile - now emptybecause the Xplor-NIH idiom of using null references has been changed to use pointers arch/Linux_x86_64/surfD/Makefile -optimization downgrade for 2016 Intel Compilers arch/Linux_x86_64/Makefile.defs -updated openmp option for Intel Compilers, and moved to global location (Makefile.defs) -Intel Compilers: now link libifport statically: this prevents Fortran's system() from segfaulting when run with a libc other than that with which was used for compilation -added def of GCC_MAJOR/MINOR_VERSION if gcc detected -no longer leave out libresolv arch/Linux_x86_64/tcl/Makefile -apply optimization downgrade for gcc version 6 Low-Level Libraries CDSlib/spline3D.cc -optimizations of genTricubicCoeffs bin/seq2psf.in -fixed usage string and added --help-script option for web-doc generation bin/targetRMSD.in -updated usage for web-doc generation bin/scriptMaker.in -added usage info with --help-script option for web-doc generation bin/pdb2psf.in -switched usage info to use new parseArguments facility Makefile -split BIN_INHELPERS off of BIN_INSCRIPTS -added web-helper-doc rule Changes from 2.41.1 to 2.42 --> 2.42 released 2016/05/02 Example Scripts eginput/rna new example. Moved the old RNA example (eginput/rna_refi) to eginput/deprecated eginput/gb1_rdc/refine.py -added HBDB, updated comments eginput/gb1_rdc/analyze.py -updated from tutorial version Helper Programs bin/calcPSol -added -rmin and -genPDB options -now does rho0 prefactor fit unless -noFitConc is specified. -added -plotVsResid option configure -now test for spaces in installation path and exit if found bin/contactMap -added -xticks, -yticks options -added the -printContacts and -absolute options -adjusted the ranges s.t. the resid numbers are better centered on the x- and y-axes -fixed bug if both -absolute and -printTable specified -added -includeZeros flag and changed the default to not print zero-valued fields when -printTable is specified bin/contactMap -allow per-selection pair cutoff specification bin/echo -fixed default path and removed debug output bin/ens2pdb -added the -ensTerm option - necessary for structures with multiple EnsWeights terms -added the -ensMemberOrder flag bin/ramaStrip -added color:colorName entries for filenames Parameters / Topology toppar/charmm22/topallh22x.pro -included change from imm1 branch introduced by Ye Tian which -removes a all of dihedral terms in the PPG1 patch definition. toppar/protein-1.0.top -optional enable auto-generated dihedrals for all residues. This only works with Xplor-NIH version 41.2 and onwards, as it requires a change to rtfio.f toppar/protein-1.0.par -fixed nbfix comment Databases -Added databases/torsions/rna/eg_generate_potential toppar/eefx/charmm22/ toppar/charmm22/topallh22x.pro -charmm22 force field added. Python Interface python/atomAction.py -randomizeVelocities, translateFit: updated to use selectTools.convertToAtomSel python/chirality.py -initial version of absolute chirality module common/derivList -added sync method and synced bool for synchronizing SymSimulation gradient python/eefxPotTools.py -removed the alignTensorToZ function: it is now in the varTensorTools module -removed the EEFxBoundary function: it is replaced by the create_EEFxBoundaryPot function -added module-local variable useTorsionDB -new function initEEFx for appropriately intializing toppar values -create_EEFxPot: paramSet arg now takes a default value of None, and now, by default, an attempt is made to set this using the value of the XPLOR variable protein_par_vers which should be set in the protein parameter file. Additionally, this value is used to set the useE14FullScale value of the EEFxPot term. common/ensWeights -replaced symmetryTrans w/ more general derivedSpecs method to specify weight constraints python/ensWeightsTools.py -updated for symmetryTrans -> derivedSpecs transition -added helper function: optimizeWeights python/nbTargetPot.i -added sel() method for compatibility with PSolPot python/nonBondTools.py -readXplorRadii: (mostly) fixed logic for nbxmod=+/-5; still need to read 1-4 parameters common/potList -add: -No longer sort the energy terms by name. They now stay in the order in which -they were added. -energyReports: -These are now sorted by name, so that most of the output remains the same as -previous. python/protocol.py python/selectTools.py -Added flexible ribose capabilities. See the protocol.torionTopology documentation for the new flexRiboseRing argument. -writePDB: removed premature dependence on XplorSimulation -initDynamics: now pass the IVM's simulation to randomizeVelocities python/psfGen.py -seqToPSF: added logic s.t. the correct patch is used for N-terminal GLY for charmm22 nmrPot/psolPot python/psolPotTools.py -renamed dp --> rmin added sel() accessor -removed rho, pconc members - replaced with rho0 python/rdcPotTools.py -composite_Rfactor_infinite: add normalize argument and have it default to True -getRDCType: logic to catch nonprotein CH RDCs nmrPot/repelPot python/repelPot.i python/repelPotTools.py -repelPot: a C++ implementation of XPLOR's REPEl nonbonded term. Easier to apply term to subsets of atoms within a structure, and more accurate violation reporting. An example of use can be found in eginput/gb1_rdc/anneal2.py python/simulationTools.py -StructureLoop: get things working properly if pdbFilesIn contains the STRUCTURE literal- including handling nonexistent files -StructureLoop.getAveStats: protect against case when no structures are found common/symSimulation -new facility to introduce strict rotational and translational symmetry python/torsionPotTools.py -added XPLOR_makeTable python/varTensorTools.py -alignTensorToZ: added the tensorTrans argument python/xplorInit.py -requireVersion: add optional raiseException argument so it can be used to query, without raising an exception python/xplorPotTools.py -fixed numRestraints output for VEAN; added test XPLOR Interface source/hbdb -hbdb: lifted the (silent) limitation of having 10 unique segids source/rtfio.f -RTFRDR: autogenerate: added parser call so that conditionals can be used in topology files Low-level CDSlib/cdsList.cc -contains(): reimplemented getIndex() is not called. CDSlib/fixedMatrix.cc -generic operator*=: fixed typo! CDSlib/mat3.hh -added generic assignment operator -added template arguments - weren't needed before... CDSlib/matrixTools.cc -generic callInverse: added special case for 1x1 matrix. Get a huge speedup CDSlib/subMatrix.hh -added operator-= -added generic versions of assignment operator and operator*= intVar/publicIVM.cc -calcEnergy: added call to DerivList's new sync() method after -evaluating energies and gradients intVar/dint-node.cc -calcP: hand optimizations intVar/publicIVM.cc -calcEnergy: added call to DerivList's new sync() method after -evaluating energies and gradients bin/findSwig -whitelisted swig 3.0.8 python/Makefile -added -modern swig option s.t. modern'' style Python classes are used. This to fix a swig regression when the option is not specified starting with swig 3.0.3. python/pot.i -removed hacky workaround no longer necessary now that swig's -modern option is used python/noePot.i -modified specialized code used to implement backward compatibility for the sel1/sel2 members common/ensembleSimulation.cc -sync: for Ne=1, don't sync pos/vel. This simply overwrites coords, and breaks SymSimulation usage arch/Linux_x86_64/common/Makefile -compiling with clang++ v. 3.8: optimization downgrade for potList.o Changes from 2.41 to 2.41.1 --> 2.41.1 released 2016/01/06 python/simulationTools.py StructureLoop.genAveStats: fix s.t. reported input structure (initialized from) is correct. arch/getDarwinCPU fixed silly bug such that program would not run on Xeon processors. Changes from 2.40 to 2.41 --> 2.41 released 2015/12/18 Example Scripts eginput/capsid/validate2.py -relaxed med-conc. N-terminal R-factor by 0.05% eginput/gb1_rdc/testCalcTensor -updated to include composite results, and to set the -subSel option eginput/gb1_rdc/testCalcSARDC -fixup for addition of normalized R-factor eginput/capsid/validate2.py -relaxed refsaxsChi2 eginput/relaxRatio/calcRelaxRatio.py -added support for XPLOR-style restraints with -restraints argument -added code to rotate structure to demonstrate rotational dependence of the result eginput/relaxRatio/ub_strDet.py -set showAllRestraints for relaxRatio term eginput/relaxRatio/validate.py -moved refRMSD to crossTerms; relaxed refChi2... eginput/pre/refine/validate.py -reduced refRMSD accuracy required eginput/eefx/membrane/ -new EEFx-membrane example Helper Programs bin/calcSARDC.in -now to a per-ensemble printout of RDCs and alignment Tensors -now print overall normalized R-factor -now compute normalized R-factor for each subSel. -fix accuracy of printed ensemble weights bin/calcSAXS.in -added new option -formFactors which can be used to specify Jinbu Wang's calibrated RNA form factors -deal with the case: ensemble specified, but no EnsWeights output in the PDB file (so should use default equal weighting) -fix ensWeights reading logic bin/calcTensor.in -now compute and print as overall R-factor-inf -now use rdcPotTool's new composite_Rfactor_infinite helper -neaten and add composite_chi2 to output -added -fitallExps option; minor docstring edits bin/ens2pdb.in when calling initCoords, previous coords were not always overwritten. Fixed by adding erase=True argument. bin/pbsxplor.in -add support for running in directories whose names include spaces -fix bug in log file specification. May have reintroduced problem with space-containing directory names bin/ramaStrip.in -added the -axesNumbers option bin/targetRMSD.in -now, when -write is specified, REMARK headers are preserved in the output .fit files. -now use the (new) PDBTool::readRemarks method when writeFit is True so that coordinates are not read. Parameters / Topology toppar/nucleic-3.1.par toppar/nucleic-3.1.top -Added residue AP7 -added GTP residue and missing improper for P chirality in 5pho patch toppar/proxyl.par toppar/proxyl.top -Added topology/parameter files for proxyl: toppar/proxyl.* databases/torsions/rna/default@ databases/torsions/rna/rna09_v0.dat databases/torsions/nucleic/ => databases/torsions/rna/ python/torsionDBPotTools.py -Added torsionDBRNA database - implemented it in torsionDBPotTools Python Interface nmrPot/eefx.hh -EEFXPot, NeighborBin: now keep local copies of numAtoms, numBonds such that more atoms (particularly pseudoatoms) can be added after instantiation. Otherwise we get a segfault common/ensWeights.cc -setWeights: fix bug when setting weights for Ne>3 -added clearEnsWeights() and changed return type of getEnsWeights to ref, so they can be modified python/ensWeights.i -updated envelope version of setWeights to allow dictionary argument python/ensWeightsTools.py -freedom: allow 'vary' to be used instead of 'bend' python/ensembleSimulation.i python/socketComm.py -..Comm: added procs() method nmrPot/gyrPot python/gyrPotTools.py -GyrPot updated to support Rg target, with SAXS-defined ensemble averaging along with weight optimization -info: print Rg, Vg for each ensemble member python/nbTargetPotTools.py -create_: now print warning if no restraints are added; now properly register correlation stats nmrPot/noePot.hh -Restraint::selPairs_: now public so that it can be easily swapped python/noePotTools.py -added the genRestraints helper function -genRestraints: added omitIntraResidue argument -added spaceSeparatedToRestraint helper to generate restraints from tabular data. -added functions for initial support of stereo-unassigned geminal nuclei: addNonstereoRestraints and processNonstereoRestraints common/pdbTool.hh -addRemarks: arg can now optionally be a list of strings -added the readRemarks method python/protocol.py -initCoords: added the optional fixProtonImpropers argument. -matchInexactAtomEntry: matchInexactAtomEntry: added rule numbers for all matched atoms (when verbose is enabled) --fixed rule 12 s.t. at least 2 characters match; the way it was, a single character could match twice. python/psfGen.py -seqToPSF: add ability to alter n- and c- terminal patches for RNA and DNA nmrPot/rdcPot1.cc -addRestraints: don't print error warning if selectionFilter is set python/rdcPotTools.py -added composite_Rfactor_infinite helper function -added helper function composite_chi2 python/relaxRatioPotTools.py -Added support for XPLOR-style restraints: -create_RelaxRatioPot: added optional restraints argument -added writeTable helper to write out restraints python/restraintStats.py -RestraintStats.collect: now more robustly deal with dead procs python/sardcPotTools.py -Rfactor: now add option to compute a normalized R-factor python/selectTools.py -added fixProtonImpropers helper function -rigidProteinSelections: added CYSP python/simulationTools.py -StructureLoop.genAveStats(): reworked such that structures are actually fit to the lowest energy accepted structure. Now proc 0 collects, sorts and filters energies, and then distributes the identity of the best structure so that all structures can be fit in a distributed fashion. -StructureLoop.run: now robustly handle errors in extraRemarks -minimizeRefine: fixedRegions and rigixRegions can now also be simple strings -StructureLoop.run/genAveStats: -if fitting structures, call averageContext before writing fitted structure. This is important s.t. translation or orientation-depedent properties (e.g. Euler angles) are correct. Note that energies will change due to 1) coordinate roundoff due to the PDB format. 2) limitations of some energy terms (such as RelaxRatioPot), which may be slightly dependent on orientation. -now call averageContext before writing average structure -writeStructure: added makeBackup and clearRemarks optional arguments python/solnScatPot.i -calcIfromF, calc_dIdrhob: fixed OpenMP parallelization python/solnXRayPotTools.py -added Jinbu Wang's form factor setup with the new option formFactors="JBW" python/varTensorTools.py -calcTensor: added -fitallExps option; minor docstring edits low-level: bin/findSwig -whitelist swig 3.0.7 intVar/dint-node.cc -HNodeTorsion: constructor: disable special purpose code for when rotDir0 is in the x-z plane. It was incorrect, and the other code generalizes to this case. python/tests/testScripts -removed duplicate line python/cdsTypeMaps.i -with swig version 3 need an explicit typemap such that non-boolean Python objects (e.g. 0,1) can be passed into C++ functions requiring bools tcl/findTCL -search for libtcl.so/a/dylib: -add additional path based on upstairs path from TCL's autopath tcl/Makefile -removed .NOTPARALLEL: arch/Linux_x86_64/tcl/Makefile -optimization downgrade for g++ - 5.2 arch/Linux_x86_64/python/Makefile -enable OpenMP for gcc arch/equivList -added Darwin_15 (El Capitan) -added missing Mac OS X symlinks arch/Linux_x86_64/Makefile.defs -added CLANG_VERSION variable arch/Linux_x86_64/common/Makefile -optimization downgrading (to -O0!) for potList.cc for clang++ 3.5 Changes from 2.39 to 2.40 --> 2.40 released 2015/09/25 [Contains source code contributions from Hoi Tik Alvin Leung, Ye Tian, Guillermo Bermejo, and C.D. Schwieters.] Helper Programs bin/calcPSol.in -added calcPSol helper script bin/calcSARDC.in -plot is now specified as square. -now always print ensemble weights, if they're not the default 1/Ne values bin/calcSAXS-bufSub.in -added non-None value for ensWeightsRegexp bin/calcTensor.in -fixed the behavior of the -subSel argument to be the intersection with ASSIgnment statements. bin/ens2pdb.in -added a -psf option bin/pbsxplor.in -add -toQsub option to pass arbitrary options to qsub -added OpenMP support bin/runSparta.in -added the runSparta helper script bin/slurmXplor.in -added slumXplor frontend -updated SYMMETRY path env var to its new deprecated location bin/xplor.in -OpenMP support: set default OMP_NUM_THREADS to 1 -added the -omp argument to set this eginput/relaxRatio/calcRelaxRatio.py -added tempRange argument for temperature optimization -added plot option and plotLabels option -switched x- and y- axes Example Scripts: eginput/pre/atcun_motif/addATCUN.py: improvements eginput/PSF_generation/addAtoms.py eginput/PSF_generation/addAtoms2.py -now delete any sidechain coords of mutated residues so that any incorrectly matched coords are cleared -moved old XPLOR script examples to subdirectory named ``deprecated'' Documentation helplib/nih-py-solnScatPot -added docs on rigid body setup helplib/nih-py-relaxRatioPot -added bit on sigmaFactor and cutoff computation Topology / Parameters: toppar/atcun.par toppar/atcun.top -updated/fixes. toppar/nucleic-1.2.par/top -new (default) nucleic acid parameters with missing P improper added (to get P oxygen naming consistently correct). toppar/nucleic-3.1.par/top -Added impr for P chirality in nucleic-1.1.top/par Python Interface common/atomSel.cc -intersection: changed selection string so it is now valid, and can be reevaluated python/chemShiftTools.py python/spartaPotTools.py -moved format conversion code to (new) chemShiftTools module nmrPot/eefx -update to get per atom Egc and Evolt values -added accessors for pore model -OpenMP parallelization -added read accessors for IMMx options python/eefxPotTools.py python/varTensorTools.py -moved alignTensorToZ from eefxPotTools to varTensorTools -micelle and bicelle module added. python/ivm.py -minimizeEscape: fixed String exception python/ivm.py -added stepsizeThreshold, minStepsize accessors; -reworked minimizeEscape to not testGradient nmrPot/nbTargetPot -added correlation potType -restraint: added accessor methods with same names as those in PSolPot nmrPot/noePot -added removeRestraint method python/pcsTools.py -XTensorFit: -added a tol argument - -XTensorFit: -added maxDisplacement, tol arguments - -added spaceSeparatedToRestraint restraint conversion helper function common/pdbTool.cc -readPDB: better support for reading malformed ATOM records --no longer skip lines shorter than 66 character --now conditionally read b-factor and occupancy fields nmrPot/prePot.cc -operator>>: added better diagnostics error python/prePotTools.py -create_PREPot: added the optional argument nucleusID o added appropriate sync after call to addClockAtoms. This calls to the PREPot's EnsembleSimulation, while currentSimulation will not be an EnsembleSimulation for ensemble size 1. -added spaceSeparatedToRestraint helper function -added the makeTable helper function -getNucleusType: fix bug if no restraints are present. -added helper functions: addNonstereoRestraints and processNonstereoRestraints python/protocol.py -initDihedrals: o will now handle empty string filenames o made ensemble-safe o replaced opne fastCommand call w/ command() to force a sync nmrPot/psolPot.cc -OpenMP parallelization -added energyMaybeDerivs for conditional gradient computation; area for all triangles now computed once and restraint-specific quantities computed in inner loop -added atomContribThreshold, logic to use only important atoms in surface integral calculation -Restraint: renamed g -->obs, gSigma ->err, gamma -->calcd -support for adding radius noise to avoid regions of bad tessellation -added correlation targetType -cleanup python/psolPotTools.py -added this module with helper functions -switched to radii from diffPotTools. Find consistent improvement of correlations. nmrPot/rdcPot1 -Restraint: o added selectionFilter_ member used to filter atoms when restraints are specified o selPairs() now returns a (const) reference o added comment(), selectionFilter() accessors o aveSize_ member is now shared and checked. If any ensemble member has zero aveSize, the restraint is rejected -Pot: o addRestraints(): added optional selectionFilter argument. o restraints(), rawRestraints() now return references so that restraints -change behavior when encountering small RDC error: now check sum of minusErr and plusErr python/rdcPotTools.py -added spaceSeparatedToRestraint conversion function -create_RDCPot: when creating a VarTensor object, now try to generate a unique name python/regularize.py -fixupCovalentGeomIVM: fixed docstring for extraTerms -addUnknownAtoms_fast: change algorithm to look for known bound atoms nmrPot/relaxRatioPot -RelaxRatioPot: renamed rangeTmpFit --> tempRange, with backwards compatibility wrapper -updateValues: now always update cutoff python/relaxRatioPotTools.py -create_RelaxRatioPot: added optional argument sigmaFactor -analyze: now report summary of tensor parameters -changed default sigmaFactor to 10000000 python/residueAffPotTools.py -create_ResidueAddPot: optimization of setup when selectionPairs are specified python/restraintStats.py -RestraintStats.collect: handle the case where a process has no data to report. python/sardcPotTools.py -added function makeTable python/simulationTools.py -StructureLoop: broke writeStructure out to be a stand-alone function -writeStructure: added newline after extraRemarks -analyze: finally accept an exterTerms value of None -genFilename: deal with case that scriptName contains path elements python/socketComm.py -Comm.readDataFrom: now handle case where specified proc does not exist nmrPot/surfTessellation -added oldSurf and savePrev accessor. If set previous tessellation is saved and retried by retessellateIfNecessary for force>2 python/utils.py -Added python/utils.py with duration function python/varTensorTools.py -calcTensor, calcTensor_ensemble, chi^2: now take error as 1/2(minusErr+plusErr) vmd/vmdInter.cc -changed call from molWid_colorSet to molWid_color to reflect renaming on tcl side Fortran Interface -added deprecated warning for use of ParaRestraints TCL Interface: tcl/sa_tools.tcl -setupIVM: change to use pyInterp.portableStringRep to instanciate C++ object from Python interpreter. This required for swig 2.0.12. Low-level libraries: CDSlib/sthead.hh -added stubs so omp API functions can be used when OpenMP is not present common/ensemblePot.hh -changed setEnsWeights to virtual function common/potList -added overridden setEnsWeights: now set esim member (of EnsemblePot) to currentESim common/simulation -added the forceUpdate flag to aid in resetting tessellation updates/resets CDSlib/cdsList.hh -added reserve and append methods to CDSListRep - CDSList versions call these. These can be used in optimization to avoid calls to split(), and additional pointer dereferencing -inlined CDSListRep::reserve, append CDSlib/cdsString.cc -doGsub: removed unused variable intVar/dinternal intVar/publicIVM -added force/clearRecalc methods which are called in step() when a small timestep is encountered - to aid with retessellation python/pyInterp.i -added portableStringRep function bin/findSwig -whitelist swig-2.0.12 surfD/compute.cc surfD/surf.hh surfD/surfInternal.hh -reworked atom neighbors structures to be more transparent/readable -Surf: changed type of Extents member to be more readable -compute_extents: improved readability -compute_neighbors: cleanups for readability -simplification: moved neighbor_list from Surf class to compute_components method surfD/surf -renamed update_atoms --> updateAtomPos -split out updateGridDelta into separate method common/xplorWrapProc.cc -noncloned wraps: now grab final argument from XPLOR_EXE- to work with profilers and such python/Makefile -disabled .NOTPARALLEL directive Architecture Dependent: arch/Linux_x86_64/source/Makefile -added ARRAY_F_DOWNGRADE setting for gfortran 5.2 arch/Darwin_10_x86_64/Makefile.defs -added a libgss_s library which is symlinked into a libSystemA library Changes from 2.38 to 2.39 --> 2.39 released 2015/05/08 [Contains source code contributions from Guillermo Bermejo, Ye Tian and C.D. Schwieters.] Helper Programs bin/calcSARDC -give ensWeightsRegexp a default value - one better than the previously suggested value -don't print out ensemble weights for Ne=1 bin/calcSAXS -added the -nm and -addUnknownAtoms flags -actually use solventRadius and boundaryThickness values bin/calcSAXS-bufSub -now supports multiple sample/buffer curves so that it performs merging of SAXS/WAXS data as was done for the examples in the AXES paper. -fixed deleteAtoms selection -now pass verbose flag to create_SolnXRayPot bin/convertTalos. -added -omitResids option -changed default output filename bin/getBest -file|directory argument now defaults to the current directory, so it can be run with no arguments. bin/pbsxplor -now allow options to be specified with two dashes "--", in addition to a single dash bin/xplor -in argument processing: replaced instances of echo with printf %s to avoid issues w/ echo escape char processing -add support for the -py -m command-line option to run modules from the command-line. Example Scripts eginput/eefx/fold.py -doubled length of h.t. run of all-atom repel eginput/pasd/nmrstar/README -fixed version number eginput/dna_refi/ensemble.py -Added hingebend node types to the ribose rings. I confirmed that the resulting overall energy is slightly (slightly outside the spread) lower with this setup for Ne=2. Many energy terms show lower energy. Those outside spread ranges are: noe, rap, bond, orie, vdw and many others close to the edge of the range of improvement. No energy term is significantly higher, however, the number of angle violations greater than 2 degrees increases from 182.7 +/- 7.5 to 189.5 +/- 8.2. So some care should be used in using this hingebend setup with RDCs should be noted. -changed annealSteps to large number to avoid deadlock eginput/rna_refi/rna_database_refine.inp -Fix incorrectly listed energies in pdb headers. eginput/saxs_EI/refineDocked.py -now use torsionDB; increased SAXS numPoints from 26 eginput/saxs_EI/validate.py -increased SAXS numPoints from 26; added accept function eginput/pasd/nef/ -added example of loading shifts, peaks lists from a NEF file. eginput/pasd/talosn/ -added example of using TalosN output. eginput/PSF_generation/genLigandCif.py -new example script for ligand-topology/parameter generation from a ligand mmCIF file. eginput/gb1_rdc/makeNEF.py -added initial example of creating a NEF file. eginput/gb1_rdc/makeCIF.py -basic script for creating a mmCIF atom_site record from a pdb file eginput/gb3_ensemble/testConvertTalos.py -added test for convertTalos helper bin/calcDimerConc -fixed -pop if -subunit is specified Python Interface python/atomAction.py added genRandomCoords common/atomSelAction Fit constructor: now throw exception if fitTo size is zero common/bondAngle.cc -derivs: fixed sign for theta<90 degrees nmrPot/ccrPot -Restraint class: moved many quantities to accessors -showViolations: fixed title -restraint atom initializers: now use the member simulation, instead of the underlying XplorSimulation cif/ extended to support NEF STAR files. cif/cif -CifDatablock: added isSaveframe accessor; now write correct header for saveframes -Cif::formatCategory: added a check that category lengths are all the same. -add useTrailingStop useTrailingSave ability -Cif::formatBlock: no longer write out datablock category -formatCategory: updated loop output to set field width for each category item to be the largest of all with the same itemName python/cif.i -added has_key and __setitem__ methods to Cif objects python/cifTools.py -new module with tools for CIF file manipulation. Currently contains function for generating mmCIF atom_site records nmrPot/eefx.cc -fixed the selectionPair logic. The functionality never worked previously for a non-all selection python/eefxPotTools.py -removed noise output common/ensembleSimulation -SimulationWorld::finalize() added isSubprocess argument it's set to true for XplorWrapProc subprocesses so that ensemblesimulation processes are not reaped. -added deleteDependentSimulation -EnsembleMemberSimulation: changed id() to lookupID(); added atomID() method -EnsembleMemberSimulation::atomID: fixed for Ne>1 -EnsembleSimulations: added barrierDebug argument to constructor for better (earlier) diagnostics when threads lose synchronization python/ensembleSimulation.i -rewritten EnsembleSimulation constructor: fix s.t. keyword arguments can be used python/ensWeights.i -redefined setTargetWeights to take a dictionary (output of targetWeights) in addition to list common/ensWeights -accumDerivs: fixes associated with the gradient fix in the BondAngle class python/iupacNaming.py -new module to help in converting to and from IUPAC atom naming. python/minimize.py -bfgs: o changed the definition of stepsize0 o fix stepsize as fraction of grad step behavior o in update of dg, try to carry on in the presence of singularities in gradient directions. nmrPot/nbTargetPot -updated nbTargetPot to be an EnsemblePot, with test -NBTargetPot: added slope and intercept members python/nbTargetPotTools.py -added callibrate helper function, test python/nefTools.py: -new module to help reading/writing NMR Exchange Format (NEF) files. nmrPot/noePot -NOEPot: added allowOverap; showViolations: now print out comments -change behavior for overlapping selections: don't print warning if overlaps are allowed and omit identical pairs in distance computation python/noePotTools.py -added readNEF, writeNEF python/posDiffPotTools.py constructor: set currentSimulation to an appropriate XplorSimulation before calling XplorSimulation() to avoid a crash python/pyConvert.cc toPy(Vec3): now initialize SWIGTYPE_p_Vec3, if necessary. Fixes failures at inopportune times. python/restraintStats.py RestraintStats.collect: -reworked to collect results from one remote process at a time- to reduce the memory footprint of process 0 -don't throw exception if a remote process has successfully calculated no structures python/socketComm.py -Comm class: added readDataFrom, writeDataTo methods nmrPot/solnScat -made external definition of Voxel struct accessed via the surfVoxels accessor if freeSurfVoxels is false -now store volume sign python/solnScatPotTools.py -fitSolventBuffer: many updates to support multiple sample/buffer curves with merging with a new regularization term for bg python/pasdPeak.i python/pasdPot.i -swig interface files for PASD Peak and MarvinNOEPot classes python/pasd.py -added nefPeaks to read in 2-,3-,4-D peak lists -added nefShifts to read in chemical shift lists common/potList.cc -energyMaybeDerivs*: protect against uninitialized derivLists. python/protocol.py -initDihedrals: now silence the %CSTRAN: allocating space message -torsionTopology: breakRiboseSel and breakProlineSel arguments -initHBDB: cleanup info messages -torsionTopology: changed default value of breakRiboseSel python/psfGen.py -seqToPSF: changed behavior for seqType='custom' -cisPeptide: now supports aria/EEFx topologies -deduceSeqType: now will work with lower-case residue names -added seqFromSTAR; updates to seqFromCIF python/rdcCorrPotTools.py -added calibrate function -added Rfactor function- and added this to analyze, stats nmrPot/rdcPot1.cc -RDCPot: alignment tensor atoms no longer need be valid atom selection syntax python/rdcPotTools.py -added read/writeNef python/regularize.py fixupCovalentGeom: - fixes s.t. fixupCovalentGeom can be called by different EnsembleMemberSimulations (i.e. different threads): o fixup s.t. AtomSels always use the same Simulation (previously mixed sim/xSim). o use the XplorSimulation instead of current Simulation throughout o changed use of XplorSimulation.command to fastCommand, followed by explicit syncFrom to allow use in Ne>1 EnsembleSimulations. - protection against setting dEPred to 0 - fixupLoop_xplor: o increase output for verbose>3 o fixed treatment when unknown coordinates error arises: now reset to initial coordinates and try again. - fixed reversed verbose logic python/residueAffPotTools.py -create_ResidueAffPot: added selectionPairs argument to specify specific interactions nmrPot/sardcPot -SARDCPot: added omitTensorGrad accessor so that the alignment tensor portion of the gradient is not calculated. python/sardcPotTools -readRestraints: added better diagnostics for missing atoms python/selectTools.py -IVM_breakRiboses: changed default ring break location from O4'-C1' to C4'-O4': by itself this changes results little, but can be combined with bendtorsion hinges for ring degrees of freedom. common/simulation.cc -deleteSimulation: o added call to EnsembleSimulation::deleteDependentSimulation o add logic to reset currentSimulation() if it is to be deleted o deleteSimulation: added range check -added dependentSimulation which is removed when the Simulation is deleted -renamed id() --> lookupID(): while not unique, this is used to id Simulations -added atomID() -- this is used to id atoms across Simulations python/simulationTools.py -StructureLoop: -run(): o now print full Python traceback when a structure calculation fails. -genAveStats: o now fit ensemble structures if s.averageFitSel is specified. o no longer clone Simulation to fit- this saves much memory -testGradient: added **ERROR** indicators for ensemble pots if alwaysPrint=True python/solnScatPotTools.py -added water volume to Svergun set -fitParams: -now use the SolnScat values of solvent radius and boundary thickness, instead of resetting them. -fitSolventBuffer: o increased sigmaBG to 0.01 o change default value given qValues to qValuesExpt python/solnXRayPotTools.py -genFormFactors: o remove water from list o add H20 (replicated zero times) to atomGroups -create_SolnXRayPot: o added useNM and verbose arguments o create_SolnXRayPot: added optional verbose argument o added the useNM argument to specify that q is in units of inverse nm instead of inverse angstroms python/sparta.i -disable the special-case exception-handling python/talosTools.py -split off convertTalos function (in bin/convertTalos) into new module python/torsionDBTools.py -torsionDBTools: added nucleic chi angle to torsion_info python/torsionPotTools.py -NEF read/write support python/varTensorTools.py -normalizedScalarProduct: fixed docstring (thanks to Santhos Kumar) -add error message when trying to add axis atoms to nonlocal EnsembleMemberSimulation common/xplorWrapProc.cc -constructor: now throw an execption if the current simulation is not an XplorSimulation -proper fix for non-cloned simulations: don't call csim->syncTo -constructor: added back the csim->syncTo() call for the case clone==True, currentSimulation==default XplorSimulation TCL Interface tcl/import_nmrstar.tcl -removed old note which does not apply to newer formats tcl/talos_tools.tcl -added readTalosN to read Talos-N prediction tables tcl/tclXplor.cc -tcl_interp: now returns error status if error on startup -tcl_interp: now allow specifying exit status with the TCL exit command Parameters/Topology toppar/atcun.par -toppar/atcun.par: edited/added parameters for realistic NH2 conformation toppar/eefx/protein_eef22.top -bumped protein_top_vers to eef-1.1 toppar/protein_eef.top@ -changed symlink from eefx/protein_eef.top to eefx/protein_eef22.top toppar/protein-1.0.par -reduced phosphate group angle values Platform Specific changes arch/Linux_x86_64/ -update deoptimizations for 2015 Intel compilers -added support for llvm clang/++ (by specifying LOCAL_CC/LOCAL_CXX in Makefile.loc) Linux platform Intel compilers: -added OpenMP support if USE_OPENMP is set to a nonblank value in Makefile.loc. OpenMP is disabled in the current binary release: this is for future use. arch/Darwin_10_x86_64/ -changes for compilation with Intel compilers on Darwin_14 - thanks to P. Mercier -additional updates so that everything works on Mac OS X 10.10. Low-level changes modified: README.beowulf -updated with suggested setttings for optimized network settings. CDSlib/sthead.hh -added conditional include of omp.h marvin/Peak.hh -removed const qualifer from name_ member so that the default operator= works bin/findSwig -determined regression which causes SWIG post-2.0.10 problem. Will fix this in a future release. python/solnScatPot.i -added OpenMP directives nmrPot/solnScat.cc -added OpenMP directives, with some loop rearrangement Changes from 2.37 to 2.38 --> 2.38 released 2014/12/12 Helper Programs bin/pbsxplor -change jobs_per_node behavior: if it's set, do not invoke pbsnodes on the compute nodes added the XPLOR_JOBSPERNODE env var to set the default value -fix job name determination for .tcl and .inp scripts bin/plotLog -added plotLog helper script to make 2D plots with linear, semilog and log-log axes. bin/ramaStrip -fix so that points show up for matplotlib 1.4.2 bin/getBest -fixed to work with directory specification containing trailing slashes -now handle mixed wildcard directory and stats file arguments bin/xplor -fixed behavior of -scyld with num_threads > 1 such that jobs are packed on each node. bin/calcTensor -added the -plotLabels option to print residue numbers at each point. -the plot is now pickable: the first atom selection for a point will now be printed when it is clicked on. -give more informative error message if bad averaging is detected. -fixed behavior when no files are specified Examples and Documentation eginput/capsid/validate2.py -no longer raise exception in case of failure - caused validation jobs to stall. eginput/capsid/refine2.py -now use fixed ensemble weights eginput/dna_refi/validate.py -fixed logical error in validation eginput/saxs_EI/refineDocked.py -updated for use of getBest, pdbFilesIn, and additional call to initial params eginput/saxs_EI/dock.py -switched from RAMA to torsionDB -added a SAXS refit stage before final minimization -added additional SAXS surface calc in docking phase -now use solnScat rigid regions and update globCorrect at a more opportune time during docking eginput/saxs_EI/validate.py -write structure and perform analysis using StructureLoop now. Many documentation updates Topology/Parameters toppar/eefx/protein_eef.par toppar/eefx/protein_eef22.top -Updated solv parameters, and force field for CHARMM19 and CHARMM22 runs. Python Interface nmrPot/atomProb.cc -AtomProb::setWeights: fixed bug uncovered by gcc warnings nmrPot/eefx -e14Factor added for electrostatic term, default value 0.4 -Added the elec/solv/vdwPot accessors. These allow independent scaling of the different terms -renamed solvEnergy --> energyMaybeDerivs -completed EEF/IMM merge, removed memEnergy method -converted a, thickness to accessors -renamed parameter order to profileN -Report individual energies for EEFx. python/eefxPotTools.py -alignTensorToZ: deprecation message added -Updated solv parameters, and force field for CHARMM19 and CHARMM22 runs. -changed default value of paramSets argument to param_LK. -Added the potList and asList optional arguments. -changed N dG-free value to that sent by Lazarides common/ensWeights -added the minFrac accessor for constraining the minimum weight -ensWeights: potential is now a square well with width given by the targetWeight member -added symmetryTrans to ensWeights to enforce symmetry in ensemble weights python/ivm.py -changed 2nd arg given to trajFile.write() to work with constant time nmrPot/nbTargetPot -changed default name to be targetSel string -fixed up showViolations output -now assign diff() a value. python/nbTargetPotTools.py -helper tools for nbTargetPot - used for effective surface area restraint -added analyze function python/prePotTools.py -added printout of tau_c values to .stats file nmrPot/rdcPot1.cc -RDCPot1_Restraint::updateAveSize(): -added restraint name to output for easier debugging. -reading a restraint: added warning if a small error value is entered, and reset the value to a finite (small) value. nmrPot/saTensor.cc -removed old debugging line.... python/simulationTools.py -updated docstring regarding not fitting ensemble structures. -run: if writing a structure, now call s.averageContext() beforehand. -testGradient: fix in error printing for alwaysPrint==False -testGradient: with alwaysPrint=True, now indicate which elements of gradient fail. python/socketComm.py -disable keepalive capability message nmrPot/solnScatPot.hh -added addRigidRegion shortcut -split SAXS calculation code off from potential term tp solnScat -expose much of the internals to the public interface (mostly for swig/python access; add accessors for rigidRegions nmrPot/solnScat.cc -added facility for exceptionally efficient computation of rigid body contributions to the SAXS amplitude during dynamics and minimization. Documentation pending. -disable calculation of posCenter (it is always (0,0,0) now) --prevent crash for the case numQ==0 -calcI_uniform: removed unneeded intermediate variable python/solnScatPotTools.py -interpolateCurve: fix to prevent crash it numPoints==1 python/solnXRayPotTools.py -fix to allow uniform grid calcs for numQ=1 -in buffer+sample calculations, now properly add the buffer and sample error contributions python/trajFile.py -changed default start value from 1 to 0; added constantTime write capability python/trajFile.py python/xplorDCD.i -write: now pass coords in separate coords arg to support interpolation python/trajFile.py -added support for trajectory reading with read and readNext methods python/trajFile.py -__init__: changed default for fixXY to False, documented this argument nmrPot/utils -split pointsOnSphere from SolnScat::setNumAngles to utils standalone function python/varTensorTools.py -calcTensorOrientation: now preserve the freedom settings python/xplorDCD.i -implemented the read wrapper function TCL Interface: The PASD facility tcl/noe_reporting.tcl -reportNOEaccuracy: -added report for short range assignments in addtion to long range assignments tcl/aeneas_tools.tcl ( python/pasd.py ) -removed tight tolerance specifications from the pasd Python module - now these are (optional) arguments to the standardInitMatch functions -changed names and allow tight tolerance for each dimension to be specified (via the pasd Python module) tcl/aeneas_tools.tcl -standardJointFilter: added the -dontPreferIntra option (which takes a 0/1 argument) -standardJointFilter: made the flag -referenceStructureFile optional. Thank you to Philippe Cuniasse! tcl/netfilter.tcl -netfilter: -changed the dontPreferIntra to an option which takes a 0/1 argument much reformatting to fit 80 columns Low-Level / Development / Architecture Dependent common/pot.hh -added the resetInstanceName method bin/findSwig -older swig versions no longer work python/pyConvert -added toPy(const long&) arch/Linux_x86_64/source/Makefile -commented-out intel-compiler specific optimization downgrade -added gfortran 4.9 to list of versions for which to downgrade array.f optimization CDSlib/interpSphere template class for interpolation of a function on the surface of a sphere. The function can be a scalar, complex or a vector field. CDSlib/spline. -added support for 2-point splines (uses linear interpolation) python/cdsMatrix.i -fixed complex matrix __getitem__ to split out a Python complex CDSlib/cdsVector -CDSVector: added constructor from pointer -added const version of vector() CDSlib/fixedVector -operator-=, operator+: now take templated arguments -scale member: now returns this CDSlib/Makefile -now builds a library for non-template functions in CDSlib/nontemplate/ CDSlib/array3D.hh -fixed constructor initializer CDSlib/cdsList -added fromVector, constructor from generic Vector cif/cifScannerInt.cc -CifScanner::ProcessNoneFromScanner: commented out code disallowing -a non-newline after the sequence \n; cif/cifParserInt.cc -updated saveframe support: now add a catagory named datablock, containing one key, 'name' with the value being the name of the encompassing datablock, if one is present Changes from 2.36 to 2.37 --> 2.37 released 2014/09/09 Helper Programs bin/xplor.in -add XPLORNIH/bin path to PATH -use full path when querying version -now do ipcs semaphore cleanup only on 32 bit linux bin/calcSAXS-bufSub.in uses an alternate fitting procedure and has a -plot option bin/getBest -fixed symbolic behavior for .stats files in different directory -fixed behavior when no dir specified, but multiple .stats files present -minor usage string fix Documentation helplib/nih-py-atomDensity -readCCP4: updated for reading MRC files online tutorial updated Python Interface common/ensWeights -setWeights(list): * fixed/removed apparent singularity issues. * now limit minimum weight to 1e-7 to prevent IVM failures -energyMaybeDerivs0: * now explicitly call computeWeights so they are updated. This may result in an extra call to computeWeights. * fixed subtle, seldom encountered bug in wderivs calc. python/ensWeightsTools.py -ensWeightsTools: added additional origin atom for each ensWeights dof due to IVM limitation; this changes output due to nuisance message -addPseudoAtoms: fixed code so patch definition isn't loaded on subsequent calls. python/protocol.py -replaced XplorSimulation.command calls w/ fastCommand and syncTo/From when necessary -small change to orie setup python/solnXRayPotTools.py -create_SolnXRayPot: before construction: explicitly sync all Simulations python/regularize.py -fixupCovalentGeom: fixed bug possibly leading to all atoms moving regardless of the selection. -fixupCovalentGeom, addUnknownAtoms_new: replaced calls to Simulation.command w/ fastCommand/syncFrom python/simulationTools.py -StructureLoop: added inMemberModulo for generating larger ensembles from smaller; -StructureLoop.pdbFileIn: fix use of inMemberModulo for non-ensemble calcs -StructureLoop.writeStructure: now report in REMARKS name of file used to initialize coordinates, if any -StructureLoop.genAveStats: fix issue with structure number of fit-to structure when the first structure is not numbered 0. -Initial/FinalParams: added optional argument to ctor to disable calls during construction python/psfGen.py -seqToPSF: added dna to seqTypes in docstring python/noePotTools.py -added the removeLowerBounds helper -create_NOEPot: now print warning if the restraints string or any file adds no restraints. python/atomAction.py -randomizeDomainPos: added the deltaAngle argument/functionality nmrPot/ccrPot python/ccrPotTools.py -initial implementation of the CCR potential term python/rdcCorrPotTools.py -add in addXplorRestraints method to potential term -added analysis python/selectTools.py -added function oneToThree -added function toAtomSelString python/saTensorTools.py -analyze: fixed bug where incorrect SATensor name would be output python/eefxPotTools.py -added setCenter and setCenterXY functions. common/pot Pot::numRestraints: changed to const. The affects many potential terms. nmrPot/ccrPot -new potential term for cross-correlation relaxation restraints. python/sardcPotTools.py -create_SARDCPot: now print warning if no restraints read python/rdcCorrPotTools.py -an implementation of the tensorless RDC restraints as introduced here: C. Camilloni and M. Vendruscolo, ``A tensor-free method for the structural and dynamical refinement of proteins using residual dipolar couplings'' J. Phys. Chem. B, in press. python/sardcPotTools.py -create_SARDC: disable no restraints warning if no file and no restraints are specified nmrPot/sardcPot -fix computation of gradient of prefactor scale wrt ensemble weight common/atomSelAction -AtomSelAction::Fit: now do rotation/translation determination in the constructor (as stated in the help page) -fix swig overloading of constructor so cruft hack can be removed common/ensembleSimulation -fix from P. Mercier -singleThread: changed arg name so swig doesn't do improper arg checking common/simulation common/ensembleSimulation common/xplorSimulation -deleteAtoms: added optional noSync argument. Use with care. This allows the disabling of the global sync, with the associated EnsembleSimulation barrier. python/ensembleSimulation.i - single/multiThread: change logic to check if the current simulation is an EnsembleSimulation Topology/Parameters toppar/atcun.par toppar/atcun.top Added topology/parameters for the ATCUN motif toppar/nucleic-3.1.par toppar/nucleic-3.1.top improved RNA topology/parameters toppar/dihiscu.par toppar/dihiscu.top -added toppar/dihiscu.par and toppar/dihiscu.top toppar/protein_eef.par -added missing parameters for amidated c-terminus databases/torsions_quarts/nucleic_deltor_quarts2d.tbl -removed ill-advised vector store statement Example Scripts eginput/pre/atcun_motif/ -new example of generating initial structures/PSFs with the ATCUN motif. eginput/eefx/fold.py eginput/eefx/refine.py -fixes to work more reliably (and to pass validation tests) -added the torsionDB term; changed potlist --> potList -changes s.t. -quick runs don't crash eginput/saxsref/refine.py -comment cleanup eginput/gb1_rdc/wrefine.py -now use pdbFilesIn, with corrected glob eginput/gb1_rdc/refine_eefx.py -now refine files from refine.py, like wrefine eginput/capsid -added validation Low-Level / Development / Architecture Dependent arch/Linux_x86_64/source/Makefile -selective merge for gfortran 4.9 bin/findSwig -blacklist swig 2.0.11, 2.0.12 Makefile.loc.in -now set TMPDIR by default arch/Linux_x86_64 -added support for 2013/2014 Intel compilers tcl/findTCL -updated for Debian multiarch vmd/tclStream.cc -fix inspired by P. Mercier source/supccr.fcm -fix inspired by P. Mercier nmrPot/atomDensity.cc -fix from P. Mercier common/xplorWrapProc.cc -fix from P. Mercier arch/Darwin_10_x86_64/Makefile.defs -updates from P. Mercier arch/Darwin_10_x86_64/README -added note about incorrect version of libstdc++ and _macosx.so Changes from 2.35 to 2.36 --> 2.36 released 2014/05/30 Helper Scripts bin/calcSARDC.in -make more robust in the presence of empty subSelSets: now a warning is printed and the program does not crash. -suppress extra VarTensorTools.analyze output bin/calcSAXS.in added the -noSpline and -splineToExpt options bin/calcTensor.in -added the -noUseErrs - by default, now weight the SVD calculation with the observed errors. -fix -plot option to work w/ no cross-validated data bin/calcETensor.in updated to use error weights in SVD calc bin/convertTalos.in add the -ignoreWeights option bin/ens2pdb.in -By default, now convert three character nucleic acid residue names to their one character counterpart. The new -threeLetter flag will disable this feature. -right-justify single-character nucleic acid residue names -added the -twoLetter option (apparently used for nucleic acids). Thanks to G. Cornilescu for the heads up. bin/pbsxplor.in -added the -max_procs argument to limit the total number of proceses run to some number less than num nodes time num cores. bin/pdb2psf.in added command-line options: -disulfide_bond -topology -outfile bin/targetRMSD.in -fixed operation of the -write flag and added test -added the -fitSuffix option bin/xplor.in added the -sh command-line option to invoke /bin/sh bin/pbsxplor.in bin/xplor.in added parallel support for the -sh command-line option XPLOR Interface source/dynio.f source/util.f incompatibility break: binary trajectory files now use 4 byte integers (previously, 8 byte integers were used on 64-bit architectures. source/update.f now print >SCRATC-warning: STORe selections erased.< message only if WRNLEV>0 Low-level Libraries CDSlib/cdsString.?? added startswith method CDSlib/cdsSStream.?? added CDSStringStreamBuf::seekpos so that IStringStream now supports seekg(arg) CDSlib/array3D.cc rawCopy: fix and addition of unit test. Thanks to Gary Thompson. cif/ Initial cif data class with parser and writer with basic support of NMR-STAR files arch/Makefile.common tcl/Makefile fixes s.t. the SWIG env var can be set to an alternate value Examples and Documentation eginput/PSF_generation/readCIF.py eginput/PSF_generation/readCIF2.py examples of reading CIF files eginput/pasd/nmrstar/ example of NMR-STAR 3.1 file import eginput/saxsref/ updated refine.py and validate.py based on saxsReview results eginput/eefx/ EEFx example eginput/capsid/ added HIV capsid example eginput/gb1_rdc/refine_eefx.py doc/python/tut.tex G. Bermejo-inspired fixups for MultRamp docs helplib/nih-py-ensWeights added docs about use as a stabilization energy term. helplib/nih-py-noePot added documentation for the RMSD value. helplib/nih-py-solnScatPot document splining behavior Architecture-Specific Changes arch/Darwin_10_x86_64/Makefile.defs intel compiler settings: make optimizations host-specific, instead of hard-coding an SSE version. arch/Darwin_13_x86_64@ new symlink: support for mavricks. arch/Linux_i686/README added bit about libstdc++ issues/replacement for ochre TCL Interface tcl/import_nmrstar.tcl added support, example of NMR-STAR 3.1 file import shifts/peaks: changes for saveSet specification tcl/marvin_lowlevel.tcl added option for setting global updateUserNewline option tcl/noe_reporting.tcl initialPeakAnalysis: now print error message if no peaks are given assignments tcl/aeneas_tools.tcl match3d: now print message (via updateUser) if peak has no assignments tcl/import_nmrstar.tcl added process2dNMRSTARPeaks Database/Parameters toppar/protein_eef.par toppar/protein_eef.top new EEFx topology/parameters toppar parameter and topology files: split protein_toppar_vers into separate top/par variables. Python Interface nmrPot/atomDensity.?? -calcDerv: protect against zero values -readCCP4: updated to handle MRC files. These files have XORG, YORG, ZORG field which are used instead of NCSTART, NRSTART, NSSTART to specify the origin position. A consequence of this is that the origin can now be placed at a position which is not an even multiple of the grid spacings- so all of the class needed to be modified. -DGridhelp::atomProb2atomDensity: for backward compatibility, xmin, ymin, zmin are placed at the closest multiple of the respective grid spacing. -replaced integer a/b/cmin w/ floating x/y/zmin -renamed centroid --> origin; CalcCentroid --> centroid ; other cleanups python/atomAction.py PrintPos: increased print precision to 3 digits past the decimal python/cdsVector fix splices to work with None arguments intVar/dint-node.cc Rotate2 HNodes: setPosVel: add redundant call to calcRot to set the A matrix python/eefxPotTools.py helpers for the EEFX implicit solvent model python/minimize.py -bfgs: added writer arg; updated verbose output -fix placement of warning message nmrPot/nbTargetPot.cc NeighborBin::init: bug fix: now clear all neighbor bins before use. In this context, I think this only has performance implications. nmrPot/noePot.cc operator>>(NOERestraint): changed error if intersecting selections to warning: this is not necessarily an error if center averaging is used python/parseTools.py readFloat: added missing + character to regular expression. python/pasd.py -added support for NMR-STAR 3.1 file import -added starPeaks. Supports 2-4 dimensional spectra -starShifts: now search for correct (unique) shift list save set -starShifts/Peaks: can now explicitly specify saveSet, or have a single one auto-chosen common/pdbTool.?? added support for reading mmCIF files; PDBTool: added the format accessor python/posDiffPotTools.py added a xsim member for lifetime issues; updated docstring nmrPot/probDistPot.cc contuctor: now throw exception if there are no atoms in the selection. python/protocol.py -initHBDB: updated docs -initDihedrals: now quiet output if reload=True -split topology/parameters into separate version strings -genTopParFilename: added optional suffix argument -initCoords: now prints pdb file format type (if verbose) -initCoords: now print file format type if verbose>1 -initRama: added selection argument -loadPDB: add call to updatePseudoAtoms on exit s.t. it can be called consecutively python/psfGen.py -mod for new protocol.genTopParFilename argument -added support for eef topology -pdbToSeq: split into seqFromPDB and seqFromCIF now supports CIF-formatted strings -residueMap: added two character residue names for DNA python/pyConvert.hh added fromPy(FixedVector) python/restraintStats.py added maximum negative violation for each term - to find maximally violated minimum distance value updated maximum violation report python/saTensorTools.py -analyze: now call protocol.initDihedrals at end because addition/deletion of pseudoatoms clobbers that term. -analyze: now get dmax from saTensor restraints and use in VarTensor analysis python/selectTools.py -mods for protocol.topparVersion split -correctSymmetricSidechains: added topology initialization so that special case ARG code is called -correctSymmetricSidechains: silence output from initTopology python/simulationTools.py -StructureLoop: *averageFitSel can now be the empty string, for no fitting *__init__: improve error handling in case where structureNums and psbFilesIn as string are both specified. -calcAverageStruct: fitSel can now be the empty string, for no fitting . python/solnScatPot added calc_dIdrhob python/solnScatPotTools.py added fitSolventBuffer- uses algorithm of AXES program to include buffer subtraction to the excluded solvent parameter fit procedure. python/solnXRayPotTools.py create_solnXRayPot: -added support for adding sampleData/bufferData members -now throw exception if experiment not specified python/trajFile.py -reworked to used xplorDCD so that it is now functional -added example python/varTensorTools.py calcTensor: added the useErr argument: by default, now weight svd calculation by restraint error calcTensor: useErr: change default to False calcTensor_ensemble: updated to use error weights in SVD calc python/xplorDCD added low-level DCD writing capability python/xplorPotTools.py PY_Restraint: violated: change def. s.t. restraint is violated if the diff() is equal (or greater than) pot.threshold(). This changes the behavior of setting the threshold to 0. python/xplorSimulation XplorSimulation: rewrote ctor, s.t. if clone, the new simulation is added to protocol.topologyInitialized Changes from 2.34 to 2.35 --> 2.35 released 2014/01/10 Helper Scripts bin/xplor.in -for Darwin, fix up (complicated!) library search path by adding /usr/X11/lib to DYLD_FALLBACK_LIBRARY_PATH -re-added declaration of localMachine -fixed code for renaming machines to localhost -added the -fpe command-line flag which specified that the program abort when a floating-point exception occurs. Currently only supported for AMD_64. -now run local procs by forking, instead of using $rsh - this to conserve privileged outgoing ports. This improves performance and reliability on fat-node clusters. bin/idleXplor.in added idleXplor to binary distribution- a version of the idle IDE which works with Xplor-NIH. bin/calcTensor.in -now allow bad RDC restraints, but with warning messages printed: this allows a table specifying a larger protein to be run on a fragment pdb. -fixed docstring typo -fixed bug with -crossValidate whereby script would crash if num cross-validated tables > num fit tables. -now also plot cross-validated rdcs -added erase=True to initCoords, s.t. atom matching works when multiple pdbs are specified. bin/convertTalos.in new helper script to generate Xplor-NIH restraints from TALOS+ or TALOS-N output. bin/calcSAXS.in updated to always compute values splined to expt datapoints bin/calcETensor.in added -aveType option, and default it to pairwise . bin/targetRMSD.in -added support reading models, and the -model option - for the comparision structure(s). Model number can also be specified using the syntax file.pdb:model. -added the -perResidue command-line option to optionally print out per-residue RMSD information. -added the -perStructure cmd-line option to optionally print out per-structure RMSD. bin/scriptMaker.in -fixed the value of scriptName -removed calcTensor() call in rampedParams bin/getBest added the -symlinks command-line option. This creates symbolic links to the top structures for further analysis or calculation. Example scripts eginput/gb1_rdc/testCalcSARDC added test of calcSARDC helper eginput/saxs_EI/validate.py -relaxed precision/accuracy tolerances slightly -updated to for the SAXS term to use useInternalSpline eginput/saxs_EI/dock.py optimizations to speed-up docking portion of structure calculation: -now fit rdcs before fixing broken bond -now call calcTensor inbetween minimizations to fit rdcs -slowly ramp bond force constant s.t. initial rdc minimum is maintained. -now use fixupCovalentGeom for linker geometry fix -now properly fit computed structures using cterminal CA atoms eginput/relaxRatio/ub_strDet.py removed force_tessellation line - it messes up the printed results eginput/relaxRatio/validate.py added r_600.setShowAllRestraints eginput/relaxRatio/calcRelaxRatio.py untested helper utility eginput/pre/refine/inputs/chi_final-altered.tbl fixed defs of two sidechain dihedrals eginput/pre/refine/validate.py reduced # structures to 64 to match num structures previously calculated eginput/pasd/mth1743/Cnoesy.peaks eginput/pasd/mth1743/Nnoesy.peaks updated comments to reflect use of Sparky-formatted data. Thanks to G. Cornilescu for pointing this out . eginput/assignFit/01assignFit.py simplified input file path eginput/assignFit/02refine.py changed random seed Documentation doc/python/tut.tex added use of scale() accessor to PotList example Databases toppar/nucleic-3.0.par toppar/nucleic-3.0.top -merged new nucleic top/par version from G. Bermejo -commented out nbfixes involving aliphatic hydrogens toppar/edta.par toppar/edta.par now supports nucleic-3.0.top XPLOR Interface source/cstran.f CDIASS: now print restraint index if selection size != 1 source/cstran.f format field fix (for gfortran) tutorial/mad/sclpckxplor.f tutorial/xtalrefine/convert_fob.f updated to compile w/ gfortran 4.7.3 Low-level Functionality CDSlib/cdsIterator.hh Iterator: changed _container type to pointer; added default constructors; partial documentation arch/Makefile.common removed DEBUG=1 setting. This should instead be in the toplevel Makefile.loc arch/Linux_x86_64/source/Makefile added -lm to get feenableexceptions arch/Linux_x86_64/source/Makefile update (optimization downgrade) to get gcc-4.8 working common/ensembleSimulation common/simulation.hh -sync: added testResize argument; -removed barrier calls from setAtomPos/VelArr, setAtomMassArr python/cdsMatrix rotVector: new implementation (same results) python/pyXplor.cc Change finalizer order: Python now before EnsembleSimulation. This to avoid crashes at shutdown due to EnsembleSimulation resources not being available. python/xplorFinal.py Make final status collection and printout ensembleSimulation-safe. This is now required due to Python shutdown occurring before that of EnsembleSimulation. python/pyConvert added to/fromPot(Pair bin/findSwig added version 2.0.11 The Internal Variable Module (ivm) intVar/dint-powell.cc -fix a bug where coordinates corresponding to the minimal energy were not saved/restored. -utilize new save/restoreState feature of the IVM. -added more informational messages when verbose includes printStepDebug. intVar/publicIVM changed derivList from static variable to class member intVar/dinternal.cc AtomTree::AtomTree: only actually populate constraint loops if useLengthConstraints is true intVar/dinternal intVar/publicIVM implemented save/restoreState to be used to set/reset minimum energy config. when minimizing step: only restoreState if Finished or exception occurs. intVar/publicIVM.cc PublicIVM::step: fixed type of variable done intVar/dint-test.cc updated for working useLengthConstraints_ intVar/dint-xplor.cc reset statement: now also clear useLengthConstraints_ python/ivm.py -export IVMError to external ivm module -autoTorsion: re-optimized for case of large groups with prespecified hinges. -run(): cleanup; now treat negative values of done, and return it. TCL Interface marvin/PeakAssignment added aveExp accessor python/pasd.py added aveExp for global control of PASD's PeakAssignment aveExp tcl/aeneas_tools.tcl tcl/import_pipp.tcl tcl/make_random_noes.tcl tcl/marvinAssignment.i tcl/noe_reporting.tcl tcl/noe_tools.tcl added aveExp support setting via -aveExp flag in initMatch functions Python Interface nmrPot/distSymmPot.cc addRestraint: fix error message python/sansPotTools.py python/solnXRayPotTools.py create_SolnXRayPot/create_SANSPot: changed default normalizeIndex to -3 (Icalc normalized to minimize chi^2). python/solnXRayPotTools.py -getCombinedAtoms2: for metal Atoms, only consider first two characters to allow for ionization specification . nmrPot/solnScatPot -change default fit/representation: now fit to experiment using cubic spline of calculated scattering curve. -fixed up for special case of a single q value python/solnScatPotTools.py analyze: -updated for splining calculated curve. -fixed the definition of deviation. python/solnScatPot calcIfromF: updated to deal with splined calculated curves. nmrPot/saTensor nmrPot/sardcPot -split the alignment tensor from SARDCPot so that multiple terms can share a single alignment tensor nmrPot/saTensor -Added variables s.t. spherical grid is reinitialized if parameters changed. python/saTensorTools.py helper tools for SATensors, includes SATensor analysis. nmrPot/sardcPot -energyMaybeDerivs1: changed handling of avectorScale when optimization is off: Now leave it alone. i.e. it can now be manually, statically set. -info: added info on tensor object, and linkedTo potential python/sardcPotTools.py analyze: added statistics for avectorScale python/restraintStats.py -summarizeTerms: potlist TOTAL is now always first -added maximum (of all restraints) violation amount -collect: fix s.t. statistics on remotely-calculated structs are reported even if no structure is successfully computed by process 0. python/simulationTools.py -StructureLoop: +added writeCrashStructures option: write out coordinates for failed calculations. See new behavior for run(). +pdbFilesIn argument can now contain a glob wildcard. For ensembleSimulations it should include the MEMBER literal. +pdbFilesIn argument can now specify fewer than numStructures files, with the pdbFilesIn files now being looped over. +now by default, no regularization if no averageFilename +added mechanish to pass back arbitrary (pickle-able) data from structLoopAction to process 0 by writing to the sharedData member. +StructureLoop.run -catch Exceptions in calcOneStructure s.t. the loop can continue w/o writing the structure -fix to allow use of pdbFilesIn with null structLoopAction for analysis. -change behavior of averageAccept to filter structures before choosing goodNum via averageTopNum or averageTopFraction. In this way there is better chance that the analyzed structures will be the sepcified number. +writeStructure: extraRemarks can now be a sequence of strings. -MultRamp, LinRamp: convert bounding values to floats to avoid weird roundoffs -testGradient: added random component type python/atomAction.py randomizeDomainPos: added optional centerSel argument common/potList -calcEnergy/AndDerivs: disable pid check if not an ensemble simulation -changed instances of setScale to scale.raw() --to avoid calling modified.update() -calcEnergyAndDerivs: reworks s.t. Ne=1 code follows the same code path as larger ensembles. common/ensWeights -acot: protect against divide by zero python/ensWeights.i -setWeights(list): Python version of this accessor now calls simulation()->barrier() to keep all ensemble members synchronized. -getEnsemblePots: now flatten potList to get all terms python/protocol.py -cartesianTopology: update atom selection used in call to breakAllBonds, to use proper simulation -initCoords: allow maxUnreadEntries to be an integer -initCoords, loadPDB: added fixMethylImpropers, swapProtons optional arguments. -matchInexactAtomEntry: +add logic to perform OP1 -> O1P conversion +added the swapProtons argument via a new kwargs mechanism so that it can be specified in initCoords or loadPDB. -new function splitModel for use in loadPDB, initCoords to support file.pdb:model syntax -initParams: addded the silent option -added protocol.initOrie helper setup function. python/regularize.py -fixupCovalentGeomIVM: +added the suppressExceptions optional argument now catch ivm.IVMError exceptions. +fix to suppress SCRATC-warning messages +fixed incoming selection so that it never contains pseudoatoms. -addUnknownAtoms: added call to fixupCovalentGeom common/atomSel -apply: to avoid EnsembleSimulation barrier, now give false argument to sync call -added (read-only) iterator support. common/atomSelAction -RMSD: changed byResidue to perResidue, returning an ordered list of residues which include segid specification. nmrPot/posSymmPot -energyMaybeDerivs1: replaced calls to rotMat() with rotMat_ -PosSymmPot (and Python PosDiffPot): fix energy def s.t. it scales w/ system size. python/posDiffPotTools.py create_PosDiffPot now allows for input psf with the psf option is specified. python/psfGen.py -seqToPSF: +fix s.t. singleChar=True works for nucleic acids +now able to write the psf file if the psfFilename argument is specified. -autoProcessPdbSSBonds: now return SSBOND records python/selectTools.py -IVM_breakRiboses: now call ivm.constrainBond in addition to break. Recall that the bond will not actually be constrained unless ivm.setConstrainLengths(TRUE) is also called. -added threeToOne function for residue renaming. -renameResidues: now allow spaces in the seq argument -added the fixMethylImpropers function, which swaps methyl proton coordinates s.t. the improper energy is minimized. python/xplorPotTools.py added BOND, IMPR and DIHE restraints support (for .stats output) nmrPot/rdcPot1 -added allowBadRestraints flag, behavior, and warnOnEmpty argument to addRestraints python/rdcPotTools.py -create_RDCPot: now allow empty restraints to be specified with no warning. -r_caha, and r_cohn updated to reflect scaling factors in JACS 122, 10143 (2000). Suggested by G. Cornilescu nmrPot/rdcPot1 nmrPot/csaPot bug fix: oTensor->accumDerivs must be called from same energyMaybeDerivs, now moved to Post version python/varTensorTools.py saupeToVarTensor: add type check for the first argument python/socketComm.py collect/distribute: added calls to barrier() at start to update keys python/socketComm.py startClient: set the close-on-exec property s.t. children (new Simulations, EnsembleSimulations) do not have to close the socket python/torsionTools.py torsionTools.setTorsionsFromTable: added more input options python/torsionDBPotTools.py torsionDBPotTools: added find_minima_parallel function python/densityEstimation.py densityEstimation module: added gengrid function python/gDB new module based on code from Yang Shen which reads/writes the tabular data format used by TALOS and SPARTA. Changes from 2.33 to 2.34 --> 2.34 released 2013/06/05 Helper Scripts bin/calcDimerConc added the calcDimerConc helper script for calculating monomer and dimer concentrations given subunit concentration and a dimerization equilibrium constant. bin/calcSARDC -added the -psf option for use with a protein with a nonstandard PSF. -added -ensWeightsTerm and -ensWeightsRegexp command-line option bin/calcSAXS added the -ensWeightsRegexp command-line option fixed the treatment of the -psf, -minQ, and -maxQ options bin/calcTensor added the -correctSign option bin/contactMap -added -selPair arg: ability to visualize multiple selections in different colors -updated ticks and tick step s.t. they always start on an even multiple of 10 -added the -ensWeightRexep command-line option bin/ens2pdb -added back spurious TER statements- these seem necessary for BMRB deposition -updated for ensembles, to use altLoc field, if it is specified, and appropriately specify ensemble weights in the occupancy field. If altLoc is not specified, fall back to placing all ensemble members in separate MODELS, and including ensemble weights in REMARK headers. bin/getBest added the -nl command-line option bin/ramaStrip now report files which have zero violations bin/scriptMaker a new graphical tool to generate Xplor-NIH scripts - developed by Alex Maltsev. bin/xplor when running under numactl, now print process id along w/ numa node(s) at startup. python/pyXplor.cc do %q% --> single quote mapping for -c pyshell command-line option bin/pyXplor bin/xplor -Now can pass single quotes on the command line -Now support the standard Python -c command-line option bin/testDist added MALLOC_CHECK_ env var hack which seemingly avoids race condition crashes at shutdown Example scripts eginput/relaxRatio/ub_strDet.py switched over to using torsionDB eginput/relaxRatio/filter_data.py -improved readability and comments -Now writes out backcalculated R2/R1 Python Interface nmrPot/atomDensity nmrPot/probDistPot rearrangements/cleanups/pointer removal/conversions nmrPot/atomDensity.hh -removed AtomDensity_GridValues structure -DensityGrid: new constructor args -AtomDensity: added selection() accessor method -removed ecalc() method changed -verbose from bool to int, to have multiple levels python/atomProb.i fixed memory leak nmrPot/atomProb AtomProb: added optional per-structure weights common/atomSel AtomSel contructors: change setting of the sim_ member to use the simulation's id to obtain a reference. This to help in the case of Ne=1 EnsembleSimulations such that there are not separate selections for the subSim and the member simulation. common/atomSelLang getNamedSelection: add optional simulation argument common/bondAngle.cc -derivs: protect against divide by zero -added cos() method common/ensembleSimulation -EnsembleMemberSimulation: override id() to now return the subSim's id for Ne=1 -EnsembleSimulation:singleThread() now takes optional index arg python/ensWeightsTools.py new EnsWeights facility for optimizing ensemble weights. Includes an energy term to bias weights toward spcified values. common/pdbTool -added writeOneAtom, writeInitialize, writeClose methods- to do record-by-record addition of pdb ATOM entries -added the writeAtoms public method -get rid of spurious trailing TER record python/diffPotTools.py -readInRelaxData: added optional verbose argument -fill_in_results: bug fixes -renamed function get_InG --> diffValuesEuler -added function tensParams python/nbond added function findContacts - significantly speeds up contactMap helper nmrPot/posSymmPot -PosSymmPot: renamed: variance() --> deltaVariance() fitCoords() --> aveCoords() -now support optimizing ensemble weights -diffFac: bug fix for cases of near-degenerate eigenvalues nmrPot/probDistPot python/probDistPotTools.py -ProbDistPot constructor: removed the unused CDataflag argument -create_probDistPot: rename one and remove one argument python/protocol.py -initNBond, cartesianTopology: changed default selection from "known" to "all". This reduces confusion when coordinates are loaded after these functions are called. -Added protocol.initPlanarity() helper for XPLOR planarity restraints. python/psfGen.py psfGen module: added (U, URI) key-value pair into residueMap python/rdcPotTools.py analyze: added per-structure chi^2 report python/regularize.py -fixupCovalentGeom: Added note on extraTerms arg -fixupCovalentGeomIVM: fixed treatment of extraTerms arg one other bug fix nmrPot/relaxRatioPot -fixed forceTessellation -calcSigma: shortcut return if there are no restraints python/relaxRatioPotTools.py -string typo fixes -filterRelaxData: added optional outFilename argument to enable printing out backcalculated relax ratio values -improved readability and documentation -filterRelaxData: now print chi^2 and tensor parameters at each iteration. -meanChi2ExN, meanExResN: fixed to work -fixed all ExtraStats to work -create_RelaxRatioPot: o added optTemp argument, deprecated addAtoms, o removed unused arguments o updated docstring -added massSetup, call from protocol.py python/ringGeom.py -Added functions pucker_all, puckerRao and puckerRao_all -pucker and puckerRao functions now accept an input sequence of angle values as an alternate to dihedral definitions nmrPot/sardcPot -added gradient wrt ensemble weights -fixed gradient for case optimizeScale==False -optimization for repeated calcEnergy calls python/simulationTools.py StructureLoop: -fixed treatment of pdbFilesIn argument -update pdbFilesIn to handle a template string -pdbFileIn: now fill MEMBER literal with zero if there is no EnsembleSimulation. -genAveStats: handle case of genViolationStats==False -genAveStats: fix to read in first structure- caused problems when run in parallel and fitting structures nmrPot/solnScatPot -setCmpType: now leave the calcd values alone- they need to be recalculated anyway -updated to take the gradient wrt to ensemble weights python/solnScatPotTools.py fitParams: handle very large RMSD values surfD/compute.cc fixed off-by-one index python/torsionDBPotTools.py -the atom keyword is now removed upon reading the db file in create_TorsionDBPot function -Simplified code in create_TorsionDBPot TCL Interface tcl/noe_reporting.tcl -replaced individualStructNoeReport with individualStructNoeReports giving more info in a nicer format -added energyReport: now report RMSD individualStructNoeReport: now report rmsd instead of energy -added CDIH to xplorReport tcl/pdb_support.tcl writePDB: removed inserted blank remarks inserted between each remark tcl/sa_protocols.tcl for all passes: added calls to energyReport, individualStructNoeReport marvin/PeakAssignment python/pasd.py tcl/aeneas_tools.tcl tcl/import_pipp.tcl tcl/make_random_noes.tcl tcl/marvinAssignment.i tcl/noe_reporting.tcl tcl/noe_tools.tcl PASD: added support for nMono in distance calculation via python pasd.nMono setting Architecture-specific changes arch/Darwin_10_x86_64/intVar/Makefile arch/Linux_x86_64/intVar/Makefile added 2013 to list for optimization downgrading arch/Linux_x86_64/intVar/Makefile updated optimization downgrade for newer Intel compilers - thanks to P. Mercier Low-level Functionality test/numDiff anum/getnum: updated to deal with trailing ``} character common/atomSel removed get method - returned reference to temporary tcl/Makefile added (noneffective) .NOTPARALLEL rule CDSlib/cdsString.cc doGsub: fixed issue with adjacent matches; add test common/ensemblePot EnsemblePot: energyMaybeDerivs*: changed the call signature pass single pointer arg CDSlib/iomanip.hh added left and right manipulators bin/findSwig added version 2.0.10 to supported versions 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.