次やること

魚種の学名・和名変換スクリプトの修正

今回の方針で、blast→tax変換後の学名は、和名変換リストと完全に一致すれば和名で種名をつける、一部一致の場合は和名で科名をつけることにした。

変換db作成スクリプト(create_scienticif~.sh)では、xlsx2csvを用いてcompleteデータベースを作成する。一列目に和種名、二列目に学名、三列目に科名とする。

create_input.shでは、tmp/~.input2とscientific~complete.csvをawkで比べて、input2の学名を完全に含むscientificがあれば一列目を、一部をを含む場合は三列目を返すように修正する。

metasearch用に作った解析スクリプトのmitosearchへの適用の検討

metasearch用に作った解析スクリプトは研究室サーバ上でpp metagenome~ -c ./で使用できる。 files/m1536/mizobata.hideaki/work/mizowork/databasedevelopment/mitosearchanalysisにm50v251n3.s:/mitosearch_relatedfiles/fastqのmitosearchデータを一部持ってきてあるので、このディレクトリ上でスクリプトを動かす。(今動かしている)

/home/mizobata.hideaki/files/m1536/mizobata.hideaki/work/mizowork/databasedevelopment/mitosearchanalysis/mitosearchrelatedfiles-test/script/createinput.shにおけるblastnのDBをSSU~と/mitosearchrelatedfiles-test/db/completepartialmitogenomes.fa(従来のmitosearch)とで変えた2通りのblast結果をつくり、比較した。 inputファイルの作り方:bash createinput.sh DRR~ (../fastq/内にあるSRAを指定する)

/mitosearch_analysis/comparison内に~.onlyExist~でSSUとmitofishで比べた結果が保存されている。→SSUもいいが、どうしてもmitofishと比べて魚を漏らしている。 今回の最後、SSU~とmitofishDBを結合したDBを作成した。次回はこれでインプットファイルを作ってみて、いい感じになるか確認する。

これでよくなったら、createinput.shを編集し、blast後にデータの整理を行うスクリプトを作成する。→済

・accIDから魚種に変換する。→済

・魚のヒットだけを抽出する。→済

・accession2taxid&names.dumpのDBをSSU~に載っている生物種だけにする→済

//SSU~データベースに載っているアクセッションIDのリストを作成
seqkit fx2tab SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa|awk -F"\t" '{split($1,array,".");print array[1];}'|awk -F"\t" '{if(substr($1,1,2)=="gb"){split($1,array,"|");print array[2];}else{print;}}' > SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.accessionID

//↑のリストに対応するacc2taxidデータベースの抽出
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]&&$1 in list){print;}}' SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.accessionID <(zcat nucl_gb.accession2taxid.gz) > nucl_gb.accession2taxid_SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa

//2つ上で抽出したaccession2taxidリストに対応するnames.dumpを抽出
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$3]=1;}if(FILENAME==ARGV[2]&&$1 in list){print;}}' nucl_gb.accession2taxid_SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa <(zcat names.dmp.sname.path.gz) > names.dmp.sname.path_SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa

//NCBIから消去されたアクセッションIDリストを取得
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]){delete list[$1];}}END{for(i in list){print i;}}' SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.accessionID nucl_gb.accession2taxid_SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa > removed_accessionID.txt

//SSU~データベースをタブ区切りにして保存
seqkit fx2tab SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa > SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.tab

//消去されたアクセッションIDに対応するデータを除去したデータベースの作成
awk -F"\t" '{if(FILENAME==ARGV[1]){list[$1]=1;}if(FILENAME==ARGV[2]){split($1,array,".");if(substr(array[1],1,2)=="gb"){split(array[1],array2,"|");acc=array2[2];}else{acc=array[1];}if(acc in list){}else{print;}}}' removed_accessionID.txt SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.tab|seqkit tab2fx > SSU_LSU_ITS_mito_plastid.maskadapters.desc_mitofishdb.fa.cleaned

・全体ヒットリード数の1%未満の魚種は除外する。→済

・学名を和名に変換し、ダブルクォーテーションで囲むなど、インプットファイルの書式にしてアウトプットする。→済

和名変換DBのダウンロード元:https://www.museum.kagoshima-u.ac.jp/staff/motomura/jaf.html

//xlsxのダウンロード
wget https://www.museum.kagoshima-u.ac.jp/staff/motomura/20221012_JAFList.xlsx

//xlsx2csvのインストール
pip install --user xlsx2csv

//xlsxをcsvに変換し、学名と和名だけを抽出。
xlsx2csv 20221012_JAFList.xlsx |awk -F"," '{if($4!="和名なし")print $4"\t"$5}'|awk -F"\t" '{gsub("\"","",$2);split($2,array," ");print $1"\t"array[1]" "array[2];}' > scientificname2japanesename.csv

