Source code for pygeoda.sa.lisa

from ..libgeoda import LISA, BatchLISA
import math

__author__ = "Xun Li <lixun910@gmail.com>, Yeqing Han <yeqinghan_geo@163.com>"

[docs]class lisa: """A LISA class wrappers the results of LISA computation Attributes: gda_lisa An object of GeoDaLISA """
[docs] def __init__(self, lisa_obj): """Constructor of lisa object Args: lisa_obj (Object): An object/pointer of LISA class """ self.gda_lisa = lisa_obj
def run(self): """Call to run LISA computation """ return self.gda_lisa.Run() def set_permutations(self, num_perm): """Set the number of permutations for the LISA computation Args: num_perm (int): the number of permutations e.g. 99, 999, 9999, 999999 """ if num_perm < 1 or num_perm > 999999: raise ValueError("The number of permutations is a positive integer number, but has to be less than 999999.") return self.gda_lisa.SetNumPermutations(num_perm) def set_threads(self, num_threads): """Set the number of CPU threads for the LISA computation Args: num_threads (int): the number of CPU threads """ if num_threads < 1: raise ValueError("The number of CPU threads has to be a positive integer number.") return self.gda_lisa.SetNumThreads(num_threads) def lisa_values(self): """Get LISA values Get the local spatial autocorrelation values returned from LISA computation. Return: tuple: A numeric vector of local spatial autocorrelation """ return self.gda_lisa.GetLISAValues() def lisa_pvalues(self): """Get pseudo-p values of LISA Get the local pseudo-p values of significance returned from LISA computation. Return: A numeric vector of pseudo-p values of local spatial autocorrelation """ vals = self.gda_lisa.GetLocalSignificanceValues() clean_vals = [math.nan if v < 0 else v for v in vals] return clean_vals def lisa_clusters(self): """Get local cluster indicators Get the local cluster indicators returned from LISA computation. Return: A numeric vector of LISA cluster indicator """ return self.gda_lisa.GetClusterIndicators() def lisa_num_nbrs(self): """Get the number of neighbors of every observations in LISA computation. Return: :obj:`list` of int: a list of integer values of the number of neighbors of every observations in LISA computation. e.g. local moran, local geary etc. """ return self.gda_lisa.GetNumNeighbors() def lisa_labels(self): """Get the cluster labels of LISA computation. Return: :obj:`list` of :obj:`str`: a list of string values of the number of the cluster labels of LISA computation e.g. local moran, local geary etc. """ return self.gda_lisa.GetLabels() def lisa_colors(self): """Get the cluster colors of LISA computation. Return: :obj:`list` of :obj:`str`: a list of string values of the number of the cluster colors of LISA computation e.g. local moran, local geary etc. """ return self.gda_lisa.GetColors() def lisa_fdr(self, p): '''False Discovery Rate value of local spatial autocorrelation Get False Discovery Rate value based on current LISA computation and current significant p-value Args: p: A value of current siginificant p-value Returns: float: A numeric vector of False Discovery Rate ''' return self.gda_lisa.GetFDR(p) def lisa_bo(self, p): '''Bonferroni bound value Get Bonferroni bound value based on current LISA computation and current significat p-value Args: p: A value of current siginificant p-value Returns: A numeric value of Bonferroni bound ''' return self.gda_lisa.GetBO(p) def __repr__(self): info = "lisa object:\n\n" info += "\tlisa_values(): [{0}, ...]\n".format(str(self.lisa_values()[:10])[1:-1]) info += "\tlisa_pvalues(): [{0}, ...]\n".format(str(self.lisa_pvalues()[:10])[1:-1]) info += "\tlisa_num_nbrs(): [{0}, ...]\n".format(str(self.lisa_num_nbrs()[:10])[1:-1]) info += "\tlisa_clusters(): [{0}, ...]\n".format(str(self.lisa_clusters()[:10])[1:-1]) info += "\tlisa_labels(): {0}\n".format(str(self.lisa_labels())) info += "\tlisa_colors(): {0}\n".format(str(self.lisa_colors())) return info
[docs]class batchlisa: """A BatchLISA class wrappers the results of LISA computations Attributes: gda_lisa An object of BatchLISA """
[docs] def __init__(self, lisa_obj): """Constructor of lisa object Args: lisa_obj (Object): An object/pointer of LISA class """ self.gda_lisa = lisa_obj
def run(self): """Call to run LISA computation """ return self.gda_lisa.Run() def set_permutations(self, num_perm): """Set the number of permutations for the LISA computation Args: num_perm (int): the number of permutations e.g. 999, 9999, 999999 """ if num_perm < 1: raise ValueError("The number of permutations is a positive integer number.") return self.gda_lisa.SetNumPermutations(num_perm) def set_threads(self, num_threads): """Set the number of CPU threads for the LISA computation Args: num_threads (int): the number of CPU threads """ if num_threads < 1: raise ValueError("The number of CPU threads has to be a positive integer number.") return self.gda_lisa.SetNumThreads(num_threads) def lisa_values(self, idx): """Get LISA values Get the local spatial autocorrelation values returned from LISA computation. Args: idx (int): The index of input data list Return: tuple: A numeric vector of local spatial autocorrelation """ return self.gda_lisa.GetLISAValues(idx) def lisa_pvalues(self, idx): """Get the local pseudo-p values of significance returned from LISA computation. Args: idx (int): The index of input data list Return: :obj:`list` of float: a list of float values of local pseudo-p values of significance returned from LISA computation """ return self.gda_lisa.GetLocalSignificanceValues(idx) def lisa_clusters(self, idx): """Get the local cluster indicators returned from LISA computation. Args: idx (int): The index of input data list Return: :obj:`list` of float: a list of float values of local cluster indicators returned from LISA computation """ return self.gda_lisa.GetClusterIndicators(idx) def lisa_num_nbrs(self): """Get numbers of neighbors for all observations Get the number of neighbors of every observations in LISA computation. Return: A numeric vector of the number of neighbors """ return self.gda_lisa.GetNumNeighbors() def lisa_labels(self): """Get cluster labels Get the cluster labels of LISA computation. Return: A string vector of cluster labels """ return self.gda_lisa.GetLabels() def lisa_colors(self): """Get cluster colors Get the cluster colors of LISA computation. Return: A string vector of cluster colors """ return self.gda_lisa.GetColors() def lisa_fdr(self, p): '''False Discovery Rate value of local spatial autocorrelation Get False Discovery Rate value based on current LISA computation and current significant p-value Args: p: A value of current siginificant p-value Returns: float: A numeric vector of False Discovery Rate ''' return self.gda_lisa.GetFDR(p) def lisa_bo(self, p): '''Bonferroni bound value Get Bonferroni bound value based on current LISA computation and current significat p-value Args: p: A value of current siginificant p-value Returns: float: A numeric value of Bonferroni bound ''' return self.gda_lisa.GetBO(p)