3

そのアルファベットに関して除算を行いたいと思います。以下に例を示します。

指定されたバイナリ ファイルは csv 形式です。

A=1000, C=0100, G=0010, T=0001

binary.csv: CAT、GAA

0,1,0,0,1,0,0,0,0,0,0,1
0,0,1,0,1,0,0,0,1,0,0,0

binary.csv は、csv ファイルにある単一行の値で乗算する必要があります。

シングル.csv:

0.28,0.22,0.23,0.27,0.12,0.29,0.34,0.21,0.44,0.56,0.51,0.65

以下のコードは、ファイルと出力の両方で値の乗算を行います。

0.22,0.12,0.65
0.23,0.12,0.44

コード

import csv

with open('single.csv', 'rb') as csvfile:
    for row in csv.reader(csvfile, delimiter=','):
        reals = row

with open('binary.csv', 'rb') as csvfile:
    pwreader = csv.reader(csvfile, delimiter=',')

    with open('output.csv','wb') as testfile:
        csv_writer=csv.writer(testfile)
        for row in pwreader:
            result = []            
            for i,b in enumerate(row):
                if b == '1' :
                    result.append(reals[i])
            csv_writer.writerow(result)

以前の出力とそのアルファベットに関して分割された値に対して分割を実行したい追加の csv ファイルがあります。

 A   C   G   T
 0.4,0.5,0.7,0.1
 0.2,0.8,0.9,0.3

CAT の値は 0.5,0.4,0.1 で除算され、GAA はそれぞれ 0.9,0.2,0.2 で除算されるため、次のようにまったく新しい出力を得ることができます。

 0.44,0.3,6.5
 0.26,0.6,2.2

配列で numpy を使用するとこれを解決できる可能性がありますが、数千を超えるデータで使用する場合は適切ではない可能性があります。60,000++のデータを試したらメモリ不足になりました。

誰でも私を助けることができますか?

4

0 に答える 0