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.