def beta_wrapper(df, var_key): print "\n", var_key brayDist = ep.distance(df, method='bray') groups = list(df[var_key]) rand_groups = list(np.random.choice(np.unique(groups), size=np.array(groups).shape)) ep.beta_dispersion(brayDist, groups, test='anova', center='median', scores=False) ep.beta_dispersion(brayDist, rand_groups, test='anova', center='median', scores=False) return brayDist
# Leitura da matriz de dados de abundância matriz = pd.read_csv("especies.csv", header=0, index_col=0, encoding="utf8") # Transposição da matriz de dados matriz = matriz.transpose() # Transformação logarítmica matriz_log = matriz.apply(lambda x: np.log10(x + 1)) # Logaritmos decimais # Cálculo do coeficiente de Jaccard mediante a função distance() # do pacote "ecopy". Outras opções de coeficientes binários são: # "kulczynski" e "sorensen". É necessário transformar a matriz # de abundância para presença/ausência matriz_bin = ep.transform(matriz, method="pa") simil = ep.distance(matriz_bin, method="jaccard") # Cálculo da distância de Bray-Curtis mediante a função distance() # do pacote "ecopy". Outras opções de coeficientes de distância são: # "euclidean", "manhattan" e "canberra" dist = ep.distance(matriz_log, method="bray") ochiai = ep.distance(matriz_bin, method="ochiai") # A matriz de correlação é calculada por meio # da função corr() do pacote "pandas" matriz_log = matriz_log.transpose() corr = np.asarray(matriz_log.corr(method="pearson")) labels = list(matriz.index) row_col = len(labels) for j in range(row_col):
from adjustText import adjust_text to_print = True # Leitura da matriz de dados de abundância matriz = pd.read_csv("especies.csv", header=0, index_col=0, encoding="utf8") # Transposição da matriz de dados matriz = matriz.transpose() # Transformação logarítmica matriz_log = matriz.apply(lambda x: np.log10(x + 1)) # Logaritmos decimais # Cálculo da distância de Bray-Curtis entre as amostras # utilizando a função distance() do pacote EcoPy dist = ep.distance(matriz_log, "bray") # Escalonamento multidimensional não-métrico fit = ep.MDS(dist, siteNames=matriz.index) # Saída dos resultados print("Stress = " + str(round(fit.stress, 5))) # Diagrama de dispersão fig, ax = plt.subplots() x = list(fit.scores[:, 0]) y = list(fit.scores[:, 1]) if to_print: plt.scatter(x, y, color="black") else: plt.scatter(x, y, color="blue")
import matplotlib.pyplot as plt to_print = True # Leitura da matriz de dados de abundância matriz = pd.read_csv("especies.csv", header=0, index_col=0, encoding="utf8") # Transposição da matriz de dados matriz = matriz.transpose() # Transformação logarítmica matriz_log = matriz.apply(lambda x: np.log10(x + 1)) # Logaritmos decimais # Cálculo da distância de Bray-Curtis entre as amostras # por meio da função distance() do pacote "ecopy" dist = ep.distance(matriz_log, method="bray") # Análise de agrupamentos, cálculo da correlação cofenética e construção do dendrogama # mediante a função linkage() do pacote SciPy # Ligação simples if to_print: set_link_color_palette(['k', 'k', 'k', 'k', 'k']) col = 'k' else: set_link_color_palette(['b', 'b', 'b', 'b', 'b']) col = 'b' hc = linkage(dist, method="single") dc = cophenet(hc, squareform(dist))[0] dendrogram(hc, labels=list(matriz.index),
#Leitura das variáveis ambientais variaveis = pd.read_csv("variaveis.csv", header=0, index_col=0, encoding="utf8") # Conversão das variáveis categóricas # para fatores numéricos variaveis["DLU"] = variaveis.DLU.astype('category') variaveis["Exot"] = variaveis.Exot.astype('category') factors = variaveis.select_dtypes(['category']).columns variaveis[factors] = variaveis[factors].apply(lambda x: x.cat.codes) # Estandardização das variáveis e cálculo das matrizes de distância variaveis = variaveis.apply(lambda x: (x - x.mean()) / x.std(), axis=0) dist1 = ep.distance(matriz, method="bray") dist2 = ep.distance(variaveis, method="euclidean") # Teste de Mantel # por meio da função Mantel() do pacote "ecopy" test = ep.Mantel(dist1, dist2, test="pearson", nperm=9999) # Saída dos resultados print(test.summary()) # Diagrama de dispersão fig, ax = plt.subplots() if to_print: plt.scatter(dist1, dist2, color="black") else: plt.scatter(dist1, dist2)
print "\n Input Equivalence detected" if os.path.exists(jsd_dist_path): print "Loading Jensen Shannon Distance matrix" jsd_mat = pd.read_csv(jsd_dist_path, index_col=0) else: print "Calculating sqrt of Jensen Shannon Divergence of all rows" jsd_mat = JensenShannonDiv_Sqrt(shared_otus) jsd_mat.to_csv(jsd_dist_path) print "Saving distance matrix and shared otu matrix" if os.path.exists(bc_dist_path): print "Loading Bray-Curtis Distances" brayDF = pd.read_csv(bc_dist_path, index_col=0) else: print "Calculating sqrt of Jensen Shannon Divergence of all rows" brayDist = ep.distance(shared_otus, method='bray') brayDF = pd.DataFrame(data=brayDist, index=shared_otus.index, columns=shared_otus.index) brayDF.to_csv(bc_dist_path) print "Saving distance matrix and shared otu matrix" del loaded_otu else: print "\n Previous calculations derived from distinct OTU table" print "Calculating sqrt of Jensen Shannon Divergence of all rows" jsd_mat = JensenShannonDiv_Sqrt(shared_otus) print "Caclulating Bray Curtis Distance of all rows" brayDist = ep.distance(shared_otus, method='bray') brayDF = pd.DataFrame(data=brayDist, index=shared_otus.index, columns=shared_otus.index)