Add type check for point finding

This commit is contained in:
linarphy 2023-05-09 11:37:56 +02:00
parent 1b04152337
commit f75e2e2af9
No known key found for this signature in database
GPG key ID: 3D4AAAC3AD16E79C

View file

@ -1,6 +1,8 @@
from astropy.io.fits import open from astropy.io.fits import open
import numpy as np import numpy as np
global_i = 0
def load( filename ): def load( filename ):
""" """
retrieve data from naroo fits retrieve data from naroo fits
@ -78,7 +80,7 @@ def check_side( data , point , tolerance ):
if not isinstance( tolerance , int ) and not isinstance( tolerance , float ): if not isinstance( tolerance , int ) and not isinstance( tolerance , float ):
raise ValueError( 'tolerance must be a number, ' + type( tolerance ) + ' given' ) raise ValueError( 'tolerance must be a number, ' + type( tolerance ) + ' given' )
positions , intensity = [] , data[ *point ] positions , intensity = [] , data[ tuple( point ) ]
if 0 <= point[0] < data.shape[0] - 1 and intensity - tolerance <= data[ point[0] + 1 , point[1] ] <= intensity + tolerance: if 0 <= point[0] < data.shape[0] - 1 and intensity - tolerance <= data[ point[0] + 1 , point[1] ] <= intensity + tolerance:
positions.append( [ point[0] + 1 , point[1] ] ) positions.append( [ point[0] + 1 , point[1] ] )
if 0 < point[0] < data.shape[0] and intensity - tolerance <= data[ point[0] - 1 , point[1] ] <= intensity + tolerance: if 0 < point[0] < data.shape[0] and intensity - tolerance <= data[ point[0] - 1 , point[1] ] <= intensity + tolerance:
@ -93,6 +95,8 @@ def fill( data , point , tolerance , limit = 100000 ):
""" """
give the coordinate of all points that fill the area with the given tolerance give the coordinate of all points that fill the area with the given tolerance
""" """
global global_i
global_i += 1
if not isinstance( data , np.ndarray ) and not isinstance( data , list ): if not isinstance( data , np.ndarray ) and not isinstance( data , list ):
raise ValueError( 'data must be a list, ' + type( data ) + ' given' ) raise ValueError( 'data must be a list, ' + type( data ) + ' given' )
if not isinstance( point , np.ndarray ) and not isinstance( point , tuple ) and not isinstance( point , list ): if not isinstance( point , np.ndarray ) and not isinstance( point , tuple ) and not isinstance( point , list ):
@ -118,6 +122,14 @@ def point( index_1 , index_2 , axis = 'x' ):
""" """
reorder coordinate reorder coordinate
""" """
if not isinstance( index_1 , int ):
raise ValueError( 'index_1 must be an integer, ' + type( index_1 ) + ' given' )
if not isinstance( index_2 , int ):
raise ValueError( 'index_2 must be an integer, ' + type( index_2 ) + ' given' )
if not isinstance( axis , str ):
raise ValueError( 'axis must be a string, ' + type( axis ) + ' given' )
if axis not in [ 'x' , 'y' ]:
raise ValueError( 'axis must be "x" or "y", ' + axis + ' given' )
if axis == 'x': if axis == 'x':
return [ index_2 , index_1 ] return [ index_2 , index_1 ]
return [ index_1 , index_2 ] return [ index_1 , index_2 ]
@ -126,6 +138,17 @@ def find_point( list_ , index , axis = 'x' , threshold = 0.5 ):
""" """
find the index where to fill in a side find the index where to fill in a side
""" """
if not isinstance( list_ , list ) and not isinstance( list_ , np.ndarray ):
raise ValueError( 'list_ must be a list, ' + type( list_ ) + ' given' )
if not isinstance( index , int ):
raise ValueError( 'index must be an integer, ' + type( index ) + ' given' )
if not isinstance( axis , str ):
raise ValueError( 'axis must be a string, ' + type( axis ) + ' given' )
if axis not in [ 'x' , 'y' ]:
raise ValueError( 'axis must be "x" or "y", ' + axis + ' given' )
if not isinstance( threshold , float ):
raise ValueError( 'threshold must be a float, ' + type( threshold ) + ' given' )
mean = np.mean( list_ ) mean = np.mean( list_ )
ampl = np.max( list_ ) - np.min( list_ ) ampl = np.max( list_ ) - np.min( list_ )