Simulate map from model

Hi, Apologies if I'm missing something obvious, but I was not able to find this in the documentation: is there a PHENIX tool for simulating Coulomb potential maps (aka "cryo-EM maps") from atomic models? I'm looking for something like the molmap https://www.cgl.ucsf.edu/chimerax/docs/user/commands/molmap.html command in ChimeraX, but more accurate. One such alternative is the simulate program from cisTEM, but I figured PHENIX might also have something? Thank you! -- Ricardo Diogo Righetto

Hi Ricardo, Maybe have a look at this example here: https://cci.lbl.gov/docs/cctbx/script_1/ Someone else could possible tell you how to tinker with the CCTBX scattering registry to achieve coulomb potential map rather than an electron density map. Rob

Ostensibly, all you need to do is run phenix.fmodel with scattering_table=electron . And perhaps try to come up with what k_sol should be for the bulk solvent density. There are caveats, of course, not the least of which is that, last I checked, the modified scattering from formal charges like ions vs neutral groups is not implemented. I don't actually know of a program that handles things like charges. I've heard rumors that someone was working on full QM calculations of electrons moving through matter to try and get this "right", but I have not heard about any progress for some time. Sorry can't be more helpful, -James On 4/2/2025 4:52 AM, Ricardo Righetto wrote:
Hi,
Apologies if I'm missing something obvious, but I was not able to find this in the documentation: is there a PHENIX tool for simulating Coulomb potential maps (aka "cryo-EM maps") from atomic models?
I'm looking for something like the molmap https://www.cgl.ucsf.edu/chimerax/docs/user/commands/molmap.html command in ChimeraX, but more accurate. One such alternative is the simulate program from cisTEM, but I figured PHENIX might also have something?
Thank you!
-- Ricardo Diogo Righetto
_______________________________________________ phenixbb mailing list [email protected] To unsubscribe send an email [email protected] Unsubscribe: phenixbb-leave@%(host_name)s

Hi, additionally: - If you want an exact map (not a finite-resolution Fourier map), use: phenix.model_map model.pdb scattering_table=electron - We are close to making a multipolar model available for density calculations, which—if I understand correctly—is what you need to simulate Coulomb potential maps. This feature is not yet available to general Phenix users, but if you send me the model off-list, I can generate and send the map back to you. Pavel On 4/2/25 10:52, James Holton wrote:
Ostensibly, all you need to do is run phenix.fmodel with scattering_table=electron . And perhaps try to come up with what k_sol should be for the bulk solvent density. There are caveats, of course, not the least of which is that, last I checked, the modified scattering from formal charges like ions vs neutral groups is not implemented. I don't actually know of a program that handles things like charges. I've heard rumors that someone was working on full QM calculations of electrons moving through matter to try and get this "right", but I have not heard about any progress for some time.
Sorry can't be more helpful,
-James
On 4/2/2025 4:52 AM, Ricardo Righetto wrote:
Hi,
Apologies if I'm missing something obvious, but I was not able to find this in the documentation: is there a PHENIX tool for simulating Coulomb potential maps (aka "cryo-EM maps") from atomic models?
I'm looking for something like the molmap https://www.cgl.ucsf.edu/chimerax/docs/user/commands/molmap.html command in ChimeraX, but more accurate. One such alternative is the simulate program from cisTEM, but I figured PHENIX might also have something?
Thank you!
-- Ricardo Diogo Righetto
_______________________________________________ phenixbb mailing list [email protected] To unsubscribe send an email [email protected] Unsubscribe: phenixbb-leave@%(host_name)s
_______________________________________________ phenixbb mailing list [email protected] To unsubscribe send an email [email protected] Unsubscribe: phenixbb-leave@%(host_name)s

Hi everybody,
Inversely to what Pavel wrote, just if you want to get a limited-resolution map of the Coulomb potential (and not anything else), eventually with a resolution that varies over the map regions, Section 5.2 of the manuscript
https://arxiv.org/abs/2412.14350
exactly explains how to do this. I guess, if this critical, Phenix teams can routinely add such an option.
With best wishes,
Sacha Urzhumtsev
De : Pavel Afonine

