【发布时间】:2015-10-21 21:44:51
【问题描述】:
在与 python 中断太久之后,我又回到了 python,现在我正在努力做一个简单的任务,将文件 A 中的数字与文件 B 中的所有数字进行比较,循环文件 A 以执行每个数字每一行。编号是文件 A 在第 2 列中(由 \t 分割),并且要返回的这些数字必须大于 exonStart(文件 B 的第 4 列)并且小于 exonStop(文件 B 的第 5 列)。最终我想将这些行(附加到行的文件 A 的完整行是与该参数匹配的文件 B)写入一个新文件。
fileA (trimmed for relevant info and truncated):
1 10678 12641
1 14810 14929
1 14870 14969
fileB (trimmed for relevant info and truncated):
1 processed_transcript exon 10000 12000 2
1 processed_transcript exon 10500 12000 2
1 processed_transcript exon 12613 12721 3
1 processed_transcript exon 14821 14899 4
我的代码尝试更详细地解释代码。
f = open('fileA')
f2 =open('fileB')
for line in f:
splitLine= line.split("\t")
ReadStart= int(splitLine[1])
print ReadStart
for line2 in f2:
splitLine2=line2.split("\t")
ExonStart = int(splitLine2[3])
ExonStop = int(splitLine2[4])
if ReadStart < ExonStop and ReadStart > ExonStart:
print ReadStart, ExonStart, ExonStop
else:
print "BOO"
f.close()
我期望的是(来自我的代码): 其中第一个 col 是文件 B 中的 ReadStart,接下来的两个来自文件 A
10678 10000 12000
10678 10500 12000
14870 14821 14899
我的代码只会返回第一行。
【问题讨论】:
-
很高兴看到您的一些输出或您的期望与实际发生的情况
-
您能否为运行代码的代码提供输入?
-
这些文件有多大?
-
@RNar 希望为您提供了足够的信息。
-
@skrrgwasme 目前正在处理小文件,但将把文件 A 放大到 400M 文件,文件 B 大约 30M 文件。我可以修剪文件 A 以删除不相关的信息。您认为尺寸可能是个问题吗?