Thanks so much for your help with this. After adding the top and par files
to toppar folder, I modified the script to include
*seqToPSF("TM+3",**startResid=90)
*so that part of the script looks like this:
*if fastaSEQ: basename = os.path.splitext(fastaSEQ)[0] if not
os.path.exists(f"{basename}_extended.pdb"): # generate PSF data from
sequence and initialize the correct parameters from psfGen import
seqToPSF seqToPSF(fastaSEQ) seqToPSF("TM+3",startResid=90)*
However, instead of the error I got with the TM atom, I am now getting this:
SystemError: xplor-nih error: error reading restraint: selection string resid
2 and name H selects no atoms
I have double-checked my PDB and there should not be an issue with finding
resid 2 and name H. Here is part of the PDB which shows that there is a H
atom for resid 2:
ATOM 1 N MET A 1 27.340 24.430 2.614 1.00 9.67
N
ATOM 2 CA MET A 1 26.266 25.413 2.842 1.00 10.38
C
ATOM 3 C MET A 1 26.913 26.639 3.531 1.00 9.62
C
ATOM 4 O MET A 1 27.886 26.463 4.263 1.00 9.62
O
ATOM 5 CB MET A 1 25.112 24.880 3.649 1.00 13.77
C
ATOM 6 CG MET A 1 25.353 24.860 5.134 1.00 16.29
C
ATOM 7 SD MET A 1 23.930 23.959 5.904 1.00 17.17
S
ATOM 8 CE MET A 1 24.447 23.984 7.620 1.00 16.11
C
ATOM 9 H MET A 1 27.572 24.406 1.631 1.00 9.67
H
ATOM 10 N GLN A 2 26.335 27.770 3.258 1.00 9.27
N
ATOM 11 CA GLN A 2 26.850 29.021 3.898 1.00 9.07
C
ATOM 12 C GLN A 2 26.100 29.253 5.202 1.00 8.72
C
ATOM 13 O GLN A 2 24.865 29.024 5.330 1.00 8.22
O
ATOM 14 CB GLN A 2 26.733 30.148 2.905 1.00 14.46
C
ATOM 15 CG GLN A 2 26.882 31.546 3.409 1.00 17.01
C
ATOM 16 CD GLN A 2 26.786 32.562 2.270 1.00 20.10
C
ATOM 17 NE2 GLN A 2 25.562 32.733 1.806 1.00 19.49
N
ATOM 18 OE1 GLN A 2 27.783 33.160 1.870 1.00 21.89
O
*ATOM 19 H GLN A 2 25.550 27.805 2.623 1.00 9.27
H*
*Also, the restraint file generated looks like this: *
*assign ( resid 500 and name 00 ) ( resid 500 and name Z ) (
resid 500 and name X ) ( resid 500 and name Y ) ( resid 90 and
name TM+3 ) ( resid 2 and name H ) -0.06900 0.00000*
*This restraint file was generated from the following part of the script:*
*def PCSvaluesToXplorRestraints(filename, metal_id, metal_name):
"""Convert PCS values to XPLOR-NIH restraints.""" data =
np.loadtxt(filename, dtype={'names': ('res', 'atom', 'PCS',
'dPCS'), 'formats': ('f4', 'U1', 'f4', 'f4')})
basename = os.path.splitext(filename)[0] with open(f"{basename}.xplor",
"w") as outfile: for pcs in data: res, atom, PCS, dPCS =
pcs outstring = ('assign ( resid 500 and name 00 )\n'
' ( resid 500 and name Z )\n' '
( resid 500 and name X )\n' ' ( resid
500 and name Y )\n' f' ( resid {metal_id} and
name {metal_name} )\n' f' ( resid {int(res)}
and name {atom} ) {PCS:.5f} {dPCS:.5f}\n')
outfile.write(outstring)*
(Please let me know if you identify any issues with sections of the script
or if it would be ok to send my entire script please let me know?)
Thank you.
Adedolapo
On Thu, Nov 30, 2023 at 11:34 AM Charles Schwieters <[email protected]>
wrote:
>
> Hello Adedolapo--
>
>
> > So the top/par files need to be created first for Thulium before I
> > run this line, correct?:
> > seqToPSF("TM3",startResid=90). Where can I get the topology info for
> > TM?
>
> I've placed updated versions of ion.top and ion.par containing TM+3
> parameters here:
>
> https://bit.niddk.nih.gov/out/toAdedolapo-20231130/
>
> They should be placed in the toppar subdirectory of the Xplor-NIH
> distribution. These should enable the use of TM3+, and will be present
> in future versions of Xplor-NIH.
>
>
> >
> > PS: the tag is a DOTA-M7Py tag with Tm metal in the center attached
> > to a Cysteine. In case the above option doesn't work, If I am going
> > to patch the full lanthanide tag, it's not very clear to me how to
> > do this.
>
> I believe the correct tagged cysteine is contained in the CUNL residue
> defined in cunl.top/par in the above URL location. If you use it,
> please check that it is the moeity you are using. In CUNL, the metal
> center is called LU26 (not thulium) in this tag.
>
> > I saw the lines below in one of the threads on the XPLOR
> > forum. How can I modify this to create the full Tm-DOTA-M7Py tag?
>
> More like:
>
> import protocol
> protocol.initTopology('protein'); protocol.initTopology('cunl.top')
> protocol.initParams('protein'); protocol.initParams('cunl.par')
> import pfsGen; psfGen.addResidue('CUNL')
>
> seq="GLY CUNL GLY" #replace with your sequence
>
> psfGen.seqToPSF(seq)
>
> import protocol
> protocol.genExtendedStructure()
>
> xplor.command("write PSF output=new.psf end")
> protocol.writePDB("new.pdb")
>
>
> With this, you will have a PSF file you can use going forward. In a
> structure calculation script use
>
> protocol.initStruct("new.psf")
> protocol.initCoords("existing.pdb") # an untagged PDB
>
> protocol.addUnknownAtoms()
>
> ...
>
> I hope this helps--
> Charles
>
########################################################################
To unsubscribe from the XPLOR-NIH list, click the following link:
http://list.nih.gov/cgi-bin/wa.exe?SUBED1=XPLOR-NIH&A=1