通過(guò)lncRNA獲得結(jié)合的miRNA(3個(gè)miRNA預(yù)測(cè)數(shù)據(jù)庫(kù)中都存在),再獲得miRNA作用的靶基因mRNA,靶基因mRNA與任一腫瘤差異mRNA取交集,交集mRNA與其相關(guān)miRNA,lncRNA作互作圖,并將交集mRNA作GO和KEGG富集分析。
通過(guò)lncRNA獲得結(jié)合的miRNA
1.lncRNA與miRNA的區(qū)別
2.mircode數(shù)據(jù)庫(kù)
3.這可能是最輕松易懂的lncRNA與miRNA介紹了
4.LncRNA與miRNA結(jié)合預(yù)測(cè)
進(jìn)入主頁(yè)點(diǎn)擊download

mircode數(shù)據(jù)庫(kù)主頁(yè).png

下載miRNA數(shù)據(jù).png
解壓修改文件名為mircode.txt

mircode.txt.png
將差異分析后的lncRNA復(fù)制粘貼到新建diff_lncRNA.txt文件中

差異分析后的lncRNA.png

diff_lncRNA.txt.png
輸入文件為:

輸入準(zhǔn)備文件.png
perl代碼:
use strict;
use warnings;
my %hash=();
open(RF,"diff_lncRNA.txt") or die $!;
while(my $line=<RF>){
chomp($line);
$hash{$line}=1;
}
close(RF);
my %rep=();
open(RF,"mircode.txt") or die $!;
open(WF,">lncRNA_mircode.txt") or die $!;
while(my $line=<RF>){
if($.==1){
print WF "lncRNA\tmiRNA\n";
next;
}
my @arr=split(/\t/,$line);
my @oneArr=split(/\./,$arr[1]);
if(exists $hash{$oneArr[0]}){
my @threeArr=split(/\//,$arr[3]);
foreach my $mir(@threeArr){
if($mir=~/^miR/){
$mir="hsa-$mir";
}
else{
$mir="hsa-miR-$mir";
}
my $out="$oneArr[0]\t$mir";
unless(exists $rep{$out}){
print WF "$out\n";
$rep{$out}=1;
}
}
}
}
close(WF);
close(RF);
輸出文件為

輸出文件.png
獲取在三個(gè)數(shù)據(jù)庫(kù)共有的miRNA及其結(jié)合的mRNA

輸入文件.png
use strict;
use warnings;
my %miHash=();
open(RF,"lncRNA_mircode.txt") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$arr[1]=~s/^\s+|\s+$//g;
if($arr[1]=~/hsa/){
$miHash{$arr[1]}=1;
}
else{
$miHash{"hsa-$arr[1]"}=1;
}
}
close(RF);
my %hash=();
my @files=glob("*.tsv");
my @dbs=();
foreach my $file(@files){
my $db=$file;
$db=~s/\.tsv//g;
push(@dbs,$db);
open(RF,"$file") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$arr[0]=~s/mir/miR/g;
if(exists $miHash{$arr[0]}){
my $mirnaGene="$arr[0]\t$arr[1]";
${$hash{$mirnaGene}}{$db}=1;
}
}
close(RF);
}
open(WF,">target.txt") or die $!;
print WF "miRNA\tGene\t" . join("\t",@dbs) . "\tSum\n";
foreach my $key(keys %hash){
my $outLine=$key;
my $sum=0;
foreach my $db(@dbs){
if(exists ${$hash{$key}}{$db}){
$sum++;
$outLine=$outLine . "\t1";
}
else{
$outLine=$outLine . "\t0";
}
}
if($sum>=3){
print WF $outLine . "\t$sum\n";
}
}
close(WF);
輸出文件為:

target.txt.png
Cytoscape輸入文件準(zhǔn)備
將之前作差異分析后得到的mRNA和logFC復(fù)制粘貼到新建gene.txt文件中

gene.txt.png
輸入文件為:

