- 论坛徽章:
- 1
|
给个思路,LZ自己写写代码看看吧... 然后,此思路有用的假设是,你机器内存不足....
1. 将两行变一行,\t 分割。 chr1 1 100 11,22,33,44,55
2. 然后sort -k1 -k2n
4. Loop:
a. 定义一个sliding window. 例如: chr1:1-10000
b. 对于每一个文件,只读入一部分reads (sliding window定义范围),建立若干工作hash
做你需要的per base 的统计,输出flag
i. 确保所有的相关reads都被读入了。
在这里,Loop 第一次为向下查到起始位置为10001, 因为sort了,之后的不用查了...
ii. 你需要一个hash of array
key: position, such as: chr1:100
value: array of quality values
iii. 因为每一个read有长度的限制,两个sliding window 之间的overlap只需要是这个长度就好..
这样会产生一定的冗余,但是输出stats该是一样的。计算速度该是可以接受的.
c. 删除工作hash..
5. 将step 4的输出结果去冗余.
|
|