genometools / genomethreader

GenomeThreader gene prediction software.
ISC License
11 stars 5 forks source link

Slightly different gene structures produced on i386 #14

Closed satta closed 4 years ago

satta commented 4 years ago

Hi,

I am investigating a build failure on Debian sid i386 (see https://buildd.debian.org/status/fetch.php?pkg=genomethreader&arch=i386&ver=1.7.3%2Bdfsg-2&stamp=1579736664&raw=0), the only failure across all supported architectures (see https://buildd.debian.org/status/package.php?p=genomethreader). The reason for this failure is that apparently this 32-bit version outputs two exons in the U89959 test case differently. I confirmed that this issue also appears in the binary release version downloaded from the official GenomeThreader site by copying the testdata and testsuite directories from the GenomeThreader source into the extracted binary distribution directory and running testsuite.rb:

(sid-i386)root@debian:/tmp/gth-1.7.3-Linux_i386-32bit/testsuite# ./testsuite.rb
  1: gth                                                         : ok
  2: gth -help                                                   : ok
  3: gth -help+                                                  : ok
  4: gth -version                                                : ok
  5: gth regression test (assertion in gthsafilter)              : ok
  6: gth regression test (-gff3out -intermediate)                : ok
  7: gth regression test (-gff3out -intermediate -fastdp)        : ok
  8: gth regression test (-gff3out -skipalignmentout)            : ok
  9: gth regression test (-gff3out -skipalignmentout -fastdp)    : ok
[...]
 50: fastdp (U89959)                                             : failed
     [ problem: unexpected return code: 1 != 0
       in: /tmp/gth-1.7.3-Linux_i386-32bit/testsuite/stest_testsuite/test50 ]
 51: fastdp (U89959, introncutout)                               : failed
     [ problem: unexpected return code: 1 != 0
       in: /tmp/gth-1.7.3-Linux_i386-32bit/testsuite/stest_testsuite/test51 ]
[...]
(sid-i386)root@debian:/tmp/gth-1.7.3-Linux_i386-32bit/testsuite# cat /tmp/gth-1.7.3-Linux_i386-32bit/testsuite/stest_testsuite/test50/stdout_2
1333,1336c1333,1336
< 1877523   gth exon    105010  105218  0.861   +   .   Parent=gene174
< 1877523   gth five_prime_cis_splice_site  105219  105220  0   +   .   Parent=gene174
< 1877523   gth three_prime_cis_splice_site 105303  105304  0   +   .   Parent=gene174
< 1877523   gth exon    105305  105428  0.887   +   .   Parent=gene174
---
> 1877523   gth exon    105010  105223  0.86    +   .   Parent=gene174
> 1877523   gth five_prime_cis_splice_site  105224  105225  0   +   .   Parent=gene174
> 1877523   gth three_prime_cis_splice_site 105308  105309  0   +   .   Parent=gene174
> 1877523   gth exon    105310  105428  0.891   +   .   Parent=gene174
1345,1348c1345,1348
< 1877523   gth exon    105009  105218  0.862   +   .   Parent=gene175
< 1877523   gth five_prime_cis_splice_site  105219  105220  0   +   .   Parent=gene175
< 1877523   gth three_prime_cis_splice_site 105303  105304  0   +   .   Parent=gene175
< 1877523   gth exon    105305  105428  0.887   +   .   Parent=gene175
---
> 1877523   gth exon    105009  105223  0.86    +   .   Parent=gene175
> 1877523   gth five_prime_cis_splice_site  105224  105225  0   +   .   Parent=gene175
> 1877523   gth three_prime_cis_splice_site 105308  105309  0   +   .   Parent=gene175
> 1877523   gth exon    105310  105428  0.891   +   .   Parent=gene175

These tests were run in an i386 Debian sid chroot.

Is this a bug or is this deviation known or acceptable?

gordon commented 4 years ago

Unfortunately this deviation is known and we have to live with it. It is an artifact of floating point operations working slightly differently on some architectures and in some rare cases this can lead to different results.

I spent a lot of time trying to fix that back in the day, but it doesn't seem to be possible, these are rounding errors.

I would just disable these specific tests on this platform.

satta commented 4 years ago

Okay, thanks for the information! I will skip these tests on i386 then.