You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Firstly, thanks for your work with Pyrodigal! I wasn't able to determine if Pyrodigal should be deterministic, if it is then ignore this ticket.
I have an extremely rare case that took quite some time to identify, but Pyrodigal will occasionally give a different result when running via Shell vs. Python subprocess. The strange part is that the likelihood of Pyrodigal giving a different result is higher when running via a Python subprocess though.
To replicate the issue:
Dockerfile
FROM python:3.10-slim
RUN apt-get update && apt-get install -y \
curl \
unzip \
&& rm -rf /var/lib/apt/lists/*
RUN python -m pip install pyrodigal==2.0.4
RUN mkdir -p /data /results /tmp/download
WORKDIR /tmp/download
RUN curl -OJX GET "https://api.ncbi.nlm.nih.gov/datasets/v2alpha/genome/accession/GCA_009700405.1/download?include_annotation_type=GENOME_FASTA&filename=GCA_009700405.1.zip" -H "Accept: application/zip" && \
unzip GCA_009700405.1.zip && \
rm GCA_009700405.1.zip && \
mv ncbi_dataset/data/GCA_009700405.1/GCA_009700405.1_ASM970040v1_genomic.fna /data/genome.fna && \
rm -rf /tmp/download
WORKDIR /data
Entering container
docker build -t pyrodigal_test .&& docker run -it pyrodigal_test /bin/bash
Normally Pyrodigal should indeed be deterministic. Non-determinism is often caused when some parts of the program are reading undefined memory, often out of bounds.
This may be linked to hyattpd/Prodigal#100 as I'm seeing the error is happening next to the edge on the reverse strand. I'll check if the fixed version still causes the issue.
Hello,
Firstly, thanks for your work with Pyrodigal! I wasn't able to determine if Pyrodigal should be deterministic, if it is then ignore this ticket.
I have an extremely rare case that took quite some time to identify, but Pyrodigal will occasionally give a different result when running via Shell vs. Python subprocess. The strange part is that the likelihood of Pyrodigal giving a different result is higher when running via a Python subprocess though.
To replicate the issue:
Dockerfile
Entering container
Running Pyrodigal
Results
Over 200 trials I get the following results:
The differences between the two hashes are:
i.e. the 597610 hash starts with Y instead of M.
The text was updated successfully, but these errors were encountered: