在使用cellphoneDB和italk進(jìn)行細(xì)胞通訊分析時(shí),發(fā)現(xiàn)小鼠的結(jié)果很少或奇奇怪怪银酬。查了下網(wǎng)上大家的一些解決辦法,發(fā)現(xiàn)將小鼠的基因轉(zhuǎn)成人的同源基因即可做。
這篇文章主要是使用biomart包的數(shù)據(jù)來(lái)進(jìn)行轉(zhuǎn)換的蜓洪。通過(guò)下載兩兩物種的ID對(duì)應(yīng)關(guān)系,然后寫(xiě)個(gè)代碼替換就可以了坯苹。
1隆檀、首先打開(kāi)下載頁(yè)面
http://asia.ensembl.org/biomart/martview/b9f8cc0248e4714ba8e0484f0cbe4f02
2、選擇對(duì)應(yīng)基因組
3粹湃、選擇屬性
4恐仑、選擇對(duì)應(yīng)orthologs的物種(根據(jù)首字母)
5、最后下載
保存為
mouse_human.txt
为鳄,并修改文件header為human_id human_gene_name mouse_gene_name mouse_id
轉(zhuǎn)換的代碼:(輸入的文件第一列是小鼠的gene symbol裳仆,大家根據(jù)自己的數(shù)據(jù)情況改代碼~)
#!/usr/bin/python
# -*-coding:utf8 -*-
__author__ = 'myshu'
import sys
import os
import re
import argparse
sys.path.append(os.path.dirname(os.path.abspath(sys.argv[0])))
def rename_gene(ref, input_file, output_file):
'''
小鼠的基因name轉(zhuǎn)成人的ortholog基因
@param ref: 小鼠-人的ortholog基因?qū)?yīng)表
@param input_file: 輸入文件,第一列為小鼠gene_name
@param output_file: 輸出替換后的文件
@return:
'''
ref_file = os.path.abspath(ref)
input_file = os.path.abspath(input_file)
output_file = os.path.abspath(output_file)
ref = {}
for line in open(ref_file, "r"):
# human_id human_gene_name mouse_gene_name mouse_id
line = line.strip()
line = line.split("\t")
gene_syb = line[2]
gene_id = line[1]
ref[gene_syb] = gene_id
fh = open(output_file, "w")
num = 0
for line0 in open(input_file, "r"):
line = line0.strip()
line = line.split("\t")
# line.pop(0)
if line0.startswith("\t") or line0.startswith("#"):
fh.write(line0)
fh.flush()
continue
result_id = line[0]
if result_id in ref.keys():
line.pop(0)
fh.write(ref[result_id] + "\t" + "\t".join(line) + "\n")
fh.flush()
num += 1
fh.close()
if num == 0:
print("all genes is pass!!!!!!!!!!!!!!!!!!!!!")
# exit(1)
if (__name__ == "__main__"):
parser = argparse.ArgumentParser(description=' rename mouse gene name to human orthologs gene name')
parser.add_argument('--ref', '-r', required=False, help='biomart sub-database', default=f"mouse_human.txt")
parser.add_argument('--input_file', '-i', required=True, help='sample.exp.txt')
parser.add_argument('--output_file', '-p', required=True, help='"sample.exp.txt_new')
args = parser.parse_args()
rename_gene(**vars(args))
在R代碼里面替換代碼:
if (species == "Mus_musculus"){
# 小鼠需要轉(zhuǎn)ortholog基因
ref_ortholog <- read.table("mouse_human.txt", header=T,sep="\t")
# 篩選有的mouse基因名稱
b <- ref_ortholog[ref_ortholog$mouse_gene_name %in% colnames(iTalk_data),"mouse_gene_name"]
data <- data[,b]
# 替換為人的ortholog基因
colnames(data) <- ref_ortholog[ref_ortholog$mouse_gene_name %in% colnames(data),"human_gene_name"]
}
如有任何建議歡迎評(píng)論~~
參考鏈接: