3,365 apps tracked 0 new today 17 updated today Synced 10m ago

Coot

Macromolecular model builder

Paul Emsley

io.github.pemsley.coot
View on Flathub ↗

Coot is a powerful macromolecular model-building tool for analysing X-ray data and models (i.e. proteins, ligands, RNA and DNA). There are many tools for model manipulation and building, such as minimization, molecular superposition, fragment rotation/translations, rotamer-fitting, de novo building and refinement.

Coot is used by scientists using X-ray crystallography or cryo-EM for analysis of proteins, electron density maps, protein interactions and drug design.

Screenshots

Coot is typically used to view protein models and electron density
Coot is typically used to view protein models and electron density
Coot screenshot
Coot screenshot

Observed history

App ChangeVersionWhen ↓
updated1.3.324 Sept 2026

Upstream releases

Release notes supplied by the developer. These dates are not Flathub package publication times.

1.3.313 Aug 2026
  • o BUG-FIX: Fix the problem of unresponsive Left-mouse after Edit Chi Angles
1.3.210 Aug 2026
  • o FEATURE: Add AI button: for people who want to use an LLM to communicate with Coot
  • o FEATURE: Rotate/Translate Zone: the fragment can now be moved by click-dragging on the atoms and rotated about its centre using ctrl-shift-drag
  • o FEATURE: Command terminal with command completion and a natural-language command interface [Jordan Dialpuri]
  • o FEATURE: Cremer-Pople puckering sphere visualization for carbohydrate ring analysis [Jordan Dialpuri]
  • o FEATURE: Altona-Sundaralingam ribose pucker calculation [Jordan Dialpuri]
  • o FEATURE: Read and write PDBQT files (AutoDock/Vina docking)
  • o FEATURE: Multi-pick delete waters
  • o FEATURE: Cavity detection (KVFinder-style) with subpocket segmentation
  • o FEATURE: Carbohydrate: N-linked glycan building ("N-linked Glycan LMA") reworked in C++; fixes for glyco link bugs
  • o FEATURE: Layla: "Search for Similar" - find monomers in the monomer library using acedrg atom types
  • o FEATURE: Layla: "Show Alerts" structural-alert highlighting
  • o FEATURE: Layla: CCP4i2 mode, multi-format save dialog and SMILES I/O [Jakub Smulski]
  • o FEATURE: Hydrogen-bond information now included in the atom overlap dots analysis
  • o FEATURE: Scripting API additions: get_cremer_pople(), get_monomer_name(), get_InChI(), get_hetgroups(), delete_all_waters(), delete_all_hetgroups(), get_monomer_restraints_as_json(), read_interesting_places_json(), servalcat_refine_xray_with_keywords(), get_sequence_view(), split_multi_model_molecule_and_merge()
  • o CHANGE: First startup dialog now saves preferences immediately rather than on exit
  • o CHANGE: Ligand-fitting code made more robust
  • o CHANGE: Fluorine atoms are now drawn slightly blue
  • o CHANGE: EM maps now use a coarser contour-level step (0.3 sigma)
  • o CHANGE: Rework the code that gives ions big radii
  • o CHANGE: Non-drawn bonds now also apply to the B-factor and occupancy representations
  • o CHANGE: NCS ghost generation is skipped for molecules with more than 100 chains
  • o CHANGE: ALA and GLY no longer get rotamer validation information
  • o CHANGE: -h command line option now works like --help
  • o CHANGE: Python docstrings are now generated for many more of the scripting API functions
  • o CHANGE: Icons updated to their symbolic counterparts for recent Adwaita [Jakub Smulski]
  • o BUG-FIX: Fix NVIDIA driver crash on GL context re-realize (HUD instanced draw)
  • o BUG-FIX: Fix abort in instanced-mesh setup when there are zero instances
  • o BUG-FIX: Fix map memory not being released on closing a map molecule
  • o BUG-FIX: Fix memory leak in the CA-CA distance spots
  • o BUG-FIX: Fix missing heteroatom labels in Layla (all atoms were shown as carbon; also on older Pango)
  • o BUG-FIX: Layla: fix generator dialog progress bar stuck after the job exits
  • o BUG-FIX: Fix the placement of the SVG widget in the FLE View dialog
  • o BUG-FIX: Fix the placement of buttons and overall spacing of the Superpose Ligands dialog
  • o BUG-FIX: Fixes for match_torsions()
  • o BUG-FIX: Fix URL encoding in the recent-new-ligands browser so that PDBe queries work
  • o BUG-FIX: Fix the residue type look-up for the chi angles buttons
  • o BUG-FIX: Better margins for SSM dialog
  • o BUG-FIX: Fix user-defined atom colours leaking into other colouring modes
  • o BUG-FIX: Fix the vertical scrolling of the sequence view
  • o BUG-FIX: Ligand-fitting: Conformer option now insensitive without conformer generation
  • o BUG-FIX: Copy Fragment molecule selector now has a default
  • o BUG-FIX: Now we use the user-defined colour for symmetry-related atoms
  • o BUG-FIX: Fix crash when using Flatpak binary on contact dots for a molecule without contacts [Jiang Haizhu]
