我正在尝试制作一些.bed文件进行遗传分析。我是python初学者。我要制作的文件应为3列,用制表符分隔,第一列始终相同(染色体数),第二和第三列窗口的大小为200,从零开始,在染色体末尾结束。例如:

chr20 0 200
chr20 200 400
chr20 400 600
chr20 600 800
...


我有染色体的大小,所以现在我要说的是'第2列
output = open('/homw/genotyping/wholegenome/Chr20.bed', 'rw')

column2 = 0
column1 = 0
while column2 < 55268282:
    for line in output:
        column1 = column1 + 0
        column2 = column2 + 100

        print output >> "chr20" + '\t' + str(column1) + '\t' + str(column2)


如果任何人都可以修复此简单脚本,使其能够按照我的描述进行操作,或者编写一个更好的解决方案,将不胜感激。我考虑制作一个脚本,该脚本可以输出20条染色体和chrX的所有文件,但是由于我需要指定染色体的大小,我认为必须分别处理每个文件。

提前致谢!

最佳答案

这个怎么样:

step = 200 # change values by this amount
with open('Chr20.bed', 'w') as outfp:
   for val in range(0, 1000, step):  #increment by step, max value 1000
      outfp.write('{0}\t{1:d}\t{2:d}\n'.format('chr20', val, val+step))


根据要求提供制表符分隔的输出

chr20   0   200
chr20   200 400
chr20   400 600
chr20   600 800
chr20   800 1000


注意:完成操作或遇到异常时,使用with将自动为您关闭文件。

如果您感到好奇,这将提供有关.format()函数的更多信息。

关于python - 使用Python脚本制作带有染色体信息的基本文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10968077/

10-13 00:02