Mini Map Aide allows the fit of a protein structure, in PDB format, to its electron density map, in CCP4 format, to be assessed using a web browser on mobile devices. It seems to work with nucleotides and small ligands, too.

It is meant to be a completely minimal map-checking aid that works on a residue-by-residue basis and could be used for checking a structure in the final refinement rounds whenever the user has no computer access. The bad regions could be recorded, e.g. by taking screen-shots, for later attention with Coot. Despite its limitations, the aim is for it to be useful in research or as a teaching aid.

If you have a PDB file and the corresponding map, the display calculations are all done by a client-side script in the browser and neither file is uploaded to the server.

The map must be in CCP4 format and must either cover the protein molecule or fill an entire unit cell. On a computer with CCP4 installed, this can be achieved most easily from refinement MTZ files with the following command:

gemmi sf2map -s3 --mapmask=my.pdb my.mtz my.map

or requires running MAPMASK in the old CCP4i GUI or using the Phenix Maps tab. With gemmi the -s number can be increased for finer grid sampling. Use the -d option to make a difference map from a refmac MTZ file. Note, there are some constraints on the expected MTZ column labels.

CCP4 maps for most proteins can be obtained from EBI PDBe in "Downloads" as "EDS map" and "EDS difference map."

Mini Map Aide can also calculate the map from an MTZ file. For this just use the map file chooser to pick the MTZ file instead. The PDB and reflection files will then be uploaded to the server to make the map file which you can then download and save. The map must then be read back into the program in order for it to be displayed. The files on the server will be deleted a few minutes after they are created.

The contour level can be adjusted and is in units of the map sigma or RMSD. If a negative value is used, the contour lines become red.

More help is available in the tooltips which appear on a PC browser when you hover the mouse over any of the text.

If it is too slow, try increasing the contour level to reduce the size of the mesh.

Things it does do (I hope):

Things it cannot do:

Input fields

Go to: The current position in the sequence. As soon as the PDB file is read, this will allow the user to choose which chain and residue number to centre on. Click redraw to allow any changes to take effect. If a large positive number is entered for a given chain, e.g. A 99999, the last residue in that chain will be displayed, which might be a a water molecule. Likewise, a negative number e.g. A -9999, would cause the program to jump back to the first residue in that chain, e.g. A -7. If the residue chosen is actually missing, e.g. in a disordered loop, the program will centre on the next available amino acid. Each residue will be displayed with its CA atom at the centre of rotation and its label at the top of the graphics window. If the residue possesses a CB atom, the electron density map will be centred on this, instead of the CA, to aid viewing the side chain fit. With nucleotides, the default centering is on the P atom.

Contour level: The contour level in sigma or rms units. Change sign with +/- button.

PDB: and Map: are file choosers for the coordinates and map or MTZ files.

Update: This button updates the display e.g. after changing the start residue, contour level or turning symmetry on, etc.

Side chain: Click this button to centre on the outer parts of amino acid side chains or on nucleotide bases. Clicking toggles between centering on the side chain and the main chain Cα.

Roll / Scroll: This switches between animation and scrolling of the molecule.

Next residue: Move to next residue. You will also need to click Update if any of the menu options are changed.

Symmetry: Ticking this checkbox causes the nearby parts of symmetry-related molecules to be shown as green sticks. The Update button has to be clicked for this option to take effect. It works for nearly all of the 65 enantiomorphic space groups and a few other non-standard ones that occur in the PDB.

Move: This allows atoms in the residue at the centre of the display to be moved. The moveable atoms will appear green and can be clicked and dragged. The atom selected for movement is enlarged momentarily to indicate which one is actually moving. The user might find that just moving some of the side chain atoms in the right direction followed by use of the Tidy function may give an improved fit to the map. Once the Move button is clicked, the following 3 buttons become active.

Tidy: This should improve the geometry of an amino acid after any of the atoms have been moved and redraw the bonds. It is rather approximate although the final bond lengths and interatomic distances defining the bond angles should be correct to within about 0.1 . It does not use the electron density map at all but it may be repeated as many times as required since each run can give a slightly different, but not necessarily better, fit. Note that in order to retain reasonable main chain geometry it does not move the backbone N and C atoms, so these are probably best not moved too far by the user.

Undo: This should completely undo the move and tidy operations. Note that unlike, Word, Coot, etc, the undo operations are not chained i.e. only the current round of changes made to the residue at the centre of the screen can be undone.

Save: This allows the changes to be saved in a new PDB file. It is recommended to do this at least once before closing the browser tab if the results are wanted for future use! Note that if no changes have been made to the residue currently at the screen centre, making the Save button active would require clicking the Move button first, although it would not be necessary to move any of the atoms.

The script (which can be downloaded within the html of the main page) is written in Lua and uses Fengari to communicate with Math.js and Three.js. The contouring algorithm (surfacenets.js), by Mikola Lysenko, is described here and was obtained from here. Help from the Lua reddit group was invaluable.

I am very grateful to Marcin Wodjyr (CCP4/Global Phasing) for allowing me to use gemmi sf2map.

Please report any problems or corrections to jbcooper_at_fastmail_dot_net who will be glad to help.