本文主要包含数据预处理的手段,数据预处理,数据预处理方法,数据预处理步骤,modis数据预处理等服务器相关知识,网友希望可以进行参考
数据预处理-PDB文件,数据预处理-pdb
以下代码为个人原创,python实现,是处理PDB文件的部分常用代码,仅供参考!
1.下载PDB文件
下面是一个下载PDB文件的函数,传入的参数是一个写有pdb名字的namefile文件,函数的核心部分是三个系统命令,先通过wget下载,然后解压,最后替换名字。
def downloadpdb(namefile):
inputfile = open(namefile, 'r')
for eachline in inputfile:
pdbname = eachline.lower().strip()
os.system("wget http://ftp.wwpdb.org/pub/pdb/data/structures/all/pdb/pdb" + pdbname + ".ent.gz")
os.system("gzip -d pdb" + pdbname + '.ent.gz')
os.system("mv pdb" + pdbname + ".ent " + pdbname.upper() + '.pdb')
测试用例
os.chdir('/ifs/home/liudiwei/datasets/RPdatas')
downloadpdb('protein.name')
2.PDB转DSSP
将下载的PDB文件转成DSSP文件
# 处理一行dssp数据
def formatdsspline(dsspline):
eachline = dsspline
col = '\t' + eachline[0:5]
col += '\t' + eachline[5:10]
col += '\t' + eachline[10:12]
col += '\t' + eachline[12:15]
col += '\t' + eachline[15:25]
col += '\t' + eachline[25:39]
col += '\t' + eachline[29:34]
col += '\t' + eachline[34:38]
col += '\t' + eachline[38:50]
col += '\t' + eachline[50:61]
col += '\t' + eachline[61:72]
col += '\t' + eachline[72:83]
col += '\t' + eachline[83:92]
col += '\t' + eachline[92:97]
col += '\t' + eachline[97:103]
col += '\t' + eachline[103:109]
col += '\t' + eachline[109:115]
col += '\t' + eachline[115:122]
col += '\t' + eachline[122:129]
col += '\t' + eachline[129:136]
return col
PDB转DSSP格式,需要DSSP软件
参数:
pdbdir: pdb文件目录
dsspdir: 生成的dssp文件目录(需创建)
def pdbToDSSP(pdbnamefile,pdbdir, dsspdir):
pdbfiles = os.listdir(pdbdir)
#对于每个pdb文件,生成对应的dssp文件,并保存在dssp目录下
for pdb_file in pdbfiles:
pdb_name = pdb_file.split('.')[0].upper()
command = 'DSSPCMBI.EXE -x ' + pdbdir +'/'+ pdb_file + ' '+ dsspdir +"/"+ pdb_name +'.dssp'
os.system(command)
dsspfiles = os.listdir(dsspdir)
if os.path.exists(dsspdir + "/DSSP"): #判断DSSP文件是否存在,存在则删除
dsspfiles.remove("DSSP")
output=open(dsspdir + '/DSSP','w')
#循环读取dssp文件,将其合并成一个整的DSSP
with open(pdbnamefile, 'r') as namefile:
for eachline in namefile:
pdb_name = eachline.strip()
dssp_file = pdb_name + '.dssp'
#for dssp_file in dsspfiles:
#pdb_name = dssp_file.split('.')[0]
with open(dsspdir + '/' + dssp_file,"r") as f:
if not os.path.isdir(dsspdir + '/format'):
os.mkdir(dsspdir + '/format')
with open(dsspdir + '/format/' + pdb_name + '.dssp.format','w') as singleOut:
count = 0; preRes=[]
sets = set('');content=''
for eachline in f.readlines():
list1=[];oneline=[]
count+=1
list1.append(pdb_name)
if count >= 29:
eachline = formatdsspline(eachline)
oneline = e

