0
GZファイル:Pythonスクリプト遅いの読み取りと書き込み、そのような形式で30億ライン持って、私はxxx.wig.gzファイルを持っている
fixedStep chrom=chr1 start=1 step=1
0
0
0
0
0
1
2
3
4
5
6
7
8
9
10
...
fixedStep chrom=chr2 start=1 step=1
0
0
0
0
0
11
12
13
14
15
16
17
18
19
20
...
を、私は
- 休憩それをすることによってしたいです"クロム"。ですから、私が "fixedstep"で始まる行を読むたびに、私は新しいファイルを作成し、古いファイルを閉じます。
- 私は下記そうでなければ0
合格= 1、「閾値」にそれぞれの値を比較して0/1の出力をしたいので、(私はそれが〜10hoursを完了するために、突出していますスーパースロー走る私のPythonスクリプトであります〜2時間後に2つの染色体が完成)
私はそれを改善するのに助けてくれる人がいますか?
#!/bin/env python
import gzip
import re
import os
import sys
fn = sys.argv[1]
f = gzip.open(fn)
fo_base = os.path.basename(fn).rstrip('.wig').rstrip('.wig.gz')
fo_ext = '.bt.gz'
thres = 100
fo = None
for l in f:
if l.startswith("fixedStep"):
if fo is not None:
fo.flush()
fo.close()
fon = re.search(r'chrom=(\w*)', l).group(0).split('=')[-1]
fo = gzip.open(fo_base + "_" + fon + fo_ext,'wb')
else:
if int(l.strip())>= thres:
fo.write("1\n")
else:
fo.write("0\n")
if fo is not None:
fo.flush()
fo.close()
f.close()
PS。私はawkがはるかに速くできると仮定しますが、私はawkでうまくいきません。
あなたは出力が提供されているサンプルデータのためにどのように見えるかの例を与えることができますか?おそらくchr1とchr2という2つのファイルのように見えます。 chr1とchr2の内容は何でしょうか? awkがかなり早くそれをやり遂げることができるのは間違いありませんが、テストデータが渡されていることを確認したいと思います。 – Andrew