Xplor structure calculation unable to initiate pass 3

Hi there

I am in the process of generating structures for two protein data sets. My computer is able to run structure calculations to completion for one of the data sets but not the other. It seems like Xplor/ talosn are unable to initiate pass 3, and the calculations are aborted after generating >300 structures in pass 2.

I am getting the following errors

“file not found: *pass3.pasd” and “FileNotFoundError: Could not find *final.pasd”

I will also copy and paste the output from xplor below:

ass2.py(400): pass
StructureLoop: calculating structure 311
pass2.py(325): from monteCarlo import randomizeTorsions
pass2.py(326): randomizeTorsions(dyn)
pass2.py(330): from torsionTools import setTorsionsFromTable
pass2.py(331): setTorsionsFromTable( dihed.restraintString )
pass2.py(332): pass
pass2.py(334): protocol.fixupCovalentGeom(maxIters=100,useVDW=1)
MMapAlloc::alloc: mmap failed with Cannot allocate memory
munmap_chunk(): invalid pointer
free(): invalid pointer
Aborted (core dumped)
no machines specified. Disabling -parallel…
Xplor-NIH version 3.9

C.D. Schwieters, J.J. Kuszewski, Progr. NMR Spectr. 48, 47-62 (2006).
N. Tjandra, and G.M. Clore J. Magn. Res., 160, 66-74 (2003).
https://bit.niddk.nih.gov/xplor-nih based on X-PLOR 3.851 by A.T. Brunger

