def biplot(output_dir: str, biplot: skbio.OrdinationResults, sample_metadata: qiime2.Metadata, feature_metadata: qiime2.Metadata = None, ignore_missing_samples: bool = False, invert: bool = False, number_of_features: int = 5) -> None: if invert: biplot.samples, biplot.features = biplot.features, biplot.samples sample_metadata, feature_metadata = feature_metadata, sample_metadata # select the top N most important features based on the vector's magnitude feats = biplot.features.copy() origin = np.zeros_like(feats.columns) feats['importance'] = feats.apply(euclidean, axis=1, args=(origin, )) feats.sort_values('importance', inplace=True, ascending=False) feats.drop(['importance'], inplace=True, axis=1) biplot.features = feats[:number_of_features].copy() generic_plot(output_dir, master=biplot, other_pcoa=None, ignore_missing_samples=ignore_missing_samples, metadata=sample_metadata, feature_metadata=feature_metadata, plot_name='biplot')
def plot(output_dir: str, pcoa: skbio.OrdinationResults, metadata: qiime2.Metadata, custom_axes: str = None, ignore_missing_samples: bool = False, ignore_pcoa_features: bool = False) -> None: if ignore_pcoa_features: pcoa.features = None if pcoa.features is not None: raise ValueError("Arrows cannot be visualized with the 'plot' method, " "use 'biplot' instead, or enable " "`ignore_pcoa_features`.") generic_plot(output_dir, master=pcoa, metadata=metadata, other_pcoa=None, ignore_missing_samples=ignore_missing_samples, custom_axes=custom_axes, plot_name='plot')
def biplot(output_dir: str, biplot: skbio.OrdinationResults, sample_metadata: qiime2.Metadata, feature_metadata: qiime2.Metadata=None, number_of_features: int=5) -> None: # select the top N most important features based on the vector's magnitude feats = biplot.features.copy() origin = np.zeros_like(feats.columns) feats['importance'] = feats.apply(euclidean, axis=1, args=(origin,)) feats.sort_values('importance', inplace=True, ascending=False) feats.drop(['importance'], inplace=True, axis=1) biplot.features = feats[:number_of_features].copy() _generic_plot(output_dir, master=biplot, other_pcoa=None, metadata=sample_metadata, feature_metadata=feature_metadata, plot_name='biplot')
def plot(output_dir: str, tree: NewickFormat, feature_table: pd.DataFrame, sample_metadata: qiime2.Metadata, pcoa: OrdinationResults = None, feature_metadata: qiime2.Metadata = None, ignore_missing_samples: bool = False, filter_missing_features: bool = False, number_of_features: int = 5, filter_unobserved_features_from_phylogeny: bool = True) -> None: if pcoa is not None and pcoa.features is not None: # select the top N most important features based on the vector's # magnitude (coped from q2-emperor) feats = pcoa.features.copy() origin = np.zeros_like(feats.columns) feats['importance'] = feats.apply(euclidean, axis=1, args=(origin, )) feats.sort_values('importance', inplace=True, ascending=False) feats.drop(['importance'], inplace=True, axis=1) pcoa.features = feats[:number_of_features].copy() sample_metadata = sample_metadata.to_dataframe() if feature_metadata is not None: feature_metadata = feature_metadata.to_dataframe() # path to the actual newick file with open(str(tree)) as file: t = parse_newick(file.readline()) trim_tree = filter_unobserved_features_from_phylogeny viz = Empress(tree=t, table=feature_table, sample_metadata=sample_metadata, feature_metadata=feature_metadata, ordination=pcoa, ignore_missing_samples=ignore_missing_samples, filter_missing_features=filter_missing_features, filter_unobserved_features_from_phylogeny=trim_tree) with open(os.path.join(output_dir, 'empress.html'), 'w') as file: file.write(str(viz)) viz.copy_support_files(output_dir) index = os.path.join(TEMPLATES, 'index.html') q2templates.render(index, output_dir)
def community_plot(output_dir: str, tree: NewickFormat, feature_table: biom.Table, sample_metadata: qiime2.Metadata, pcoa: OrdinationResults = None, feature_metadata: qiime2.Metadata = None, ignore_missing_samples: bool = False, filter_extra_samples: bool = False, filter_missing_features: bool = False, number_of_features: int = 5, shear_tree: bool = True) -> None: """Visualizes a tree alongside community-level data. The functionality available in this visualization is a superset of the functionality in tree_plot() -- including sample metadata coloring / barplots, animations, and Emperor integration support. """ if pcoa is not None and pcoa.features is not None: # select the top N most important features based on the vector's # magnitude (coped from q2-emperor) feats = pcoa.features.copy() # in cases where the axes are all zero there might be all-NA # columns feats.fillna(0, inplace=True) origin = np.zeros_like(feats.columns) feats['importance'] = feats.apply(euclidean, axis=1, args=(origin, )) feats.sort_values('importance', inplace=True, ascending=False) feats.drop(['importance'], inplace=True, axis=1) pcoa.features = feats[:number_of_features].copy() sample_metadata = sample_metadata.to_dataframe() if feature_metadata is not None: feature_metadata = feature_metadata.to_dataframe() t = get_bp(tree) viz = Empress(tree=t, table=feature_table, sample_metadata=sample_metadata, feature_metadata=feature_metadata, ordination=pcoa, ignore_missing_samples=ignore_missing_samples, filter_extra_samples=filter_extra_samples, filter_missing_features=filter_missing_features, shear_tree=shear_tree) save_viz(viz, output_dir)