Dear all,
Thanks a lot for your replies!
After playing a bit with the suggested command line programs I decided to
follow Robert's suggestion and go the Python way, hoping to gain finer
control of the options.
I am using the attached Python script to calculate an exact map from a
model, using electron scattering table.
When running, for example, on 4v7t.cif I get a map that looks as follows
(orthogonal central slices):
[image: image.png]
And the MRC header as read by IMOD is:
RO image file on unit 1 : fourier_map.mrc Size= 32401 K
Number of columns, rows, sections ..... 320 240 108
Map mode .............................. 2 (32-bit float)
Start cols, rows, sects, grid x,y,z ... 0 0 0 108 240
320
Pixel spacing (Angstroms).............. 1.958 1.809 1.941
Cell angles ........................... 90.000 90.000 90.000
Fast, medium, slow axes ............... Z Y X
Origin on x,y,z ....................... 0.000 0.000 0.000
Minimum density ....................... 0.0000
Maximum density ....................... 2.5699
Mean density .......................... 0.12004E-01
RMS deviation from mean................ 0.47980E-01
tilt angles (original,current) ........ 0.0 0.0 0.0 0.0 0.0 0.0
Space group,# extra bytes,idtype,lens . 19 0 0 0
1 Titles :
Some text
With these in mind, I have some questions:
1) If I understand correctly, the map contains exactly one unit cell as
defined in the .cif file. How can I choose a different assembly to generate
the map from? Say, biological (author-defined) assembly #1?
2) The pixel size is approximately the step I give to
maptbx.crystal_gridding() but is not exactly isotropic. How can I enforce
it as such?
3) Probably related to the question above, the box size is not cubic, I
guess because of the unit cell dimensions. Since most cryo-EM programs
expect maps to be cubic and have isotropic pixel sizes, I would like to
enforce the final map to be sampled on a cubic grid. How can I do that?
4) Not exactly a question but what might be a bug report. When I use a
model that was originally calculated based on a cryo-EM map (PDB entries I
tried: 7k00, 7b75) I get the following error because the files have no
crystal symmetry defined:
Traceback (most recent call last):
File "phenix_simulate_map.py", line 18, in <module>
model.setup_scattering_dictionaries(scattering_table="electron")
File
"/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py",
line 2398, in setup_scattering_dictionaries
self.neutralize_scatterers()
File
"/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py",
line 2821, in neutralize_scatterers
xrs = self.get_xray_structure()
File
"/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py",
line 478, in get_xray_structure
assert cs is not None
AssertionError
Thanks in advance for your help again. I hope I'm not kicking too much of a
can of worms here.
Best wishes,
--
Ricardo Diogo Righetto
Em qua., 2 de abr. de 2025 às 21:12, Alexandre OURJOUMTSEV
Hi everybody,
Inversely to what Pavel wrote, just if you want to get a limited-resolution map of the Coulomb potential (and not anything else), eventually with a resolution that varies over the map regions, Section 5.2 of the manuscript
https://arxiv.org/abs/2412.14350
exactly explains how to do this. I guess, if this critical, Phenix teams can routinely add such an option.
With best wishes,
Sacha Urzhumtsev
*De :* Pavel Afonine
*Envoyé :* mercredi 2 avril 2025 20:54 *À :* James Holton ; [email protected]; [email protected] *Objet :* [phenixbb] Re: Simulate map from model Hi,
additionally:
- If you want an exact map (not a finite-resolution Fourier map), use:
phenix.model_map model.pdb scattering_table=electron
- We are close to making a multipolar model available for density calculations, which—if I understand correctly—is what you need to simulate Coulomb potential maps. This feature is not yet available to general Phenix users, but if you send me the model off-list, I can generate and send the map back to you.
Pavel
On 4/2/25 10:52, James Holton wrote:
Ostensibly, all you need to do is run phenix.fmodel with scattering_table=electron . And perhaps try to come up with what k_sol should be for the bulk solvent density. There are caveats, of course, not the least of which is that, last I checked, the modified scattering from formal charges like ions vs neutral groups is not implemented. I don't actually know of a program that handles things like charges. I've heard rumors that someone was working on full QM calculations of electrons moving through matter to try and get this "right", but I have not heard about any progress for some time.
Sorry can't be more helpful,
-James
On 4/2/2025 4:52 AM, Ricardo Righetto wrote:
Hi,
Apologies if I'm missing something obvious, but I was not able to find this in the documentation: is there a PHENIX tool for simulating Coulomb potential maps (aka "cryo-EM maps") from atomic models?
I'm looking for something like the molmap https://www.cgl.ucsf.edu/chimerax/docs/user/commands/molmap.html command in ChimeraX, but more accurate. One such alternative is the simulate program from cisTEM, but I figured PHENIX might also have something?
Thank you!
-- Ricardo Diogo Righetto
_______________________________________________
phenixbb mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Unsubscribe: phenixbb-leave@%(host_name)s
_______________________________________________
phenixbb mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Unsubscribe: phenixbb-leave@%(host_name)s

