Source code for histomicstk.preprocessing.color_deconvolution.find_stain_index

import numpy as np

from . import _linalg as linalg


[docs] def find_stain_index(reference, w): """Identify the stain vector in w that best aligns with the reference vector. This is used with adaptive deconvolution routines where the order of returned stain vectors is not guaranteed. This function identifies the stain vector of w that most closely aligns with the provided reference. Parameters ---------- reference : array_like 1D array representing the stain vector query. w : array_like 3xN array of where columns represent stain vectors to search. Returns ------- i : int Column index of stain vector with best alignment to reference. Notes ----- Vectors are normalized to unit-norm prior to comparison using dot product. Alignment is determined by vector angles and not distances. See Also -------- histomicstk.preprocessing.color_deconvolution.separate_stains_macenko_pca histomicstk.preprocessing.color_deconvolution.color_deconvolution """ dot_products = np.dot( linalg.normalize(np.array(reference)), linalg.normalize(np.array(w)), ) return np.argmax(np.abs(dot_products))