**文書の過去の版を表示しています。**
20210624
内部スクリプトの作成
Flashの使い方
Flashとは
ペアエンドリード間の正確なオーバーラップを検出し、それらをつなぎ合わせてリードを拡張するソフトウェアツール(Paired-end read assembly)
Paired-end read assemblyとは
Paired-end read assemblyというのは、MiFishプライマーで増幅されるのはせいぜい200塩基程度だが、HISeqなどで読むと、片側150塩基のペアエンドデータが得られるので、パラメータによりますが20〜30塩基以上重なる領域があれば、ペアエンドをつなげて一本のシングルエンドにしてしまうこと
コマンド
以下のコマンドを実行することでPaired-end read assemblyが実行できる。
flash pair1.fq(.gz) pair2.fq(.gz)
マージされたシーケンスデータは out.extendedFrags.fastq
に出力される。
また-d
オプションを使用することで出力先のディレクトリを指定できる。
flash pair1.fq(.gz) pair2.fq(.gz) -d dir/
gz圧縮されたファイルもそのまま使用することができるが、出力はfastq形式(解凍された状態)になる。
オーバーラップのサイズのパラメータの設定
-M
オプションを使うことでMaxのオーバーラップのサイズ、-m
オプションを使うことでMinのオーバーラップのサイズを指定することができる。
MiFishプライマーで増幅されるのはせいぜい200塩基程度、HISeqなどで読むと、片側150塩基のペアエンドデータが得られることからオーバーラップは100塩基程度と想定される。
今回はMinのオーバーラップのサイズはデフォルトの10塩基、Maxのオーバーラップのサイズは300塩基で指定した。
flash pair1.fq(.gz) pair2.fq(.gz) -d dir/ -M 300
Fastqファイル⇒Fastaファイルへの変換
こちらのページを参照https://kazumaxneo.hatenablog.com/entry/2017/06/19/134451
awk '(NR - 1) % 4 < 2' test.fq | sed 's/@/>/' > test.fa
BLAST検索
変換したFastaファイルをntデータベースとMitoFishデータベースに対してBLAST検索を行う。
ntデータベースは/suikou/db/ncbi/2021-05-24ntv5_formal/nt
に存在。(-db
オプションで左のPathを指定すれば良い)
MitoFishデータベースは自分でダウンロードする必要がある。
inputファイル作成
blastの検索結果から、各リードでトップヒットしたアセッションIDを集計していく。
このアセッションIDに対応する生物種を /suikou/db/ncbi/2021-06-01_taxdump/names.dmp
から取得する。
対応するタクソノミーを /suikou/db/ncbi/2021-06-01_taxdump/nodes.dmp
から取得する。
これらの情報を元にInputファイルを作成。
このスクリプトは吉武先生が作成。
Leafletで4隅の緯度経度を取得
4隅の緯度経度の取得
getbound()メソッド
で取得可能。
var bounds = mymap.getBounds(); var north = bounds._northEast.lat; var south = bounds._southWest.lat; var east = bounds._northEast.lng; var west = bounds._southWest.lng;
地図移動・拡大・縮小のイベントを取得
move
イベントをon
メソッドで取得すればよい。
mymap.on("move", e => { イベント発生時に実行したい関数 });
マップの移動・拡大・縮小時に4隅の緯度経度を取得
mymap.on("move", e => { // console.log("moved"); var bounds = mymap.getBounds(); var north = bounds._northEast.lat; var south = bounds._southWest.lat; var east = bounds._northEast.lng; var west = bounds._southWest.lng; markerList.forEach(marker => { if (south<marker.pos[0] && marker.pos[0]<north){ if (west<marker.pos[1] && marker.pos[1]<east){ console.log(marker.name); } } }) });