User: jvederas on: jvederas-P(Linux_x86_64 ) at: 2-Jan-25 04:41:27
stdin: xplor.execfile(‘pass3.py’)
pass3.py(2): xplor.requireVersion(“3.6”)
pass3.py(18): (opts,args) = xplor.parseArguments([
pass3.py(28): quick=False
pass3.py(29): refFilename=None
pass3.py(31): distBlocks=
pass3.py(32): for opt in opts:
pass3.py(33): if opt[0]==“quick”: #specify -quick to just test that the script runs
pass3.py(36): if opt[0]==“refFilename”:
pass3.py(39): if opt[0]==“dist”:
pass3.py(41): if opt[0]==“allDist”:
pass3.py(43): if opt[0]==“likelihoodCut”:
pass3.py(44): highLikelihoodCutoff=float(opt[1])
pass3.py(45): pass
pass3.py(46): pass
pass3.py(32): for opt in opts:
pass3.py(48): nefFile=args[0]
pass3.py(49): pasdFilenames=args[1:]
pass3.py(57): outFilename = “SCRIPT_STRUCTURE.pdb”
pass3.py(58): numberOfStructures=500
pass3.py(60): if quick:
pass3.py(66): import protocol
pass3.py(68): protocol.initRandomSeed() #set random seed - by time
random seed initialized to 5818087
pass3.py(81): from atomAction import genRandomCoords
pass3.py(82): genRandomCoords()
pass3.py(89): from potList import PotList
pass3.py(90): potList = PotList()
pass3.py(94): from simulationTools import MultRamp, StaticRamp, InitialParams, IVMAction
pass3.py(96): rampedParams=
pass3.py(97): highTempParams=
pass3.py(98): highTemp1Params=
pass3.py(99): highTemp2Params=
pass3.py(105): from ivm import IVM
pass3.py(106): dyn = IVM()
pass3.py(107): minc = IVM() # minc used for final cartesian minimization
pass3.py(116): from iupacNaming import toIUPAC
pass3.py(117): toIUPAC()
pass3.py(129): from noePotTools import create_NOEPot, readNEF
pass3.py(130): noe=PotList(“dist”)
pass3.py(131): if distBlocks is None:
pass3.py(135): for name in distBlocks:
pass3.py(142): potList.append(noe)
pass3.py(143): rampedParams.append( MultRamp(2,30, “noe.setScale( VALUE )”) )
pass3.py(147): import pasd
pass3.py(148): pasdTerms=PotList(‘pasd’)
pass3.py(149): potList.append( pasdTerms )
pass3.py(150): for pasdFilename in pasdFilenames:
pass3.py(151): name=‘‘.join( pasdFilename.split(’’)[:-1] )
pass3.py(152): print(f"processing PASD file: {pasdFilename} for spectrum {name}")
processing PASD file: *pass3.pasd for spectrum
pass3.py(154): from pasdPotTools import create_PASDPot
pass3.py(156): pot = create_PASDPot(name,pasdFilename=pasdFilename)

file not found: *pass3.pasd
Traceback (most recent call last):
File “”, line 2, in
File “/usr/local/xplor/xplor-nih-3.9/python/trace.py”, line 180, in run
exec(cmd, dict, dict)
File “”, line 1, in
File “/usr/local/xplor/xplor-nih-3.9/python/xplorInit.py”, line 147, in execfile
exec(code, globals, locals)
File “pass3.py”, line 156, in
pot = create_PASDPot(name,pasdFilename=pasdFilename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/pasdPotTools.py”, line 46, in create_PASDPot
pasd,pasdFilename = fileContentsOrString(pasdFilename,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/utils.py”, line 218, in fileContentsOrString
filename = getDBfilename(filenameOrString,dbEnvVar)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/utils.py”, line 190, in getDBfilename
raise FileNotFoundError(msg)
FileNotFoundError: Could not find *pass3.pasd
HEAP: maximum use= 4201102 current use= 3353249
X-PLOR: total CPU time= 0.2922 s
X-PLOR: entry time at 04:41:27 2-Jan-25
X-PLOR: exit time at 04:41:27 2-Jan-25
Xplor-NIH version 3.9

C.D. Schwieters, J.J. Kuszewski, Progr. NMR Spectr. 48, 47-62 (2006).
N. Tjandra, and G.M. Clore J. Magn. Res., 160, 66-74 (2003).
https://bit.niddk.nih.gov/xplor-nih based on X-PLOR 3.851 by A.T. Brunger

User: jvederas on: jvederas-P(Linux_x86_64 ) at: 2-Jan-25 04:41:27
stdin: xplor.execfile(‘makeNEF.py’)
makeNEF.py(6): xplor.requireVersion(“3.0”)
makeNEF.py(11): (opts,args) = xplor.parseArguments([
makeNEF.py(12): (“likelihoodCut”,“val”,
makeNEF.py(11): (opts,args) = xplor.parseArguments([
makeNEF.py(16): likelihoodCut=0.9
makeNEF.py(17): for opt in opts:
makeNEF.py(18): if opt[0]==“likelihoodCut”:
makeNEF.py(19): likelihoodCut=float(opt[1])
makeNEF.py(20): pass
makeNEF.py(21): pass
makeNEF.py(17): for opt in opts:
makeNEF.py(24): nefFile=args[0]
makeNEF.py(25): pasdFilenames=args[1:]
makeNEF.py(27): from nefTools import readNEF
makeNEF.py(28): nef = readNEF(nefFile) # generates PSF information
makeNEF.py(35): from iupacNaming import toIUPAC
makeNEF.py(36): toIUPAC()
makeNEF.py(38): from nefTools import genHeader
makeNEF.py(39): nefString = genHeader()
makeNEF.py(43): from nefTools import getBlock, catPrefixes
makeNEF.py(44): shiftsBlock = getBlock(nef,‘shifts’)
makeNEF.py(45): shiftsPrefix=catPrefixes[‘shifts’]
makeNEF.py(46): name=shiftsBlock[shiftsPrefix].sf_framecode[0][len(shiftsPrefix)+1:]
makeNEF.py(50): from nefTools import shifts_writeNEF
makeNEF.py(51): nefString += shifts_writeNEF(name,shiftsBlock)
makeNEF.py(55): from nefTools import getBlock, catPrefixes
makeNEF.py(56): dihedralBlock = getBlock(nef,‘dihedral’,‘1’)
makeNEF.py(57): dihedralPrefix=catPrefixes[‘dihedral’]
makeNEF.py(58): name=dihedralBlock[dihedralPrefix].sf_framecode[0][len(dihedralPrefix)+1:]
makeNEF.py(60): import nefTools
makeNEF.py(61): dihedral0=nefTools.makeNEF()
makeNEF.py(62): dihedral0[dihedralPrefix+‘‘+name] = dihedralBlock
makeNEF.py(64): nefString += “\n” + dihedral0.asString() + “\n”
makeNEF.py(69): prefix=catPrefixes[‘distance’]
makeNEF.py(70): for name in nefTools.getBlockNames(nef,“distance”):
makeNEF.py(83): spectrumNames=[]
makeNEF.py(84): for pasdFilename in pasdFilenames:
makeNEF.py(85): name=’
’.join( pasdFilename.split(‘‘)[:-1] )
makeNEF.py(86): print(f"initializing spectrum {name}")
initializing spectrum
makeNEF.py(87): spectrumNames.append( name )
makeNEF.py(89): from nefTools import getBlock, catPrefixes
makeNEF.py(90): block = getBlock(nef,‘spectrum’,name)
makeNEF.py(91): prefix=catPrefixes[‘spectrum’]
makeNEF.py(92): name=block[prefix].sf_framecode[0][len(prefix)+1:]
makeNEF.py(94): newNEF=nefTools.makeNEF()
makeNEF.py(95): newNEF[prefix+’
’+name] = block
makeNEF.py(97): nefString += “\n” + newNEF.asString() + “\n”
makeNEF.py(98): pass
makeNEF.py(84): for pasdFilename in pasdFilenames:
makeNEF.py(101): from tclInterp import TCLInterp
makeNEF.py(102): tcl = TCLInterp()
makeNEF.py(104): tcl.command(“package require aeneas”)
makeNEF.py(105): tcl.command(“package require marvin”)
makeNEF.py(107): from potList import PotList
makeNEF.py(108): pots=
makeNEF.py(109): linkageInfo=
makeNEF.py(110): for pasdFilename in pasdFilenames:
makeNEF.py(111): name=‘‘.join( pasdFilename.split(’’)[:-1] )
makeNEF.py(112): print(f"processing PASD file: {pasdFilename} for spectrum {name}")
processing PASD file: *final.pasd for spectrum
makeNEF.py(113): from pasdPotTools import create_PASDPot
makeNEF.py(114): noePot = create_PASDPot(name,
makeNEF.py(115): pasdFilename=pasdFilename)
makeNEF.py(114): noePot = create_PASDPot(name,

file not found: *final.pasd
Traceback (most recent call last):
File “”, line 2, in
File “/usr/local/xplor/xplor-nih-3.9/python/trace.py”, line 180, in run
exec(cmd, dict, dict)
File “”, line 1, in
File “/usr/local/xplor/xplor-nih-3.9/python/xplorInit.py”, line 147, in execfile
exec(code, globals, locals)
File “makeNEF.py”, line 114, in
noePot = create_PASDPot(name,
^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/pasdPotTools.py”, line 46, in create_PASDPot
pasd,pasdFilename = fileContentsOrString(pasdFilename,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/utils.py”, line 218, in fileContentsOrString
filename = getDBfilename(filenameOrString,dbEnvVar)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/xplor/xplor-nih-3.9/python/utils.py”, line 190, in getDBfilename
raise FileNotFoundError(msg)
FileNotFoundError: Could not find *final.pasd
HEAP: maximum use= 3681502 current use= 3353249
X-PLOR: total CPU time= 0.2770 s
X-PLOR: entry time at 04:41:27 2-Jan-25
X-PLOR: exit time at 04:41:27 2-Jan-25
no machines specified. Disabling -parallel…
Xplor-NIH version 3.9

C.D. Schwieters, J.J. Kuszewski, Progr. NMR Spectr. 48, 47-62 (2006).
N. Tjandra, and G.M. Clore J. Magn. Res., 160, 66-74 (2003).
https://bit.niddk.nih.gov/xplor-nih based on X-PLOR 3.851 by A.T. Brunger

User: jvederas on: jvederas-P(Linux_x86_64 ) at: 2-Jan-25 04:41:27
X-PLOR: total CPU time= 0.1281 s
X-PLOR: entry time at 04:41:27 2-Jan-25
X-PLOR: exit time at 04:41:28 2-Jan-25
grep: fold_##.sa.stats: No such file or directory
grep: Filename:: invalid context length argument
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/xplor/xplor-nih-3.9/python/xplorInit.py”, line 147, in execfile
exec(code, globals, locals)
File “/usr/local/xplor/xplor-nih-3.9/bin/ens2pdb”, line 145, in
globList=glob(files[0])
~~~~~^^^
IndexError: list index out of range
grep: fold_##.sa.stats: No such file or directory
grep: Filename:: invalid context length argument
no machines specified. Disabling -parallel…
Xplor-NIH version 3.9

C.D. Schwieters, J.J. Kuszewski, Progr. NMR Spectr. 48, 47-62 (2006).
N. Tjandra, and G.M. Clore J. Magn. Res., 160, 66-74 (2003).
https://bit.niddk.nih.gov/xplor-nih based on X-PLOR 3.851 by A.T. Brunger

User: jvederas on: jvederas-P(Linux_x86_64 ) at: 2-Jan-25 04:41:28
X-PLOR: total CPU time= 0.1200 s
X-PLOR: entry time at 04:41:28 2-Jan-25
X-PLOR: exit time at 04:41:28 2-Jan-25
grep: refine_##.sa.stats: No such file or directory
grep: Filename:: invalid context length argument
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/xplor/xplor-nih-3.9/python/xplorInit.py”, line 147, in execfile
exec(code, globals, locals)
File “/usr/local/xplor/xplor-nih-3.9/bin/ens2pdb”, line 145, in
globList=glob(files[0])
~~~~~^^^
IndexError: list index out of range

Thank you kindly for your help!

Tyler

Hi Tyler,

Which operating software are you using? Linux or Mac OS (M-series processor?)

Can you try Xplor NIH 3.8? I had some issues with some data sets when running Xplor NIH 3.9.

Eliza

Hi Eliza, I am using Ubuntu 22.04 (intel i9 14900K processor). I could try installing Xplor 3.8, but I believe the problem is in my data set. I am able to run separate data sets to completion with my current computer configuration.

Best!

Tyler

Hi Tyler,

Thanks for the info.

I am happy to run your data on my machine if you would like (strictly confidential, you can send your input.nef to support@ccpn.ac.uk).

Bizarrely I had similar issue on M-series processor with some data sets, but it run fine on Xplor NIH 3.8.

Eliza

Hi

I agree with Eliza try running the latest version [ideally in a new directory so we can preserve evidence of the current failure in case we need to look at it]

To put this in a bit more in context…

It looks part of the calculation did not go to completion or some required files were not created, specifically the files pass3.pasd and final.pasd appears to have not been created or are ‘in the wrong place’

This is then causing subsequent stages of the calculation to fail…

So most probably the failure is actually in pass2 if it continues we can track this through the pass2 log files
If they didn’t get auto deleted…

One other thing to check your not running out of disk space or running the calculations on a remote disk?

regards
Gary

Dr Gary S Thompson NMR Facility Manager
CCPN CoI & Working Group Member
Wellcome Trust Biomolecular NMR Facility
School of Biosciences, Division of Natural Sciences
University of Kent, Canterbury, Kent, England, CT2 7NZ

:phone::01227 82 7117
:email:: g.s.thompson@kent.ac.uk
orchid: orcid.org/0000-0001-9399-7636

Hi there

I have an ongoing email chain with Charles Schwieters, the developer of xplor-nih, and he has been tremendously helpful. The issue seems to be with xplor and not with my system specifications.

I have manually initiated passes 2 and 3 and have generated 1000 structures in total. I have also manually gotten xplor to create the *pass3.pasd and final.pasd files.

I cannot get CCPNmr to process these calculations to create the “fold” folder, which should contain an “ensemble.pdb” file. I also cannot get CCPNmr to produce an “out.nef” file to analyze nOe restraints.

Any help with solving these issues would be tremendously appreciated.

Tyler

Hi Tyler,

Next step after pass3 is makeNEF.py, that gives out.nef, which is subsequently used in “fold” and next in “refine”. Xplor NIH is generating structure models and out.nef that comes with them.

Have a look at script.sh which list all steps that are done in the calculation and everything you should run.

Once completed, you can process calculations, which organises the folder but more importantly it creates violations in nef format that you can import.

BW,
Eliza

Hi Eliza

Thank you for this. I am able to generate an “out.nef” file using the command: “xplor -python makeNEF.py input_file > out.nef”, which produces a file with 371 bytes.

The final.pasd files were created with the command:
“xplor analyzeStructurePass.py -inPassName pass 3 -outPassName final \ input_new.nef *pass3.pasd”

When trying to process this data set, I receive empty “fold” and “refine” folders.

I am unclear about the previous instructions, after the creation of the out.nef and final.pasd files, do I need to run the fold.py and refine.py scripts? If so, does order of any of these processing steps matter?

Thank you kindly

Hi Tyler

The NEF file is just a text file so you can open it with any text editor and look at the contents

However, 371 bytes is way too short and it sounds like all the tables in it are empty. There must be something off further back in the analysis

Regards
Gary

Dr Gary S Thompson NMR Facility Manager
CCPN CoI & Working Group Member
Wellcome Trust Biomolecular NMR Facility
School of Biosciences, Division of Natural Sciences
University of Kent, Canterbury, Kent, England, CT2 7NZ

:phone::01227 82 7117
:email:: g.s.thompson@kent.ac.uk
orchid: orcid.org/0000-0001-9399-7636

Hi Tyler,

The reason why you have an empty ‘fold’ folder is because you have not run this part of calculations yet.

What you need to do (assuming you had, for instance, cnoe1 and nnoe1 spectra in your out.nef file):
xplor fold.py -nef out.nef -dist ‘cnoe1 nnoe1

fold.py is the last essential step in calculations, refine is optional and more relevant for further cycles.

Once that is done you will be able to “process” the run. Apart from tidying up the run folder, it creates violations_fold.nef and ensemble.pdb in resulting fold folder. Ensemble you can also create with getBest and ens2pdb Xplor NIH helper scripts. So “processing” is not essential, it should just simplify the process, the same as running the entire calculations with shell script.

The first step after calculations (once you have done ‘fold’) is to have a look at your structure, if most models are converged you are in the good place to start analysing out.nef (as described in tutorials). If your ensemble structure looks like a spaghetti ball, it would indicate that you have either far too few restraints or that you have too many noisy peaks. Xplor NIH is very good in giving the first structure even with noisy data, with limited data there is only so much you can get.

If you have any more questions let us know.

BW,
Eliza