On Fri, 4 Apr 2025 15:55:14 +0200
Dear Ricardo,
since you still have issues, here is an alternative:
you could convert the PDB to SHELXL ins file shelx2map,
replace the SFAC commands with electron scattering factors,
run SHELXL with LIST 6 and L.S. 0
This would create an fcf-file that you can read into coot. Since Coot
speaks crystallography, it creates a crystallographic map from
the fcf-file.
SFAC commands are listed in the attached file, created with the code on
github,
https://github.com/CF-CSA/edSFAC/tree/main/atomsMB_AVolkov
Best,
Tim
Ricardo Righetto
Dear all,
Thanks a lot for your replies!
After playing a bit with the suggested command line programs I decided to follow Robert's suggestion and go the Python way, hoping to gain finer control of the options.
I am using the attached Python script to calculate an exact map from a model, using electron scattering table.
When running, for example, on 4v7t.cif I get a map that looks as follows (orthogonal central slices):
[image: image.png]
And the MRC header as read by IMOD is:
RO image file on unit 1 : fourier_map.mrc Size= 32401 K
Number of columns, rows, sections ..... 320 240 108 Map mode .............................. 2 (32-bit float) Start cols, rows, sects, grid x,y,z ... 0 0 0 108 240 320 Pixel spacing (Angstroms).............. 1.958 1.809 1.941 Cell angles ........................... 90.000 90.000 90.000 Fast, medium, slow axes ............... Z Y X Origin on x,y,z ....................... 0.000 0.000 0.000
Minimum density ....................... 0.0000 Maximum density ....................... 2.5699 Mean density .......................... 0.12004E-01 RMS deviation from mean................ 0.47980E-01 tilt angles (original,current) ........ 0.0 0.0 0.0 0.0 0.0 0.0 Space group,# extra bytes,idtype,lens . 19 0 0 0
1 Titles : Some text
With these in mind, I have some questions:
1) If I understand correctly, the map contains exactly one unit cell as defined in the .cif file. How can I choose a different assembly to generate the map from? Say, biological (author-defined) assembly #1?
2) The pixel size is approximately the step I give to maptbx.crystal_gridding() but is not exactly isotropic. How can I enforce it as such?
3) Probably related to the question above, the box size is not cubic, I guess because of the unit cell dimensions. Since most cryo-EM programs expect maps to be cubic and have isotropic pixel sizes, I would like to enforce the final map to be sampled on a cubic grid. How can I do that?
4) Not exactly a question but what might be a bug report. When I use a model that was originally calculated based on a cryo-EM map (PDB entries I tried: 7k00, 7b75) I get the following error because the files have no crystal symmetry defined:
Traceback (most recent call last): File "phenix_simulate_map.py", line 18, in <module> model.setup_scattering_dictionaries(scattering_table="electron") File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2398, in setup_scattering_dictionaries self.neutralize_scatterers() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2821, in neutralize_scatterers xrs = self.get_xray_structure() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 478, in get_xray_structure assert cs is not None AssertionError
Thanks in advance for your help again. I hope I'm not kicking too much of a can of worms here.
Best wishes,
-- Ricardo Diogo Righetto
Em qua., 2 de abr. de 2025 às 21:12, Alexandre OURJOUMTSEV
escreveu: [...]
-- Tim Gruene Head of the CF Crystal Structure Analysis Faculty of Chemistry University of Vienna Phone: +43-1-4277-70202 GPG Key ID = A46BEE1A