1.314 May 2026
  • o FEATURE: Map caps ("sliced apple" view): a 2D coloured cross-section of the electron density on a clipping plane, stitched seamlessly to the trimmed 3D isosurface behind the plane: add_density_map_cap()
  • o CHANGE: MoleculesToTriangles meshes now use material-based lighting
  • o CHANGE: Default material tweaked: ambient raised from 0.1 to 0.2 and diffuse lowered from 1.0 to 0.5, giving softer highlights and less blown-out surfaces for objects that don't set their own material
  • o CHANGE: Improved depth-of-field shader
  • o CHANGE: Reworked depth fogging in the moleculestotriangles shader; objects drawn with draw_meshed_generic_display_object_meshes() now also use depth fogging
  • o BUG-FIX: Fix the colour rotation of the difference map negative level
  • o BUG-FIX: Fix the residue-number colour ramp for colorRampChainsScheme: the ramp range now uses only amino-acid residues (waters and other heteros were skewing the min/max), each chain gets its own ramp colour scheme, and the HSV saturation is bumped from 0.4 to 0.6 for more vivid rainbow chains. Problem seen in 4zzn.
  • o BUG-FIX: Screenshot resolution now uses framebuffer_scale instead of a hardcoded 2x
  • o FEATURE: "Symmetry as C-alphas" button added to the Coot: Symmetry dialog
  • o CHANGE: Atom labelling reworked so that it happens on mouse button up
  • o BUG-FIX: Fix the rotation jump after zooming
  • o BUG-FIX: Fix scaling and offsets in graphics_ligand_mesh_molecule_t::draw()
  • o BUG-FIX: Fix the NCS jumping centre
  • o FEATURE: Molecular Placement for cryo-EM maps
  • o FEATURE: hiranuma_inversion() added - converts the pLDDT scores (0-100 confidence values) that AlphaFold stores in the B-factor column of its predicted models into physically meaningful isotropic B-factors, so that AlphaFold models can be used with refinement, density-scoring and validation tools that expect real B-factors
  • o BUG-FIX: Fix action mutate_base_to_type_U name
  • o BUG-FIX: Restraints lock now acquired when updating NBCs in minimize()
  • o BUG-FIX: Atom indexing error fixed in update_extra_restraints_representation_geman_mcclure()
  • o BUG-FIX: For ramp_chains, the polymer range is now known
  • o FEATURE: "Proportional editing" rotation added
  • o FEATURE: Delete symmetry waters from the rotation centre
  • o BUG-FIX: Fix behaviour of the residue range selection in renumber residue range
  • o BUG-FIX: Fixups for environment distances
  • o FEATURE: NCS validation graph enabled
  • o CHANGE: distortion_bond_mini_stats() and distortion_angle_mini_stats() now also calculate nZ, the normalised z-score of the deviation from the target value (deviation / sigma)
  • o FEATURE: Current-residue marker added to the Ramachandran plot
  • o CHANGE: Density correlation validation graph sped up
  • o CHANGE: Pucker analysis geometry fixed up
  • o BUG-FIX: Close the validation Ramachandran box when a molecule is closed; refresh_ramachandran_plot_model_list() now called in close_molecule()
  • o CHANGE: Drug fetch now uses ChEMBL instead of DrugBank (DrugBank is blocked by Cloudflare)
  • o FEATURE: Lhasa extended IO: import and export for various data formats
  • o FEATURE: Lhasa can now read and write RDKit pickles
  • o CHANGE: FLEV SVG output now has width and height before the viewBox
  • o CHANGE: Compile guards so Lhasa/Layla still compile when RDKit has no Coordgen support
  • o BUG-FIX: Fix rotation and overall jankiness in coordgen mode
  • o BUG-FIX: coordgen error no longer printed when there is no coordgen support in RDKit
  • o FEATURE: Browser for new ligands added
  • o CHANGE: recent_new_ligands.py reworked to use the new PDBe API
  • o BUG-FIX: Fix the inner ring bond positioning
  • o FEATURE: Functions added to control the lighting of maps
  • o FEATURE: brighten_maps() added to the Coot API
  • o CHANGE: EMDB map download reworked: now uses an in-window progress bar; recentre message no longer shown for map download; download-emdb-map-label is no longer used in fetch_emdb_map()
  • o CHANGE: Reading a map again moves to the middle of the box
  • o BUG-FIX: Fix the download directory for maps
  • o FEATURE: Cmd++ to increase the font size in the virtual terminal
  • o FEATURE: VTE terminal as a replacement for the Python entry, with coot_vte_repl.py
  • o FEATURE: Servalcat outliers JSON input (servalcat_outliers_json_for_coot.py)
  • o BUG-FIX: Prevent double-running of startup scripts
  • o CHANGE: new_startup functions renamed to startup
  • o FEATURE: --dictionary-with-mol added to the command-line options
  • o BUG-FIX: Re-enable command line scripts in run_command_line_scripts_callback()
  • o FEATURE: Aniso and H-atom filtering in the Save Coordinates dialog
  • o FEATURE: "Edit -> Residue info": "Apply occupancy to atom with alt conformation" checkbox restored
  • o FEATURE: "NCS Ligands" user interface added
  • o BUG-FIX: Fix crash in display control delete button
  • o BUG-FIX: Widget protection in on_display_control_delete_molecule_button_clicked()
  • o BUG-FIX: Fix TER atom counting in AMBER trajectory processing [eunos-1128]
  • o BUG-FIX: Fix names of the entries in the NCS ligands frame
  • o FEATURE: GUI item added for "Sort Chains"
  • o FEATURE: Residue info shown in the status bar when hovering over circles in the Ramachandran plot
  • o FEATURE: Atom Overlaps display now controlled via a toolbar toggle button; "Delete All Generic Display Objects" now correctly prevents overlaps from reappearing after refinement
  • o FEATURE: "Local B-factors" now activates display immediately when the menu item is clicked
  • o FEATURE: GUI control for map generic objects added
  • o CHANGE: Validation graph correlation colours reworked: more red at mid-range values, muted professional colour palette
  • o BUG-FIX: Fix the alt conf occupancy slider in the rotamer dialog after "Add Alt Conf": the slider now has an adjustment, draw_value, marks at 0.0/0.5/0.99, and 0.01 step granularity
  • o BUG-FIX: Fix "Go To Atom" dialog raising from the macOS Dock
  • o BUG-FIX: Validation graphs now updated after side-chain 180 flip and peptide flip
  • o BUG-FIX: "Add OXT" now respects the current bonding mode
  • o BUG-FIX: Fix duplicate entries in the "Add OXT" molecule combobox when reused
  • o BUG-FIX: Fix the sequence view to extend to the end of the residue range (ligands and waters were being clipped)
  • o FEATURE: Active residue is now highlighted in the sequence view; sequence view is now updated on model modification
  • o FEATURE: add_picked_atom_info_to_status_bar() added
  • o CHANGE: Molecular representation's mesh_vbox is now inside a GtkScrolledWindow
  • o CHANGE: Clear Atom labels item moved
  • o BUG-FIX: Stop picking of symmetry atoms when symmetry is not displayed
  • o BUG-FIX: Fix the active item of refinement control comboboxes
  • o BUG-FIX: Close the side panel when the difference map peaks box is closed
  • o BUG-FIX: Fix drag-and-drop file dropping
  • o FEATURE: rebox_map() and apply_translation_to_molecule()
  • o FEATURE: get_map_cap_mesh() on molecule_t and molecules_container_t, for headless map cap rendering
  • o FEATURE: delete_links_containing_residue_py() added
  • o FEATURE: to_generic_object_add_tori() added
  • o CHANGE: render function made const
  • o BUG-FIX: Check for LIBRSVG version before using rsvg_handle_render_cairo()
  • o BUG-FIX: Fix backward.hpp for PowerPC
  • o CHANGE: Eigen3 is now required at configure time
  • o CHANGE: GSL autobuild install now links against libcblas so that libgsl.so carries DT_NEEDED libcblas (or libgslcblas) which eliminates the --as-needed cblas_* undefined-reference failure
  • o BUG-FIX: Use CMake for RDKit in Lhasa; pre-install Eigen for Lhasa
  • o BUG-FIX: Fix nanobind resolution for venvs
  • o BUG-FIX: Fix nanobind find_package broken without -Dnanobind_DIR
  • o BUG-FIX: Fix linking of maeparser and libexpat
  • o BUG-FIX: Fix non-/usr-based Chapi build
  • o CHANGE: Removed --with-enhanced-ligand-tools from coot configure
  • o CHANGE: maeparser and coordgen added to build-it-3-3; eigen updated to 5.0.1