cutadapterの検討→済

yoshitake@m50v251n3.s:/home/yoshitake/mitosearchrelatedfiles/script/create_input.sh

に、除去しきれていないアダプター配列除去を行うscriptが含まれている(以下)。

${singularity_path} run ${workdir}/singularity_image/cutadapt.sif cutadapt -a CAAACTAGGATTAGATACCCCACTATG -o ${tmpdir}/${prefix}/out.extendedFrags_trimed.fastq ${tmpdir}/${prefix}/out.extendedFrags.fastq

このスクリプトにより、CAAACTAGGATTAGATACCCCACTATG(MiFishプライマーの逆相補配列)以降の配列が除去される。

しかし、MiFishプライマーは3種以上、各foward,reverseで6種以上の配列が有り、これら全ての配列をcutadapterに登録する必要がある。 →方針転換。Mifishプライマーは無尽蔵にあるので、イルミナのアダプターに注目して、イルミナアダプター以下をカットするようにする!マルチプレックスのインデックスから切るようにしてしまうと全てを検出できないので、イルミナアダプター全てに共通の配列のみを調べておく!

一方で、これによってblast結果が逆に悪くなる可能性もあり、実際のデータとscriptで結果を検討する。→済

Sequence serverの更新

大体済

次回やること:local blast serverのlist.js,upload.jsの修正⇛一応終わった

       .fsa,.fna,.aaとそのgzにも拡張子を対応。←完了

       makeblastdbでエラーが出たらファイルを消さずに保管するようにすれば、どんなファイルがだめだったのかわかるかも?⇛一応完了。いずれは消したほうが良い!?

       sequenceserverやデータベースのPATHをコンフィグファイルにまとめて自由に変更できるようにする⇛完了。./config/default.json内に入っている。

       類似の先行ツールがあるのか調べる⇛軽く調べた感じなさそうだが、どうすれば詳しく調べられるか…

次回

       sequence serverとセットでdocker化したりすれば配布できるかも⇛blastやsequenceserverもまとめて一つにしてしまえば良い。:進行中!

       192.168.251.140.s:yoshitake内でdockerコンテナを動かしている。/sequenceserver/bin/sequenceserverとやると起動する。

       dbのPATHはすでに通してあり、localblastserverも入れてあるが、makeblastdbのときにオプション-parse_seqidsをつけてないと警告が出る。きちんと動いてるか要確認。

       sequenceserverやlocalblastserverは192.168.251.140.s:4567,3000で立ち上がる。外から見たときにアドレスがどうなるかconfigで設定する必要がある?
       
       DockerFileに書き込むべきこと
       
           ・local_blast_serverのgit clone
       
           ・/db直下に/db_nuclと/db_protを作成
       
           ・npm startとsequence serverの起動

       次回、docker内でsequenceserverとlocalblastserverをうまく並行して動かせるように、DockerFileを修正する。⇛だいぶ修正された。
       
       あとはdockerコンテナ内で動かしやすいようにjavascriptを編集。→概ね済
       
       ・config/default.jsonでパスの指定→済
       
       ・route/upload.jsのrenamesyncをcopyfilesync&unlinksyncに書き換え。→済
       
       ・list.jsのmakeblastdbのコマンドがおかしいので書き換え。→済
       
       ・upload/renameごとにsequenceserverをリスタートするスクリプトの追加。→済
       
       ・makblastdbのときにdb/db_nuclディレクトリに移動しないとsequenceserverにパスまで入ってしまう?⇛修正したシェルスクリプト(makeblastdb.sh)をlocalblastserver内に作った!list.jsのnucl部分だけ対応させたので、次回はprotとupload.jsを修正→済

       ・リスタートの機構→済
       

・sequenceserverのリンクのポート番号を柔軟性を持って指定できるようにする。docker run -p 4000:4567となったときに、Dockerfile内でシェルスクリプトに4000をうまく渡す。→完了

・初期データ(sampleH.sapiensmitochondrial.fasta)のmakeblastdbをdocker build時に行ったほうがblastのバージョンがあってて良い→完了

・sampleH.sapiensmitochondrial.fastaが消えるとシーケンスサーバーが止まるので、これを消せないようにlist.jsの認識対象から除外する→完了、あとgithubに同期する必要あり

・command.sh,DockerFile,makeconfig.sh,sampleH.sapiensmitochondrial.fasta,.dockerignoreはオリジナルの編集を施してあるので、どうやってもとのsequenceserverと同期するか考える

localblastserverデータはgithubのlocalblastserver2に保管済み。192.168.251.69のDockerFileでビルドして使う!

  • 次やること.1676965979.txt.gz
  • 最終更新: 2023/02/21 07:52
  • by 133.11.50.163