{"id":19423084,"url":"https://github.com/quantori/scip-smina","last_synced_at":"2025-06-10T14:38:47.311Z","repository":{"id":105047952,"uuid":"579991719","full_name":"quantori/scip-smina","owner":"quantori","description":"Smina is fork of AutoDock Vina that is customized to better support scoring function development and high-performance energy minimization. smina is maintained by David Koes at the University of Pittsburgh and is not directly affiliated with the AutoDock project. This fork of Smina adds changes that allow it to run as a part of DockingFactory.","archived":false,"fork":false,"pushed_at":"2022-12-31T11:20:55.000Z","size":2976,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-25T04:32:12.558Z","etag":null,"topics":["docking","drug-discovery","molecular-docking","virtual-screening"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quantori.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.APACHE","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}},"created_at":"2022-12-19T13:00:12.000Z","updated_at":"2024-07-15T15:04:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"41b642d7-9ec7-41eb-bfbf-00f53fcdeb11","html_url":"https://github.com/quantori/scip-smina","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2Fscip-smina","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2Fscip-smina/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2Fscip-smina/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2Fscip-smina/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quantori","download_url":"https://codeload.github.com/quantori/scip-smina/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quantori%2Fscip-smina/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259093771,"owners_count":22804236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docking","drug-discovery","molecular-docking","virtual-screening"],"created_at":"2024-11-10T13:36:38.404Z","updated_at":"2025-06-10T14:38:47.265Z","avatar_url":"https://github.com/quantori.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smina\n\nsmina is a fork of [Autodock Vina](http://vina.scripps.edu/) that \nfocuses on improving scoring and minimization.  Changes from the\nstandard Vina (version 1.1.2) include:\n -comprehensive support for ligand molecular formats (via OpenBabel)*\n -support for multi-ligand files (e.g., an sdf file)*\n -support for addition term types (e.g., desolvation, electrostatics)\n -support for custom, user-parameterized scoring functions (see --custom_scoring)\n -automatic box creation based on a user-specified bound ligand\n -allow the output of more than 20 docking poses\n -vastly improved minimization algorithms (--minimize goes to convergence)\n -*experimental* easily define flexible residues of receptor (--flexres and --flexdist)\n \nFor workflows where AutoDock Vina is used for minimization (local_only) \nas opposed to of docking, these changes make Vina much easer to use and \n10-20x faster. Docking performance is about the same since partial charge \ncalculation and file i/o isn't such a big part of the performance.\n\nIf you find smina useful, please cite the paper: \nhttp://pubs.acs.org/doi/abs/10.1021/ci300604z\n\n## Bundle\n\nThis fork of Smina adds changes that allow it to run as a part of Quantori DockingFactory. The head project of DockingFactory is [DockingFactory Bundle](https://github.com/quantori/scip-dockingfactory-bundle). Other projects that are also parts of the bundle are:\n- [DockingFactory](https://github.com/quantori/scip-dockingfactory)\n- [DockingInterface](https://github.com/quantori/scip-dockinginterface)\n- [Vina](https://github.com/quantori/scip-vina)\n- [QVina 2](https://github.com/quantori/scip-qvina)\n- [rDock](https://github.com/quantori/scip-rdock)\n\n\n## Build\n\nIf building from source:\n```\napt install git libboost-all-dev libopenbabel-dev build-essential libeigen3-dev\ngit clone https://git.code.sf.net/p/smina/code smina-code\ncd smina-code\nmkdir build\ncd build\ncmake ..\nmake -j12\n```\n\n*Note:*  OpenBabel3 is required.\n\n\n## Usage\n\nNon-pdbqt ligand files must have partial charges added.  This is done\nusing OpenBabel and will get different results than the prepare_ligand4.py\nscript that comes with AutoDock Tools.\n\n```\nInput:\n  -r [ --receptor ] arg rigid part of the receptor \n  --flex arg            flexible side chains, if any \n  -l [ --ligand ] arg   ligand(s)\n  --flexres arg         flexible side chains specified by comma separated list \n                        of chain:resid\n  --flexdist_ligand arg Ligand to use for flexdist\n  --flexdist arg        set all side chains within specified distance to \n                        flexdist_ligand to flexible\n\nSearch space (required):\n  --center_x arg        X coordinate of the center\n  --center_y arg        Y coordinate of the center\n  --center_z arg        Z coordinate of the center\n  --size_x arg          size in the X dimension (Angstroms)\n  --size_y arg          size in the Y dimension (Angstroms)\n  --size_z arg          size in the Z dimension (Angstroms)\n  --autobox_ligand arg  Ligand to use for autobox\n  --autobox_add arg     Amount of buffer space to add to auto-generated box \n                        (default +4 on all six sides)\n  --no_lig              no ligand; for sampling/minimizing flexible residues\n\nScoring and minimization options:\n  --scoring arg                specify alternative builtin scoring function [e.g. vinardo]\n  --custom_scoring arg         custom scoring function file\n  --custom_atoms arg           custom atom type parameters file\n  --score_only                 score provided ligand pose\n  --local_only                 local search only using autobox (you probably \n                               want to use --minimize)\n  --minimize                   energy minimization\n  --randomize_only             generate random poses, attempting to avoid \n                               clashes\n  --minimize_iters arg (=0)    number iterations of steepest descent; default \n                               scales with rotors and usually isn't sufficient \n                               for convergence\n  --accurate_line              use accurate line search\n  --minimize_early_term        Stop minimization before convergence conditions \n                               are fully met.\n  --approximation arg          approximation (linear, spline, or exact) to use\n  --factor arg                 approximation factor: higher results in a \n                               finer-grained approximation\n  --force_cap arg              max allowed force; lower values more gently \n                               minimize clashing structures\n  --user_grid arg              Autodock map file for user grid data based \n                               calculations\n  --user_grid_lambda arg (=-1) Scales user_grid and functional scoring\n  --print_terms                Print all available terms with default \n                               parameterizations\n  --print_atom_types           Print all available atom types\n\nOutput (optional):\n  -o [ --out ] arg      output file name, format taken from file extension\n  --out_flex arg        output file for flexible receptor residues\n  --log arg             optionally, write log file\n  --atom_terms arg      optionally write per-atom interaction term values\n  --atom_term_data      embedded per-atom interaction terms in output sd data\n\nMisc (optional):\n  --cpu arg                  the number of CPUs to use (the default is to try \n                             to detect the number of CPUs or, failing that, use\n                             1)\n  --seed arg                 explicit random seed\n  --exhaustiveness arg (=8)  exhaustiveness of the global search (roughly \n                             proportional to time)\n  --num_modes arg (=9)       maximum number of binding modes to generate\n  --energy_range arg (=3)    maximum energy difference between the best binding\n                             mode and the worst one displayed (kcal/mol)\n  --min_rmsd_filter arg (=1) rmsd value used to filter final poses to remove \n                             redundancy\n  -q [ --quiet ]             Suppress output messages\n  --addH arg                 automatically add hydrogens in ligands (on by \n                             default)\n\nConfiguration file (optional):\n  --config arg          the above options can be put here\n\nInformation (optional):\n  --help                display usage summary\n  --help_hidden         display usage summary with hidden options\n  --version             display program version\n```\n\n\nThe custom scoring file consists of a weight, term description, and optional comments on each line.  The numeric parameters of the term description \ncan be varied to parameterize the scoring function. Use `--print_terms` to see all available terms.\n\nExample (all weights 1.0, all term types listed):\n```\n1.0  ad4_solvation(d-sigma=3.6,_s/q=0.01097,_c=8)  desolvation, q determines whether value is charge dependent\n1.0  ad4_solvation(d-sigma=3.6,_s/q=0.01097,_c=8)  in all terms, c is a distance cutoff\n1.0  electrostatic(i=1,_^=100,_c=8)\ti is the exponent of the distance, see everything.h for details\n1.0  electrostatic(i=2,_^=100,_c=8)\n1.0  gauss(o=0,_w=0.5,_c=8)\t\to is offset, w is width of gaussian\n1.0  gauss(o=3,_w=2,_c=8)\n1.0  repulsion(o=0,_c=8)\to is offset of squared distance repulsion\n1.0  hydrophobic(g=0.5,_b=1.5,_c=8)\t\tg is a good distance, b the bad distance\n1.0  non_hydrophobic(g=0.5,_b=1.5,_c=8)\tvalue is linearly interpolated between g and b\n1.0  vdw(i=4,_j=8,_s=0,_^=100,_c=8)\ti and j are LJ exponents\n1.0  vdw(i=6,_j=12,_s=1,_^=100,_c=8) s is the smoothing, ^ is the cap\n1.0  non_dir_h_bond(g=-0.7,_b=0,_c=8)\tgood and bad\n1.0  non_dir_h_bond_quadratic(o=0.4,_c=8) like repulsion, but for hbond, don't use\t\n1.0  non_dir_h_bond_lj(o=-0.7,_^=100,_c=8)\tLJ 10-12 potential, capped at ^\n1.0 acceptor_acceptor_quadratic(o=0,_c=8)\tquadratic potential between hydrogen bond acceptors\n1.0 donor_donor_quadratic(o=0,_c=8)\tquadratic potential between hydroben bond donors\n1.0  num_tors_div\tdiv constant terms are not linearly independent\n1.0  num_heavy_atoms_div\t\n1.0  num_heavy_atoms\tthese terms are just added\n1.0  num_tors_add\n1.0  num_tors_sqr\n1.0  num_tors_sqrt\n1.0  num_hydrophobic_atoms\n1.0  ligand_length\n```\n\n## Atom Type Terms\n\nYou can define custom functionals between pairs of specific atom types:\n\n```\natom_type_gaussian(t1=,t2=,o=0,_w=0,_c=8)\tguassian potential between specified atom types\natom_type_linear(t1=,t2=,g=0,_b=0,_c=8)\tlinear potential between specified atom types\natom_type_quadratic(t1=,t2=,o=0,_c=8)\tquadratic potential between specified atom types\natom_type_inverse_power(t1=,t2=,i=0,_^=100,_c=8)\tinverse power potential between specified atom types\n```\n\nUse `--print_atom_types` to see all available atom types. Note that hydrogens\nare always ignored despite having atom types.\n\nNote that these are all symmetric - you do not need to specify a term for (t1,t2) and (t2,t1) (doing so will just double the value of the potential).\n\nExample:  Faking covalent docking.  Consider this custom scoring function:\n```\n-0.035579    gauss(o=0,_w=0.5,_c=8)\n-0.005156    gauss(o=3,_w=2,_c=8)\n0.840245     repulsion(o=0,_c=8)\n-0.035069    hydrophobic(g=0.5,_b=1.5,_c=8)\n-0.587439    non_dir_h_bond(g=-0.7,_b=0,_c=8)\n1.923        num_tors_div\n-100.0       atom_type_gaussian(t1=Chlorine,t2=Sulfur,o=0,_w=3,_c=8)\n```\n\nAll but the last term are the default Vina scoring function.  That last\nterm applies a very strong guassian potential between Cl and S.  In the\nsystem we were docking, we modified the two atoms we wanted to be next\nto each other (because they are known form a covalent bond) to be a chlorine\nand a sulfur (the system is not physical, but that's okay).  Since these\nwere the only Cl and S in the system and the term has a large weight,\nthe best docking solutions all placed these atoms together.\nThe final poses could then be rescored/minimized using just the default\nscoring function.\n\n## License\n\nSmina is released under [Apache License, Version 2.0](LICENSE.APACHE) and [GNU General Public License, version 2](LICENSE.GNU)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantori%2Fscip-smina","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantori%2Fscip-smina","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantori%2Fscip-smina/lists"}