出品| 木青生信大模型
作者| 穆易青、kimi
文章目录
最近工作比较忙,更新有点慢,希望后面能够加快更新速度。
在生物信息学领域,数据处理和分析是日常工作的重要组成部分。写论文也需要通过表格对结果进行统计比较。对于没有编程基础的生信小白来说,编写一个统计脚本可能是一项挑战。
表1 细菌组装注释结果统计表(示例)
Sequence ID | Genome size (bp) | GC content (%) | CDSs num (#) | Average Protein Len (bp) | Coding Ratio (%) |
---|---|---|---|---|---|
Sample1_pilon | 3,146,359 | 56.3 | 3,471 | 268.5 | 88.9 |
Sample2_pilon | 3,155,279 | 56.3 | 3,472 | 269.5 | 89.0 |
Sample3_pilon | 3,160,123 | 56.5 | 3,455 | 267.0 | 89.5 |
Sample4_pilon | 3,140,567 | 56.1 | 3,438 | 265.5 | 88.0 |
Sample5_pilon | 3,130,789 | 55.9 | 3,410 | 264.0 | 87.5 |
尽管通过excel将本地数据一个个不断Ctrl+C
和Ctrl+V
,但遇到如群体遗传分析大样本量情况,挨个复制粘贴显然不现实。今天这篇文章将会以统计脚本为例,讲解如何与AI助手的合作,即使是编程新手也能够快速上手。本文将指导你如何向AI助手提供清晰的指令和要求,以便它能够为你生成一个准确无误的统计脚本。
为什么需要AI助手?
AI助手,如Kimi,可以帮助你:
- 理解需求:通过对话理解你的具体需求。
- 生成代码:根据你的需求生成相应的代码。
- 调试和优化:帮助你检查和优化代码,确保其正确性和效率。
如何向AI助手提供指令?
- 明确需求:首先,提供详细的描述,如数据的来源路径、格式;其次,指定脚本语言、工具和库;最后,明确你想要实现的目标(如何处理)与需求。
- 提供示例:如果可能,给出输入和期望输出的示例,这样AI助手可以更准确地理解你的需求。
- 指定工具和库:如果你有特定的工具或库要求,比如使用Python和Pandas,也要明确告知。
- 描述错误处理:如果你希望脚本能够处理特定的错误或异常,也要提前说明。
示例:编写统计脚本
假设你需要一个Python脚本,用于从多个样品文件夹内的statistics.txt
文件中提取数据,并汇总到一个表格中。以下是如何向AI助手提供指令:
- 明确任务:
User:我需要一个Python脚本,用于统计每个sample文件夹内的statistics.txt文档,并将结果汇总到一个csv表格中。
加粗位置都有对应明确的要求,比如我让AI助手用我熟悉的语言进行编写,没有编程基础的读者可以让助手用bash写shell脚本。而后面对文档的描述一定要清晰,如文档名称和相对路径,这样才能尽可能地让AI助手生成脚本可以准确地提取文档信息。
-
提供输入/输出格式:
输入文件名: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格式中体现)再进行输入。
后面两点比较高级,适合有基础的读者使用。
-
指定工具和库:
请使用Python语言 利用第三方库(如Pandas)来处理数据(有编程基础可选)。 明确工具和相应参数
指定工具属于比较高级的应用,更适合做一些指向性明确的分析。对于初学者而言,并不清楚什么工具做什么分析;而有编程基础的研究人员,就可以明确清楚哪些工具可以进行什么分析。需要注意的是,仅仅提供工具的名称可能会出现模型幻觉问题,即AI助手将多个类似功能的工具参数进行混用,或者无中生有,生成一个工具本身没有的参数。解决方案是在要求写代码前,先向AI助手提供相关的github链接,或者上传工具的使用文档让AI助手理解,以提高工具的使用准确性。
-
描述错误处理:
如果遇到无法读取的文件或格式错误,请在脚本中添加错误处理机制。
同样属于高级内容,当遇到比较复杂的分析情况时,通常会遇到一些错误,如某行数据为空,行列不一致等情况,和自己写代码的时候差不多,需要实际情况实际处理。在执行一次代码遇到报错后,需要详细描述报错内容,并向AI助手请求提供解决方案,比如遇到样品部分表达水平为空,需要强调对为空的数据进行替换或者归一化。或者,当生成结果与预期不一致时,可以重新调整指令,重点强调AI哪里没有做对,应该如何做。
AI助手生成的代码
根据上述指令,AI助手会生成以下代码:
import os
import 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 = './'
(如果指令中说当前路径下的文件夹或许这里也不用改)。直接运行,结果非常顺利生成了统计文档。
Sequence ID | Genome size (bp) | GC content (%) | CDSs num (#) | Average Protein Len (bp) | Coding Ratio (%) |
---|---|---|---|---|---|
Sample1_pilon | 3,146,359 | 56.3 | 3,471 | 268.5 | 88.9 |
Sample2_pilon | 3,155,279 | 56.3 | 3,472 | 269.5 | 89.0 |
Sample3_pilon | 3,160,123 | 56.5 | 3,455 | 267.0 | 89.5 |
Sample4_pilon | 3,140,567 | 56.1 | 3,438 | 265.5 | 88.0 |
Sample5_pilon | 3,130,789 | 55.9 | 3,410 | 264.0 | 87.5 |
总结
示例中还有很多可以优化的地方,比如输出文档的名称没有要求、输出参考格式应当强调列名的统一(或者说不应该用参考二字),实际情况是我生成的代码将statistics.txt里面所有的结果都做了一行进行汇总统计,而不是我指定输出的五列结果(AI助手生成的代码已是二次调整后生成)。另外input_dir = 'sample'
这里只是一个示例,需要读者自己选择在哪里执行脚本来运行。
通过向AI助手提供清晰的指令和要求,即使是没有编程基础的生信小白也能够获得一个定制的统计脚本。记住,与AI助手的沟通越明确,生成的代码就越能满足你的需求。不要害怕提问和提供反馈,这是提高代码质量和效率的关键。
🌟 非常感谢您抽出宝贵的时间阅读我的文章。如果您觉得这篇文章对您有所帮助,或者激发了您对数据科学的兴趣,我诚挚地邀请您:
👍 点赞这篇文章,让更多人看到我们共同的热爱和追求。
🔔 关注我的账号,不错过每一次知识的分享和探索的旅程。
📢 您的每一个点赞和关注都是对我最大的支持和鼓励,也是推动我继续创作优质内容的动力。
📚 我承诺,将持续为您带来深度与广度兼具的数据科学内容,让我们一起在知识的海洋中遨游,发现更多未知的奇迹。
💌 如果您有任何问题或想要进一步交流,欢迎在评论区留言,我会尽快回复您。