3D structural data is stored at the level of the current data pipe. This data is completely separate from the molecule, residue and spin data structure. However the structural data can be used to generate the spin containers. For example for the nitrogen relaxation in a model-free analysis where both the nitrogen and proton are needed to define the magnetic dipole-dipole relaxation:
# Create a data pipe. pipe.create(pipe_name='ellipsoid', pipe_type='mf') # Load the PDB file. structure.read_pdb('1f3y.pdb') # Set up the 15N and 1H backbone spins. structure.load_spins('@N', ave_pos=True) structure.load_spins('@H', ave_pos=True) # Set up the 15N and 1H for the tryptophan indole ring. structure.load_spins('@NE1', ave_pos=True) structure.load_spins('@HE1', ave_pos=True) # Define the spin isotopes. spin.isotope('15N', spin_id='@N*') spin.isotope('1H', spin_id='@H*')
The structure.read_pdb user function will load the structural data into the current data pipe, and the structure.load_spins user function will create the molecule, residue, and spin containers as needed. This will also load atomic position information into the matching spin containers. The spin.isotope user function is required to define the magnetic dipole-dipole interaction and is information not present in the PDB file.
Note that if structural data from the PDB is used to generate the spin containers, then all subsequent data loaded into relax must follow the exact naming convention from the PDB file. Automatic residue name matching (i.e. `GLY' = `Gly' = `gly' = `G') is currently not supported.
The relax user manual (PDF), created 2019-03-08.