Python3を使ってゲノム解析をしている初心者です。
2ファイルの1列目を比較して、一致したら結合するという作業をしています。
単純な一致と結合だけなら簡単なのですが、結合した後に引き算をしたり、
listにあってdataにない場合でも0埋めして出力したいです。
また、各行にはゲノム配列(str)と数字(int)混合しています。
listとdataの中の行の順番はばらばらです。ここでは見やすいように数行だけソートしてのせてあります。
append()を使っていろいろやってみたのですがうまく進まなくて困っています。
どなたかご教授お願いします。
以下に試したスクリプトを乗せております。
list_file.txt'''
TTTTCTC 2219
TGCATGC 2143
GCATGCA 2140
TTTTTCT 2098
TTTTTTC 2098
TTTCTCT 1821
'''
data_file.txt'''
TTTTCTC 40
TGCATGC 21
GCATGCA 20
TTTTTCT 98
'''
やりたいこと
1列目を元に一致したら結合し、dataの2列目はそのまま出力、listの2列目はdataの2列目を引いた値を出力。さらに、listにあってdataにない場合は0で埋めて出力。
#期待する出力 TTTTCTC 40 2279 TGCATGC 21 2122 GCATGCA 20 2120 TTTTTCT 98 2000 TTTTTTC 0 2098 TTTCTCT 0 1821
試したスクリプト
list = [] data = [] with open('list_file.txt', 'r') as c: for line in c: if type(line) == str: list.append(int(line.split())) else: list.append(line.split()) with open('data_file.txt', 'r') as f: for line in f: if type(line) == str: data.append(int(line.split())) else: data.append(line.split()) for c in tss_list: for f in gene_list: if c[0] == f[0]: #print(f[0]) print(c[0],"\t",c[1],"\t",c[1] - c[2],) elif c[0] in f[0]: print(c[0],"\t",c[1],"\t", 0 )
エラー
TypeError Traceback (most recent call last)
<ipython-input-48-553a02782dd4> in <module>
9 for line in c:
10 if type(line) == str:
---> 11 list.append(int(line.split()))
12 else:
13 list.append(line.split())
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
これはそもそもappendを使うのが間違っているのでしょうか。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー