SCZ - Use DEG to get cohort-specific and disease relatated ceRNA axis from SCZ data
Use differential expressed (DE) miRNA/mRNA to get cohort-specific and disease relatated ceRNA axis from SCZ data
%load_ext autoreload
# Just download the github, and load the cernaxis into python path
# do
import sys
sys.path.append('../../')
# or install cernaxis by pip
#!pip install git+https://github.com/compbioclub/cernaxis.git@v1_as
from cernaxis.cernaxis import ceRNAxis
# initialize cernaxis object
cernaxis = ceRNAxis()
%autoreload
# Use DE miRNA/mRNA to get the ceRNA_axis
import pandas as pd
# use DE miRNA list as the strict criteria
deg_strict_df = pd.read_csv('../../demo/SCZ_DEG_RNA.csv', index_col=0)
print('deg_strict_df\n', deg_strict_df.head())
# use DE mRNA list as the loose criteria
deg_loose_df = pd.read_csv('../../demo/SCZ_DEG_mRNA.csv', index_col=0)
print('deg_loose_df\n', deg_loose_df.head())
# Use strict DE miRNA to get the ceRNA_axis
ceRNA_df, axis_df = cernaxis.find_ceRNA_axis_by_DEG(deg_strict_df)
# store the filtered ceRNA network and ceRNA axis
ceRNA_df.to_csv('../../demo_out/SCZ_ceRNA_network.csv')
axis_df.to_csv('../../demo_out/SCZ_ceRNA_axis.csv')
ceRNA_df
# Use strict DE miRNA and loose DE mRNA to get the final ceRNA_axis
loose_axis_df = cernaxis.expand_ceRNA_axis_by_loose_DEG(deg_strict_df, deg_loose_df)
# store the final ceRNA axis
loose_axis_df.to_csv('../../demo_out/SCZ_ceRNA_loose_axis.csv')
# output the final ceRNA axis
loose_axis_df
Compared with DLRAPom detected ceRNA axes
import pandas as pd
from plotnine import *
import matplotlib.pyplot as plt
df1 = pd.read_csv('../../demo_out/SCZ_DLRAPom_miRNA_mRNA.csv', index_col=0)[['mirnaid', 'genesymbol']].drop_duplicates()
df1.columns = ['miRNA', 'ceRNA']
df1['type'] = 'miRNA-mRNA'
df2 = pd.read_csv('../../demo_out/SCZ_DLRAPom_miRNA_lncRNA.csv', index_col=0)[['miRNAname', 'geneName']].drop_duplicates()
df2.columns = ['miRNA', 'ceRNA']
df2['type'] = 'miRNA-lncRNA'
df = pd.concat([df1, df2])
df['Tool'] = 'DLRAPom'
df3 = axis_df[['miRNA', 'ceRNA', 'type']].drop_duplicates()
df3['Tool'] = 'ceRNAxis'
df = pd.concat([df, df3])
df
summary = (
df
.drop_duplicates(['miRNA','ceRNA','type','Tool'])
.groupby('Tool')
.size()
.reset_index(name='# of interactions')
)
tools = summary['Tool'].tolist()
sets = {
tool: set(df[df.Tool==tool].apply(lambda r: f"{r.miRNA}|{r.ceRNA}", axis=1))
for tool in tools
}
label_I = "\n".join(sorted(sets['DLRAPom'] & sets['ceRNAxis']))
print('Interactions detected by both tools:', label_I)
from matplotlib_venn import venn2
A, B = tools
fig = plt.figure(figsize=(5,5))
v = venn2([sets[A], sets[B]], set_labels=[A, B])
plt.title('Detected ceRNA interactions in SCZ data')
plt.show()
fig.savefig('../../demo_out/SCZ_venn.pdf', format='pdf')