輸入文件.png
perl代碼如下:
use strict;
use warnings;
my %geneHash=();
open (RF,"gene.txt") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$geneHash{$arr[0]}=$arr[1];
}
close(RF);
my %miHash=();
open (RF,"target.txt") or die $!;
while(my $line=<RF>){
next if($.==1);
chomp($line);
my @arr=split(/\t/,$line);
if(exists $geneHash{$arr[1]}){
$miHash{$arr[0]}=1;
}
}
close(RF);
my %miHash2=();
my %repHash=();
open(NET,">network.txt") or die $!;
print NET "Node1\tNode2\tLine\n";
open(TYPE,">type.txt") or die $!;
print TYPE "Name\tType\n";
open(MRNA,">mRNA.txt") or die $!;
open(LNC,">lncRNA.txt") or die $!;
open(MI,">miRNA.txt") or die $!;
open (SYMBOL,">symbol.txt") or die $!;
print SYMBOL "gene\tlogFC\n";
open (RF,"lncRNA_mircode.txt") or die $!;
while(my $line=<RF>){
next if($.==1);
chomp($line);
my @arr=split(/\t/,$line);
if(exists $miHash{$arr[1]}){
print NET "$arr[0]\t$arr[1]\tlncRNA\n";
unless($repHash{$arr[0]}){
print TYPE "$arr[0]\tlncRNA\n";
$repHash{$arr[0]}=1;
print LNC "$arr[0]\n";
}
$miHash2{$arr[1]}=1;
}
}
close(RF);
open (RF,"target.txt") or die $!;
while(my $line=<RF>){
next if($.==1);
chomp($line);
my @arr=split(/\t/,$line);
if( (exists $geneHash{$arr[1]}) && (exists $miHash2{$arr[0]}) ){
print NET "$arr[0]\t$arr[1]\tmRNA\n";
unless($repHash{$arr[0]}){
print TYPE "$arr[0]\tmiRNA\n";
$repHash{$arr[0]}=1;
print MI "$arr[0]\n";
}
unless($repHash{$arr[1]}){
print TYPE "$arr[1]\tmRNA\n";
$repHash{$arr[1]}=1;
print MRNA "$arr[1]\n";
print SYMBOL "$arr[1]\t$geneHash{$arr[1]}\n";
}
}
}
close(SYMBOL);
close(RF);
close(MRNA);
close(LNC);
close(MI);
close(NET);
close(TYPE);

輸出文件.png

lncRNA.txt.png

miRNA.txt.png

mRNA.txt.png

network.txt.png

symbol.txt.png

type.txt.png
ceRNA網(wǎng)絡(luò)構(gòu)建
下載Java jre版本,下載Cytoscape軟件,兩軟件下載在同一文件夾下
導(dǎo)入network.txt

步驟1.png

步驟2.png

步驟3.png
導(dǎo)入type.txt

步驟1.png

步驟2.png

直接點(diǎn)OK.png
根據(jù)喜好選擇顏色,形狀等

參數(shù)調(diào)節(jié).png

根據(jù)類型選擇顏色.png

根據(jù)類型選擇形狀.png

選擇lncRNA.png

點(diǎn)擊打開(kāi).png

根據(jù)名字形成圓圈.png
鼠標(biāo)在空白處點(diǎn)一下,進(jìn)行重復(fù)操作

邊參數(shù)設(shè)置.png
導(dǎo)出圖片

導(dǎo)出方式.png

zoom拉到最大.png
基因名字轉(zhuǎn)換為基因id

輸入文件symbol.txt.png
setwd("E:\\research")
library("org.Hs.eg.db")
rt=read.table("symbol.txt",sep="\t",check.names=F,header=T)
genes=as.vector(rt[,1])
entrezIDs <- mget(genes, org.Hs.egSYMBOL2EG, ifnotfound=NA)
entrezIDs <- as.character(entrezIDs)
out=cbind(rt,entrezID=entrezIDs)
write.table(out,file="id.txt",sep="\t",quote=F,row.names=F)

輸出文件id.txt.png
GO富集分析

