Fnotching
calc_indices_from_index
def calc_indices_from_index(
n, # Length of condensed matrix
c, # Index of the distance value of interest
): # Coordinate pair of the 2 indices that were used to calculate distance
at index c of the condensed distance matrix.calculate source indices from condensed distance matrix.
The pdist function returns its measurements in a (01, 02, 03, 12, 13…) fashion and this function can be used to get out the original coordinates of the 2 inputs.
remove_opposing_fans
def remove_opposing_fans(
fans, # Fan marking data
eps:int=20
): # Data with opposing fans removed.Find fans that have opposite orientation and remove lower voted one.
First check if any fans are close enough to be fnotched (same criteria as blotch-fan fnotching), then check if any of those have opposite orientation. Delete the one with lower votes. If number of votes is equal, take a random choice.
get_clusters_in_path
def get_clusters_in_path(
path, # Path in where to search for L1A csv files.
): # List with 2 pd.DataFramesFind csv files in path and combine into DataFrame.
get_id_from_path
def get_id_from_path(
path
):Call self as a function.
data_to_centers
def data_to_centers(
df, # Dataframe with either fan or blotch marking data. It probes itself
# which one it is by looking at if distances and radii are defined.
kind, scope:str='hirise'
):Convert a dataframe with marking data to an array of center coords.
fnotch_image_ids
def fnotch_image_ids(
obsid, # Observation ID for which the clustering and fnotching is performed.
eps:int=20, # The maximum distance in pixels to consider for fnotching, by default 20.
savedir:NoneType=None, # Directory where the results will be saved, by default None.
scope:str='hirise', # Coordinate scope of the calculation, by default "hirise".
):Cluster each image_id for an obsid separately and perform fnotching.
write_l1c
def write_l1c(
kind, # P4 marking kind
slashed, # The remaining fnotch data after applying the cut
pm, # The PathManager for the current image_id
):Write the L1C for marking kind.
apply_cut_obsid
def apply_cut_obsid(
obsid, cut:float=0.5, savedir:NoneType=None
):Call self as a function.
apply_cut
def apply_cut(
obsid, # HiRISE obsid, i.e. P4 `image_name`
cut:float=0.5, # Value where to cut the vote_ratio of the fnotches.
savedir:NoneType=None
):Loop over all image_id paths for an obsid and apply cut to fnotches.