Giter VIP home page Giter VIP logo

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  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

kartograf's Issues

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.

fused ring atom mapping/scoring for single/hybrid topology methods

we've run into a few problematic mappings with the kartograf mapper for fused ring systems. kartograf maps the following example (red are atoms mapped to remove):
image

But with single/hybrid topology methods this won't work. Instead, we would want a mapping like this:
image
which is of course not very efficient but with enough sampling is much more likely to give an accurate DDG estimate. If you want to reproduce our particular transformation you can use SMILES c1ccc(cc1)COC(=O)Nc2cc(cc(c2)Cl)C(=O)Nc3ccc4c(c3)CC[C@@H]4N and c1ccc(cc1)COC(=O)Nc2cc(cc(c2)Cl)C(=O)Nc3cccc(c3)[C@H]4CCNC4.

There are some implementations on allow ring breaking options for popular mappers, see here and here for some examples. Would it be in scope for kartograf to have this option too? Currently we need to revert back to perses mappers/scorers for this kind of transformation.

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.

[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!

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

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_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
    ):

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.