-
Notifications
You must be signed in to change notification settings - Fork 1
/
metabarcodingtextbook2.ja.tex
executable file
·2336 lines (1930 loc) · 164 KB
/
metabarcodingtextbook2.ja.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass[titlepage,10pt,a4paper,uplatex]{jsbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[uplatex,deluxe]{otf}
\usepackage[noto]{pxchfon}
\setcounter{tocdepth}{3}
\usepackage[round,colon,authoryear]{natbib}
\usepackage[dvipdfmx, hiresbb]{graphicx, xcolor}
\usepackage{grffile}
\usepackage[%
dvipdfm,%
pdfstartview={FitH -32768},% 描画領域の幅に合わせる
bookmarks=true,% しおり付き
bookmarksnumbered=false,% 章や節の番号をふる
bookmarkstype=toc,% 目次情報のファイル.tocを参照
colorlinks=true,% ハイパーリンクを色文字に
linkcolor=black,% link の枠の色 black
citecolor=black,% cite の枠の色 black
urlcolor=black,% url の枠の色 black
pdftitle={生態学のためのメタバーコーディングとDNAバーコーディング:シーケンス解析編},%
pdfauthor={田辺晶史},
pdfkeywords={メタゲノム, 環境DNA, eDNA}%
]{hyperref}
\usepackage{pxjahyper}
\usepackage{amsmath,amssymb}
\AtBeginDocument{
\abovedisplayskip =0.5\abovedisplayskip
\abovedisplayshortskip=0.5\abovedisplayshortskip
\belowdisplayskip =0.5\belowdisplayskip
\belowdisplayshortskip=0.5\belowdisplayshortskip}
\usepackage{newtxtext,newtxmath}
\usepackage{textcomp}
\usepackage[prefernoncjk]{pxcjkcat}
\cjkcategory{sym18,grek}{cjk}
\usepackage{url}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{threeparttable}
\usepackage{longtable}
\usepackage{lineno}
\usepackage{lscape}
\makeatletter
\def\maketitle{%
\begin{center}\includegraphics[pagebox=cropbox,clip]{metabarcodingtextbook2.ja.title.pdf}\end{center}%
\cleardoublepage
\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let\footnote\thanks
\null\vfil
\vskip 60\p@
\begin{center}%
{\LARGE \@title \par}%
\vskip 3em%
{\large
\lineskip .75em
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1.5em
{\large \@date \par}%
\end{center}%
\par
\@thanks\vfil\null
\end{titlepage}%
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\makeatother
\title{生態学のためのメタバーコーディングとDNAバーコーディング:シーケンス解析編}
\author{田辺晶史}
\date{\today}
%\renewcommand{\baselinestretch}{1.2}
\renewcommand{\prepartname}{第}
\renewcommand{\postpartname}{部}
\renewcommand{\prechaptername}{第}
\renewcommand{\postchaptername}{章}
\renewcommand{\presectionname}{}% 第
\renewcommand{\postsectionname}{}% 節
\renewcommand{\contentsname}{目次}
\renewcommand{\listfigurename}{図目次}
\renewcommand{\listtablename}{表目次}
\renewcommand{\refname}{引用文献}
\renewcommand{\bibname}{引用文献}
\renewcommand{\indexname}{索引}
\renewcommand{\figurename}{図}
\renewcommand{\tablename}{表}
\renewcommand{\appendixname}{付録}
\usepackage{float}
\usepackage{framed}
\definecolor{shadecolor}{gray}{0.9}
\newenvironment{content}{\begin{shaded}\vspace{-1em}\raggedright\ttfamily\footnotesize\setlength{\baselineskip}{1.4em}}{\end{shaded}\vspace{-1em}}
\newenvironment{pre}{\begin{leftbar}\raggedright\ttfamily\footnotesize\setlength{\baselineskip}{1.4em}}{\end{leftbar}\vspace{-1em}}
\newenvironment{cmd}{\begin{oframed}\raggedright\ttfamily\footnotesize\setlength{\baselineskip}{1.4em}}{\end{oframed}\vspace{-1em}}
\setlength{\textwidth}{\fullwidth}
\setlength{\evensidemargin}{\oddsidemargin}
\addtolength{\evensidemargin}{-2.5 true mm}
\addtolength{\oddsidemargin}{2.5 true mm}
\makeatletter
\renewcommand{\chapter}{%
\if@openright\cleardoublepage\else\clearpage\fi
\global\@topnum\z@
\secdef\@chapter\@schapter}
\makeatother
\renewcommand{\textbf}[1]{{\bfseries\sffamily#1}}
\bibliographystyle{jecon}
\begin{document}
\thispagestyle{empty}
\maketitle
\cleardoublepage
\pagenumbering{roman}
\tableofcontents
\cleardoublepage
\setlength{\parindent}{0em}
\setlength{\parskip}{1em plus 0.2em}
\parindent=0em
\parskip=1em plus 0.2em
\pagenumbering{arabic}
\chapter*{はじめに}
\addcontentsline{toc}{chapter}{はじめに}
本書はクリエイティブ・コモンズの表示-継承 4.0 国際ライセンスの下で配布します。
このライセンスの下では、原著作者の明示を行う限り、利用者は自由に本書を複製・頒布・展示することができます。
また、原著作者の明示と本ライセンスまたは互換性のあるライセンスの適用を行う限り、本書を改変した二次著作物の作成・配布も自由に行うことができます。
詳しい使用許諾条件を見るには\\
\href{https://creativecommons.org/licenses/by-sa/4.0/}{https://creativecommons.org/licenses/by-sa/4.0/}\\
をチェックするか、クリエイティブ・コモンズに郵便にてお問い合わせ下さい。
住所は Creative Commons, PO Box 1866, Mountain View, CA 94042, USA です。
本書が皆さんの役に立つことができましたら幸いです。
この機会を与えて下さった京都大学生態学研究センターの東樹宏和博士、宇野裕美博士、神戸大学の末次健司博士、佐藤拓哉博士、水産研究・教育機構中央水産研究所の長井敏博士、龍谷大学の山中裕樹博士、東北大学の近藤倫生博士と、本書をお読みの皆さんに感謝します。
\chapter*{凡例}
\addcontentsline{toc}{chapter}{凡例}
本書ではコンピュータに入力するコマンドやその結果を表記する際に以下のように記述しています。
\begin{cmd}
\# コメント\\
{\textgreater} command argument1 {\textbackslash}\\
argument2 {\textbackslash}\\
argument3↓\\
output of command\\
{\textgreater} command argument1 argument2 argument3↓\\
output of command
\end{cmd}
上記の例では\texttt{command argument1 argument2 argument3}という全く同じコマンドを2回実行しており、コマンド実行後に\texttt{output of command}がコマンドにより表示されています。
ここで、\#から改行まではコメントを表しており、入力の必要はありません。
行頭の\texttt{\textgreater}とそれに続くスペースはコマンドの入力の開始を表しており、↓までがコマンドとオプションの入力内容になります。
\texttt{\textgreater}とそれに続くスペースはあくまで入力の開始を示すためのものですので、入力しないで下さい。
↓は入力の終端を表し、ここでEnterキーを押すことを指示する記号です。
↓を入力しないようにして下さい。
なお、コマンドとオプションを見やすくするためにコマンドやオプションの途中に改行を意図的に入れることがありますが、そのような改行の直前には\texttt{\textbackslash}を記してあります。
したがって、\texttt{\textbackslash}が直前にある改行はコマンドの終端や改行入力の指示を意味しません。
また、閲覧環境によってはワードラップ機能により筆者の意図しない改行が入ってしまうことがありますが、これもコマンドの終端や改行入力の指示を意味しませんので注意して下さい。
また、本書では様々なファイルを使用しますが、その内容は以下のように記述しています。
\begin{content}
| 1行目の内容\\
| 2行目の内容
\end{content}
この例では、行頭の\texttt{|}とそれに続くスペースはファイル内の行頭を表しており、ファイル作成の際は入力しないように注意して下さい。
これは、ワードラップ機能による筆者の意図しない改行とファイルに入力すべき改行を区別できるようにするためのものです。
\chapter{ソフトウェアのインストールと環境設定}
本書では、Debian GNU/Linux 11 (bullseye) (以下Debian)、Ubuntu Linux 20.04 LTS (以下Ubuntu)を利用環境として想定しています。
Windows環境の方は、Linuxのどちらかをインストールして環境を整えて下さい。
動作が遅くても構わないなら、Windowsで提供されているWindows Subsystem for LinuxなどのWindows上で動作するUNIX互換環境にインストールすることも可能です。
Linuxのインストールには、インストール用CD・DVD・USBメモリが使えます。
HDDやSSDが1台しかない場合、Windows用のEaseUS Partition Masterなどのパーティションリサイズが可能なソフトを使ったり、インストール用CD・DVD・USBメモリ内に用意されている機能を使ってWindows用の領域を縮小して容量を空ける必要があります。
HDDまたはSSDを追加してスペースを確保していただいても良いでしょう。
USBメモリやUSB接続HDDにインストールすることも可能です。
内蔵のHDD・SSD以外から起動するには、BIOS・UEFI上で設定が必要な場合があります。
お使いのPC、またはマザーボードのマニュアルをご参照下さい。
Ubuntuは見た目・操作性の異なる何種類かがありますが、標準のUbuntuよりもXubuntuというのがおすすめです。
Macでも、これらのOSがインストールできます。
空きディスクがない場合はディスクユーティリティを用いてLinuxインストール用のスペースを空ける必要があります。
ディスクユーティリティでHDD・SSDをクリックして、macOSが使用している領域を縮小して下さい。
そしてrEFItやrEFIndというソフトをインストールして起動時に起動デバイス・起動OS選択メニューが出るようにします(インストール後に2回の再起動が必要です)。
そうすると、Linuxインストール用CD・DVD・USBメモリから起動できるようになりますので、そこから起動してインストールして下さい。
くれぐれも既存のOS用領域を誤って削除しないようにご注意下さい。
空いているディスク領域がある場合はディスクユーティリティでの操作は必要ありません。
rEFItやrEFIndを導入してインストールCD・DVD・USBメモリから起動し、空いている領域にLinuxをインストールしていただければ結構です。
またMacでも、インストール先をUSBメモリやUSB接続HDDにすることができます。
HomebrewやMacPortsのインストールされているMacであれば、macOS上にインストールすることも可能ですが、Linuxに比べると少し遅くなります。
なお、本書は64bit対応のIntel・AMD製CPU搭載機しか想定していません。
それ以外の環境でも動作するでしょうが、自力で解決していただく必要があります。
導入するLinuxは64bit版にして下さい。
32bit版では大容量メモリを活かすことができません。
\section{LinuxへのClaidentおよび同定用データベースと必要なプログラムのインストール}
以下のコマンドをターミナルかコンソールで実行して下さい。
必要なものが全てインストールされます。
\texttt{sudo}を利用可能なユーザーである必要があります。
途中、\texttt{sudo}の実行時に何回かパスワードを質問されますので、入力して下さい。
\begin{cmd}
{\textgreater} mkdir -p {\textasciitilde}/workingdirectory↓\\
{\textgreater} cd {\textasciitilde}/workingdirectory↓\\
{\textgreater} wget https://www.claident.org/installClaident{\textunderscore}Debian.sh↓\\
{\textgreater} sh installClaident{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installOptions{\textunderscore}Debian.sh↓\\
{\textgreater} sh installOptions{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installDB{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} cd ..↓\\
{\textgreater} rm -r workingdirectory↓
\end{cmd}
標準のインストール先は\texttt{/usr/local}以下になります。
また、\texttt{Permission denied}と言われた直後にパスワードを尋ねられたりしますが、パスワードに答えることで進行する場合は問題ありません。
これは、最初は\texttt{sudo}なしにユーザー権限でインストールを試み、うまく行かなかった場合(ここでエラーになる)に初めて\texttt{sudo}を使って管理者権限でインストールしようとする(ここでパスワードを尋ねられる)ためです。
もしも外部ネットワークへのアクセスにプロキシを設定する必要がある場合は、上記のコマンド実行の前に以下のコマンドを実行して環境変数を設定しておいて下さい。
これにより、外部へはプロキシを経由してアクセスが行われるようになります。
\begin{cmd}
{\textgreater} export http{\textunderscore}proxy=http://server.address:portnumber↓\\
{\textgreater} export https{\textunderscore}proxy=\$http{\textunderscore}proxy↓\\
{\textgreater} export ftp{\textunderscore}proxy=\$http{\textunderscore}proxy↓\\
{\textgreater} export all{\textunderscore}proxy=\$http{\textunderscore}proxy↓
\end{cmd}
なお、ユーザー名とパスワードを用いた認証が必要なプロキシでは、以下のようにして下さい。
\begin{cmd}
{\textgreater} export http{\textunderscore}proxy=http://username:password@server.address:portnumber↓\\
{\textgreater} export https{\textunderscore}proxy=\$http{\textunderscore}proxy↓\\
{\textgreater} export ftp{\textunderscore}proxy=\$http{\textunderscore}proxy↓\\
{\textgreater} export all{\textunderscore}proxy=\$http{\textunderscore}proxy↓
\end{cmd}
\subsection{バージョンアップの場合には}
全てのプログラムとデータベースを更新する場合は、インストールと同様の手順でコマンドを実行して下さい。
この手順では、Claident、Metaxa2、ITSxが\texttt{/usr/local}以下へインストールされ、\texttt{/usr/local/share/claident}以下へNCBI BLAST+と同定用BLASTデータベース・Taxonomyデータベース、その他の依存プログラム等がインストールされます。
NCBI BLAST+やBLASTデータベースが別途システムにインストールされている場合でも、Claidentが利用するBLAST+やデータベースとは共存可能です。
なお、以下のコマンドを利用することで、一部の更新を無効化して他のものだけ更新することができます。
\begin{cmd}
{\textgreater} mkdir -p {\textasciitilde}/workingdirectory↓\\
{\textgreater} cd {\textasciitilde}/workingdirectory↓\\
\# Claidentの更新を無効化\\
{\textgreater} touch .claident↓\\
\# Swarmの更新を無効化\\
{\textgreater} touch .swarm↓\\
\# VSEARCHの更新を無効化\\
{\textgreater} touch .vsearch↓\\
\# VSEARCH5Dの更新を無効化\\
{\textgreater} touch .vsearch5d↓\\
\# NCBI BLAST+の更新を無効化\\
{\textgreater} touch .blast↓\\
\# RとDADA2の更新を無効化\\
{\textgreater} touch .dada2↓\\
\# プログラムを更新\\
{\textgreater} wget https://www.claident.org/installClaident{\textunderscore}Debian.sh↓\\
{\textgreater} sh installClaident{\textunderscore}Debian.sh↓\\
\# HMMerの更新を無効化\\
{\textgreater} touch .hmmer↓\\
\# MAFFTの更新を無効化\\
{\textgreater} touch .mafft↓\\
\# Metaxa2の更新を無効化\\
{\textgreater} touch .metaxa↓\\
\# ITSxの更新を無効化\\
{\textgreater} touch .itsx↓\\
\# オプションプログラムを更新\\
{\textgreater} wget https://www.claident.org/installOptions{\textunderscore}Debian.sh↓\\
{\textgreater} sh installOptions{\textunderscore}Debian.sh↓\\
\# 同定用Taxonomyデータベースの更新を無効化\\
{\textgreater} touch .taxdb↓\\
\# 同定用BLASTデータベースの更新を無効化\\
{\textgreater} touch .blastdb↓\\
\# 同定用データベースを更新\\
{\textgreater} wget https://www.claident.org/installDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installDB{\textunderscore}Debian.sh↓\\
\# キメラ検出用データベース「rdp」の更新を無効化\\
{\textgreater} touch .rdp↓\\
\# キメラ検出用データベース「DAIRYdb」の更新を無効化\\
{\textgreater} touch .dairydb↓\\
\# キメラ検出用データベース「silva」の更新を無効化\\
{\textgreater} touch .silva↓\\
\# キメラ検出用データベース「unite」の更新を無効化\\
{\textgreater} touch .unite↓\\
\# キメラ検出用データベース「Claident Databases for UCHIME」の更新を無効化\\
{\textgreater} touch .cdu↓\\
\# キメラ検出用データベースを更新\\
{\textgreater} wget https://www.claident.org/installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} cd ..↓\\
{\textgreater} rm -r workingdirectory↓
\end{cmd}
\subsection{標準以外の場所にインストールする}
前述の方法でインストールすると、標準では\texttt{/usr/local}以下へインストールされます。
コマンドは\texttt{/usr/local/bin}にインストールされます。
他のプログラム(特に旧バージョン)との共存を図りたい場合は、インストール場所を変更して、使用する場合に環境変数PATHを変更するのがいいでしょう。
以下のコマンドで標準とは異なる場所へインストールすることができます。
\begin{cmd}
{\textgreater} mkdir -p {\textasciitilde}/workingdirectory↓\\
{\textgreater} cd {\textasciitilde}/workingdirectory↓\\
{\textgreater} export PREFIX=インストール先にしたい場所↓\\
{\textgreater} wget https://www.claident.org/installClaident{\textunderscore}Debian.sh↓\\
{\textgreater} sh installClaident{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installOptions{\textunderscore}Debian.sh↓\\
{\textgreater} sh installOptions{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installDB{\textunderscore}Debian.sh↓\\
{\textgreater} wget https://www.claident.org/installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} sh installUCHIMEDB{\textunderscore}Debian.sh↓\\
{\textgreater} cd ..↓\\
{\textgreater} rm -r workingdirectory↓
\end{cmd}
なお、使用する際には、以下のコマンドを実行する必要があります。
\begin{cmd}
{\textgreater} export PATH=インストールした場所/bin:\$PATH↓
\end{cmd}
毎回上記コマンドを実行するのが面倒な場合は、\texttt{{\textasciitilde}/.bash{\textunderscore}profile}や\texttt{{\textasciitilde}/.bashrc}の末尾に上記コマンドを記述しておけばいいでしょう。
\subsection{複数のバージョンを共存させる}
Claidentは標準のインストール先にインストールすると以前のバージョンがあっても上書きされますが、前述の通り標準以外の場所にインストールすれば複数のバージョンを共存させることができます。
ただし、ユーザーのホームディレクトリ(\texttt{/home/ユーザー名})の直下もしくは\texttt{/etc/claident}に作成される設定ファイル\texttt{.claident}は共存できませんので、本設定ファイルは使用するバージョンに合わせて切り替える必要があります。
ユーザーのホームディレクトリの設定ファイルが優先的に読み込まれますので、複数バージョンを共存させる場合はそれぞれ別のユーザーを用意してそのユーザーのホームディレクトリ以下にインストールしていただければ、ユーザーを切り替えることでバージョンを切り替えることができます。
\chapter{高スループットシーケンサーによる大量サンプルの塩基配列決定}
ここでは、Illumina社製シーケンサーによるデュアルインデックス塩基配列決定法について簡単に説明します。
Illumina社のHiSeq、MiSeq、NovaSeq等は、いずれも400bp以上の長さの塩基配列解読能力があり、メタバーコーディング、DNAバーコーディングに適しています。
ただし、300bp以上の場合、2方向から解読したもの(ペアエンドリード)を連結する必要があります。
したがって、両側の配列間でオーバーラップができるよう、できれば400bp程度、長くても500bp程度のアンプリコンができるようにPCRしなくてはなりません。
シーケンスには、両側合計で300~600塩基解読できる試薬を利用しますが、両側の配分は自由に決定できますので、300塩基解読できる試薬で片側300塩基解読することも可能ですし、両側150塩基ずつ解読することも可能です。
高スループットシーケンサーは非常に多くの塩基配列を解読できますが、かつてはランニングコストが高く、1度に多数のサンプル由来配列を由来サンプルがわかるように解読することができませんでした。
しかし、ランニングコストはかなり下がってきた上、塩基配列に由来サンプル識別用の数塩基の「MID (multiplex identifier)タグ」を予め付加して解読することで、多数のサンプルの塩基配列を混合(multiplex)して1度に解読できるようになりました。
これにより、1サンプル当たりのコストも劇的に低下しています。
MIDタグをバーコードと呼ぶことも多いですが、DNAバーコーディングでは利用する塩基配列をバーコードと呼び、紛らわしいのでここでは単にタグに統一します。
なお、インデックス配列と呼ぶ場合もあります。
他の文書を読まれる場合は注意して下さい。
なお、後の解析では、PCRの際に生成されるキメラ配列や読み間違いの多い配列が多様性の把握の際に問題となりますが、PCRのレプリケートを確保して塩基配列決定を行うことで、全レプリケートで共通して見られる配列のみをキメラでなく読み間違いも少ない配列と考えることもできます。
これは、キメラのできる配列の組み合わせとキメラ配列の「継ぎ目」は多数あるが、キメラでない配列は非常に限られていてしかもPCR前からあって観測される数がキメラより多くなりやすいため、真の配列は全てのレプリケートで検出されやすいが、キメラはそうではないこと、同様に読み間違いのパターンも無数にあるが真の配列はただ一通りで真の配列が全レプリケートで検出されやすいことを利用するものです。
ソフトウェアによる処理だけではキメラや読み間違いを十分に除去できませんが、この方法を併用することで検出効率を改善できると期待できます。
キメラと読み間違いの検出後、レプリケートは足し合わせて解析することができます。
ただし、この方法では、各レプリケートに十分なリード数が必要となりますので、実際に適用することはあまりないかもしれません。
また、キメラのできる配列の組み合わせとキメラ配列の「継ぎ目」には再現性があり、全レプリケートで同一のキメラ配列が検出されることもあり得るため、レプリケート数も増やす必要があるかもしれません。
\section{タグ・アダプター配列付きプライマーを用いたPCR}
タグを配列に付加するには、タグの付いたプライマーを用いてPCRを行うのが最も簡単で確実です。
PCR方式では初期投資としてタグ付きプライマーを購入する必要があり、タグの種類を多くしようとするとこれに最大数十万円を要します。
次世代シーケンサー用のサンプル調製キットでは、予めサンプル内のDNA末端に特定のアダプター配列のDNAが付加されていることを前提としています。
そこで、以下のような配列のプライマーを用いてPCRを行います。
なお、鋳型DNAはメタゲノムでも単一のゲノムでもどちらでも構いません。
\begin{pre}
5' ― [アダプター配列] ― [タグ配列] ― [本来のプライマー配列] ― 3'
\end{pre}
両側にタグを付けた場合は、増幅産物は以下のような形になります。
\begin{pre}
5' ― [アダプター配列F] ― [タグ配列F] ― [本来のプライマー配列F] ― [解読したい配列] ― [本来のプライマー配列R逆相補] ― [タグ配列R逆相補] ― [アダプター配列R逆相補] ― 3'
\end{pre}
片側から解読する場合、読み始めがタグ配列Fで、本来のプライマー配列F、解読したい配列の順で読むことになります。
どのようなタグを使うかは、\citet{Hamady2008}のSupplementなど、既存の文献を見て決めて下さい。
ただし、タグが必要なのは解読開始側だけですので、片側からしか読まない場合には反対側はタグのないプライマーを使います。
両側から読む場合でも、サンプル数が少ない場合は片側だけでいいのですが、解読ミスのためフォワード配列とリバース配列の対応がおかしくなることがあり、片側しかタグがないとそれが検出できませんので両側に付けることを推奨します。
このようなプライマーを用いてPCRを行うと、プライマーは鋳型DNAにY字型にアニールし、アダプター配列とタグ配列が端に付加された増幅産物ができます。
この増幅産物をできるだけ等濃度で混合してシーケンスサンプルを調製し、シーケンサーで塩基配列を解読します。
シーケンスサンプル調整ステップ以降はメーカーから提供されている純正キットとそのプロトコルに従って下さい。
メーカー提供のプロトコルにはいくつか改善すべき点があり、改善によってデータの品質が向上することもあるようです。
詳しくはその筋の方にお問い合わせ下さい。
濃度の測定は、Nanodropなどの分光光度計では十分な精度で行うことができません。
そのため、最低でもThermoFisher (旧Invitrogen)のQubitなどで測定して下さい。
シーケンスサンプルのアダプター配列をターゲットとして定量PCRによって測定するタイプのキットが最も高精度ですが、これはランニングコストが非常に高いためサンプルが多い場合は適用できないと思います。
なお、プライマー配列もサンプルを区別する用途に使うことができますので、例えば植物の\textit{rbcL}と\textit{matK}などの複数領域配列を同時に各サンプルから得ることもできます。
もちろんこれらは塩基配列データを見ることでも区別できます。
PCRでは、伸長時間を長めに取り、サイクル数を少なくするようにして下さい。
シーケンスサンプル調製に必要なDNA量は多くありませんので、サイクル数をそれほど多くする必要はないのです。
サイクル数が多く伸長時間が短いほど、「途中まで合成された産物」が生成され、それが次のサイクルで別の鋳型に基いて伸長する、ということが多くなります。
このようにして生成されたDNAはキメラDNAと呼ばれ、「存在しない新奇生物の発見」や「多様性の過大評価」に繋がります。
Finnzymes社のPhusionや東洋紡のKODなどの高正確性DNAポリメラーゼを用いるのも対策として有効です。
キメラDNAの生成を抑制するためには、熱変性後にアニーリング温度へと下げるときの速度を下げることがよいという報告があります\citep{Stevens2013}ので、もし温度の変化速度を設定可能なサーマルサイクラーであれば温度変化速度を下げるようにして下さい。
後述するプログラムによる処理によって除去することもできますが、完全ではありませんので生成を抑えるのに越したことはありません。
増幅の難しい鋳型の場合、夾雑物があっても増えやすくする島津製作所のAmpdirectなどの試薬を用いてPCRを行ったり、そもそもDNAを抽出する段階でホモジナイザーやビーズ破砕機を用いて細胞を破砕した上でDNAを抽出することで収量を増やすなどの対策が必要になります。
破砕の前にディープフリーザーで凍結して、凍結した状態で破砕するのも効果的です。
ポリフェノール類や多糖類を除去するキットを用いる必要がある場合もあるかもしれません。
この辺りの課題は従来の方法と違いはありません。
タグ・アダプターの付いていないプライマーでは増幅できるがタグ・アダプター付きのプライマーだとうまくいかないことがありますが、その場合はタグ・アダプターなしのプライマーでPCRした増幅産物を用意し、プライマー除去・精製して(ExoSAP-ITなどでいいでしょう)から、タグ・アダプターの付いたプライマーで数サイクルのPCRを行い、増幅産物にタグ・アダプターを付加するというやり方でうまくいくことがあります。
\subsection{中間アダプターを用いたコスト抑制方法}\label{subsection:interimadapter}
タグ・アダプター配列付きプライマーは非常に長いため、高価になりがちです。
しかも、増幅するプライマーセットごとに用意しなくてはならず本数も多くなってしまいます。
そこで、PCRを2回行うことで、1組のタグ・アダプター付きプライマーを使い回す方法を紹介します。
まず、1回目は以下のプライマーセットを用いてPCRを行います。
\begin{pre}
5' ― [中間アダプター配列] ― [本来のプライマー配列] ― 3'
\end{pre}
これで末端に中間アダプター配列の付いた増幅産物ができます。
中間アダプター配列はシーケンスに必要なアダプター配列と異なるもので、非特異的増幅を起こさないものであれば何でも構いません。
そういう配列は各種知られていますので、既に使用されているものを探してきて下さい。
そして、この増幅産物を鋳型として以下のプライマーセットでさらにPCRを行います。
\begin{pre}
5' ― [本来のアダプター配列] ― [タグ配列] ― [中間アダプター配列] ― 3'
\end{pre}
このような2段階PCRによって、1組のタグ・アダプター付きプライマーを使い回すことができるようになりますので、コスト削減になります。
ただし、PCRを繰り返すため、PCRによる人工的な置換やPCRバイアスが増加しますし、解読できる長さも減少します。
その点には注意が必要です。
なお、増幅産物は以下のような形になります。
\begin{pre}
5' ― [本来のアダプター配列F] ― [タグ配列F] ― [中間アダプター配列F] ― [本来のプライマー配列F] ― [解読したい配列] ― [本来のプライマー配列R逆相補] ― [中間アダプター配列R逆相補] ― [タグ配列R逆相補] ― [本来のアダプター配列R逆相補] ― 3'
\end{pre}
IlluminaのNextera XT Index Kitを用いたmultiplex法\citep{Illumina2013}はこれをキットで実現しているものです。
この方法で2つのタグ配列と両側からの解読を行う場合、最初に中間アダプター配列Fの後ろから、つまり本来のプライマー配列Fから読み始め、解読したい配列方向へ解読します。
次に、中間アダプター配列R逆相補の後ろからタグ配列R逆相補を解読します。
3番目にアダプター配列Fの後ろからタグ配列Fを解読し、方向を反転させて、最後に中間アダプター配列Rの後ろから本来のプライマー配列R、および解読したい配列(逆ストランド)を解読します。
それぞれがR1、R2、R3、R4を含むファイル名で保存されます。
R1、R2、R3は同じstrandで、R4だけ逆strandになります。
R2はタグ配列R逆相補で、R3がタグ配列Fです。
ややこしいので注意が必要です。
なお、上記のキットではR1とR4のシーケンスプライマーは中間アダプター配列をターゲットとするものになっているため、本来のプライマー配列がR1とR4のデータ配列に入ってしまい、解読したい領域が500bp程度ある場合には長さが不足する可能性がありますが、本来のプライマーをシーケンスプライマーとして利用することでデータ配列にプライマー部分が入らないようすることも可能です。
ただし、この方法では後述するNの挿入によるシーケンス品質の改善ができません。
\subsection{Nの挿入によるシーケンス品質の改善}
Illuminaでは、フローセル上の蛍光を光学センサーで読み取っていますが、メタゲノムを鋳型としたユニバーサルプライマーでのPCR増幅産物は配列が似ているため、フローセル上でDNAが近接していると区別が困難になります。
また、読み始め(特に最初の12塩基)に「ほとんどの配列がAであるため発光点が少なく真っ暗になる」と、異常と判断して解読を停止してしまうことがあるとのことです。
ゲノムショットガンやRNA-seqでは近接しているDNAが非常によく似ている可能性がずっと低いために区別できる上、真っ暗になることもないのですが、同じ遺伝子座の増幅産物(しかも読み始めがほとんど変異のないプライマー領域)だとまずいわけです。
そこで、本来のプライマー配列と中間アダプター配列の間にわざと\texttt{NNNNNN}を入れてしまうことにします。
そうすると、この部分の解読時に近接したDNAも区別することができ、真っ暗になることもないため、シーケンス品質が改善するとのことです\citep{Nelson2014}。
MiSeqやHiSeqをお使いの方はお試し下さい。
さらに、この長さをサンプルごとに変えてしまうと、解読するゲノム上の位置がずれるため、全く同じ配列が隣接していても区別できるようになるためにシーケンス品質が改善するそうです\citep{Fadrosh2014}。
これらの対処法により、PhiX標準配列を混ぜる量を減らすことができるので、一度に得られるデータ量も増加するはずです。
\chapter{塩基配列データの前処理}
GSシリーズシーケンサーやIon PGMでは、最終出力として\texttt{*.sff}というファイルが得られます。
Illumina MiSeqの場合は\texttt{*.fastq}となります。
ここでは、これらのファイルに含まれる配列をサンプルごとに分別(demultiplex)して別々のファイルに分けた上で、低品質の配列の除去を行う方法を説明します。
どの機種でもメーカーのプログラムの機能によるdemultiplexは品質の値を見ていなかったりするため、Claidentのコマンド\texttt{clsplitseq}を利用してdemultiplexを行います。
以下ではコマンドは全てターミナルかコンソールで実行して下さい。
基本的なターミナルの使い方の知識は持っているという前提で話を進めます。
ターミナルの操作に慣れていない方は、最低でも付録\ref{chapter:terminalcommands}の内容を理解できるようになっておいて下さい。
\section{SRA/DRA/ERAの登録データやdemultiplex済FASTQの変換}
Claidentでは、配列の名前として\texttt{配列ID{\textunderscore}{\textunderscore}ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID}を、また拡張子を除いた入力ファイル名として\texttt{ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID}を仮定しています。
そのため、SRA/DRA/ERAの登録データやdemultiplex済FASTQをそのまま用いることができません。
そこで、\texttt{climportfastq}というコマンドを用いることで、上記の仮定を満たす入力ファイルに変換することができます。
ペアエンドの場合は変換する前に第\ref{subsection:concatenatingpairedend}節の内容に従ってフィルタリングと連結を先に行っておきます。
変換するには、以下のような入力ファイルを用意します。
\begin{content}
| 配列ファイル名1 ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID\\
| 配列ファイル名2 ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID\\
| 配列ファイル名3 ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID
\end{content}
ランIDは適当にでっち上げていただいて構いません。
プライマーIDは同じプライマーを用いたファイル間で同じになるようにすれば何でも構いません。
タグIDはファイルごとに異なるものにします。
配列ファイル名と同じでも構いません。
上記の入力ファイルが用意できたら、以下のように\texttt{climportfastq}を実行することで、出力フォルダに変換後のファイルが作成されます。
\begin{cmd}
{\textgreater} climportfastq {\textbackslash}\\
{-}{-}numthreads=CPU数 {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力フォルダ↓
\end{cmd}
変換後、シングルエンドデータであれば第\ref{subsection:qualityfilteringfor454}節に従って低品質配列の除去を行って下さい。
\section{GSシリーズシーケンサーやIon PGMの場合}
\subsection{SFFからFASTQの生成}
まずはSFFファイルからFASTQ形式のファイルを作成します。
\begin{cmd}
{\textgreater} sff{\textunderscore}extract -c SFFファイル名↓
\end{cmd}
\texttt{-c}オプションを付けることで、読み始めの\texttt{TCAG}が除去されてファイルが作成されます。
もし後述するタグ配列の冒頭に\texttt{TCAG}を付けている場合には、このオプションは使用しないで下さい。
SFFファイルが\texttt{HOGEHOGE.sff}だとすると、\texttt{HOGEHOGE.fastq}というFASTQ形式のファイルとして塩基配列は保存されます。
\texttt{HOGEHOGE.xml}というファイルもできますが、ここでは使いませんので削除して構いません。
出力される塩基配列はタグ配列で始まり、解読開始側プライマー配列、解読対象の塩基配列データと続き、反対側プライマー配列(の逆相補配列)で終わります。
ただし、全域が読めるとは限りませんので、途中で読み終わっている配列も含んでいます。
なお、ここでは\texttt{sff{\textunderscore}extract}コマンドを用いていますが、読み始めの\texttt{TCAG}を除いた塩基配列のFASTQ形式ファイルが得られれば、シーケンサーメーカーから提供される純正のコマンドを使っていただいても構いません。
逆に後述する\texttt{clsplitseq}に与えるタグ配列の冒頭に\texttt{TCAG}を追加していただいても構いませんが、\texttt{TCAG}部分の品質値まで厳格にチェックされます。
\subsection{塩基配列をサンプルごとに分ける}
次に、タグ配列とプライマー配列に基づいてサンプルごとに配列を別々のファイルに分離(demultiplex)します。
事前に以下のようなタグ配列を記したFASTAファイル、解読開始側プライマー配列を記したFASTAファイルがそれぞれ必要です。
\begin{content}
| {\textgreater}タグID\\
| タグ配列\\
| {\textgreater}examplesample1\\
| ACGTACGT
\end{content}
\begin{content}
| {\textgreater}プライマーID\\
| プライマー配列\\
| {\textgreater}exampleprimer1\\
| ACGTACGTACGTACGTACGT
\end{content}
タグ配列には縮重コード表記は使えませんが、プライマー配列には縮重コード表記を利用可能です。
タグ配列、プライマー配列ともに複数の配列を記述しておくことも可能です。
なお、\ref{subsection:interimadapter}節で説明したような中間アダプターを用いたりした場合は、プライマー配列ファイルは以下のような内容で作成して下さい。
\begin{content}
| {\textgreater}プライマーID\\
| 中間アダプター配列プライマー配列\\
| {\textgreater}exampleprimer1\\
| TGATACTCGATACGTACGTACGTACGTACGTACGT
\end{content}
つまり、プライマー配列ファイルには、タグ配列と解読対象の配列の間にある配列を記述して下さい。
これらのファイルが用意できたら、以下のコマンドで塩基配列をサンプルごとに別ファイルへ分割します。
\begin{cmd}
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力フォルダ↓
\end{cmd}
ランIDはランごとに異なるように適当に決めて指定して下さい。
通常はシーケンサーのメーカーが適当に付けているはずなので、それを記述します。
ファイル名やファイル中の配列名などに含まれていますが、メーカーによってルールが異なりプログラムから自動的に取得することが面倒なため、ユーザー側で指定する必要があります。
\texttt{{-}{-}minqualtag}はタグ配列部分の品質値の下限を指定するオプションです。
この値より品質値が低い塩基がタグ配列に含まれる場合は、その配列は出力されません。
品質値27という値は、Roche GSシリーズシーケンサーの読み取りミスをクラスタリング・コンセンサス配列作成によって除去するのに適した値です\citep{Kunin2010}。
他機種では別の値の方が良い可能性があります。
品質値30がかなり広く使用されていますので、30にしてもいいでしょう。
タグを利用したマルチプレックスシーケンスを行っていない場合、\texttt{{-}{-}tagfile}オプションが不要となりますが、単に省略しただけだとこの後のClaidentのコマンドで処理可能な配列ファイルが作成されません。
そのため、ダミーでも構いませんので\texttt{{-}{-}indexname=タグID}というオプションを付加して実行して下さい。
出力される配列からは、タグとプライマーの配列部分は除去されています。
タグ配列部分の認識は厳密一致です。
1塩基の読み間違いを許すなどのオプションはありません。
プライマー配列の認識は、Needleman-Wunschアルゴリズムを用いたアライメントを行い、14\%まで不一致を許容します(閾値は変更可能)。
出力フォルダには、\texttt{ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID.fastq.gz}という名前の塩基配列ファイルが保存されます。
\texttt{clsplitseq}では並列処理によって多数のCPUを活かした高速化が可能です。
CPUが4個の場合、\texttt{{-}{-}numthreads}オプションに4を指定すれば最も高速に処理ができるはずです。
ただし、OSやディスクへの書き込み速度がボトルネックになって思うように速度が出ないこともあります。
なお、出力ファイルはGZIPで圧縮されていますので、GZIP圧縮FASTQに対応していないプログラムで読み込むには\texttt{gzip -d}などで圧縮を解除しておく必要があります。
これ以降のClaidentのコマンドは対応しているためそのまま使えます。
DDBJ Sequence Read Archive (DRA)など、次世代シーケンサーの生データを登録するサイトには、ここで生成されたGZIP圧縮FASTQを登録します。
\subsubsection{数ラン分に分けて大量サンプルをシーケンスした場合}
\texttt{clsplitseq}による処理を複数回行います。
ただし、\texttt{clsplitseq}は出力先フォルダが既に存在しているとエラーになり処理できません。
そこで、2回目以降は\texttt{{-}{-}append}オプションを付けて実行します。
例えば以下のようにして下さい。
\begin{cmd}
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル1 {\textbackslash}\\
出力フォルダ↓\\
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
{-}{-}append {\textbackslash}\\
入力ファイル2 {\textbackslash}\\
出力フォルダ↓
\end{cmd}
\subsubsection{異なる長さのタグが混在している場合について}
\texttt{clsplitseq}では、タグの長さは全て同一であることを仮定しています。
その仮定を使うことで処理を高速化しています。
そのため、タグの長さが不統一の場合は、長さの異なるタグごとに別々のFASTAファイルを準備し、以下のようにして複数回\texttt{clcplitseq}による処理を行って下さい。
\begin{cmd}
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル1 {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力フォルダ↓\\
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル2 {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
{-}{-}append {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力フォルダ↓
\end{cmd}
\subsubsection{リバースプライマー配列の認識と除去}
これまでの手順では、リバースプライマー配列がアニールする部分の配列は除去されていません。
これもできれば除去した方が良いでしょう。
それには、まず以下のような内容のリバースプライマー配列のファイルを用意します。
\begin{content}
| {\textgreater}プライマーID\\
| プライマー配列\\
| {\textgreater}exampleprimer1\\
| TCAGTCAGTCAGTCAGTCAG
\end{content}
配列は複数記述できますが、フォワードプライマーと1対1対応していることを仮定していますので注意して下さい。
フォワードプライマーと配列数が異なるとエラーになります。
配列順序も対応していることを仮定していますので、リバースプライマーは同一でもフォワードプライマーが異なるサンプルがある場合、それぞれ異なるプライマーIDを割り当てて両方記述する必要があります。
ファイルが用意できたら、\texttt{clsplitseq}を以下のように実行して下さい。
\begin{cmd}
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}tagfile=タグ配列ファイル {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}reverseprimerfile=リバースプライマー配列ファイル {\textbackslash}\\
{-}{-}reversecomplement {\textbackslash}\\
{-}{-}minqualtag=27 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力フォルダ↓
\end{cmd}
このコマンドでは前述のコマンドの処理に加えて、さらにリバースプライマー逆相補配列をNeedleman-Wunschアルゴリズムを用いたアライメントによって15\%まで不一致を許して探します。
該当する配列が見つかったら、該当箇所の先頭以降を元の配列から除去します。
該当する配列が見つからなかった場合は、他の条件を満たしていればそのまま出力ファイルに保存されます。
ただし、読み間違いなどによってリバースプライマーの付く部位以降が除去しきれないこともあります。
なお、\texttt{{-}{-}needreverseprimer}というオプションを追加することで、リバースプライマー逆相補配列に一致する部位が見つからなかった配列は出力されなくなります。
最後まで解読しきれた配列だけにしたい場合はこのオプションを付けて実行してみて下さい。
\subsection{低品質配列の除去}\label{subsection:qualityfilteringfor454}
FASTQ形式の塩基配列には、解読時のデータから推定された塩基の品質値がありますので、その情報に基づいて質の低い配列をこの時点である程度除去してしまうことができます。
以下のように\texttt{clfilterseq}を実行して下さい。
\begin{cmd}
{\textgreater} clfilterseq {\textbackslash}\\
{-}{-}minqual=27 {\textbackslash}\\
{-}{-}minquallen=3 {\textbackslash}\\
{-}{-}minlen=350 {\textbackslash}\\
{-}{-}maxlen=400 {\textbackslash}\\
{-}{-}maxplowqual=0.1 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力ファイル↓
\end{cmd}
ここで、\texttt{{-}{-}minqual}は品質値の下限値で、終末端側からこの値以上の品質値が\texttt{{-}{-}minquallen}の値以上に連続して出現するまで配列を削っていきます。
その上で、\texttt{{-}{-}minlen}の長さ未満の配列は除去し、\texttt{{-}{-}maxlen}より長い場合はこの値になるまで終末端を削ります。
残った配列において、\texttt{{-}{-}minqual}未満の配列が\texttt{{-}{-}maxplowqual}の割合より多い場合はその配列は除去します。
通常は出力はファイルになりますが、\texttt{{-}{-}output=folder}というオプションを与えた場合はフォルダを作成して入力ファイルと同じ名前のファイルに出力します。
既存のフォルダに出力する場合は\texttt{{-}{-}append}を追加して下さい。
\texttt{clsplitseq}の出力フォルダ内の全配列ファイルに対して同じ処理を行う場合は、以下のようなコマンドを実行して下さい。
\begin{cmd}
{\textgreater} for f in clsplitseqの出力フォルダ/*.fastq.gz↓\\
do clfilterseq {\textbackslash}\\
{-}{-}output=folder {\textbackslash}\\
{-}{-}append {\textbackslash}\\
{-}{-}minqual=27 {\textbackslash}\\
{-}{-}minquallen=3 {\textbackslash}\\
{-}{-}minlen=350 {\textbackslash}\\
{-}{-}maxlen=400 {\textbackslash}\\
{-}{-}maxplowqual=0.1 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
\$f {\textbackslash}\\
出力フォルダ↓\\
done↓
\end{cmd}
\section{Illumina社シーケンサーの場合}
\subsection{BCLからFASTQの生成}
Illumina社のシーケンサーでは、標準でdemultiplexする機能がありますが、タグ配列部分の品質値を一切見ていないため、タグ配列の品質が低い配列がファイルに含まれています。
このため、生データであるBCLファイルから、Illuminaが配布しているbcl2fastq (1.x系と2.x系はどちらでも構いません)を用いて、demultiplexしていないFASTQ配列を生成し、\texttt{clsplitseq}でdemultiplexを行います。
bcl2fastqのインストールは付録に書きましたのでそちらを参照願います。
また、Illumina社のシーケンサーでは300bpのシーケンスでは301bp (150bpのシーケンスでは151bp)のデータが出力されるため、末尾の1塩基は除去する必要があります(何故最初から1塩基除いたデータを出力してくれないのかは知りません)。
下記の例ではbcl2fastqでFASTQ配列生成の際に除去するようになっています。
まず、シーケンサー付属マシンからBaseCallsフォルダを含むランデータフォルダをまるごとbcl2fastqをインストールしたPCへコピーします。
次に、BaseCallsフォルダ内またはランデータフォルダ内に\texttt{SampleSheet.csv}が存在する場合は、これを作業ディレクトリへコピーして、ファイル名を\texttt{Dummy.csv}とし、テキストエディタで開いて\texttt{[Data]}セクションを編集します。
\texttt{[Data]}セクションには1行目に各列のラベルが記されており、2行目以降にサンプル名やインデックス配列が記されていますが、2行目以降を削除します。
FASTQ生成の際にこのファイルをサンプルシートとして指定することで、bcl2fastqに内蔵されているdemultiplex機能を無効化します。
次に、bcl2fastqの1.x系では以下のようにコマンドを実行します。
\begin{cmd}
{\textgreater} cd BaseCallsフォルダの直上フォルダ↓\\
{\textgreater} configureBclToFastq.pl {\textbackslash}\\
{-}{-}fastq-cluster-count 0 {\textbackslash}\\
{-}{-}use-bases-mask Y300n,Y8,Y8,Y300n {\textbackslash}\\
{-}{-}input-dir BaseCallsフォルダ {\textbackslash}\\
{-}{-}sample-sheet Dummy.csv {\textbackslash}\\
{-}{-}output-dir 出力フォルダ↓\\
{\textgreater} cd 出力フォルダ↓\\
{\textgreater} make -j4↓
\end{cmd}
\texttt{{-}{-}fastq-cluster-count 0}でファイルの自動分割機能を無効にし、\texttt{{-}{-}use-bases-mask Y300n,Y8,Y8,Y300n}でフォワード側配列を300bp (末端1bpは切り捨て)、インデックス1 (タグ配列R逆相補)を8bp、インデックス2 (タグ配列F)を8bp、リバース側配列を300bp (末端1bpは切り捨て)とし、それぞれ\texttt{*{\textunderscore}R1{\textunderscore}001.fastq.gz}、\texttt{*{\textunderscore}R2{\textunderscore}001.fastq.gz}、\texttt{*{\textunderscore}R3{\textunderscore}001.fastq.gz}、\texttt{*{\textunderscore}R4{\textunderscore}001.fastq.gz}として出力するよう設定しています。
これはDual Index (インデックスは各8bp)で両側から各300bpずつ解読する(300PE)設定でシーケンスした場合ですので、異なる設定でシーケンスした場合は値を適宜変更して下さい。
Single Index (長さ6bp)で片側250bpの解読を行った場合は\texttt{{-}{-}use-bases-mask Y250n,Y6}となり、Dual Index (長さ各8bp)で片側300bpの場合は\texttt{{-}{-}use-bases-mask Y300n,Y8,Y8}となります。
\texttt{make -j4}を実行すると、4つのCPUを使用してBCLからFASTQの生成が行われます。
生成されたFASTQはGZIPというプログラムで圧縮されたものになります。
ファイル名の末尾の拡張子\texttt{.gz}はそれを示すものです。
ClaidentはGZIPで圧縮されたFASTQをそのまま扱えるため、圧縮したままで構いません。
bcl2fastqの2.x系を使用している場合は以下のようにコマンドを実行します。
\begin{cmd}
{\textgreater} bcl2fastq {\textbackslash}\\
{-}{-}processing-threads 4 {\textbackslash}\\
{-}{-}create-fastq-for-index-reads {\textbackslash}\\
{-}{-}use-bases-mask Y300n,I8,I8,Y300n {\textbackslash}\\
{-}{-}runfolder-dir ランデータフォルダ {\textbackslash}\\
{-}{-}sample-sheet Dummy.csv {\textbackslash}\\
{-}{-}output-dir 出力フォルダ↓
\end{cmd}
\texttt{{-}{-}processing-threads}は処理に使用するCPU数を指定するオプションです。
CPUが16個あるPCで専有できるなら16を指定して下さい。
\texttt{{-}{-}use-bases-mask}オプションの意味は1.x系と基本的に同じですが、インデックスは\texttt{Y[数字]}ではなく\texttt{I[数字]}で指定します。
\texttt{{-}{-}runfolder-dir}にはランデータフォルダを指定します。
1.xでは\texttt{{-}{-}input-dir}にBaseCallsフォルダを指定していましたが、2.xでは指定方法が異なりますので注意して下さい。
\subsection{塩基配列をサンプルごとに分ける}
FASTQファイルができたら、タグ配列とプライマー配列に基づいてサンプルごとに配列を別々のファイルに分離(demultiplex)します。
事前に以下のようなタグ配列を記したFASTAファイル、解読開始側プライマー配列を記したFASTAファイルがそれぞれ必要です。
ペアエンドの場合は、当然リバース側の配列を記したファイルも必要です。
\begin{content}
| {\textgreater}タグID\\
| タグ配列\\
| {\textgreater}examplesample1\\
| ACGTACGT
\end{content}
\begin{content}
| {\textgreater}プライマーID\\
| プライマー配列\\
| {\textgreater}exampleprimer1\\
| ACGTACGTACGTACGTACGT
\end{content}
タグ配列には縮重コード表記は使えませんが、プライマー配列には縮重コード表記を利用可能です。
タグ配列、プライマー配列ともに複数の配列を記述しておくことも可能ですが、フォワードプライマーとリバースプライマーは配列数も配列順序も対応していることを仮定しています。
リバースプライマーは同一でもフォワードプライマーが異なるサンプルがある場合、それぞれ異なるプライマーIDを割り当てて両方記述する必要があります。
タグに関しても同様です。
なお、プライマーの前に\texttt{NNNNNN}を付加した場合は、それも含めてプライマーを記述して下さい。
サンプルごとに\texttt{N}の長さを変化させている場合は最も長い場合だけを記述して下さい。
これらのファイルが用意できたら、以下のコマンドで塩基配列をサンプルごとに別ファイルへ分割します。
\begin{cmd}
{\textgreater} clsplitseq {\textbackslash}\\
{-}{-}runname=ランID {\textbackslash}\\
{-}{-}index1file=インデックス1配列(タグ配列R逆相補)ファイル {\textbackslash}\\
{-}{-}index2file=インデックス2配列(タグ配列F)ファイル {\textbackslash}\\
{-}{-}primerfile=プライマー配列ファイル {\textbackslash}\\
{-}{-}reverseprimerfile=リバースプライマー配列ファイル {\textbackslash}\\
{-}{-}minqualtag=30 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル1 {\textbackslash}\\
入力ファイル2 {\textbackslash}\\
入力ファイル3 {\textbackslash}\\
入力ファイル4 {\textbackslash}\\
出力フォルダ↓
\end{cmd}
入力ファイルはフォワード配列ファイル、インデックス1配列ファイル、インデックス2配列ファイル、リバース配列ファイルの順で記述して下さい。
\texttt{{-}{-}index1file}はIlluminaが言うところのインデックス1、つまりタグ配列R逆相補を指定し、\texttt{{-}{-}index2file}にはIlluminaが言うところのインデックス2、つまりタグ配列Fを指定して下さい。
逆にしないように注意して下さい。
フォワードプライマーは14\%まで、リバースプライマーは15\%まで不一致を許容して探します。
なお、プライマーの前に\texttt{NNNNNN}を付加した場合は、\texttt{{-}{-}truncateN=enable}を付加して下さい。
このオプションにより、プライマー配列先頭の\texttt{N}とデータ配列の対応する部位は削った上で不一致度を算出するようになります。
\texttt{N}の長さを変化させていても、その部位を除いて不一致度が算出されるようになるためプライマー配列ファイルには\texttt{N}が最長の場合だけを記述しておけば全てヒットするようになります。
処理が終わったら、各ファイルの配列数を確認し、Illumina純正のプログラムでdemultiplexしたファイルの配列数と比較して下さい。
正しく処理できていれば、全てIllumina純正プログラムで処理した場合より少なくなっているはずです。
本来のプライマー配列をシーケンスプライマーとして用いた場合、データ配列にはプライマー配列に当たる部位が含まれていません。
この場合は\texttt{{-}{-}primerfile}と\texttt{{-}{-}reverseprimerfile}オプションが必要ないわけですが、配列の名前をこの後のClaidentのコマンドで処理可能な形式とするためにオプションとして\texttt{{-}{-}primername=プライマーID}を付加して実行して下さい。
ダミーでも構いません。
タグを利用したマルチプレックスシーケンスを行っていない場合、\texttt{{-}{-}index1file}と\texttt{{-}{-}index2file}オプションが不要となりますが、単に省略しただけだとこの後のClaidentのコマンドで処理可能な配列ファイルが作成されません。
そのため、ダミーでも構いませんので\texttt{{-}{-}indexname=タグID}というオプションを付加して実行して下さい。
出力されるファイルは\texttt{ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID.forward.fastq.gz}と\texttt{ランID{\textunderscore}{\textunderscore}タグID{\textunderscore}{\textunderscore}プライマーID.reverse.fastq.gz}になります。
DDBJ Sequence Read Archive (DRA)など、次世代シーケンサーの生データを登録するサイトには、ここで生成されたGZIP圧縮FASTQを登録します。
なお、DRAへの登録では配列の長さが揃っているかどうかを指定する箇所がありますが、長さが可変のプライマー部位の配列を除去していますから揃っていません(プライマーセットが1つであってもアライメント時にギャップが入る可能性があるため揃わない)ので誤って揃っていると指定しないようにして下さい。
\subsection{フォワード配列とリバース配列の連結}\label{subsection:concatenatingpairedend}
\subsubsection{オーバーラップがある場合}
ペアエンドでシーケンスを行った場合には、\texttt{clconcatpair}を用いてフォワード配列とリバース配列を連結します。
フォワード配列とリバース配列にオーバーラップがある場合には、以下のように実行することでVSEARCHを呼び出して連結します。
\begin{cmd}
{\textgreater} clconcatpair {\textbackslash}\\
{-}{-}mode=OVL {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力フォルダ {\textbackslash}\\
出力フォルダ↓
\end{cmd}
以上のコマンドでは、入力フォルダから\texttt{*.forward.fastq}と\texttt{*.reverse.fastq}を探しだして自動的に連結します。
末尾に\texttt{.gz}や\texttt{.bz2}が付く圧縮ファイルでも構いません。
出力ファイルは指定したフォルダ内に\texttt{*.fastq.gz}として作成されます。
入力ファイル名が\texttt{*.forward.fastq}と\texttt{*.reverse.fastq}になっていない場合は、以下のように実行することで1組のファイルの配列を連結可能です。
\begin{cmd}
{\textgreater} clconcatpair {\textbackslash}\\
{-}{-}mode=OVL {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル1 {\textbackslash}\\
入力ファイル2 {\textbackslash}\\
出力ファイル↓
\end{cmd}
入力ファイル1にフォワード配列のFASTQファイル、入力ファイル2にリバース配列のFASTQファイルを指定して下さい。出力ファイルは末尾に\texttt{.gz}や\texttt{.bz2}を付けないと自動的に圧縮はされません。
\subsubsection{オーバーラップがない場合}
フォワード配列とリバース配列間にオーバーラップがない場合には、先に以下のように\texttt{clfilterseq}を用いて低品質部位のトリミングや低品質配列の除去を行います。
\begin{cmd}
{\textgreater} clfilterseq {\textbackslash}\\
{-}{-}minqual=30 {\textbackslash}\\
{-}{-}minquallen=3 {\textbackslash}\\
{-}{-}minlen=100 {\textbackslash}\\
{-}{-}maxplowqual=0.1 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力ファイル1 {\textbackslash}\\
入力ファイル2 {\textbackslash}\\
出力フォルダ↓
\end{cmd}
ここで、\texttt{{-}{-}minqual}は品質値の下限値で、終末端側からこの値以上の品質値が\texttt{{-}{-}minquallen}の値以上に連続して出現するまで配列を削っていきます。
その上で、\texttt{{-}{-}minlen}の長さ未満の配列は除去します。
残った配列において、\texttt{{-}{-}minqual}未満の配列が\texttt{{-}{-}maxplowqual}の割合より多い場合はその配列は除去します。
この処理では、ペアエンドのどちらか一方でも除去される場合、ペアとなるもう一方も除去します。
出力はフォルダを作成して入力ファイルと同じ名前のファイルになります。
既存のフォルダに出力する場合は\texttt{{-}{-}append}を追加して下さい。
フォルダ内の全ての\texttt{*.forward.fastq}と\texttt{*.reverse.fastq}に適用する場合は、以下のように実行して下さい。
\begin{cmd}
{\textgreater} for f in `ls *.forward.fastq.gz | grep -P -o '{\textasciicircum}{\lbrack}{\textasciicircum}{\textbackslash}.{\rbrack}+'`↓\\
do clfilterseq {\textbackslash}\\
{-}{-}minqual=30 {\textbackslash}\\
{-}{-}minquallen=3 {\textbackslash}\\
{-}{-}minlen=100 {\textbackslash}\\
{-}{-}maxplowqual=0.1 {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
\$f.forward.fastq.gz {\textbackslash}\\
\$f.reverse.fastq.gz {\textbackslash}\\
出力フォルダ↓\\
done↓
\end{cmd}
このように低品質配列を除去した後、以下のように\texttt{clconcatpair}を用いて連結を行います。
\begin{cmd}
{\textgreater} clconcatpair {\textbackslash}\\
{-}{-}mode=NON {\textbackslash}\\
{-}{-}numthreads=使用するCPU数 {\textbackslash}\\
入力フォルダ {\textbackslash}\\
出力フォルダ↓
\end{cmd}
この方法では、以下のようなフォワード配列とリバース配列を入力として仮定します。
\begin{pre}
5' ― フォワード配列 ― 3'\\
5' ― リバース配列 ― 3'
\end{pre}
これらの配列を、\texttt{clconcatpair {-}{-}mode=NON}では以下のように連結します。
\begin{pre}
5' ― リバース配列(逆相補) ― ACGTACGTACGTACGT ― フォワード配列 ― 3'
\end{pre}
ノイジー配列とキメラ配列の除去はそのまま通常の連結したペアエンドデータと全く同様に行い、配列のクラスタリングに用いる\texttt{clclassseqv}と代表配列への生配列のマッピングを行う\texttt{clrecoverseqv}の実行時に\texttt{{-}{-}paddinglen=16}を加えて実行します。
上記の連結では、連結点を後から識別できるように人工配列である\texttt{ACGTACGTACGTACGT}を加えているため、配列の類似度が過大になってしまいます。
そこで、完全一致するはずの\texttt{ACGTACGTACGTACGT}の長さ分を配列の類似度計算から除外することで正しい配列類似度に基づくクラスタリングを行います。
ホスト生物の同定をする際には、\texttt{ACGTACGTACGTACGT}を探して配列を分割し、フォワード配列とリバース配列で別々に同定し、第\ref{section:mergingmultipleassignment}節の内容に従って2つの同定結果を統合します。
一般にフォワード配列の方が品質が高いはずですので、フォワード配列とリバース配列の分子同定能力や変異性について何も事前情報がない場合はフォワード配列に基づく同定結果を優先する設定で統合するのが良いでしょう。
配列の分割は\texttt{cldivseq}を以下のように実行することで行えます。
\begin{cmd}
{\textgreater}cldivseq {\textbackslash}\\
{-}{-}query=ACGTACGTACGTACGT {\textbackslash}\\
入力ファイル {\textbackslash}\\
出力ファイル1 {\textbackslash}\\
出力ファイル2
\end{cmd}
出力ファイル1がリバース配列の逆相補配列、出力ファイル2がフォワード配列になります。
\subsubsection{PEARを用いて連結する場合}
フォワード配列とリバース配列にオーバーラップがある場合には、PEAR \citep{Zhang2014}を用いて連結することもできます。
PEARの場合はdemultiplexした配列ファイルのあるフォルダで、以下のコマンドを実行して下さい。
\begin{cmd}