Opened 3 years ago

Closed 3 years ago

#7180 closed defect (fixed)

ISOLDE restrain distances: ffi_prep_cif_var failed

Reported by: sean.connell@… Owned by: Tristan Croll
Priority: normal Milestone:
Component: Third Party Version:
Keywords: Cc:
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Linux-5.15.0-37-generic-x86_64-with-glibc2.35
ChimeraX Version: 1.4 (2022-06-03 23:39:42 UTC)
Description
isolde restrain distances #1.2/G template #4/G adjustForConfidence true

Log:
> set selectionWidth 4

UCSF ChimeraX version: 1.4 (2022-06-03)  
© 2016-2022 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open /home/xhan/Downloads/RsmA_ebic/ISOLDE/RsmA-001-job456/7k00-30S-body-
> aln-trim-RimPRsmAAF-modh45-coot-3.pdb

Chain information for 7k00-30S-body-aln-trim-RimPRsmAAF-modh45-coot-3.pdb #1  
---  
Chain | Description  
A | No description available  
B | No description available  
C | No description available  
D | No description available  
E | No description available  
F | No description available  
G | No description available  
H | No description available  
K | No description available  
L | No description available  
O | No description available  
P | No description available  
Q | No description available  
R | No description available  
T | No description available  
U | No description available  
  

> open
> /home/xhan/Downloads/RsmA_ebic/ISOLDE/RsmA-001-job456/job456_deephancer.mrc
> /home/xhan/Downloads/RsmA_ebic/ISOLDE/RsmA-001-job456/Refine3D-job456-run_class001.mrc

Opened job456_deephancer.mrc as #2.1, grid size 416,416,416, pixel 1.02, shown
at level 0.000145, step 2, values float32  
Opened Refine3D-job456-run_class001.mrc as #2.2, grid size 416,416,416, pixel
1.02, shown at level 0.00501, step 2, values float32  
ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
Chain information for 7k00-30S-body-aln-trim-RimPRsmAAF-modh45-coot-3.pdb  
---  
Chain | Description  
1.2/A | No description available  
1.2/B | No description available  
1.2/C | No description available  
1.2/D | No description available  
1.2/E | No description available  
1.2/F | No description available  
1.2/G | No description available  
1.2/H | No description available  
1.2/K | No description available  
1.2/L | No description available  
1.2/O | No description available  
1.2/P | No description available  
1.2/Q | No description available  
1.2/R | No description available  
1.2/T | No description available  
1.2/U | No description available  
  

> clipper associate #2.2 toModel #1

Opened Refine3D-job456-run_class001.mrc as #1.1.1.1, grid size 416,416,416,
pixel 1.02, shown at step 1, values float32  

> clipper associate #2.1 toModel #1

Opened job456_deephancer.mrc as #1.1.1.2, grid size 416,416,416, pixel 1.02,
shown at step 1, values float32  

> addh

Summary of feedback from adding hydrogens to 7k00-30S-body-aln-trim-
RimPRsmAAF-modh45-coot-3.pdb #1.2  
---  
warning | Not adding hydrogens to /A A 2 P because it is missing heavy-atom
bond partners  
notes | No usable SEQRES records for 7k00-30S-body-aln-trim-RimPRsmAAF-
modh45-coot-3.pdb (#1.2) chain A; guessing termini instead  
No usable SEQRES records for 7k00-30S-body-aln-trim-RimPRsmAAF-
modh45-coot-3.pdb (#1.2) chain B; guessing termini instead  
No usable SEQRES records for 7k00-30S-body-aln-trim-RimPRsmAAF-
modh45-coot-3.pdb (#1.2) chain C; guessing termini instead  
No usable SEQRES records for 7k00-30S-body-aln-trim-RimPRsmAAF-
modh45-coot-3.pdb (#1.2) chain D; guessing termini instead  
No usable SEQRES records for 7k00-30S-body-aln-trim-RimPRsmAAF-
modh45-coot-3.pdb (#1.2) chain E; guessing termini instead  
11 messages similar to the above omitted  
Chain-initial residues that are actual N termini: /B VAL 4, /C MET 1, /D ALA
2, /E GLU 10, /F MET 1, /G MET 1, /H SER 2, /K ARG 13, /L ALA 2, /O SER 2, /P
MET 1, /Q LYS 4, /R LYS 9, /T ALA 2, /U PRO 2  
Chain-initial residues that are not actual N termini: /K GLY 120  
Chain-final residues that are actual C termini: /B GLN 227, /C PHE 150, /D LYS
206, /E LEU 165, /F VAL 103, /G SER 273, /H ALA 130, /K VAL 129, /L ALA 124,
/O ARG 89, /P ALA 81, /Q ALA 82, /R HIS 74, /T ALA 87, /U TYR 71  
Chain-final residues that are not actual C termini: /K HIS 118  
3960 hydrogen bonds  
/K HIS 118 is not terminus, removing H atom from 'C'  
36 hydrogens added  
  

> help help:index.html

> alphafold fetch P0A8A8 alignTo #1.2/C

AlphaFold chains matching chain C  
---  
Chain| UniProt Name| UniProt Id| RMSD| Length| Seen| % Id  
C |  | P0A8A8 | 0.00 | 150 | 150 | 100  
  

> isolde restrain torsions #1.2/C templateResidues #3/C adjustForConfidence
> true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]ISOLDE: Corrected atom nomenclature of 24 residues in
model #3 to IUPAC-IUB standards.  

> isolde restrain distances #1.2/C templateAtoms #3/C adjustForConfidence true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]RMSD between 150 pruned atom pairs is 0.000 angstroms;
(across all 150 pairs: 0.000)  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 673, in
restrain_atom_distances_to_template  
apply_restraints(tr, rr, adjust_for_confidence, confidence_type)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> isolde restrain distances #1.2/C

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 653, in
restrain_atom_distances_to_template  
return [apply_restraints(trs, rrs, adjust_for_confidence, confidence_type) for
trs, rrs in zip(template_residues, restrained_residues)]  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 653, in
<listcomp>  
return [apply_restraints(trs, rrs, adjust_for_confidence, confidence_type) for
trs, rrs in zip(template_residues, restrained_residues)]  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> isolde restrain distances #1.2/G

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 653, in
restrain_atom_distances_to_template  
return [apply_restraints(trs, rrs, adjust_for_confidence, confidence_type) for
trs, rrs in zip(template_residues, restrained_residues)]  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 653, in
<listcomp>  
return [apply_restraints(trs, rrs, adjust_for_confidence, confidence_type) for
trs, rrs in zip(template_residues, restrained_residues)]  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> alphafold fetch P06992 alignTo #1.2/G

AlphaFold chains matching chain G  
---  
Chain| UniProt Name| UniProt Id| RMSD| Length| Seen| % Id  
G |  | P06992 | 0.00 | 273 | 273 | 100  
  

> isolde restrain torsions #1.2/G templateResidues #4/G adjustForConfidence
> true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]ISOLDE: Corrected atom nomenclature of 35 residues in
model #4 to IUPAC-IUB standards.  

> isolde tutorial

> isolde restrain distances #1.2/G templateAtoms #4/G adjustForConfidence true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]RMSD between 273 pruned atom pairs is 0.000 angstroms;
(across all 273 pairs: 0.000)  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 673, in
restrain_atom_distances_to_template  
apply_restraints(tr, rr, adjust_for_confidence, confidence_type)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> isolde restrain distances #1.2/G templateAtoms #4/G adjustForConfidence true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]RMSD between 273 pruned atom pairs is 0.000 angstroms;
(across all 273 pairs: 0.000)  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 673, in
restrain_atom_distances_to_template  
apply_restraints(tr, rr, adjust_for_confidence, confidence_type)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> isolde restrain distances #1.2/G templateAtoms #4/G adjustForConfidence true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]RMSD between 273 pruned atom pairs is 0.000 angstroms;
(across all 273 pairs: 0.000)  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 673, in
restrain_atom_distances_to_template  
apply_restraints(tr, rr, adjust_for_confidence, confidence_type)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  

> isolde restrain distances #1.2/G templateAtoms #4/G adjustForConfidence true

ISOLDE: Checking and correcting nomenclature for (pseudo)symmetric side
chains...  
[Repeated 1 time(s)]RMSD between 273 pruned atom pairs is 0.000 angstroms;
(across all 273 pairs: 0.000)  
Traceback (most recent call last):  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 319, in execute  
cmd.run(cmd_text)  
File "/usr/lib/ucsf-chimerax/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2897, in run  
result = ci.function(session, **kw_args)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/cmd.py", line 47, in restrain_distances  
restraint_utils.restrain_atom_distances_to_template(session,
template_residues,  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 673, in
restrain_atom_distances_to_template  
apply_restraints(tr, rr, adjust_for_confidence, confidence_type)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/restraints/restraint_utils.py", line 637, in
apply_restraints  
dr = adrm.add_restraint(ra1, ra2)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2883, in add_restraint  
r = self._get_restraints(Atoms([atom1]), Atoms([atom2]), True)  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
RuntimeError: ffi_prep_cif_var failed  
  
RuntimeError: ffi_prep_cif_var failed  
  
File "/home/xhan/.local/share/ChimeraX/1.4/site-
packages/chimerax/isolde/molobject.py", line 2863, in _get_restraints  
num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n,
pointer(ret))  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 470.129.06
OpenGL renderer: NVIDIA GeForce GTX 1070/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Python: 3.9.11
Locale: en_US.UTF-8
Qt version: PyQt6 6.3.0, Qt 6.3.0
Qt runtime version: 6.3.0
Qt platform: xcb

XDG_SESSION_TYPE=x11
DESKTOP_SESSION=ubuntu
XDG_SESSION_DESKTOP=ubuntu
XDG_CURRENT_DESKTOP=ubuntu:GNOME
DISPLAY=:1
Manufacturer: Hewlett-Packard
Model: HP Z440 Workstation
OS: Ubuntu 22.04 jammy
Architecture: 64bit ELF
Virtual Machine: none
CPU: 8 Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz
Cache Size: 10240 KB
Memory:
	               total        used        free      shared  buff/cache   available
	Mem:            62Gi        12Gi        19Gi       247Mi        31Gi        49Gi
	Swap:          2.0Gi       0.0Ki       2.0Gi

Graphics:
	02:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1)	
	Subsystem: ASUSTeK Computer Inc. GP104 [GeForce GTX 1070] [1043:8596]	
	Kernel driver in use: nvidia

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.10.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2022.5.18.1
    cftime: 1.6.0
    charset-normalizer: 2.0.12
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2.1
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.4.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.2
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.39.1
    ChimeraX-AtomicLibrary: 7.0
    ChimeraX-AtomSearch: 2.0.1
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.1.1
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.7
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.4
    ChimeraX-Clipper: 0.18.0
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2.3
    ChimeraX-ConnectStructure: 2.0.1
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.1
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.2
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ISOLDE: 1.4b1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1.1
    ChimeraX-LinuxSupport: 1.0
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.7
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.5
    ChimeraX-ModelPanel: 1.3.2
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.9
    ChimeraX-PDB: 2.6.6
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5.1
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.8
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.18.3
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1.2
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    cxservices: 1.2
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.6.0
    decorator: 5.1.1
    distro: 1.6.0
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    fonttools: 4.33.3
    funcparserlib: 1.0.0
    grako: 3.16.5
    h5py: 3.7.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.27
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.10.0
    kiwisolver: 1.4.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.1.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    msgpack: 1.0.3
    nest-asyncio: 1.5.5
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pexpect: 4.8.0
    pickleshare: 0.7.5
    Pillow: 9.0.1
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.29
    psutil: 5.9.0
    ptyprocess: 0.7.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.9
    PyQt6-commercial: 6.3.0
    PyQt6-Qt6: 6.3.0
    PyQt6-sip: 13.3.1
    PyQt6-WebEngine-commercial: 6.3.0
    PyQt6-WebEngine-Qt6: 6.3.0
    python-dateutil: 2.8.2
    pytz: 2022.1
    pyzmq: 23.1.0
    qtconsole: 5.3.0
    QtPy: 2.1.0
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    setuptools: 59.8.0
    sfftk-rw: 0.7.2
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.9
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0

Change History (7)

comment:1 by Tristan Croll, 3 years ago

Platform: all
Project: ChimeraX

Looking around the web for that error message, it seems to crop up mostly associated with ctypes (which indeed is what I used to wrap this function). My guess is that the version of libffi distributed with Ubuntu 22.04 is incompatible with the one in the ChimeraX build environment? I don't have an Ubuntu 22.04 system to test on, but I believe a colleague in my lab is now using it. I'm not there today, but will see if I can borrow it for a little while tomorrow for testing.

comment:2 by Eric Pettersen, 3 years ago

Component: UnassignedThird Party
Owner: set to Tristan Croll
Status: newassigned
Summary: ChimeraX bug report submissionISOLDE restrain distances: ffi_prep_cif_var failed

comment:3 by Tristan Croll, 3 years ago

This is code that hasn't changed in a long long time, using the ChimeraX c_function API:

    def _get_restraint_c_func(self):
        if not hasattr(self, '_c_func_get_restraint'):
            self._c_func_get_restraint = c_function(
                self._c_function_prefix+'_mgr_get_restraint',
                args=(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_bool, ctypes.c_void_p),
                ret = ctypes.c_size_t)
        return self._c_func_get_restraint

    def _get_restraints(self, atoms1, atoms2, create=False):
        f = self._get_restraint_c_func()
        n = len(atoms1)
        if n != len(atoms2):
            raise TypeError('Lengths of atoms arrays must match!')
        ret = numpy.empty(n, cptr)
        num = f(self._c_pointer, atoms1._c_pointers, atoms2._c_pointers, create, n, pointer(ret))
        return self._plural_restraint_getter(ret[:num])

... wrapping the function:

extern "C" EXPORT size_t
adaptive_distance_restraint_mgr_get_restraint(void *mgr, void* atom1, void* atom2, npy_bool create, size_t n, pyobject_t *restraint)
{
    AdaptiveDistanceRestraintMgr *d = static_cast<AdaptiveDistanceRestraintMgr *>(mgr);
    Atom **a1 = static_cast<Atom **>(atom1);
    Atom **a2 = static_cast<Atom **>(atom2);
    size_t count=0;
    try {
        for (size_t i=0; i<n; ++i) {
            AdaptiveDistanceRestraint *r = d->get_restraint(*a1++, *a2++, create);
            if (r != nullptr) {
                *restraint++ = r;
                count++;
            }
        }
        return count;
    } catch (...) {
        molc_error();
        return 0;
    }
}

That it's suddenly failing now makes me strongly suspect that this is something about the Ubuntu 22.04 environment (or something specific to the environment on this particular machine) rather than anything I'm doing. But then, I suppose that raises the question: why would it only be failing *here* when c_function is used extensively throughout ChimeraX? Any ideas?

comment:4 by Tristan Croll, 3 years ago

Oh, wait. I see I've messed up the argument signature in _get_restraint_c_func() - it's missing the entry for the second-to-last argument (number of atoms). Which raises the question: how the heck has this actually been working all this time?? The ways of ctypes are mysterious...

comment:5 by Tristan Croll, 3 years ago

Sean, could you do me a favour? Try editing the file /home/xhan/.local/share/ChimeraX/1.4/site-packages/chimerax/isolde/molobject.py a few lines above line 2863 from:

args=(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_bool, ctypes.c_void_p),

to

args=(ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_bool, ctypes.c_size_t, ctypes.c_void_p),

then restart ChimeraX and see if your test case now works?

in reply to:  6 ; comment:6 by sean.connell@…, 3 years ago

Good Morning Tristan

Introducing these changes seems to have solved the issue.  I mean distance restraints are generated and there is no error message. Is it safe to continue working with the code now?

Thanks for your help

Sean




comment:7 by Tristan Croll, 3 years ago

Resolution: fixed
Status: assignedclosed

Great! While I'm still (a) really surprised that ctypes didn't throw an error way back when I first wrote that code, and (b) baffled as to why it started throwing one seemingly only for you, this should now be correct and perfectly safe to use.

Note: See TracTickets for help on using tickets.