althonos / pymuscle5

Cython bindings and Python interface to MUSCLE v5, a highly efficient and accurate multiple sequence alignment software.
GNU General Public License v3.0
18 stars 2 forks source link

Rust API #2

Open jianshu93 opened 2 months ago

jianshu93 commented 2 months ago

Hi @althonos,

Just want to know whthter it is possible to have a Rust wrapper of muscle5, it seems lot of work, but not sure about this.

Thanks,

Jianshu

althonos commented 2 months ago

Hi @jianshu93,

I'm not sure about wrapping muscle5 in Rust, or in Python for that matter, because the code simply does not allow for it. Muscle uses global variables and hidden states everywhere for configuration, so it's simply not possible to configure independent aligners and this may also prevent from proper reproducible results. That's the reason I have not released the code as Python either.

I tried submitting a PR to Muscle to change the random number generation to improve reproducibility in the wrapped code, but it was too many changes and got rejected.

If anything, I think wrapping FAMSA (which I wrapped in PyFAMSA) has more chances of succeeding, because the code has a better library interface.