ModelAngelo
v1.0.18Automated atomic model building in cryo-EM maps
A 2.4 Å cryo-EM map of the Cas12m3 nuclease with its guide RNA and target DNA holds more than 700 residues of protein and nucleic acid. On ProteinIQ, ModelAngelo built 549 of the protein residues as one chain, with the RNA and DNA around it, in five minutes.
ModelAngelo, from the Scheres group at the MRC Laboratory of Molecular Biology (Jamali et al., Nature 2024), places residues into the density with a graph neural network, reads their identities from the map and, given sequences, fits them onto the built chains. ProteinIQ runs version 1.0.18 with the released nucleotides and nucleotides_no_seq models. Building with sequences, the recommended mode for maps better than about 4 Å, returns a protein model and, optionally, RNA and DNA. Building without sequences also writes an HMM profile per chain, which can be searched against a proteome to identify the proteins in the map.
ModelAngelo is billed by the minute of runtime: 14 credits per minute on an NVIDIA T4 GPU. Completed runs are charged in proportion to elapsed time, rounded up to a whole credit. The minimum reservation is one minute, not a minimum final charge, and unused reserved credits are returned.
Run time depends mostly on the size of the map and how much there is to build, not on the settings. The tool page quotes 301 credits for a build with sequences and 174 for a build without, from the measured runs below. The final charge follows the measured runtime, not the quote.
| Map | Mode | Run time | Credits |
|---|---|---|---|
| Cas12m3 with guide RNA and target DNA, 170³ box, 19.6 MB | With sequences (protein, RNA, DNA) | 305 s | 72 |
| Mouse nucleosome, 200³ box, 32 MB | With sequences (protein, DNA) | 712 s | 167 |
| Mouse apoferritin 24-mer, 180³ box, 23 MB | With sequences (protein) | 1,227 s | 287 |
| Mouse apoferritin 24-mer, 180³ box, 23 MB | Without sequences, with proteome search | 685 s | 160 |
| Cas12m3 with guide RNA and target DNA, 170³ box, 19.6 MB | Without sequences, with RNA search | 125 s | 30 |
Run times are the ModelAngelo run itself; starting the GPU container adds about a minute. Credits are run time at 14 per minute, rounded up.
| Input | Accepted formats | Notes |
|---|---|---|
| Cryo-EM map | .mrc, .map | Required. A sharpened or post-processed map, ideally better than 4 Å, in a cubic box. |
| Protein sequences | .fasta, .fa, .faa, or pasted FASTA | Required with sequences. Every protein that may be in the map, in uppercase, each unique sequence once. |
| RNA sequences | .fasta, .fa, or pasted FASTA | Optional, with sequences. Adds RNA to the build. |
| DNA sequences | .fasta, .fa, or pasted FASTA | Optional, with sequences. Adds DNA to the build. |
| Mask | .mrc, .map | Optional in both modes. A mask for the map. |
| Sequences to search | .fasta, .fa, .faa | Optional, without sequences. Each chain's profile is searched against this file after the build. |
Uploaded files are limited to 50 MiB each and 50 MiB per submission, which fits a map box of up to about 235³ voxels in 32-bit floats. The optional Job name labels the saved run.
ModelAngelo reads FASTA files with Biopython and keeps only uppercase residue letters, so a sequence written in lowercase leaves nothing to build from and the run stops with ModelAngelo's own error. A FASTA file downloaded from UniProt or the PDB already has the right form. A dimer needs its sequence only once; ModelAngelo removes duplicates and builds every copy it finds in the map.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Sequences | enum | Build with sequences | Build with sequences runs model_angelo build; Build without sequences runs model_angelo build_no_seq. |
These settings apply only without sequences, and only when sequences to search are attached. They are passed to ModelAngelo's hmm_search, which runs HMMER's hmmsearch through pyhmmer.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Alphabet | enum | Protein | Protein, RNA or DNA; only chain profiles of the same type are searched. |
| E-value threshold | number | 10 | Hits with a larger E-value are not reported or listed in the hit tables. |
| Score threshold | number | optional | Bit-score reporting threshold; when set, it replaces the E-value threshold. |
| MSV filter (F1) | number | 0.02 | P-value threshold of HMMER's first acceleration filter. |
| Viterbi filter (F2) | number | 0.001 | P-value threshold of HMMER's second acceleration filter. |
| Forward filter (F3) | number | 0.00001 | P-value threshold of HMMER's third acceleration filter. |
The device, model files and ModelAngelo's internal configuration are fixed at ModelAngelo's defaults. ModelAngelo's refine command, which rebuilds an existing model against a map, is not available.
| Result | Contents |
|---|---|
| Structure | The built model in the 3D viewer. |
| Search hits | The best hit for each target sequence, shown after a sequence search. |
| Files | Every file ModelAngelo wrote, plus a run log and a provenance record. |
output/output.cif | The built model. With sequences it is the pruned model; the B-factor column holds ModelAngelo's confidence. |
output/output_raw.cif | With sequences: the model before pruning, including fragments that could not be matched to a sequence. |
output/entropy_scores/output.cif, output_raw.cif | With sequences: the same two models with the per-residue entropy score in the B-factor column. |
output/output_entropy_score.cif | Without sequences: the model with the entropy score in the B-factor column. |
output/hmm_profiles/*.hmm | Without sequences: an HMMER3 profile per chain, plus _rna and _dna profiles for nucleic acid chains. |
hmm_search_output/*.hhr, *.a2m | After a search: the hits of each chain's profile and their alignment. |
hmm_search_output/all_hits.csv, best_hits.csv | After a search: every hit sorted by E-value, and the best hit for each target sequence. |
output/model_angelo.log | ModelAngelo's own log. |
records/run.log, records/provenance.json | The commands, ModelAngelo's output, run time, and the version and weights used. |
ModelAngelo writes two scores per residue, both on a 0 to 100 scale and stored in the B-factor column of different files. In output.cif the value is ModelAngelo's confidence in where the backbone is. In the entropy-score files it measures how sure ModelAngelo is about the residue's identity, which amino acid or which base. The two can disagree: a well-placed backbone with an uncertain identity reads high in one file and low in the other.
| Score | File | Higher means |
|---|---|---|
| Confidence | output.cif, output_raw.cif | The backbone position is more certain. |
| Entropy score | files in entropy_scores/, output_entropy_score.cif | The residue type is more certain. |
ModelAngelo's authors describe the entropy score as experimental and do not publish a cutoff for either score, so read them as relative within a model rather than against a fixed threshold. Viewed in the structure viewer colored by B-factor, low regions show where to look first.
The Cas12m3 example shows how the files relate. Its raw model has 692 residues in 23 chains: the protein in three pieces of 389, 87 and 84 residues, and many two- and three-residue fragments, most with low confidence. The pruned model drops 35 of those residues and joins the protein into one chain of 549 residues with a mean confidence of 98.7 and a mean entropy score of 96. The nucleic acid comes out as ten shorter chains with mean confidences from 0 to 95 and mean entropy scores from 10 to 79, so its base identities deserve more checking than the protein's.
Without sequences, ModelAngelo's own amino acid calls are less accurate and none of the sequence-based post-processing runs. The profiles turn that uncertainty into an identification: each chain's profile describes which residues are likely at each position, and searching it against a proteome finds the sequences that fit.
In best_hits.csv, E-value is HMMER's expected number of chance hits at least this good in a search of this size, so smaller is more significant; score and bias are in bits. Compare a hit's chains and E-values across several profiles before accepting it.
Re-running the same map with sequences gives the same model; without sequences, ModelAngelo samples, and two runs can build somewhat different chains. In either mode the model is a starting point for refinement, not a final structure.
ModelAngelo does not model glycosylation or non-standard residues and does not place cis-prolines, which a round of refinement in a program such as REFMAC usually corrects. Check the refined model with MolProbity, whose scores flag the clashes and backbone outliers automated building leaves behind.
If the result is many short, disconnected chains, look at the helices first: chains broken into short pieces often mean the map has the wrong hand, and flipping it usually helps. ModelAngelo's authors also report weaker results on maps processed with DeepEMhancer and recommend a map post-processed with a conventional algorithm. A model that is shifted relative to the map usually comes from a map that is not cubic.
Predict 3D structures for proteins, ligands, DNA, RNA, and multi-component complexes.
Predict controllable biomolecular structures for proteins, ligands, DNA, RNA, and complexes.
All-atom biomolecular complex prediction with Mol-1
All-atom biomolecular structure prediction
Open-source AlphaFold3-based structure prediction for proteins, ligands, DNA, and RNA
Open-source biomolecular structure prediction with Protenix
Automated atomic model building for cryo-EM maps
Open-source structure prediction for proteins, nucleic acids, and ligands
Generate protein conformational ensembles from sequence or structure inputs.
Predict protein structures and complexes with single-sequence or MSA-assisted folding.