原計劃本次內容是按自己思路修改的msia腳本寫一個shell腳本,但是看我推文的大部分都是搜索過來的,看到這篇推文大部分還是打算學這個流程的。所以,本次流程的腳本還是在原misa腳本基礎上修改。以我改的腳本為基礎的shell腳本放在最後一部分,不做介紹。
另外,我不建議用我前面的教程去做科研任務,學習下腳本就該就可以了。
另外,我不建議用我前面的教程去做科研任務,學習下腳本就該就可以了。
另外,我不建議用我前面的教程去做科研任務,學習下腳本就該就可以了。
本次教程不直接提供腳本,但是你看看參考文章部分,可能會有有驚喜。
本教程shell腳本分為四部分:
用到的知識點;基礎msia流程;可接續的shell腳本;以我改的腳本為基礎的shell腳本;致謝;參考文章
知識點一:sh -c "字符串":在腳本裡重新調用一個shell,來解析被當成字符串的命令。
知識點二:
if 語句中
-a 表示邏輯 "與";-o 表示邏輯 "或";! 表示邏輯 "非"; 三種邏輯順序級別由高到底:! > -a > -o
-f 表示文件存在;-d 表示文件夾存在;
知識點三:
子函數書寫形式之一:
function misa_check(){ command}知識點四:
流程的可接續寫法:
參考了我之前的推文 「Trinotate 半自動快速安裝與資料庫配置 」(點擊文章名跳轉)提到的Build_Trinotate_Boilerplate_SQLite_db.pl 腳本。不過這裡是創建了一個文件夾作為標誌文件,如果標誌性文件夾存在,則不運行;如果標誌性文件夾不存在,則運行改程序。
運行結束後刪除標誌性文件。
if [ -d "$1" ]
then
echo "$1 exist!" && sleep 1s && break
else
sh -c "$2" && mkdir -p __tmp_${FASTA}/$1
echo -e "DONE: $2 !"
fiprimer3設置文件見參考文章部分
FASTA=Carya.fastaperl misa.pl ${FASTA}perl p3_in.pl ${FASTA}.misa./primer3-2.3.5/src/primer3_core -default_version=1 -p3_settings_file=my_default_settings.txt.txt -output=${FASTA}.p3out ${FASTA}.p3inperl p3_out.pl ${FASTA}.p3in ${FASTA}.misa腳本需要修改「全局設置」的3個地方:
變量FASTA:輸入數據(改為$1後,用順序傳參可以批量運行)
變量PRIMER3_CORE:可執行程序primer3_core 位置
primer3的配置文件 : my_default_settings.txt
腳本分為三個部分
變量設置部分;
對象檢查部分;
程序運行部分
#!usr/bin/env shset -euo pipefail
FASTA=${FASTA} PRIMER3_CORE=./primer3-2.3.5/src/primer3_core if [ -f "misa.pl" -a -f "p3_in.pl" -a -f "p3_out.pl" ] then echo -e "the misa scripts is ready!\n" && sleep 1selse echo -e "the misa scripts not found!\n" exit 1fi
if [ -f $FASTA ]then echo -e "input file: $FASTA is ready!\n" && sleep 1s sleep 1s else echo "input file: $FASTA not found!" exit 1fi
function misa_check(){ if [ -d "$1" ] then echo "$1 exist!" && sleep 1s && break else sh -c "$2" && mkdir -p __tmp_${FASTA}/$1 echo -e "DONE: $2 !" fi}misa_check misa.pl.ok "perl misa.pl ${FASTA} > /dev/null 2>&1"misa_check p3_in.pl.ok "perl p3_in.pl ${FASTA}.misa"misa_check primer3.ok "./primer3-2.3.5/src/primer3_core -default_version=1 -p3_settings_file=my_default_settings.txt -output=${FASTA}.p3out ${FASTA}.p3in"misa_check p3_out.pl.ok "perl p3_out.pl ${FASTA}.p3out ${FASTA}.misa"rm -rf __tmp_${FASTA}echo "DONE:SSRs searching and primers designing of ${FASTA}!"#!usr/bin/env shset -euo pipefailMISA_PATH=./misaPRIMER3_CORE=primer3_corePRIMER3_SETTING=my_default_settings.txtFASTA=./fasta/test.faRESULT_PATH=./results/
filename=$(basename $FASTA)EVERY_RESULT=$RESULT_PATH/$filenamemkdir -p $RESULT_PATH/$filename
if [ -f "$MISA_PATH/misa.pl" -a -f "$MISA_PATH/p3_in.pl" -a -f "$MISA_PATH/p3_out.pl" -a ] then echo -e "the misa scripts is ready!\n" && sleep 1s sleep 1selse echo -e "the misa scripts not found!\n" exit 1fi
if [ -f $FASTA -f "${PRIMER3_SETTING}"]then echo -e "input file: $FASTA is ready!\n" && sleep 1s sleep 1s else echo "input file: $FASTA not found!" exit 1fi
if [ -f $FASTA -f "${PRIMER3_SETTING}"]then echo -e "input file: $FASTA is ready!\n" && sleep 1s sleep 1s else echo "input file: $FASTA not found!" exit 1fi
if [ -d $EVERY_RESULT ]then echo -e "output path: $EVERY_RESULT is ready!\n" && sleep 1selse echo "output path: $EVERY_RESULT not found!" exit 1fi
function misa_check(){ if [ -d "$1" ] then echo "$1 exist!" && sleep 1s && break else sh -c "$2" && mkdir -p __tmp_${FASTA}/$1 echo -e "DONE: $2 !" fi}
misa_check misa.pl.ok "perl ${MISA_PATH}/misa.pl ${MISA_PATH}/misa.ini $FASTA ${EVERY_RESULT} > /dev/null 2>&1 " misa_check p3_in.pl.ok "perl ${MISA_PATH}/p3_in.pl ${EVERY_RESULT}/${filename}.misa ${FASTA} ${EVERY_RESULT} > primer3_parameters_${filename}.txt"misa_check primer3.ok "$PRIMER3_CORE -default_version=1 -p3_settings_file=${PRIMER3_SETTING} -output=${EVERY_RESULT}/${filename}.p3out ${EVERY_RESULT}/${filename}.p3in"misa_check p3_out.pl.ok "perl ${MISA_PATH}/p3_out.pl ${EVERY_RESULT}/${filename}.p3out ${EVERY_RESULT}/${filename}.misa ${EVERY_RESULT}"rm -rf __temp_${filename}echo "SSRs searching and primers designing of $filename have been completed!"感謝生信技能樹的司徒老師對知識點一和知識點三部分的答疑;感謝閔農的史同學讓我發現了新的問題。
primer3設計引物詳解 http://www.chenlianfu.com/?p=284
使用Misa結合Primer3來批量設計SSR引物 http://www.chenlianfu.com/?p=255
SSR (misa + primer3 ) 設計SSR引物 https://blog.csdn.net/wt141643/article/details/113878893
《Bioinformatics Data Skills》之編寫與運行魯棒的bash腳本 https://www.jianshu.com/p/6bf09e8da73f