예제 #1
0
파일: test.py 프로젝트: dornja/goa2
 def diff( self, golden, actual ):
     if not self.options.error:
         return ParallelTest.diff( self, golden, actual )
     golden = self._getPoses( golden )
     self.error = list()
     for fname in actual:
         values = self._getPoses( fname )
         if values is None or values.shape != golden.shape:
             self.error.append( 0 )
         else:
             rmse = np.sqrt( np.mean( ( golden - values ) ** 2 ) )
             self.error.append( 1.0 / ( 1 + rmse ) )
     return True
예제 #2
0
파일: test.py 프로젝트: dornja/goa2
 def diff( self, golden, actual ):
     if not self.options.error:
         return ParallelTest.diff( self, golden, actual )
     golden = self._readOutput( golden )
     errors = list()
     for fname in actual:
         values = self._readOutput( fname )
         if values is None or len( values ) != len( golden ):
             errors.append( 0 )
         else:
             rmse = np.sqrt( np.mean( ( golden - values ) ** 2 ) )
             errors.append( 1.0 / ( 1 + rmse ) )
     self.error = errors
     return True
예제 #3
0
파일: test.py 프로젝트: dornja/goa2
    def diff( self, golden, actual ):
        if not self.options.error:
            return ParallelTest.diff( self, golden, actual )

        with Multitmp( len( actual ) ) as count:
            Multitmp.check_call(
                [ os.path.join( root, "bin", "hamming" ), golden, actual ],
                stdout = count, verbose = self.options.verbose
            )
            self.error = list()
            for fname in count:
                with open( fname ) as fh:
                    for line in fh:
                        self.error.append( 1.0 / ( 1 + float( line.strip() ) ) )
                        break
        return True
예제 #4
0
파일: test.py 프로젝트: dornja/goa2
 def diff( self, golden, actual ):
     if not self.options.error:
         return ParallelTest.diff( self, golden, actual )
     with Multitmp( len( actual ) ) as result:
         Multitmp.check_call(
             [ "./freqdiff", golden, actual ],
             stdout = result, verbose = self.options.verbose
         )
         self.error = list()
         for fname in result:
             with open( fname ) as fh:
                 for line in fh:
                     self.error.append( 1 / ( 1 + float( line.strip() ) ) )
                     break
                 else:
                     self.error.append( 0 )
     return True
예제 #5
0
파일: test.py 프로젝트: dornja/goa2
    def diff( self, golden, actual ):
        if not self.options.error:
            return ParallelTest.diff( self, golden, actual )
        g_prices = self._getPrices( golden )

        self.error = list()
        for fname in actual:
            a_prices = self._getPrices( fname )
            i, j = 0, 0
            a, b = list(), list()
            error = 0
            while i < len( g_prices ) and j < len( a_prices ):
                if g_prices[ i ][ 0 ] == a_prices[ j ][ 0 ]:
                    a.append( g_prices[ i ][ 1 ] )
                    b.append( a_prices[ j ][ 1 ] )
                    if g_prices[ i ][ 2 ] == 0:
                        e = abs( a_prices[ j ][ 2 ] )
                    elif g_prices[ i ][ 2 ] < a_prices[ j ][ 2 ]:
                        e = 1 - g_prices[ i ][ 2 ] / a_prices[ j ][ 2 ]
                    else:
                        e = 1 - a_prices[ j ][ 2 ] / g_prices[ i ][ 2 ]
                    if isnan( e ) or isinf( e ):
                        e = 1
                    error += e
                    i += 1
                    j += 1
                elif g_prices[ i ][ 0 ] < a_prices[ j ][ 0 ]:
                    i += 1
                    error += 1
                else:
                    j += 1
                    error += 1
            error += len( g_prices ) - i
            error += len( a_prices ) - j
            if len( a ) < 2:
                error += 1
            else:
                error += 0.5 - 0.5 * kendalltau( a, b )[ 0 ]

            self.error.append( 1 / ( error + 1.0 ) )
        return True
예제 #6
0
파일: test.py 프로젝트: dornja/goa2
    def diff( self, golden, actual ):
        if not self.options.error:
            return ParallelTest.diff( self, golden, actual )

        with Multitmp( len( actual ) ) as result:
            with open( "/dev/null", 'w' ) as null:
                diffimg = os.path.join( root, "bin", "diff-img.sh")
                Multitmp.check_call(
                    [ diffimg, golden, actual ],
                    stdout = result, stderr = null,
                    verbose = self.options.verbose,
                )
            errors = list()
            for fname in result:
                with open( fname ) as fh:
                    error = 0
                    for line in fh:
                        if line.startswith( "total" ):
                            error += float( line.split()[ 2 ] )
                    errors.append( 1 / ( error + 1 ) )
            self.error = errors
            return True
예제 #7
0
파일: test.py 프로젝트: dornja/goa2
 def diff( self, golden, actual ):
     if self.options.error:
         return True
     else:
         return ParallelTest.diff( self, golden, actual )