生信差异分析的脚本
❶ 生信学习笔记(一):python+Mafft实现批量化多序列比对
Mafft是一款在多重序列比对领域性能出众的软件,相较于ClustalW,其在速度和准确性上均表现出色。在生物学研究中,批量处理多个fasta文件的需求较为常见,然而Mafft软件只支持单个文件的分析,且操作繁琐,需要逐一设定文件、输出路径、格式、策略等参数,并进行确认,对于批量操作显得不太方便。尝试使用Python的Biopython库调用Mafft,但并未取得成功,这主要是由于Biopython库与Mafft的兼容性问题以及部分错误处理上的不足。
为了解决批量处理的需求,可以使用批处理脚本(.bat文件)或命令行工具(如cmd或Powershell)来执行Mafft的单行命令。单行命令形式类似于`mafft --auto test.fasta > test_output.fasta`,其中可以包含路径和输出文件名。对于路径问题,确保路径的正确使用,避免因路径中包含中文或空格导致的识别错误。
通过将此单行命令封装在批处理脚本中,可以使用Python的`os.system()`或`subprocess.run()`函数来执行批处理脚本,实现对多个fasta文件的自动处理。具体做法是获取输入文件夹下所有fasta文件,使用循环结构遍历这些文件,并对每个文件调用Mafft的单行命令进行比对。将输出文件保存到指定的输出文件夹中。
这种方式极大地提高了处理效率,简化了操作流程,使得批量处理多个fasta文件变得相对轻松。同时,如果需要进一步优化性能,可以考虑使用多线程或多进程的方式并行执行多个比对任务,从而显着减少整体处理时间。总之,结合批处理脚本与Python脚本,Mafft的多重序列比对过程变得既高效又便捷,为生物学研究中的序列分析提供了有力的支持。
❷ 生信(七)——生信中常用的命令
在生信分析中,常用的命令包括以下几种:
转换文件行尾风格:
- 使用dos2unix命令将Windows风格的bed文件转换为Unix风格,如dos2unix –n dos.bed.txt unix.bed.txt。
- 使用sed命令,如sed 's/r//' dos.bed.txt > unix.bed.txt。
删除特定文件:
- 使用find命令批量删除目录中所有bam文件,如find your_path name *.bam exec rm {} ;。
合并文件:
- 使用cat命令合并fastq文件,如cat fastq1 fastq2 > merged_fastq。
提取文件名前缀:
- 使用cut、sed或awk命令提取文件名前缀,如your_string | cut d. f1。
压缩打包文件:
- 使用tar命令压缩并打包项目文件,如tar zcvf tar_file origin_files。
打印行号:
- 使用sed命令,如sed '= ' your_file | sed 'N;s/n/t/'。
- 使用awk命令,如awk '{printf}' your_file。
输出特定行:
- 使用sed命令,如sed n 髲p;666d' your_file。
- 使用awk命令,如awk 'NR==666{print $0; exit}' your_file。
统计不重复基因数:
- 使用awk和sort命令,如awk '{print $1}' sort u | wc l。
- 或直接使用awk命令,如awk '{a[$1]++} END {print length}'。
找到表达量最高的基因:
- 使用sort和cut命令,如sort k4,4nr your_file | head 1 | cut f1。
- 使用awk命令,如awk 'if{max=$4;gene=$1}} END {print gene}'。
打印最后一列:
- 使用awk命令,如awk '{print $NF}' your_file。
反向互补序列:
- 使用tr和rev命令,如your_string | tr 'agctnAGCTN' 'tcganTCGAN' | rev。
- 使用sed和rev命令,如sed 'y/agctnAGCTN/tcganTCGAN/' | rev。
求取某一列平均值:
- 使用awk命令,如awk '{x+=$4} END {print x/NR}' your_file。
- 对于压缩文件,可以使用zcat和awk组合命令,如zcat your_zipped_file | awk '{x+=$4} END {print x/NR}'。
获取脚本文件路径:
- 在脚本中使用abs_path=$"; pwd)获取当前脚本的绝对路径。
对bed文件排序:
- 使用sort命令对bed文件进行排序,如sort k1,1V k2,2n k3,3n unsort.bed > sort.bed。
这些命令在处理生物信息学数据时非常实用,能够大大提高工作效率。