輸入文件id.txt.png
setwd("E:\\research")
library("clusterProfiler")
library("org.Hs.eg.db")
rt=read.table("id.txt",sep="\t",header=T,check.names=F)
rt=rt[is.na(rt[,"entrezID"])==F,]
geneFC=rt$logFC
gene=rt$entrezID
names(geneFC)=gene
#GO富集分析
kk <- enrichGO(gene = gene,OrgDb = org.Hs.eg.db, pvalueCutoff =0.05, qvalueCutoff = 0.05) #若篩選出的結(jié)果太少,可將qvalueCutoff = 0.05調(diào)為1
write.table(kk,file="GO.txt",sep="\t",quote=F,row.names = F)
#柱狀圖
tiff(file="barplot.tiff",width = 35,height = 20,units ="cm",compression="lzw",bg="white",res=600 #調(diào)節(jié)分辨率)
barplot(kk, drop = TRUE, showCategory = 100 #顯示前100個(gè)通路)
dev.off()
#點(diǎn)圖
tiff(file="dotplot.tiff",width = 35,height = 20,units ="cm",compression="lzw",bg="white",res=600)
dotplot(kk,showCategory = 100)
dev.off()

輸出文件GO.txt.png
將id轉(zhuǎn)換回基因名,使可讀性更好,輸入文件GO.txt
perl代碼
use strict;
use warnings;
my %hash=();
open(RF,"id.txt") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$hash{$arr[$#arr]}="$arr[0]";
}
close(RF);
open(KEGG,"GO.txt") or die $!;
open(WF,">GO.xls") or die $!;
while(my $line=<KEGG>){
if($.==1){
print WF $line;
next;
}
chomp($line);
my @arr=split(/\t/,$line);
my @idArr=split(/\//,$arr[$#arr-1]);
my @symbols=();
foreach my $id(@idArr){
if(exists $hash{$id}){
push(@symbols,$hash{$id});
}
}
$arr[$#arr-1]=join("/",@symbols);
print WF join("\t",@arr) . "\n";
}
close(WF);
close(KEGG);

輸出文件GO.xls.png
KEGG富集分析

輸入文件id.txt.png
setwd("C:\\Users")
library("clusterProfiler")
rt=read.table("id.txt",sep="\t",header=T,check.names=F)
rt=rt[is.na(rt[,"entrezID"])==F,]
geneFC=rt$logFC
gene=rt$entrezID
names(geneFC)=gene
#kegg富集分析,定義物種類型人就是hsa
kk <- enrichKEGG(gene = gene, organism = "hsa" , pvalueCutoff =0.05, qvalueCutoff =0.05)
write.table(kk,file="KEGG.txt",sep="\t",quote=F,row.names = F)
#柱狀圖
tiff(file="barplot.tiff",width = 30,height = 20,units ="cm",compression="lzw",bg="white",res=600)
barplot(kk, drop = TRUE, showCategory = 100)
dev.off()
#點(diǎn)圖
tiff(file="dotplot.tiff",width = 30,height = 20,units ="cm",compression="lzw",bg="white",res=600)
dotplot(kk, showCategory = 100)
dev.off()
#通路圖
library("pathview")
keggxls=read.table("KEGG.txt",sep="\t",header=T)
#gene.data = geneFC基因顏色定義
for(i in keggxls$ID){
pv.out <- pathview(gene.data = geneFC, pathway.id = i, species = "hsa", out.suffix = "pathview")
}

輸出文件KEGG.txt.png
將id轉(zhuǎn)換回基因名,使可讀性更好,輸入文件KEGG.txt
perl代碼
use strict;
use warnings;
my %hash=();
open(RF,"id.txt") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$hash{$arr[$#arr]}="$arr[0]";
}
close(RF);
open(KEGG,"KEGG.txt") or die $!;
open(WF,">KEGG.xls") or die $!;
while(my $line=<KEGG>){
if($.==1){
print WF $line;
next;
}
chomp($line);
my @arr=split(/\t/,$line);
my @idArr=split(/\//,$arr[$#arr-1]);
my @symbols=();
foreach my $id(@idArr){
if(exists $hash{$id}){
push(@symbols,$hash{$id});
}
}
$arr[$#arr-1]=join("/",@symbols);
print WF join("\t",@arr) . "\n";
}
close(WF);
close(KEGG);

KEGG.xls.png