Thank you for developing and maintaining MXFold2. I have been using MXFold2 to compute base-pairing probability (BPP) matrices with the --bpp option, and I noticed a numerical issue in the BPP output.
For some input sequences, the BPP matrix contains values greater than 1, although BPP values should theoretically be within the range [0, 1]. For example, using the attached minimal reproducible sequence (152.fasta), I obtained the following debug output before the np.triu() / symmetrization step in predict.py:
[BPP DEBUG] raw shape: (1138, 1138)
[BPP DEBUG] base-294 vs base-318: bpp = 1.00101781
[BPP DEBUG] raw row-sum max: 1.0011761
In another longer sequence, the original single-precision BPP output contained larger violations, with values around 1.08. After modifying the partition-function/BPP computation to use double precision, the issue disappeared in that case.
The modification I tested only changes the numerical precision used for the partition-function and BPP calculation from single precision to double precision. As far as I can tell, this issue affects the --bpp output, but it does not appear to affect the usual structure-prediction output.
I am reporting this in case it is useful for improving the numerical stability of the --bpp option. I would be happy to provide debug logs or a small patch if helpful.
152.fasta.txt
Thank you for developing and maintaining MXFold2. I have been using MXFold2 to compute base-pairing probability (BPP) matrices with the
--bppoption, and I noticed a numerical issue in the BPP output.For some input sequences, the BPP matrix contains values greater than 1, although BPP values should theoretically be within the range [0, 1]. For example, using the attached minimal reproducible sequence (
152.fasta), I obtained the following debug output before thenp.triu()/ symmetrization step inpredict.py:In another longer sequence, the original single-precision BPP output contained larger violations, with values around 1.08. After modifying the partition-function/BPP computation to use double precision, the issue disappeared in that case.
The modification I tested only changes the numerical precision used for the partition-function and BPP calculation from single precision to double precision. As far as I can tell, this issue affects the
--bppoutput, but it does not appear to affect the usual structure-prediction output.I am reporting this in case it is useful for improving the numerical stability of the
--bppoption. I would be happy to provide debug logs or a small patch if helpful.152.fasta.txt