Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hi Andreas, Andreas Tille, on 2022-11-24: > Am Thu, Nov 24, 2022 at 10:28:43AM +0900 schrieb Charles Plessy: > > I have read the Muscle5 paper and it is a totally different program than > > Muscle3. > > > > https://pubmed.ncbi.nlm.nih.gov/36379955/ > > > > Reintroducing muscle3 as a separate package might be useful not only to > > Biopython, but also to the people who need it in pipelines, etc. > > I've created a new git repository[1] and filed an ITP bug report. Will > upload to new soon. Thanks for the upload, I further adjusted the muscle wrapper so it would catch the muscle3 binary if it finds it in the path, as I see your new package provides the executable /usr/bin/muscle3. If no such executable is available, the default switches to plain muscle. In any case it is possible for a user of the biopython wrapper to enforce a given executable name by setting the cmd argument of the constructor. Changes are available in the muscle3 patch[2] on salsa. I'm hopeful to upload biopython 1.80 to experimental this evening. > [1] https://salsa.debian.org/med-team/muscle3 [2]: https://salsa.debian.org/med-team/python-biopython/-/blob/master/debian/patches/muscle3.patch Have a nice day, :) -- Étienne Mollier Fingerprint: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da Sent from /dev/pts/2, please excuse my verbosity. On air: Phideaux - Dormouse Escapes signature.asc Description: PGP signature
Bug#1009118: Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hi Charles, thank you for the hint. Am Thu, Nov 24, 2022 at 10:28:43AM +0900 schrieb Charles Plessy: > I have read the Muscle5 paper and it is a totally different program than > Muscle3. > > https://pubmed.ncbi.nlm.nih.gov/36379955/ > > Reintroducing muscle3 as a separate package might be useful not only to > Biopython, but also to the people who need it in pipelines, etc. I've created a new git repository[1] and filed an ITP bug report. Will upload to new soon. Kind regards Andreas. [1] https://salsa.debian.org/med-team/muscle3 -- http://fam-tille.de
Bug#1009118: [Debian-med-packaging] Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hello everybody, I have read the Muscle5 paper and it is a totally different program than Muscle3. https://pubmed.ncbi.nlm.nih.gov/36379955/ Reintroducing muscle3 as a separate package might be useful not only to Biopython, but also to the people who need it in pipelines, etc. Have a nice day, Charles
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hi all, Andrius Merkys, on 2022-10-17: > On 2022-10-13 14:31, Andreas Tille wrote: > > > On Thu, 7 Apr 2022 15:44:43 +0300 Andrius Merkys > > > wrote: > > > > python3-biopython is incompatible with muscle >= 5. > > > I tend to think this is serious-ish as biopython integration with muscle > > > from Debian package will not work. Upstream has been notified [1] and > > > their > > > response was to drop all wrappers at some point. However, it becomes clear > > > that this point is beyond the bookworm's freeze (June 2022, to cite > > > upstream), thus we are at risk of shipping a broken package. > > > > > > What should we do? > > > > > > B. Patch biopython to detect muscle >= 5 and throw an error? > > > > > > C. Slap a warning (debian/NEWS) that biopython interface with muscle >=5 > > > is > > > broken and should only be used with local installations of muscle <5? > > > > I think both B+C is a sensible way to simply set bug #1009118 wishlist > > to give room for A anyway. > > I agree this would make biopython fit to release in bookworm. I implemented B by checking for "muscle 5" in --version output. Attempt to make use of such muscle version with biopython would end up with a RuntimeError, for example: Traceback (most recent call last): File "/<>/.pybuild/cpython3_3.11/build/Tests/test_Muscle_tool.py", line 197, in test_simple_msf cmdline = MuscleCommandline(muscle_exe, input=input_file, msf=True) ^ File "/<>/.pybuild/cpython3_3.11/build/Bio/Align/Applications/_Muscle.py", line 682, in __init__ raise RuntimeError("muscle 5 is unsupported in biopython") RuntimeError: muscle 5 is unsupported in biopython I also implemented C with the following NEWS item: python-biopython (1.80+dfsg-1) experimental; urgency=medium Starting with biopython 1.79, command wrappers are being deprecated, and may be removed past biopython 1.81. This has the notable implication that support of the muscle command past version 5 has never been implemented, and probably will never be[1,2]. Users of muscle are invited either to use a generic command launcher such as the module "subprocess", or to stick to muscle 3. [1]: https://github.com/biopython/biopython/issues/3902 [2]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1009118 -- Étienne Mollier Wed, 23 Nov 2022 23:19:22 +0100 I tried to keep messages succinct, but if you think this is too terse, improvements are welcome. Have a nice day, :) -- .''`. Étienne Mollier : :' : gpg: 8f91 b227 c7d6 f2b1 948c 8236 793c f67e 8f0d 11da `. `' sent from /dev/pts/2, please excuse my verbosity `- signature.asc Description: PGP signature
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hi Andreas, On 2022-10-13 14:31, Andreas Tille wrote: On Thu, 7 Apr 2022 15:44:43 +0300 Andrius Merkys wrote: python3-biopython is incompatible with muscle >= 5. I tend to think this is serious-ish as biopython integration with muscle from Debian package will not work. Upstream has been notified [1] and their response was to drop all wrappers at some point. However, it becomes clear that this point is beyond the bookworm's freeze (June 2022, to cite upstream), thus we are at risk of shipping a broken package. What should we do? A. Patch biopython to work with muscle >= 5? Well, I guess if it would be that simple upstream would have stepped in. While it would be the optimal solution I'm afraid we will fail in this (and I would love a lot if someone would prove me wrong here!) Right, this is most likely too much work. B. Patch biopython to detect muscle >= 5 and throw an error? C. Slap a warning (debian/NEWS) that biopython interface with muscle >=5 is broken and should only be used with local installations of muscle <5? I think both B+C is a sensible way to simply set bug #1009118 wishlist to give room for A anyway. I agree this would make biopython fit to release in bookworm. Or something else? Maintaining a muscle4 package? May be quite some users have scripts adapted to muslce 4 and there might be some use for this as well? This might work, if it is not too much effort to maintain both muscle versions in bookworm. I would prefer B+C for simplicity. Best, Andrius
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hello, Since the bookworm's freeze is getting closer, I would like to attract team's attention to bug #1009118 in biopython: On Thu, 7 Apr 2022 15:44:43 +0300 Andrius Merkys wrote: python3-biopython is incompatible with muscle >= 5. I tend to think this is serious-ish as biopython integration with muscle from Debian package will not work. Upstream has been notified [1] and their response was to drop all wrappers at some point. However, it becomes clear that this point is beyond the bookworm's freeze (June 2022, to cite upstream), thus we are at risk of shipping a broken package. What should we do? A. Patch biopython to work with muscle >= 5? B. Patch biopython to detect muscle >= 5 and throw an error? C. Slap a warning (debian/NEWS) that biopython interface with muscle >=5 is broken and should only be used with local installations of muscle <5? Or something else? [1] https://github.com/biopython/biopython/issues/3902 Best, Andrius
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Control: tags -1 + wontfix Hello, The upstream has confirmed that command line wrappers are deprecated and will most likely be removed before bookworm freeze. Thus there is no need to patch this. I suggest keeping this issue open until bookworm release as a reminder to check this before the release. Andrius
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Hi Étienne, On Sat, 9 Apr 2022 11:32:03 +0200 =?utf-8?Q?=C3=89tienne?= Mollier wrote: > Control: tags -1 + confirmed > Control: forwarded -1 https://github.com/biopython/biopython/issues/3902 Thanks for forwarding the issue upstream. > There seems to be enough changes between the two versions that a > rather extensive rewrite of the muscle wrapper might be needed. > But I may miss easier approaches, we'll see what upstream will > come up with. If upstream wants to support both muscle 3 and muscle 5, then surely yes. If only muscle 5 support is needed, maybe simple adjustments to accommodate muscle's CLI changes would be enough. Nevertheless let us wait for upstream response, there is quite some time before the bookworm freeze. Best, Andrius
Bug#1009118: python3-biopython: incompatible with muscle >= 5
Package: python3-biopython Severity: important Tags: upstream Hello, python3-biopython is incompatible with muscle >= 5. Upstream tests detect this incompatibility: == ERROR: test_Muscle_profile_simple (test_Muscle_tool.MuscleApplication) Simple round-trip through app doing a profile alignment. -- Traceback (most recent call last): File "/<>/.pybuild/cpython3_3.10/build/Tests/test_Muscle_tool.py", line 133, in test_Muscle_profile_simple output, error = cmdline() File "/<>/.pybuild/cpython3_3.10/build/Bio/Application/__init__.py", line 574, in __call__ raise ApplicationError(return_code, str(self), stdout_str, stderr_str) Bio.Application.ApplicationError: Non-zero return code 1 from 'muscle -out Fasta/temp_align_out3.fa -profile -in1 Fasta/fa01 -in2 Fasta/f001', message 'Invalid command line' (only one failing test is shown for brevity) However, tests with muscle are skipped as the build system is unable to detect newer muscle. I attach a patch prodding the build system to run muscle tests. Normally I would push such patch to cause FTBFS for package, but now I think failures of integration with muscle should not cause AUTORM for Biopython. Nevertheless, I think this should be fixed for bookworm. Andrius--- a/Tests/test_Muscle_tool.py +++ b/Tests/test_Muscle_tool.py @@ -49,14 +49,13 @@ if muscle_exe: break else: -from subprocess import getoutput +from subprocess import getstatusoutput -output = getoutput("muscle -version") +exitcode, _ = getstatusoutput("muscle -version") # Since "not found" may be in another language, try and be sure this is # really the MUSCLE tool's output -if "not found" not in output and "not recognized" not in output: -if "MUSCLE" in output and "Edgar" in output: -muscle_exe = "muscle" +if exitcode == 0: +muscle_exe = "muscle" if not muscle_exe: raise MissingExternalDependencyError(