Hi Ricardo, Maybe the the cctbx documentation about map, the map_model_manager, and gridding is useful for your purposes.
4) Not exactly a question but what might be a bug report. When I use a model that was originally calculated based on a cryo-EM map (PDB entries I tried: 7k00, 7b75) I get the following error because the files have no crystal symmetry defined:
Traceback (most recent call last): File "phenix_simulate_map.py", line 18, in <module> model.setup_scattering_dictionaries(scattering_table="electron") File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2398, in setup_scattering_dictionaries self.neutralize_scatterers() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2821, in neutralize_scatterers xrs = self.get_xray_structure() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 478, in get_xray_structure assert cs is not None AssertionError
You are working on a lower level, so you'll have to do some checks manually. If you add this in line 18 (before setting up the scattering dictionary), it should not crash. model.add_crystal_symmetry_if_necessary() Best wishes, Dorothee -- Dorothee Liebschner, PhD (she/her) Research Scientist Molecular Biophysics and Integrated Bioimaging Division Lawrence Berkeley National Laboratory 1 Cyclotron Road, M/S 91R0183 Berkeley, CA 94720 Web: https://phenix-online.org

Hi Ricardo,
When running, for example, on 4v7t.cif I get a map that looks as follows (orthogonal central slices):
this is crystallography and so the model does not have to sit in the middle of the unit cell and be fully inside it. Instead, most of the time you will find the model protrude outside the unit cell box. The map you get is in P1 box and bits and pieces you refer to are those that stick outside the unit cell box and thus have been mapped by periodicity to be inside the unit cell box. Nothing wrong with this.
1) If I understand correctly, the map contains exactly one unit cell as defined in the .cif file. How can I choose a different assembly to generate the map from? Say, biological (author-defined) assembly #1?
You can choose different symmetry copies of your model or generate them all by applying symmetry operators of the spec group. In Pymol it is symexp command, I think. Or you can use cctbx to do the same. Biological assembly is a different thing -- it's defined somewhere in the RCSB web side for each entry.
2) The pixel size is approximately the step I give to maptbx.crystal_gridding() but is not exactly isotropic. How can I enforce it as such?
It rarely can't be exact same in principle given FFT requirements.
3) Probably related to the question above, the box size is not cubic, I guess because of the unit cell dimensions.
Unit cell is the box. It its not cubic (the unit cell), the box is not cubic.
Since most cryo-EM programs expect maps to be cubic and have isotropic pixel sizes, I would like to enforce the final map to be sampled on a cubic grid. How can I do that?
4v7t is a crystal structure, AFAIS, not cryo-EM. If you don't care about this fact, which seems to be the case, you can - take the 4v7t model, - place it into P1 box: iotbx.pdb.box_around_molecule 4v7t.cif - then use of methods suggested earlier to compute either exact map and its Fourier image. Note, when defining crystal_gridding you have a choice to specify the step.
4) Not exactly a question but what might be a bug report. When I use a model that was originally calculated based on a cryo-EM map (PDB entries I tried: 7k00, 7b75) I get the following error because the files have no crystal symmetry defined:
Traceback (most recent call last): File "phenix_simulate_map.py", line 18, in <module> model.setup_scattering_dictionaries(scattering_table="electron") File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2398, in setup_scattering_dictionaries self.neutralize_scatterers() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 2821, in neutralize_scatterers xrs = self.get_xray_structure() File "/scicore/projects/scicore-p-structsoft/ubuntu/software/Phenix/phenix-1.21-5207/modules/cctbx_project/mmtbx/model/model.py", line 478, in get_xray_structure assert cs is not None AssertionError
Box dimensions are likely wrong? Something like CRYST1 1.000 1.000 1.000 90.00 90.00 90.00 P 1 which is obviousness too small of a box to contain a protein! In fact, that's the case for https://files.rcsb.org/header/7B75.pdb Pavel
participants (7)
-
Alexandre OURJOUMTSEV
-
Dorothee Liebschner
-
James Holton
-
Pavel Afonine
-
Ricardo Righetto
-
robert@oeffner.net
-
Tim Gruene