-
Notifications
You must be signed in to change notification settings - Fork 15
Description
This issue was copied over from GH-559 since that issue was converted to just be for autostaple only which is for PR #1062. All conversations and comments were copied from the original issue over here. That being said, since autostaple is now "complete" it might be okay to ignore references to autostaple in this ticket.
It should also be noted that there are instructions on debugging cadnano2 to implement the autostaple algorithm from there as well. The instructions are located here.
Original Description: #559 (comment)
Currently, Autostaple and Autobreak (implemented in issue #80) rely on running cadnano v2 code on a back-end server. This was done to quickly push out the feature due to some urgent user requests. However, the cadnano v2 autobreak algorithm in particular is buggy and crashes on some designs.
We should develop our own heuristic to replace these algorithms and implement them in Dart. Alternately, there may be an alternate backend algorithm we can call based on recent experimental studies.
Original Comment: #559 (comment)
Meanwhile, we can use this issue to brainstorm what a good heuristic would look like. It seems related to issue #355, in the sense that both issues (the autostaple part of this issue) require us to choose good crossover positions between pairs of helices. Issue #355 is easier though, because it can suggest every least-strained crossover position, even though adding crossovers at all of those positions would not be a good idea. This issue is trickier, since we need to decide which subset of those crossovers to choose for autostaple.
Original Comment: #559 (comment)
Here's a recent paper: https://www.biorxiv.org/content/10.1101/2024.03.18.585609
I'm not sure exactly what problem it solves. It does not seem to be autostaple, because Figure 1A shows the input already having the staples:
So I'm guessing it solves the autobreak problem, but I don't quite understand the phrasing. For instance, it says "Edges in the second graph represent possible design choices that would remove the phosphates at the connected nodes." Since phosphate groups connect adjacent nucleotides on a strand, "remove the phosphates" could mean "generate nicks in long staple strands", i.e., autobreak.