Restriction Enzymes Functioning
- The way Restriction Enzymes function is: If you choose any of the enzymes listed on the Restriction Sites panel and click on the Map Sites button, IGB will load the entire chromosome data, regardless of the range the user has specified in the search panel. The enzymes will then be mapped over the chromosome range specified by the user.
What happens after loading the entire chromosome
- A check is performed on whether chromosome data is available for the user-given range. Because restriction enzymes already load the whole data before this check, this condition does not fail. However, the only time the condition fails is for the whole chromosome range.
- This case can be named as an overlapping case.
Whole sequence: Chr1:0-30,427,671
User Input: Chr1:0-30,427,671
Both are strictly overlapped.
- The availability check logic goes through several set operations such as union, intersection, xor, and inverse.
- In the intersection part, there is a check for strict overlapping. Because our situation falls under this case, we are getting Residues for seq not available, search aborted.
- To know the reason behind this problem requires a deeper understanding of these set operations logic. Moreover, this logic is used in many places of IGB, and I can say this is one of the core checks (to check residues available for the given range) used by most of the plugins and other modules. Therefore, modifying the logic for the sake of this issue would create a problem in other ways.
Summary:
I cannot conclude this is a bug because the IGB developers wrote a logic to avoid this case specifically. For now, I would like to move this ticket to the backlog, and If time permits, I may pick this up again in future.
See RestrictionControlView.java
if (vseq == null || !vseq.isAvailable(span)) { ErrorHandler.errorPanel(BUNDLE.getString("notAvail")); return; }