#5740 - Establishing connection between ambiguous phosphate and sugar works wrong#9681
Open
beyzaevcen wants to merge 1 commit intomasterfrom
Open
#5740 - Establishing connection between ambiguous phosphate and sugar works wrong#9681beyzaevcen wants to merge 1 commit intomasterfrom
beyzaevcen wants to merge 1 commit intomasterfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
How the feature works? / How did you fix the issue?
(Screenshots, videos, or GIFs, if applicable)
Summary
TypeError: this.getValidPoint is not a functioncrash whenhovering a sugar over an ambiguous phosphate (or vice versa) in Macro
Flex mode.
incorrectly appearing when connecting an ambiguous phosphate/sugar
with its counterpart.
ph(R2)–sg(R1)bond rule now applies automatically forvariant monomers, per requirement §6.2.
Root cause
Two separate bugs:
1. TypeError in
AmbiguousMonomerAmbiguousMonomer.getValidSourcePointdelegates to the real classprototype via
.call(this, ...). ForPhosphateandSugar, thoseprototype methods internally call a private helper
getValidPoint.Because
thisis anAmbiguousMonomerinstance at call time,getValidPointis not in its prototype chain →TypeError.2. Failed
instanceofchecks inSugarandPhosphateSugar.getValidPointchecksinstanceof PhosphateandPhosphate.getValidPointchecksinstanceof Sugar. Both returnfalseforAmbiguousMonomerinstances, so ambiguous monomers werenever recognised as their equivalent type — causing the modal to open
instead of the bond being created automatically.
Changes
AmbiguousMonomer.ts_createContextProxy: aProxythat intercepts property lookups and falls through to the target prototype for methods absent fromAmbiguousMonomer(e.g. privategetValidPoint)monomers.tsisPhosphateOrAmbiguousPhosphateandisSugarOrAmbiguousSugartype guard helpers, following the existingisRnaBaseOrAmbiguousRnaBase/isPeptideOrAmbiguousPeptidepatternSugar.tsinstanceof PhosphatewithisPhosphateOrAmbiguousPhosphatePhosphate.tsinstanceof SugarwithisSugarOrAmbiguousSugarCheck list
#1234 – issue name