1.231 Mar 2026
  • o FEATURE: Side-by-side stereo mode (cross-eye and wall-eye) with configurable stereo angle
  • o FEATURE: High-resolution screenshots now work for both basic and fancy rendering modes
  • o FEATURE: Material properties added to instanced-object shaders
  • o FEATURE: Anisotropic thermal ellipsoid "empty" representation with multi-ring display
  • o FEATURE: Gaussian surface opacity control
  • o FEATURE: Bond smoothness toggle
  • o FEATURE: Shadows for "other meshes" (generic display objects)
  • o FEATURE: Single-model view for CA+Ligands representation with colour-by-dictionary-and-chain
  • o FEATURE: Distance labels display can now be toggled with set_show_distance_labels()
  • o FEATURE: scale_up_graphics() and scale_down_graphics() now added to the API
  • o CHANGE: Improved default secondary structure colours
  • o CHANGE: Rainbow ribbons are less bright
  • o CHANGE: Aniso probability scale now goes to 0.99
  • o CHANGE: Ribbon coils restored with radius multiplier for spline representation
  • o CHANGE: End-caps added for worm representations
  • o CHANGE: Max SSAO kernel samples doubled to 512
  • o CHANGE: Reduced step size for front clipping plane changes
  • o CHANGE: Don't include hydrogen atoms in Local B-factor display
  • o CHANGE: x-ray Sharpen/Blur Map slider now displays the value
  • o CHANGE: Difference map peaks now shows closest atom not position
  • o BUG-FIX: Now the Recover Session works as expected [Kevin Jude]
  • o BUG-FIX: Fix the rotation jump after panning
  • o BUG-FIX: Fix peptide straggle-bond when displaying alt-confs
  • o BUG-FIX: Fix texture indexing in TextureMesh
  • o BUG-FIX: Fix framebuffer rendering with transparency
  • o BUG-FIX: Fix the map colour button in single-map properties dialog
  • o BUG-FIX: Fix ribbon surface normal computation and spline frame orthonormality [Martin Noble]
  • o FEATURE: Post-Translational Modifications (PTMs) can now be applied to residues, with a database of common PTMs
  • o FEATURE: Improved jiggle-fitting for Local Fitting in Cryo-EM
  • o FEATURE: Add Residue by Map Fit function
  • o FEATURE: Ephemeral overlay labels for transient annotations
  • o FEATURE: Key-binding R for Refine with auto-accept
  • o FEATURE: Key-binding Ctrl-E for Python scripting entry
  • o FEATURE: Mutate-and-auto-fit improvements
  • o BUG-FIX: Fix self-deadlock in make_moving_atoms_graphics_object() for CA bond mode
  • o BUG-FIX: Fix single-strand test in ideal nucleic acid builder
  • o BUG-FIX: Fix PHE/TYR nomenclature error side chain atom swapping
  • o FEATURE: Phenix .geo file validation for bonds, angles, chirals and non-bonded contacts with colour-coded display
  • o FEATURE: Validation graphs can now be undocked [Jakub Smulski]
  • o FEATURE: Rotamer probability now shown in validation graph
  • o FEATURE: Refinement results mini-statistics (bond and angle distortions) returned from refinement
  • o FEATURE: Atom geometry distortion info now includes atom specs
  • o CHANGE: Molecule mesh display control toggles relocated
  • o BUG-FIX: Fix rotamer probability in validation graph model list refresh
  • o FEATURE: Ligand Builder (Lhasa) added to the Ligand menu
  • o FEATURE: Fetch Ligand Restraints Dictionary callback added
  • o FEATURE: Pyrogen integration via RDKit mol pickle base64 API
  • o FEATURE: Curlew extension download and install function
  • o CHANGE: Ligand fitting dialog is now scrollable
  • o BUG-FIX: Fix the bond-order combobox default in acedrg link dialog
  • o BUG-FIX: Fix Lhasa molecule centering [Jakub Smulski]
  • o BUG-FIX: Fix RDKit stereochemistry handling and isomeric SMILES output [Jakub Smulski]
  • o FEATURE: NetCDF support for reading AMBER trajectories
  • o FEATURE: Slurpable maps recognized as EM maps
  • o CHANGE: Improved map-based occlusions
  • o FEATURE: JSON-RPC server, MCP Bridge and Skills for Agentic Coot
  • o FEATURE: RPC server menu item added
  • o FEATURE: Python API function documentation improvements across the board
  • o FEATURE: coot_ping() function for connectivity testing
  • o FEATURE: get_function_descriptions() added to the bridge
  • o FEATURE: Shift-click on an atom shows atom info in the status bar
  • o FEATURE: "Delete all water" menu item
  • o FEATURE: EM Placement dialog with Phaser integration
  • o FEATURE: Git commit hash and build date shown in About dialog
  • o FEATURE: Improved "Recover Session" dialog
  • o FEATURE: Generic Display Objects dialog now shows button state
  • o FEATURE: Interesting places JSON file reading with atom-spec parsing
  • o CHANGE: Copy Fragment combobox now sets the active item
  • o CHANGE: Don't include hydrogen atoms in Local B-factor display
  • o CHANGE: Sharpen/Blur Map slider now displays the value
  • o CHANGE: Difference Map Peaks now shows closest atom
  • o BUG-FIX: Fix validation graph combobox g_warning()
  • o BUG-FIX: Better handling for unknown monomer types in PTM dialog
  • o BUG-FIX: Remove duplicate entries from PTM combobox
  • o BUG-FIX: Fix Copy Fragment combobox active item
  • o NEW FUNCTION: get_molecule_diameter()
  • o NEW FUNCTION: get_torsions_for_residues_in_chain()
  • o NEW FUNCTION: get_hydrogen_bonds_py() - pythonic hydrogen bond info
  • o NEW FUNCTION: set_residue_properties()
  • o NEW FUNCTION: get_computed_acedrg_atom_types()
  • o NEW FUNCTION: pyrogen_from_rdkit_mol_pickle_base64()
  • o NEW FUNCTION: get_rdkit_mol_pickle_base64() with pickling options
  • o NEW FUNCTION: add_residue_by_map_fit()