Structure FiguresΒΆ
In [1]:
import sys
import os
from sciviso import *
from scproximite import *
Set-up¶
Load data and create visualisation Dataframe¶
In [3]:
# Define the metrics, k values and evaluation scores to load in:
all_metrics = ['euclidean', 'cityblock', 'correlation', 'spearman', 'cosine', 'braycurtis', 'hamming', 'jaccard',
'kulsinski', 'yule', 'OT', 'phi_s', 'weighted_rank', 'kendall', 'zi_kendall','canberra', 'chebyshev']
eval_metrics=['PSI']
k_vals = ["3K_stats", '10K_stats', "30K_stats", "50K_stats"]
data_dir = '../results/'
In [4]:
F4_datasets = ['Discrete_Abundant','Discrete_Rare','Continuous_Abundant','Continuous_Rare']
datasets = dict.fromkeys(F4_datasets, None)
for dataset in datasets.keys():
datasets[dataset] = load_pickle(dataset, data_dir, mode='mean', metrics= all_metrics,eval_metrics=eval_metrics,k_vals=k_vals)
F4_vis_df = vis_dataframe(datasets=F4_datasets, datasets_dict=datasets, metrics=all_metrics, k_vals=k_vals, eval_metrics=eval_metrics)
In [5]:
SF3_datasets = ['Discrete_Abundant_70%_Simulation','Discrete_ModeratelyRare_70%_Simulation','Continuous_Abundant_70%_Simulation','Continuous_ModeratelyRare_70%_Simulation']
datasets = dict.fromkeys(SF3_datasets, None)
for dataset in datasets.keys():
datasets[dataset] = load_pickle(dataset, data_dir, mode='mean', metrics= all_metrics,eval_metrics=eval_metrics,k_vals=k_vals)
SF3_vis_df = vis_dataframe(datasets=SF3_datasets, datasets_dict=datasets, metrics=all_metrics, k_vals=k_vals, eval_metrics=eval_metrics)
Visualisation Aesthetics¶
In [6]:
#Set directory to save figures to:
figure_dir = ''
plt.rcParams['svg.fonttype'] = 'none'
plt.rcParams['figure.dpi'] = 300
# Set to true if you want to save figures out:
save = False
#Seaborn theme and context:
sns.set_context("notebook")
sns.set_style("darkgrid",{'ytick.left': True,'xtick.bottom': True, 'axes.linewidth':1, 'axes.edgecolor':'black'})
#Colour dictionary for Metrics:
colour_pal = ['#1b9e77', '#d95f02','#7570b3','#e7298a']
Figure 4¶
In [8]:
data = F4_vis_df
hue_order = ['Discrete Abundant', 'Discrete Rare', 'Continuous Abundant','Continuous Rare']
ax = sns.pointplot(data=data, x="Metric", y="Performance", hue="Condition",join=False, order = all_metrics,
hue_order=hue_order, dodge=True, palette=colour_pal,height=2.3,aspect = 1.7, scale = 0.7,errwidth = 1.5, ci="sd")
ax.legend(bbox_to_anchor=(1,1), loc='upper left', borderaxespad=0.5,prop={'size': 14},
markerscale=1,facecolor='white',handletextpad=0, frameon = False,fontsize=12)
ax.set(xlabel='Proximity Metrics', ylabel='Clustering Performance (PSI)')
ax.set_ylim([0, 1.05])
#To generate quantile lines:
desc = data['Performance'].describe()
quantiles = ['25%','50%','75%']
for i in range(len(quantiles)):
ax.axhline(desc[quantiles[i]], color='grey',ls='--')
plt.xticks(rotation=40,ha='right')
if save is True:
plt.savefig(f'{fig_dir}Figure_4.svg', bbox_inches = 'tight')
plt.savefig(f'{fig_dir}Figure_4.png', bbox_inches = 'tight', dpi=300)
Supplementary Figure 3¶
In [9]:
data = SF3_vis_df
hue_order = ['Discrete Abundant', 'Discrete ModeratelyRare', 'Continuous Abundant','Continuous ModeratelyRare']
ax = sns.pointplot(data=data, x="Metric", y="Performance", hue="Condition",join=False, order = all_metrics,
hue_order=hue_order, dodge=True, palette=colour_pal,height=2.3,aspect = 1.7, scale = 0.7,errwidth = 1.5, ci="sd")
ax.legend(bbox_to_anchor=(1,1), loc='upper left', borderaxespad=0.5,prop={'size': 14},
markerscale=1,facecolor='white',handletextpad=0, frameon = False,fontsize=12)
ax.set(xlabel='Proximity Metrics', ylabel='Clustering Performance (PSI)')
ax.set_ylim([0, 1.05])
#To generate quantile lines:
desc = data['Performance'].describe()
quantiles = ['25%','50%','75%']
for i in range(len(quantiles)):
ax.axhline(desc[quantiles[i]], color='grey',ls='--')
plt.xticks(rotation=40, ha='right')
if save is True:
plt.savefig(f'{fig_dir}Figure_Sup3.svg', bbox_inches = 'tight')
plt.savefig(f'{fig_dir}Figure_Sup3.png', bbox_inches = 'tight', dpi=300)
In [ ]: