我在控制台中打印并保存到文件中获得的值是不同的。当我在控制台中打印时,我会在后续行中获得1和0,具体取决于getchromosome()
是否为真。
但是,当我尝试将此输出打印到Excel工作表时,我会在他们自己的单元格中连续获得500 0。 500限制似乎是由于for i in xrange(500)
行,但我不知道要替换它。
问题:
我应该将for i in xrange(500)
行替换为允许程序将尽可能多的数据放入电子表格中?
为什么此代码在电子表格中仅打印0,但是1和0都取决于控制台中getchromosome()
是否为真?
非常感谢
编辑: 电子表格结构
CHR位置参考变异
chr22 44357025 C G
chr22 44357025 C G
chr22 44381361 G A
电子表格中的位置编号用于查找人类染色体文件中的字符,在本例中为chr22,已作为seq加载。这个文件是满是字符A,C,T和G的行。如果满足getchromosome()中的条件,我希望在文件中打印1,如果不打印,则打印0(打开)当然,这条染色体的数据集大约是1500)。
import xlwt
from openpyxl import load_workbook
def getlocation():
CHR = 'chr22'
rownum = 1
cellrefA = "A%s" %rownum
cellrefB = "B%s" %rownum
cellrefD = "D%s" %rownum
while CHR == 'chr22':
rownum = rownum + 1
cellrefA = "A%s" %rownum
cellrefB = "B%s" %rownum
cellrefD = "D%s" %rownum
if sheet [cellrefA].value == "chr22" :
x = sheet[cellrefB].value
D = sheet[cellrefD].value
CpGval=getchromosome(x,D)
print CpGval
if CHR == "chr22":
f = open('out.xls', 'w')
for i in xrange(500):
f.write("%s\n" %CpGval)
if rownum == 108172:
CHR = 'stop'
def getchromosome(x,D):
CpGnum = 0
dnastring1 = seq[x-1]
dnastring2 = seq[x]
dnastring3 = seq[x+1]
if dnastring2 == "C" and D != "C":
if dnastring3 == "G":
CpGnum += 1
if dnastring2 == "G" and D != "G":
if dnastring1 == "C":
CpGnum += 1
return CpGnum
print getlocation()