2024.09.03【代码实现L1】|使用AI助手0编程基础写脚本

【代码实现L1】| 生信小白0编程基础编写统计脚本

文章目录

  • 【代码实现L1】| 生信小白0编程基础编写统计脚本
    • 为什么需要AI助手?
    • 如何向AI助手提供指令?
    • 示例:编写统计脚本
    • AI助手生成的代码
    • 总结

出品| 木青生信大模型
作者| 穆易青、kimi

最近工作比较忙,更新有点慢,希望后面能够加快更新速度。
在生物信息学领域,数据处理和分析是日常工作的重要组成部分。写论文也需要通过表格对结果进行统计比较。对于没有编程基础的生信小白来说,编写一个统计脚本可能是一项挑战。

表1 细菌组装注释结果统计表(示例)

Sequence IDGenome size (bp)GC content (%)CDSs num (#)Average Protein Len (bp)Coding Ratio (%)
Sample1_pilon3,146,35956.33,471268.588.9
Sample2_pilon3,155,27956.33,472269.589.0
Sample3_pilon3,160,12356.53,455267.089.5
Sample4_pilon3,140,56756.13,438265.588.0
Sample5_pilon3,130,78955.93,410264.087.5

尽管通过excel将本地数据一个个不断Ctrl+CCtrl+V,但遇到如群体遗传分析大样本量情况,挨个复制粘贴显然不现实。今天这篇文章将会以统计脚本为例,讲解如何与AI助手的合作,即使是编程新手也能够快速上手。本文将指导你如何向AI助手提供清晰的指令和要求,以便它能够为你生成一个准确无误的统计脚本。

为什么需要AI助手?

AI助手,如Kimi,可以帮助你:

  1. 理解需求:通过对话理解你的具体需求。
  2. 生成代码:根据你的需求生成相应的代码。
  3. 调试和优化:帮助你检查和优化代码,确保其正确性和效率。

如何向AI助手提供指令?

  1. 明确需求:首先,提供详细的描述,如数据的来源路径、格式;其次,指定脚本语言、工具和库;最后,明确你想要实现的目标(如何处理)与需求。
  2. 提供示例:如果可能,给出输入和期望输出的示例,这样AI助手可以更准确地理解你的需求。
  3. 指定工具和库:如果你有特定的工具或库要求,比如使用Python和Pandas,也要明确告知。
  4. 描述错误处理:如果你希望脚本能够处理特定的错误或异常,也要提前说明。

示例:编写统计脚本

假设你需要一个Python脚本,用于从多个样品文件夹内的statistics.txt文件中提取数据,并汇总到一个表格中。以下是如何向AI助手提供指令:

  1. 明确任务

User:我需要一个Python脚本,用于统计每个sample文件夹内的statistics.txt文档,并将结果汇总到一个csv表格中。

加粗位置都有对应明确的要求,比如我让AI助手用我熟悉的语言进行编写,没有编程基础的读者可以让助手用bash写shell脚本。而后面对文档的描述一定要清晰,如文档名称和相对路径,这样才能尽可能地让AI助手生成脚本可以准确地提取文档信息。

  1. 提供输入/输出格式
    输入文件名:sample/statistics.txt
    输入格式:
    "Total Sequence Length (bp)	3260264
    Number of Sequences	17
    Longest Sequences (bp)	971111
    ..."输出参考格式:
    "Sequence ID	Genome size(bp)	GCcontent(%)	CDSs num(#)	Average Protein Len(bp)	Coding Ratio(%)
    SAMPLE1_pilon	3146359	56.3	3471	268.5	88.9
    ..."
    

提供示例是提示工程里非常重要的一个技巧。第一个要求就是对输入,输出的格式用冒号+双引号扩入表示,以免AI将要求与格式混合。这里输入/输出的格式也非常重要,经常会遇到的就是文本之间分隔有的是空格,有的是分隔符。如果对分隔符文档进行全选复制,粘贴给AI助手后会变成空格分隔,导致生成的脚本出现bug。如果能输入markdown格式最好,可以将输入,输出格式先让AI助手转换成markdown格式,进行校正(AI识别错误会在markdown格式中体现)再进行输入。

后面两点比较高级,适合有基础的读者使用。

  1. 指定工具和库
    请使用Python语言
    利用第三方库(如Pandas)来处理数据(有编程基础可选)。
    明确工具和相应参数
    

指定工具属于比较高级的应用,更适合做一些指向性明确的分析。对于初学者而言,并不清楚什么工具做什么分析;而有编程基础的研究人员,就可以明确清楚哪些工具可以进行什么分析。需要注意的是,仅仅提供工具的名称可能会出现模型幻觉问题,即AI助手将多个类似功能的工具参数进行混用,或者无中生有,生成一个工具本身没有的参数。解决方案是在要求写代码前,先向AI助手提供相关的github链接,或者上传工具的使用文档让AI助手理解,以提高工具的使用准确性。

  1. 描述错误处理
    如果遇到无法读取的文件或格式错误,请在脚本中添加错误处理机制。
    

同样属于高级内容,当遇到比较复杂的分析情况时,通常会遇到一些错误,如某行数据为空,行列不一致等情况,和自己写代码的时候差不多,需要实际情况实际处理。在执行一次代码遇到报错后,需要详细描述报错内容,并向AI助手请求提供解决方案,比如遇到样品部分表达水平为空,需要强调对为空的数据进行替换或者归一化。或者,当生成结果与预期不一致时,可以重新调整指令,重点强调AI哪里没有做对,应该如何做。

AI助手生成的代码

根据上述指令,AI助手会生成以下代码:

import os
import pandas as pdinput_dir = 'sample'
output_file = 'summary_statistics.csv'summary_df = pd.DataFrame(columns=['Sequence ID', 'Genome size(bp)', 'GCcontent(%)', 'CDSs num(#)', 'Average Protein Len(bp)', 'Coding Ratio(%)'
])for root, dirs, files in os.walk(input_dir):for file in files:if file == 'statistics.txt':file_path = os.path.join(root, file)with open(file_path, 'r') as f:lines = f.readlines()data = {line.split('\t')[0].strip(): line.split('\t')[1].strip() for line in lines}row = {'Sequence ID': os.path.basename(root),'Genome size(bp)': data['Total Sequence Length (bp)'],'GCcontent(%)': data['GCcontent (%)'],'CDSs num(#)': data['Number of CDSs'],'Average Protein Len(bp)': data['Average Protein Length'],'Coding Ratio(%)': data['Coding Ratio (%)']}summary_df = summary_df.append(row, ignore_index=True)summary_df.to_csv(output_file, index=False)
print(f'Summary statistics have been written to {output_file}')

对我而言,pandas库其实我不是很熟,但是因为有python基础,这个代码我是可以读懂的,能读懂的意思就是可以改。我在样品文件夹当前路径vim创建了一个py脚本,把代码复制粘贴进去,把input_dir = 'sample'改成input_dir = './'(如果指令中说当前路径下的文件夹或许这里也不用改)。直接运行,结果非常顺利生成了统计文档。

Sequence IDGenome size (bp)GC content (%)CDSs num (#)Average Protein Len (bp)Coding Ratio (%)
Sample1_pilon3,146,35956.33,471268.588.9
Sample2_pilon3,155,27956.33,472269.589.0
Sample3_pilon3,160,12356.53,455267.089.5
Sample4_pilon3,140,56756.13,438265.588.0
Sample5_pilon3,130,78955.93,410264.087.5

总结

示例中还有很多可以优化的地方,比如输出文档的名称没有要求、输出参考格式应当强调列名的统一(或者说不应该用参考二字),实际情况是我生成的代码将statistics.txt里面所有的结果都做了一行进行汇总统计,而不是我指定输出的五列结果(AI助手生成的代码已是二次调整后生成)。另外input_dir = 'sample'这里只是一个示例,需要读者自己选择在哪里执行脚本来运行。

通过向AI助手提供清晰的指令和要求,即使是没有编程基础的生信小白也能够获得一个定制的统计脚本。记住,与AI助手的沟通越明确,生成的代码就越能满足你的需求。不要害怕提问和提供反馈,这是提高代码质量和效率的关键。

🌟 非常感谢您抽出宝贵的时间阅读我的文章。如果您觉得这篇文章对您有所帮助,或者激发了您对数据科学的兴趣,我诚挚地邀请您:

👍 点赞这篇文章,让更多人看到我们共同的热爱和追求。
🔔 关注我的账号,不错过每一次知识的分享和探索的旅程。
📢 您的每一个点赞和关注都是对我最大的支持和鼓励,也是推动我继续创作优质内容的动力。
📚 我承诺,将持续为您带来深度与广度兼具的数据科学内容,让我们一起在知识的海洋中遨游,发现更多未知的奇迹。
💌 如果您有任何问题或想要进一步交流,欢迎在评论区留言,我会尽快回复您。
🌐 点击下方的微信名片,获取本书资料,加入交流群,与志同道合的朋友们一起探讨、学习和成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章带你学会(后端/架构,前端/移动,计算机基础,AI/大数据,运维/测试,产品/运营)【史上最强文章】

史上最强文章 **1.在一篇回答中全面覆盖所有领域的深入细节,我将尝试概括性地概述每个领域的一些关键概念、最佳实践、未来趋势以及推荐的学习资源,以帮助你构建或深化在这些领域的理解。 只介绍 文章学习的一些优秀文章 2.重点在于不要循规蹈矩&#…

Elasticsearch文档值

在Elasticsearch中,文档值(Doc Values)是用于高效存储和检索数据的一种数据结构,特别是在处理聚合、排序和过滤操作时。文档值是Elasticsearch为每个字段生成的预先计算的格式化数据,目的是改善性能和降低内存使用。 …

开源 AI 智能名片 O2O 商城小程序在营销中的应用

摘要:本文探讨了开源 AI 智能名片 O2O 商城小程序在营销中的应用,重点分析了喜好原则、互惠互利和高度认可三个方面对小程序推广和用户忠诚度提升的重要性。通过融入这些原则,开源 AI 智能名片 O2O 商城小程序能够更好地满足用户需求&#xf…

数据库常见的四种范式

数据库的第一范式到第四范式分别是: 第一范式(1NF):对关系模式的基本要求,要求表中的每一行只包含一个实例的信息,没有重复的列。第二范式(2NF):在满足1NF的基础上&…

HTML静态网页成品作业(HTML+CSS)——动漫大耳朵图图网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

VUE2.0 elementUI el-input-number 数据更新,视图不更新——基础积累

今天遇到一个问题,是关于el-input-number组件的,发现数据明明已经更改了,但是页面上组件输入框中还是之前的值。 比如上方输入框中,我输入120.5,就会出现下面的诡异现象 回显此值是120.779,但是页面上输入…

协同开发工具Git

网上对于Git的使用方法介绍的很多,在日常工作中,Git是团队开发必不可少的工具之一,我想为一些刚使用Git的小伙伴们介绍一下常遇到的小问题。 1:拼写错误。这应该是每个初学者都会犯得错误,当出现这种错误还是比较好排…

FreeRtos CMSIS V1和V2有什么区别?

CMSIS(Cortex Microcontroller Software Interface Standard)是ARM公司推出的一种基于CORTEX内核微处理器的软件接口标准,它旨在简化微控制器软件开发,为开发人员提供一致且高效的接口。CMSIS分为不同的版本,其中V1和V…

供应链管理平台开发指南:从食堂采购系统源码开始

本篇文章,小编将围绕如何从食堂采购系统源码出发,构建一个完整的供应链管理平台进行详细解读,帮助开发人员掌握实现技术要点,并为企业打造高效的供应链系统提供技术参考。 一、供应链管理平台的核心功能概述 供应链管理平台的核心…

关于一个早期的计算机网络的理解

电脑网络这个新鲜玩意儿,到底是怎样的呢? 2017年11月30日星期四, 我以前回答过这个问题, 简单点举个例子来理解,电脑网络就很形象的被说明了, 它本身就是一张网,一张看不见摸不着但还能用得着的…

RK3568 Android 11 蓝牙BluetoothA2dpSink 获取用于生成频谱的PCM

Android 中的 A2DP Sink A2DP Sink 在 Android 系统中主要用于 接收 其他蓝牙设备(如手机、平板、电脑等)发送过来的 高质量的立体声音频。简单来说,它让你的 Android 设备可以充当一个 蓝牙音箱 或 耳机 的角色。 核心功能: 接…

中国农村政策与改革统计年报(2015-2022年)

中国农村经营管理统计年报、政策与改革统计年报(2015-2022年) 数据年限:2015-2022年,目前最新 数据格式:pdf 数据范围:全国各省市自治区(不含港澳台) 数据内容:《中国农村…

win系统安装mysql,使用mysqldump,pycharm使用mysqldump,避坑

文章目录 下载mysql的win客户端设置系统环境变量验证是否可用pycharm使用mysqldump异常问题排查 下载mysql的win客户端 官网下载地址如果下载旧版本,需自行到Archives里面找 本人使用的是mysql5.7,找到相应版本后,点击Download下载 设置系统…

多模态大模型中,融合后如何知道最终结果受哪种模态影响更大?

本篇介绍多模态大模型中如何基于最终结果分析各模态的影响。 具身智能被众多大佬看好,通往AGI的路最终肯定需要多个模态的大模型互相融合。多个模态配合好也是有可能去构建一个模拟现实的世界模型的。 最近一直在研究和尝试多模态大模型在一些VQA领域的前瞻研究和…

9、Django Admin优化查询

如果你的Admin后台中有很多计算字段,那么你需要对每个对象运行多个查询,这会使你的Admin后台变得非常慢。要解决此问题,你可以重写管理模型中的get_queryset方法使用annotate聚合函数来计算相关的字段。 以下示例为Origin模型的中ModelAdmin…

CSS总结——瀑布流布局

瀑布流布局 瀑布流布局是一种新型的布局方式,可以将大小不一的图片完整的显示在页面上,并且在杂乱的布局中保持着一定的美感,今天学习了一下如何使用瀑布流布局,总结了有以下三种方式。(瀑布流还可以使用grid布局实现…

Nginx 部署前端 Vue 项目实战指南

一、环境准备 1. 安装 Nginx 首先,需要在服务器上安装 Nginx。Nginx 是一款轻量级、高性能的 HTTP 和反向代理服务器。安装方式因操作系统而异。 Linux 系统(以 Ubuntu 为例): sudo apt-get update sudo apt-get install nginxWi…

【Android】Material Design编写更好的UI

Toolbar 对于控件ActionBar我们非常熟悉,就是我们常见的标题栏,但ActionBar只能位于活动的顶部,因此我们更建议使用Toolbar。在新建一个项目的时候都是默认显示ActionBar,我们要使用Toolbar就需要先将标题栏改为不显示 先来看看…

HMI触屏网关-VISION如何与Node-red通信

上文:HMI触屏网关-VISION如何与Modbus TCP从机通信-CSDN博客 1. Node-red启用HTTP监听 HTTP监听,用于模拟WebAPI服务端,接收WebAPI客户端GET请求。 启用HTTP监听服务,选择请求方式GET;URL自定义,本示例设…

在 Maven 的 POM 文件中配置 npm 镜像源

在使用 Maven 构建前端项目时,可能会遇到网络问题,导致 Node.js 或 npm 依赖无法下载,特别是在国内网络环境中。如果你在使用 frontend-maven-plugin 插件来管理 Node.js 和 npm,那么通过配置镜像源可以有效解决这些问题。本文将介…