相关文章:
在(一)中,对每个数据(文件)的含义明确后,之后就是对每个文件的内容进行拼接。(本代码以label名的前缀为区分,要求列名开始为XY,行名可任意,只要开始不为XY即可。可根据需要自行修改,在这里为了统一描述,行名用OTU表示,但是实际并未匹配)
(下文的“写入”和“放入”一般指的是list.append() )
定义读取文件函数和保存文件函数:
def readfile(filepath):
with open(filepath, "r") as f:
data = f.readlines()
return data
def savefile(filename,data):
file = open(filename, 'w')
file.writelines(data)
file.close()
readfile读取返回一个列表,列表每个元素表示文件的一行(包括换行符)。
savefile将data列表(同上)写入filename中。
首先跳转工作目录后,设置data1的路径和data2的路径,以及输出文件夹的路径。
os.chdir('E:/circos-0.69-9/test')
data1='data1/'
data2='data2/'
outdata='out/'
1.sementlabel.txt拼接
sementlabel.txt包括两部分:XY和OTU。
因为咱们之前把XY分成两部分,这两部分的XY是不同的,但是行名(OTU)是相同的,所以XY的直接放入,而OTU则需要分别统计data1和data2中的段长,相加后,按照原先格式写入。
例如data1有以下数据:
OTU_1 0 1000 OTU_1
data2相应为:
OTU_1 0 2200 OTU_1
则我们将
OTU_1 0 3200 OTU_1
写入。
在这里为了后边的需要,统计了data1中的每个OTU的段长度,存在字典offset。同时统计data1和data2的OTU的段的长度之和,存放在字典OTU。
OTUline和XYline分别储存以OTU开头的行的修改的结果(如上边所说)和XY的结果。(因为怕拼接后OTU的顺序在XY的后方,导致图像中的label顺序错误,所以对他们单独区别开后,在拼接)
sl1=readfile(data1+'segmentlabel.txt')
sl2=readfile(data2+'segmentlabel.txt')
OTUline=list()
XYline=list()
OTU=d

最低0.47元/天 解锁文章
2574

被折叠的 条评论
为什么被折叠?



