糖基因的分类:
- 糖甘水解酶 glycosidehydrolases
- 糖基转移酶 glycosyltransferases
- 多糖裂解酶 polysaccharidelyases
- 糖脂酶( carbohydrate esterases)
- 磺基转移酶
目前储存糖基因的数据库:
- CAZy (carbohydrate-active enzymes database) www.cazy.org
- GGDB (glycogene database) www.glycome-db.org
- KEGG glycan www.genome.jp/kegg/glycan
我从CAZy中提取想要的糖甘水解酶和糖基转移酶的全部基因
CAZy:提供了酶分子序列的家族信息,物种来源,基因序列,蛋白序列,三维结构,EC分类,相关数据库链接……
1.选基因组数据库
2.将物种选人
3 此时的网页:
http://www.cazy.org/e358.html
心中窃喜,html就是表格形式,可以爬取了。
- 打开R
library(XML)
url<- "http://www.cazy.org/e358.html"
df1 <- readHTMLTable(url,header=T,stringAsFactors=F)
raw_data<-as.data.frame(df1[[5]])
colnames(raw_data)<-as.character(t(raw_data)[,1])
raw_data<-raw_data[-c(1,2),]
上图就是我们爬取的数据,我发现,family中以GT开头的是糖基转移酶,以GH开头的是糖基水解酶,于是我分别把它们提取出来
library(tidyr)
library(dplyr)
GT<-raw_data[grepl("GT",raw_data$Family),]
GH<-raw_data[grepl("GH",raw_data$Family),]
GT[,1]<-as.character(GT[,1])
GH[,1]<-as.character(GH[,1])
protein name字段中,括号内的才是我需要的基因名,怎么把它清洗出来呢?
gene_1<-sapply(GT[,1],function(i){
if(grepl("[(]",i)==FALSE){return(i)}
else{strsplit(i,"[//()]")[[1]][2]}
})
gene_1<-as.data.frame(gene_1)
gene_2<-sapply(as.character(gene_1[,1]),function(i){
if(grepl("[;]",i)==FALSE){return(i)}
else{strsplit(as.character(i),";")[[1]]}
})
gene_2<-as.data.frame(unlist(gene_2))
m<-a
for(i in 1:length(gene_2)){m<-c(m,length(gene_2[[i]]))}
k<-max(m)
n<-c(gene_2[[1]],rep(NA,times=(k-length(gene_2[[1]]))))
for(i in 2:length(gene_2)){
n<-rbind(n,c(gene_2[[i]],rep(NA,times=(k-length(gene_2[[i]])))))}
GT_1<-cbind(GT,n)
每次看自己的代码都觉得不满意,太啰嗦。要走的路还有很长,加油吧。