Structure FiguresΒΆ

Structure_Figures(4, S3)_Script
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 [ ]: