Coder Social home page Coder Social logo

openfreeenergy / kartograf Goto Github PK

View Code? Open in Web Editor NEW
18.0 18.0 2.0 7.87 MB

This is an package contains tools for setting up hybrid-topology FE calculations

Home Page: https://kartograf.readthedocs.io/

License: MIT License

Python 100.00%
atom-mapping free-energy-calculations hybrid-topology openfe python

kartograf's People

Contributors

mikemhenry avatar richardjgowers avatar riesben avatar yoshanuikabundi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

kartograf's Issues

MultiState Enablement

Multistate methods are upcoming methods for FE calculations. Kartograf can also support such methods with the approch in the linked PR #12 .

Filter that disallows hybridization changes

In some mappings in ligands in the PLB system, mapping atoms that are connected by single or double bonds can lead to problems. It would be great to see if mappings that do not map these hybridization changes would perform better.

Example 1: P38 Edge lig_p38a_2gg - lig_p38a_2ee
download

Mapping of sulfone and amide let to "stereo inversion" with OpenMM 8.0.0
Screen Shot 2024-04-10 at 2 15 21 PM

Other example:
CDK8 Lig_25 - lig_24

download-1

problems with pip installation

First of all, thanks for the nice package!

While trying it out I encountered two problems after installing it with python -m pip install kartograph:

  1. The package installed didn't have dill in the list of dependencies (I see that's fixed now on the pyproject.toml);
  2. Installing kartograph via pip also installed an outdated version of gufe (0.4), which didn't have some functions used by this package.

One thing that could be done is to add information on the README file that the packages can also be installed directly from their respective GitHub repos, as in:

python -m pip install git+https://github.com/OpenFreeEnergy/gufe.git
python -m pip install git+https://github.com/OpenFreeEnergy/kartograf.git

The drawback of this approach is that having this listed on the pyproject.toml as an installation strategy prevents the package from being uploaded to PyPI.

Please let me know if that's something you'd like to have, happy to make a PR.

filter_atoms_h_only_h_mapped filters even mapped heavy atoms

Describe the bug
A clear and concise description of what the bug is.

function filter_atoms_h_only_h_mapped filters mapped heavy atoms where they are different elements.

In this condition, only same elements including heavy atoms are mapped. But this function should only filter hydrogen <-> heavy atoms according to function name and doc.

    if (atomA.GetAtomicNum() == atomB.GetAtomicNum() == 1) or (
        atomA.GetAtomicNum() == atomB.GetAtomicNum() != 1
    ):

[Branch: Expanding For Multistates] - Value Error - Setting an array with a sequence (Greedy Algorithm)

Describe the bug
When trying to suggest_multistate_mappings for an array of components. It automatically tries the new greedy algorithm. On two different systems, we've encountered the following bug

image

-> Setting an array element with a sequence for array a1_d.

It works if we set greedy to false.

To Reproduce
Steps to reproduce the behavior:

  1. Switch to "expanding for multistates" branch
  2. Trying out the following code snippet

`from kartograf import KartografAtomMapper, SmallMoleculeComponent
from rdkit import Chem

mapper = KartografAtomMapper()

ligands = [mol for mol in Chem.SDMolSupplier('set_A.sdf')]
components = [SmallMoleculeComponent(mol) for mol in ligands]
print(components)
mapping = mapper.suggest_multistate_mapping(components, greedy=False)

import json

with open('mapping.json', 'w') as f:
json.dump(mapping, f)`

  1. We used for set_A following sdf file
    set_A.txt

  2. Run

Expected behavior
Should provide a mapping for all ligands

Desktop (please complete the following information):

  • OS: Ubuntu
  • Version: newest version of Kartograf

If I can or should provide with any further information, let me know. Thank you very much for providing such helpful modules!

Add Filter for Non-Heavy to Heavy

Is your feature request related to a problem? Please describe.
Adding a filter, that allows to inhibit non-heav to heavz atom changes, could be useful for some folks!

Describe the solution you'd like
There should be a filter function no heavy-to-nonheavy

Additional context
some FE code, can not handle the bonded change.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.