Saving a molecule¶
You save molecules using the sire.save()
function;
>>> sr.save(mol, "cholesterol.pdb")
['/path/to/cholesterol.pdb']
sire
will automatically try to guess the file format from the file
extension. In this case, the molecule is saved in PDB format.
You can specify the format using the format
argument.
>>> sr.save(mol, "cholesterol", format="mol2")
['/path/to/cholesterol.mol2']
Note how the file format extension has been added automatically, and that the full path to the file that was written is returned.
You can specify multiple file formats, and thus write to multiple files, e.g.
>>> sr.save(mol, "cholesterol", format=["mol2", "pdb"])
['/path/to/cholesterol.mol2', '/path/to/cholesterol.pdb']
or you can specify the filenames directly, e.g.
>>> sr.save(mol, ["chol.pdb", "chol.mol2"])
['/path/to/chol.pdb', '/path/to/chol.mol2']
Saving to strings¶
You can also save a molecule to memory using the
sire.save_to_string()
function. This saves the molecules
to memory, returning the lines of the file as a Python list.
You need to specify the format you want to use, e.g.
pdb
for PDB, gro
for Gro87 etc.
>>> sr.save_to_string(mols, format="pdb")
['MODEL 1',
'ATOM 1 C MOL 1 -0.019 1.525 0.010 1.00 0.00 C',
'ATOM 2 C MOL 1 0.002 -0.004 0.002 1.00 0.00 C',
'ATOM 3 C MOL 1 0.658 -0.518 1.285 1.00 0.00 C',
'ATOM 4 C MOL 1 1.418 2.055 -0.000 1.00 0.00 C',
'ATOM 5 C MOL 1 2.164 1.442 1.173 1.00 0.00 C',
...
'ATOM 72 H MOL 1 3.900 -0.359 0.167 1.00 0.00 H',
'ATOM 73 H MOL 1 2.811 -1.766 0.235 1.00 0.00 H',
'ATOM 74 H MOL 1 -0.762 2.962 -1.208 1.00 0.00 H',
'ENDMDL',
'END']
>>> sr.save_to_string(mols, format="gro")
'cholesterol',
' 74',
' 1MOL C 1 -0.001870 0.152540 0.001040',
' 1MOL C 2 0.000210 -0.000410 0.000200',
' 1MOL C 3 0.065850 -0.051780 0.128510',
' 1MOL C 4 0.141830 0.205520 -0.000040',
' 1MOL C 5 0.216410 0.144230 0.117300',
' 1MOL C 6 0.280940 0.223720 0.197530',
...
' 1MOL H 72 0.389970 -0.035920 0.016740',
' 1MOL H 73 0.281060 -0.176550 0.023460',
' 1MOL H 74 -0.076160 0.296250 -0.120770',
' 0.00000 0.00000 0.00000']