如何解决通过将文件名与部分列值匹配,用列值覆盖 fasta 文件的标题
数据集:
提交者 |文件名 |病毒
林 | 012345.fasta | abc/美国/abc-01234567/1234
林 | 012345.fasta | abc/美国/abc- 04567898/1234
林 | 012345.fasta | abc/USAabc- 78935421/1234
名为 012345 的目录中的文件:
04567898-abc-a124-pol.fasta
78935421-abc-a124-pol.fasta
01234567-abc-a124-pol.fasta
文件内部:
&01234567-abc-a124-pol
ACTGATGATGAGATAGA ATAGATAGATAGATAG
AGATAGATAGATA
注意:C 列中有相同的 8 位数字、fasta 文件名和 fasta 文件头。
我想要做的是从 C 列中取出整个字符串,并覆盖当前的 fasta 文件头。输出将如下所示:
Fasta 文件名:
01234567-abc-a124-pol.fasta
文件内部:
&abc/USA/abc-01234567/1234
ACTGATGATGAGATAGA ATAGATAGATAGATAG
AGATAGATAGATA
这是我正在尝试编写的一个类来做到这一点。我正在努力让它工作。如果有更简单的方法,请告诉我。
def parse(file_name):
with zipfile.ZipFile(file_name,"r") as zf:
for name in zf.namelist():
if ".fasta" in str(name) and '.ipynb' not in str(name):
with io.TextIOWrapper(zf.open(name)) as file:
e = "".join([">{} \n{}".format(str(title.split(None,1)[0]),identifiers)
for title,identifiers in SimpleFastaParser(file)])
with open("test_dict.fasta","a+") as f0:
f0.write('{}\n'.format(e))
return file_name
def names(file_name):
with zipfile.ZipFile(file_name,"r") as zf:
e1 = []
for name in zf.namelist():
if ".fasta" in str(name) and '.ipynb' not in str(name):
with io.TextIOWrapper(zf.open(name)) as file:
e1 += [title.split(None,1)[0]
for title,identifiers in SimpleFastaParser(file)]
print(e1)
return
def pandas(file_name):
with zipfile.ZipFile(file_name,"r") as zf:
e4 = []
for name in zf.namelist():
if ".fasta" in str(name) and '.ipynb' not in str(name):
with io.TextIOWrapper(zf.open(name)) as file:
e4 += [{title.split(None,1)[0]:[identifiers,len("".join(identifiers))]
for title,identifiers in SimpleFastaParser(file)}]
dataset = pd.DataFrame({'Name': ["".join(i.keys()) for i in e4],'Length':[list(i.values())[0][1] for i in e4],'Sequence':[list(i.values())[0][0] for i in e4]})
return dataset
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。