批量从ncbi下载线粒体基因组,几句话让cursor写一个自动化的python脚本,替代了我原本一天的工作量

最近要做一个鱼类的线粒体进化树

然后有一百多个线粒体基因组序列号,因为数量太多了,一个个要从ncbi上下载,于是就分每个人下载40个。

原本手动的流程

  1. 打开ncbi

  1. 搜索accession ID

  2. 点进搜索结果

  3. 点击send to

  4. 选择cds DNA下载

  5. 选择cds protein下载

  6. 对下载后的fasta文件改名

  7. 然后重复40次

但我想到,经常会有人用python爬各种电子资料,是不是也可以从ncbi上一次性根据accession ID把这些数据都自动下载下来?而且让python给文件重命名肯定是非常简单的事情。

当然自己从零开始写肯定很麻烦,用现在最火的Cursor应该可以很快地完成任务。

使用Cursor编写python脚本


用了免费的ChatGPT o1-mini model,一分钟不到就把代码写好了。

让cursor解释一下脚本的运行原理

## 主要功能

1. 读取CSV文件:
    - CSV文件应包含物种名称和对应的Accession Number。
    - 脚本读取并解析这些信息,提取属名、种名以及Accession Number,并为每个Accession Number添加版本号。

2. 创建输出目录:
    - 根据指定的输出目录(默认是 `output`),如果目录不存在则自动创建。

3. 从NCBI获取序列数据:
    - 使用BioPython的`Entrez`模块连接NCBI数据库,根据Accession Number获取基因组的GenBank文件。
    - 解析GenBank文件,提取CDS(编码序列)特征,包括基因名、蛋白质ID、位置信息等。
    - 从CDS特征中提取核酸序列和蛋白质序列(如果有翻译信息)。

4. 保存序列到FASTA文件:
    - 将提取的核酸序列保存到 `.fa` 文件中。
    - 将提取的蛋白质序列保存到 `.pep.fa` 文件中。
    - 如果某个Accession Number没有找到CDS或蛋白质翻译信息,则在对应的FASTA文件中写入注释。

手动检查一下有没有语法上的问题

运行测试文件,检查是不是可行


结果非常不错。

但是后来发现我上传了40个accession ID,结果只有60多个文件,本应该是80个文件(fa和pep.fa)。

检查了一下发现,原来我的csv文件中有一个物种对应多个线粒体基因组的情况,也就是他自动把一个物种的多个线粒体基因组合并了,这显然不是我想要的情况。

我又和cursor说,让他为每一个accession ID建立一个fa文件,并且在命名上修改,在结尾加上ac ID,方便辨认。

最后整个下载都很顺利完成了。

总结就是,理清逻辑,第一次完整的告诉cursor需求和上下文,然后通过不断测试不断迭代代码。因为一次性想到的需求都是有限的,而且有些时候AI可能不能很好地理解我们的需求

脚本和测试我放到我的公众“小竹读研在养鱼”上面了,有需要的可以在后台回复“mit download”,在文末获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值