{"id":50654093,"url":"https://github.com/David-OConnor/molchanica","last_synced_at":"2026-06-24T19:00:35.646Z","repository":{"id":292536023,"uuid":"923315206","full_name":"David-OConnor/molchanica","owner":"David-OConnor","description":"Protein and molecule viewer, editor, simulator","archived":false,"fork":false,"pushed_at":"2026-06-04T21:57:40.000Z","size":23352,"stargazers_count":142,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-04T23:15:10.895Z","etag":null,"topics":["bioinformatics","biology","chemistry","molecular-dynamics"],"latest_commit_sha":null,"homepage":"https://www.athanorlab.com/molchanica","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/David-OConnor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-28T02:21:13.000Z","updated_at":"2026-06-04T21:57:43.000Z","dependencies_parsed_at":"2025-12-10T05:05:15.096Z","dependency_job_id":null,"html_url":"https://github.com/David-OConnor/molchanica","commit_stats":null,"previous_names":["david-oconnor/daedelus","david-oconnor/daedalus","david-oconnor/chemforma"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/David-OConnor/molchanica","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-OConnor%2Fmolchanica","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-OConnor%2Fmolchanica/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-OConnor%2Fmolchanica/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-OConnor%2Fmolchanica/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/David-OConnor","download_url":"https://codeload.github.com/David-OConnor/molchanica/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/David-OConnor%2Fmolchanica/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34745456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","biology","chemistry","molecular-dynamics"],"created_at":"2026-06-07T23:00:21.506Z","updated_at":"2026-06-24T19:00:35.627Z","avatar_url":"https://github.com/David-OConnor.png","language":"Rust","funding_links":[],"categories":["Biomedical Research \u0026 Drug Discovery"],"sub_categories":[],"readme":"# Molchanica\n\n[![Docs](https://docs.rs/dynamics/badge.svg)](https://www.athanorlab.com/docs)\n\n[Home page](https://www.athanorlab.com/molchanica)\n[Documentation](https://www.athanorlab.com/docs)\n\n[Molchanica](https://www.athanorlab.com/molchanica) is molecule editing, visualization, and dynamics tool with a focus\non a smooth user experience. It combines functionality found\nin [PyMol](https://www.pymol.org/), [Chimera](https://www.cgl.ucsf.edu/chimera/), [Coot](https://www2.mrc-lmb.cam.ac.uk/personal/pemsley/coot/), [VMD](https://www.ks.uiuc.edu/Research/vmd/), [GROMACS](https://www.gromacs.org/),\nand [Avogadro](https://avogadro.cc/), and operates with the focus on visualizing molecules over both time and space. Any\nmolecule you open or build can move using molecular dynamics. We are actively adding work-flow specific functionality;\nfor example, molecular docking, and tools for working with LNPs.\n\nMolchanica includes Computer Aided Drug Design (CADD) tools. For example, molecule screening and generation based on\npharmacophores, machine-learning from empirical binding data and more. It automatically estimates ADME and toxicity\nparameters.\n\nWe hope that Molchanica is intuitive enough that formal documentation isn't required; installing, running, opening, and\nviewing molecules should be easy for someone to figure out by downloading, launching, and clicking around the GUI. This\ndocumentation is a supplement that experimental process: It describes each feature. It may highlight features you didn't\nknow existed, clarify how to use a given feature, and show assumptions and implementations used.\n\nFor advanced topics like molecular docking, it provides instructions for achieving the best results. Use the menu on the\nleft to navigate these documentation pages.\n\n## Installation\n\n### Windows and Linux\n\n[Download, unzip, and run](https://github.com/David-OConnor/molchanica/releases).\n\nNotes:\n\n- On Linux distros that use Gnome (e.g. Ubuntu), run `setup_linux_desktop.sh`, included in the zip, to create a Desktop\n  GUI entry. (Do not run this with `sudo`.)\n- On Windows, the first time you run the program, you may get the message *\"Microsoft Defender prevented an unrecognized\n  app from starting\"*.\n  To bypass this, click *More info*, then *Run Anyway*.\n\n![Ligand dynamics](screenshots/docked_2.png)\n\n### Mac, and linux distros we don't provide a binary for\n\nCompile from source by [downloading and installing Rust](https://www.rust-lang.org/tools/install), then running\n`cargo build --release` from a CLI\nin the project directory. See notes in the *compiling* section below about setting up Amber parameter files,\nand either installing the CUDA toolkit, or disabling CUDA.\n\n## Functionality\n\n- View the 3D structure of proteins and small molecules\n- Molecular dynamics, using Amber force fields, and the OPC water model\n- Visualize ligand docking\n- Edit small molecules in 3D with integrated dynamics\n- Visualize electron density from crystallography and Cryo-Em data\n- Run [GROMACS](https://www.gromacs.org/) MD, and view trajectories using the same GUI as our native MD.\n- Run [ORCA](https://www.faccts.de/orca/) quantum chemistry procedures on molecules (if ORCA is installed).\n- Assess pharmacokinetics, screen small molecules for binding to pockets, pharmacophore features, molecule alignment,\n  and more.\n- Screen molecules based on binding affinity and desired properties\n- Pharmacophore based modeling and screening\n\n## Molecule types supported for viewing and dynamics\n\n- Proteins\n- Small organic molecules (e.g. ligands)\n- DNA and RNA; double and single stranded\n- Lipids\n\n## Getting started\n\nLaunch the program. Either open a molecule using the \"Open\" or \"Open Lig\" buttons, drag the file into the program\nwindow,\nenter a protein identifier in the *Query databases* field, or click *I'm feeling lucky*, to load a recently-uploaded\nprotein\nfrom the [RCSB PDB](https://www.rcsb.org/).\n\n**Most UI items provide tooltip descriptions, when you hover the mouse over them.**\n\n## Goals\n\n- Fast\n- Easy-to-use\n- Practical workflow\n- Updates responsive to user feedback\n\n## File formats\n\n- **Proteins**: mmCIF (aka PDBx)\n- **Small molecules**: SDF, Mol2, GRO, XYZ, and PDBQT\n- **Electron density**: 2fo-fc mmCIF, Map, and MTZ\n- **Force field parameters**: dat, lib, frcmod, prmtop (Amber), and top (GROMACS)\n- **MD**: GRO, MDP, DCD, TRR, XTC\n\n## A note on internet connectivity\n\nThis application can run smoothly without internet connectivity. If you do have internet, it has some API integrations\nwhich may help. For example, loading molecules automatically from PubChem, drugbank, and RCSB PDB. It can also\ndownload associated ligands for a protein, automatically download molecule-specific force-field parameters, and\nother party tricks.\n\n![UI image showing mol properties and a protien](/screenshots/molchanica_ui_apr_2026.png)\n\n## Parallel computing\n\nIf an Nvidia GPU of at least RTX 3 series is available, molecular dynamics, docking, and electron density calculations\nwill be performed using the GPU (via CUDA kernels). If not, the CPU will be used, leveraging thread pools\nand SIMD instructions. It uses all cores available, and either 512-bit, or 256-bit, SIMD instructions, depending\non CPU capability.\n\nGPU functionality requires Nvidia driver version 580 or higher.\n\n## Molecular dynamics\n\nThis application fully integrates classical molecular dynamics setup and playback into the GUI.\nFor details, see [the documentation](https://www.athanorlab.com/docs/md.html).\n\nIt supports running MD directly on the following molecule types, without loading any other data:\n\n- Proteins/amino acids\n- Small organic molecules\n- DNA and RNA\n- Lipids\n- Carbohydrates (WIP)\n\nOverview of MD components:\n\n- [Amber parameters](https://ambermd.org/AmberModels.php)\n- Velocity Verlet integrator\n- [CSVR](https://arxiv.org/pdf/0803.4060) or Langevin Middle thermostats\n- Explicit OPC water model\n- SPME Coulomb forces\n- AM1-BCC partial charges (MBIS if you have ORCA installed)\n\nWe use the [Dynamics rust library](https://github.com/david-oconnor/dynamics) for the implementation. You may also wish\nto reference that library's readme.\n\n## Editing molecules\n\nWe provide an editor for small organic molecules. This is fully-3D, and has integrated dynamics, which can be run\ncontinuously\nwhile you edit. It ensures the molecules you create are realistic, and take the appropriate shape.\n\n## The camera\n\nThe camera is set up with 6 degrees of freedom, using either keyboard + mouse, or mouse only. This makes\nit easy to get any view of the system you want.\n\nThere are two camera control schemes, selectable using buttons in the *camera* section of the GUI.\n\n### Free camera\n\nThe *free camera* mode is intended to be used with a keyboard and mouse together. They operate on the perspective of\nthe viewer, vice the molecule. You can move and rotate and move the camera\nin 6 degrees of freedom, allowing you to easily view the molecule from any perspective.\n\n### Arc camera\n\nSimilar to traditional molecular viewing software. The camera arcs (or orbits) around the molecule, when holding the\nleft\nmouse button and dragging. Other controls, like scroll wheel and middle mouse, operate similar to the free camera.\nIf *orbit sel* is set in the GUI, the orbit center will be the selected atom or residue, vice the molecule center.\n\n![Surface example](screenshots/surface_a.png)\n\n### Hotkeys\n\nMost of this functionality is also available in the GUI, and you can find hotkeys from the GUI's tooltips. We recommend\nstarting with the GUI, and integrating hotkeys into your workflow as you go, using tooltips.\nSee below for a reference.\n\n#### Mouse controls:\n\n- Hold the **left mouse button while dragging** to rotate the camera in pitch and yaw.\n- Hold the **middle mouse button while dragging** to move the camera left, right, up, and down.\n- **Scroll** to move the camera forward and backwards.\n- **Scroll while holding left mouse button** to roll.\n- **Right click** to select the atom or residue under the cursor. This also selects the molecule to manipulate.\n\n#### Camera hotkeys\n\n- **W**: Move forward\n- **A**: Move right\n- **A**: Move left\n- **D**: Move back\n- **Space**: Move up\n- **C**: Move down\n- **Q**: Roll counter-clockwise\n- **R**: Roll clockwise\n\n- **Shift** (left): Hold to increase camera movement and rotation speed.\n- **Scroll whlie holding left mouse**: Roll (Alternative to Q/R)\n\n### Non-camera hotkeys\n\n- **Left arrow**: select previous residue\n- **Right arrow**: select next residue\n\n- **Left arrow**: Select previous residue\n- **Right arrow**: Select next residue\n\n- **Left backet**: Previous view mode (sticks, surface mesh etc)\n- **Right bracket**: Next view mode\n\n- **Semicolon**: View/select level (Atoms, bonds, residues)\n- **Right bracket**: Next view/select level\n\n- **M**: Move a molecule with the mouse and scroll wheel\n- **R**: Rotate a molecule with the mouse and scroll wheel\n\n- **Enter**: Move the camera to the selected atom or residue.\n- **Esc**: Clear selection, molecule manipulation modes etc.\n\n- **Ctrl + scroll**: Change the fog distance. (hide distant atoms)\n\n- **Delete**: In the primary mode, close the active molecule. In the molecule editor, this deletes the selected atom or\n  bond.\n\n- **Enter**: Move the camera to the selected atom, bond, or residue.\n\n- **Tab**: In the molecule editor, adds an atom.\n\nNote: The molecule editor has a different set of hot keys; see its tooltips for details.\n\n![Protein B](screenshots/protein_b.png)\n\n## Reflections and electron density\n\nSupports volumetric and isosurface views for electron density data, e.g. from Cryo-EM and X-Ray crystallography data.\nIt can download this data from RCSB PDB, or load files directly. To open *2fo-fc* and *MTZ* files, we use the\n[Gemmi](https://gemmi.readthedocs.io/en/latest/install.html) program. For this to work, the `gemmi` folder\nwe include must remain co-located with the program's executable, or be on the system path. For convenience, we package\nit with the Windows release, and the linux install script optionally installs it with `apt`.\n\nCan import Map files directly, and save load density to Map format.\n\n## Pharmacokinetics\n\nUses neural networks to infer pharmacokinetic properties of arbitrary small molecules,\nusing [Therapeutic Data Commons](https://tdcommons.ai/) data.\n\n## PyMol-like Command line interface\n\nMolchanica supports a very limited subset of PyMol's CLI interface. Supported commands:\n\n![Solvent accessible surface mesh](screenshots/surface_mesh_transparent.png)\n\n### General\n\n- `help`: Lists commands\n- `pwd`\n- `ls`\n- `cd`\n- `set seq_view`\n\n### File IO\n\n- `fetch`: Loads a protein from the RCSB PDB. e.g. `fetch 1C8K`\n- `save`: Save the opened protein or small molecule to disk. e.g. `save molecules/1htm.cif`\n- `load`: Load a protein or small molecule from disk. e.g. `load ../1htm.cif`\n\n### View and edit\n\n- `show`: Set the view mode. e.g. `show sticks`\n- `view`: Save and load scenes. e.g. `view v1`, `view v1 store`, `view v2 recall`\n- `hide`: Limited options available, e.g. `resn HOH`, `hydro`, `chain`, `hetatm` etc.\n- `remove`: Limited options available, e.g. `resn HOH`, `hydro`, `chain`, `hetatm` etc.\n\n### Selections\n\n- `select resn`: Select a residue by 3-letter amino acid identifier\n- `select resi`: Select a residue by index\n- `select elem`: Select an atom by element abbreviation\n\n(`sele` works too)\n\n### Camera controls\n\n- `turn`\n- `move`\n- `orient`\n- `reset`\n\n![Protein A](screenshots/protein_a.png)\n\n### Selection modes\n\nUsing a dropdown in the UI, you can change selection mode between *Atom*, (covalent) *Bond*, and *Residue*. These are\nmostly self-explanatory.\nWhen selecting a component using *right click*, or toggling using the UI buttons or arrow keys, this changes\nwhat is selected, and the nature of information displayed. For example, in *Bond* mode, you can see bond length,\nelements of the atoms connected, and the expected oscillation frequency of the bond. In *Atom* mode, you can see\ndihedral angles, the atom name as part of its residue, the atom's force field name, and its partial charge.\n\n### MD playback\n\nMolchanica can play back molecular dynamics trajectories run from other programs, including GROMACS, OpenMM, and NAMD.\n\n![MD playback/viewer, minimal example](/screenshots/md_viewer_march_2026.png)\n\n### Adding nucleic acids and lipids\n\nYou can add DNA, RNA, and lipids in various configurations without loading files; this program can create\nthem procedurally using the GUI. It can create DNA and RNA from a given nucleic acid or amino acid sequence. It\ncan create lipids arranged freely, as membrances, or as lipid nanoparticles (LNPs).\n\n### The preferences file\n\nYou may notice that this program places a *molchanica_prefs.mca* file in the same folder as the executable. This\nis a small binary file containing application state. It's what lets it remember the last file opened, current\nview settings etc. It will grow with the number of molecules you've opened, as it stores per-molecule\nsettings. Deleting it is harmless, other than resetting these conveniences.\n\n![ELectron density](screenshots/iso_a.png)\n\n### Compiling\n\nThis application is written in rust, so it compiles normally using `cargo build --release`, which produces a\nstandalone executable.\n\nIf you're not running on a machine with an Nvidia GPU or without the CUDA toolkit installed, append the\n`--no-default-features` to the build command. This will disable GPU support on the executable produced.\n\n#### Compiling with GPU support\n\nIf compiling with GPU support, your compiling PC must have\nthe [CUDA Toolkit, v13+](https://developer.nvidia.com/cuda-downloads) installed. You must set the environment var\n`LD_LIBARARY_PATH` (Linux) or `Path` (Windows) to your CUDA bin directory, e.g.\n`C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v13.0\\bin`. You may also need the build tools containing `cl.exe` or\nsimilar in the path, e.g.:\n`C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\Hostx64\\x64`\n\n### Errata\n\n- Only one protein can be loaded at a time\n- Opening electron density files in general can be slow. This can lead to the program starting slowly if it was\n- Minimizing may pause molecular dynamics computations.\n- On some displays (Ones with pixel scaling), dragging the MD time slider may also move the camera. To workaround, click\n  the slider instead of dragging.\n\n![Electron densities and small molecules](screenshots/density_example_nov_2025.png)\n\n[//]: # (Wub from LabRats didn't dissaprove of the project name!)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDavid-OConnor%2Fmolchanica","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDavid-OConnor%2Fmolchanica","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDavid-OConnor%2Fmolchanica/lists"}