生信差異分析的腳本
❶ 生信學習筆記(一):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。
這些命令在處理生物信息學數據時非常實用,能夠大大提高工作效率。