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
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
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
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
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
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
def diff( self, golden, actual ): if self.options.error: return True else: return ParallelTest.diff( self, golden, actual )