当前位置:首页|资讯

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

作者:木青生信大模型发布时间:2024-09-03



文章目录

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

    • 为什么需要AI助手?

    • 如何向AI助手提供指令?

    • 示例:编写统计脚本

    • AI助手生成的代码

    • 总结


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


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


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

尽管通过excel将本地数据一个个不断Ctrl+C 和Ctrl+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 osimport pandas as pd input_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 = './'(如果指令中说当前路径下的文件夹或许这里也不用改)。直接运行,结果非常顺利生成了统计文档。

总结

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

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

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

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



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1