GSoC 2025 - Continuous Interaction Fingerprints #4991
VAKozyrev
started this conversation in
GSoC Discussions
Replies: 1 comment
|
Hi @VAKozyrev, Sorry for the (very) late reply here, this discussion completely fell off my radar 😅 You should have received some feedback in the pre-proposal acceptance email, hopefully it clarified some things! |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hello everyone,
My name is Vladimir. I'm a PhD student in computational chemistry. I'm interested in the Continuous (i.e., non-binary) interaction fingerprints (IFPs) project and wanted to leave some of my thoughts here.
Also, hello to the mentors @cbouy and @talagayev. My apologies for submitting the proposal on the final day; I appreciate your understanding and hope it still receives full consideration.
I think my main questions are whether you want to focus on fine-tuning the parameters for the thresholds used to define "ideal" and "minimum" distances, or just on implementing the possibility of providing these parameters? Also, I see how it should be more or less straightforward to implement distance cutoffs, while angles and combinations of angle-distance cutoffs might be more challenging.
In my pre-proposal, I focused more on the technical side of the question—implementing the functionality—rather than on setting the exact values for the thresholds.
Firstly, I would start by implementing two new parameters for the
Interactionclass and its subclasses likeHydrophobic,HBAcceptor, etc. They should accept bothminimal_distanceandideal_distanceparameters for their initialization. These are thresholds corresponding to 1 and 0 in the fingerprint.Then, these parameters must be provided to the
Fingerprintclass as part of theparametersdictionary during its initialization. This is then used inFingerprint._set_interactionsto set the list of considered interactions and their parameters.Next, if the ideal and minimum distances are provided and a continuous fingerprint should be generated, the current
detectmethods:https://github.com/chemosim-lab/ProLIF/blob/c2daf5738ae528c067d95ed401fe8c6c83d74a98/prolif/interactions/base.py#L140-L147
should be modified to output metadata of the interaction (including the real distance between interacting groups) if the distance is below
minimum_distance:This way, while constructing a fingerprint, we will retrieve the interaction metadata if the distance is below
minimum_distance. The construction of the fingerprint happens in theFingerprint.bitvectormethod:https://github.com/chemosim-lab/ProLIF/blob/c2daf5738ae528c067d95ed401fe8c6c83d74a98/prolif/fingerprint.py#L282-L287
Here, each interaction from the list of interactions considered in the fingerprint is called for two residues, which calls the
Interaction.__call__method:https://github.com/chemosim-lab/ProLIF/blob/c2daf5738ae528c067d95ed401fe8c6c83d74a98/prolif/interactions/base.py#L50-L52
This method returns either
Trueorint_metadata, which is the interaction metadata, containing the real distance between interacting groups. In our case, we need to make sure that themetadataflag is set toTrue.Returning to the
Fingerprint.bitvectormethod, we can modify it by adding something like:Here,
activation_functionis a function that needs to be implemented to map the interaction metadata frombitvectorto a continuous value between 0 and 1. Theactivation_functionwill take the interaction metadata and output 1 if the distance is belowideal_distance, or apply a sigmoid function if it is betweenideal_distanceandminimum_distance.As a starting point, the sigmoid function can be defined as:
Here,
mcan be set to(ideal_distance + minimum_distance) / 2so that the function returns 0.5 halfway between the two cutoffs. The parameterkcontrols the steepness of the curve and can be fine-tuned.I'd really appreciate any feedback, and everyone is very welcome to join the discussion!
All reactions