lncRNA,miRNA,mRNA互作

通過(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容