pandas - 通过将文件名与部分列值匹配,用列值覆盖 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
新字形
注意:C 列中有相同的 8 位数字、fasta 文件名和 fasta 文件头。
我想要做的是从 C 列中取出整个字符串,并覆盖当前的 fasta 文件头。输出将如下所示:
法斯塔文件名:
01234567 -abc-a124-pol.fasta
文件内部:
&abc/美国/abc- 01234567 /1234
ACTGATGATGAGATAGA ATAGATAGATAGATAG
新字形
这是我正在尝试编写的一门课程。我正在努力让它发挥作用。请让我知道是否有更简单的方法。
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
解决方案
推荐阅读
- javascript - 使用 JavaScript 从一个 HTML 页面获取输入并输出到另一个 HTML 页面
- css - sassc-rails 很难解析 css rgb 函数
- c++ - OpenImageDenoise - 在 C++ 中使用预编译头文件时架构 x86_64 的未定义符号
- python - 递归地找到所有可能的路径,在每个节点上具有一定数量的移动和不同的选项
- javascript - 自定义细化列表时 Algolia 和 VueJs 的计时问题
- python - 如何在 Python 中扫描特定子字符串的输入?
- ios - Swift - 像带有文本换行的段落一样连接按钮
- sql - PostgreSQL - 对表“foo_bar”的 FROM 子句条目的无效引用
- amazon-web-services - 如何使用 Fargate 创建 AWS Kubernetes 集群 (EKS)?
- typo3 - 如何使用数组键中的特殊字符访问数组