次世代シーケンシングデータ解析のための専門言語環境NGLess
データタイプと応用分野
- ChIP-Seqデータ:染色質免疫沈殿シーケンシングデータを分析し、タンパク質とDNAの相互作用を研究するために使用されます。
- Methyl-Seqデータ:DNAメチル化シーケンシングデータを分析し、DNAメチル化の変化を研究するために使用されます。
NGLessの主要な利用者
NGLessの主な利用者層には、以下のようなグループが含まれます:
1. 生物情報学研究者
- データアナリスト:生物情報学者やデータアナリストは、NGLessを利用して次世代シーケンシングデータの高速解析を行い、配列アライメント、アセンブリ、アノテーションなどの各種タスクを実行できます。これにより、煩雑なデータ前処理と解析ステップが削減され、解析効率が向上します。
- アルゴリズム開発者:新しい生物情報学解析アルゴリズムを開発する研究者にとって、NGLessは新しいアルゴリズムの性能と効果をテストするための柔軟で使いやすいプラットフォームを提供します。
2. 生物学研究者とラボ科学者
- 生物学者:生物学者やラボ科学者は、ゲノムス、トランスクリプトームスなどの多種多様なハイスループットデータの解析にNGLessを使用し、迅速にデータ処理と解析の結果を得ることができます。
- ラボ技術者:ラボで生成される大規模なシーケンシングデータは、NGLessを利用して迅速かつ信頼性の高い解析を行うことができ、実験結果のサポートと解釈を提供します。
3. 教育とトレーニング機関
- 教育機関:生物情報学の講座において、NGLessは教育ツールとして使用でき、学生がハイスループットシーケンシングデータの解析方法と技術を理解し、学習するのを助けます。
- トレーニング機関:生物情報学のトレーニング機関は、NGLessをトレーニング内容の一部として利用し、受講者にツールを使用して生物情報学解析を行う方法を紹介・デモンストレーションできます。
4. 産業応用と医学研究
- バイオテクノロジー企業:バイオテクノロジー企業や医学研究機関は、ゲノムス、トランスクリプトームスなどのデータの解析と処理にNGLessを利用し、医薬品開発、バイオエンジニアリング、医学研究分野をサポートします。
- 医学研究:医学研究において、NGLessは疾患研究、バイオマーカー同定などの分野で大規模なシーケンシングデータの解析を支援します。
システムサポートと実行方法
インストール可能なプラットフォーム
- Linux:
- NGLessで最一般的に推奨される実行環境はLinux、特にDebianやRed Hatベースのディストリビューションです。
- 様々なLinuxディストリビューションでパッケージマネージャーまたはソースコードを使用したインストールがサポートされています。
- macOS:
- macOSでもNGLessのインストールと実行が可能ですが、macOSとLinux間のいくつかの差異により、特定の構成または適応調整が必要になる場合があります。
- Windows:
- NGLessはWindows専用に開発されていませんが、Windowsシステムに仮想マシン、Docker、またはWindows Subsystem for Linux(WSL)をインストールすることでLinux環境で実行できます。
インストール方法
- ソースコードからのコンパイルインストール:
- ユーザーはNGLessのGitHubページからソースコードをダウンロードし、ターゲットシステムでコンパイルしてインストールできます。
- Linux環境では、`make`コマンドのようなものを使用してコンパイルとインストールが可能です。
- パッケージマネージャーによるインストール:
- 一部のLinuxディストリビューションでは、NGLessのパッケージが提供されており、APTやyumなどのパッケージマネージャーで直接インストールできます。
実行方法
- コマンドライン実行:
- NGLessは主にコマンドライン方式で実行され、ユーザーはNGLessスクリプトファイル(NGLessのDSL言語を使用)を作成し、コマンドラインでこれらのスクリプトを実行できます。
- 対話型環境:
- NGLessは対話型環境でも実行可能で、ユーザーがリアルタイムでコードをテストしデバッグするのに便利です。
NGLessのインストールと設定
LinuxでのNGLessインストール
方法1:パッケージマネージャーによるインストール(Ubuntuの場合)
UbuntuではAPTパッケージマネージャーを使用してNGLessをインストールできます:
- システムのパッケージリストを更新します:
sudo apt update - NGLessをインストールします:
sudo apt install ngless
方法2:ソースコードからのコンパイルインストール
GitHubからNGLessソースコードをダウンロードしてコンパイル・インストールします:
- コンパイルに必要な依存関係をインストールします:
sudo apt install build-essential cmake git - NGLessリポジトリをクローンします:
git clone https://github.com/ngless-toolkit/ngless.git - ディレクトリに移動してコンパイル・インストールします:
cd ngless make sudo make install
方法3:conda環境でのインストール
conda環境でのインストールは以下のように行います:
conda create -n ngless_env python=3
conda activate ngless
conda install -c bioconda ngless
# またはmambaを使用
mamba create -n ngless_env python=3
mamba activate ngless
mamba install -c bioconda ngless
方法4:Dockerでのインストール
docker pull ngless/ngless
docker run -it ngless/ngless
注意点:
- DockerでNGLessを実行する場合、コンテナ内での各種操作は実行できますが、デフォルトではコンテナ内の変更は保持されません。結果や出力ファイルを保持したい場合は、ホストのフォルダーをDockerコンテナ内のフォルダーにマウントする必要があります。
- ホストのフォルダーをDockerコンテナにマウントするには、`-v`パラメータを使用します。例:
これはホストの`/path/to/host/folder`ディレクトリをコンテナの`/path/to/container/folder`ディレクトリにマウントします。docker run -it -v /path/to/host/folder:/path/to/container/folder ngless/ngless
macOSでのNGLessインストール
macOSではHomebrewまたは手動でのコンパイルインストールが可能です:
方法1:Homebrewを使用したインストール
- Homebrewをインストールします(まだインストールしていない場合):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - Homebrewを使用してNGLessをインストールします:
brew install ngless
方法2:ソースコードからのコンパイルインストール
- Xcode Command Line Toolsをインストールします:
xcode-select --install - コンパイルに必要な依存関係をインストールします(Homebrewを使用):
brew install cmake - NGLessリポジトリをクローンしてコンパイル・インストールします:
git clone https://github.com/ngless-toolkit/ngless.git cd ngless make sudo make install
WindowsでのNGLessインストール
Windowsでは仮想マシン、Docker、またはWindows Subsystem for Linux(WSL)を使用してNGLessを実行できます。以下にWSLを使用してNGLessをインストールする手順を示します:
- WSLを有効にし、Linuxディストリビューション(Ubuntuなど)をインストールします:MicrosoftのWSLに関する公式ドキュメントの説明とインストール手順を参照してください。
- NGLessをインストールします(前述のLinuxインストール方法を参照):WSL内でLinuxのインストール手順に従って操作します。
NGLessの主要な機能関数
NGLessは次世代シーケンシング(NGS)データを処理・分析するためのプログラミング言語とツールです。以下にNGLessの主要な関数とコード例を示します:
データ入力・出力系関数
count()- シーケンスファイル内のシーケンス数を計算input = fastq('input.fastq.gz') reads = count(input)write()- 結果を出力ファイルに書き込むinput = fastq('input.fastq.gz') write(input, ofile='output.fastq')parse_fastq()- FASTQファイルを解析input = parse_fastq('input.fastq')
フィルタリング系関数
select()- 条件に合うシーケンスを選択input = fastq('input.fastq.gz') selected = select(input, keep_if=(length >= 50))reject()- 条件に合うシーケンスを除外input = fastq('input.fastq.gz') filtered = reject(input, keep_if=(mean_quality < 20))substrim()- シーケンスの品質トリミングinput = fastq('input.fastq.gz') trimmed = substrim(input, cutoff=20)
マッピング系関数
map()- シーケンスをアライメントinput = fastq('input.fastq.gz') index = faidx('reference.fasta') mapped = map(input, index)unmapped_only()- アライメントされていないシーケンスを選択input = fastq('input.fastq.gz') mapped = map(input, index) unmapped = unmapped_only(mapped)
データ操作系関数
group_by()- 指定されたキーでグループ化input = ... # データ grouped = group_by(input, key='sample')sort()- シーケンスをソートinput = ... # データ sorted_data = sort(input, by='value', reverse=True)merge()- 2つ以上のシーケンスファイルをマージinput1 = fastq('input1.fastq.gz') input2 = fastq('input2.fastq.gz') merged = merge(input1, input2)
シーケンス処理系関数
reverse_complement()- シーケンスの逆相補鎖を取得seq = 'ATCG' rc_seq = reverse_complement(seq)translate()- DNAシーケンスをアミノ酸シーケンスに翻訳dna_seq = 'ATGCTGAACTG' aa_seq = translate(dna_seq)gc_content()- シーケンスのGC含量を計算seq = 'ATCGATCG' gc = gc_content(seq)
統計計算系関数
mean()- 数値の平均値を計算data = [1, 2, 3, 4, 5] avg = mean(data)median()- 数値の中央値を計算data = [1, 2, 3, 4, 5] med = median(data)standard_deviation()- 数値の標準偏差を計算data = [1, 2, 3, 4, 5] std_dev = standard_deviation(data)
一般的な生物情報学解析のコード例
以下はNGLessの機能関数を使用してメタゲノムデータを処理する一般的なコード例です:
低品質なリードのフィルタリング
ngless "1.0"
input = fastq('sample_data.fq')
preprocess(input, phred=33) using |read|:
if read.avg_qual < 20:
discard
filtered_data = input | keep
write(filtered_data, 'filtered_data.fq', compression=Fastq)
参照データベースへのOTUマッピングとOTUテーブルの生成
ngless "1.0"
input = fastq('sample_data.fq')
reference_db = fasta('reference_db.fasta')
mapped_reads = map(input, reference_db, exact=False, sensitive=True)
otu_result = otu_table(mapped_reads, reference_db)
write(otu_result, 'otu_table.csv', format="csv")
OTUテーブルの種アノテーション
ngless "1.0"
otu_data = csv('otu_table.csv')
species_annotation = csv('species_annotation_db.csv')
annotated_otu = annotate_species(otu_data, species_annotation)
write(annotated_otu, 'annotated_otu_table.csv', format="csv")
OTUテーブルからのバイオマーカー検出
ngless "1.0"
otu_table = csv('otu_table.csv')
metadata = csv('sample_metadata.csv')
biomarkers = find_biomarkers(otu_table, metadata)
write(biomarkers, 'biomarkers.csv', format="csv")
多様性指数の計算と可視化
ngless "1.0"
otu_table = csv('otu_table.csv')
diversity = calculate_diversity(otu_table)
plot(diversity, 'diversity_plot.png', format="png")
write(diversity, 'diversity_indices.csv', format="csv")
系統解析と系統樹の構築
ngless "1.0"
otu_table = csv('otu_table.csv')
phylogeny = build_phylogeny(otu_table)
plot(phylogeny, 'phylogenetic_tree.png', format="png")
write(phylogeny, 'phylogenetic_tree.nwk', format="newick")
使用例:ヒト腸内メタゲノム機能と分類解析
手順の概要
- データ準備:解析に使用する元のシーケンシングデータを取得・準備する。
- 品質管理とフィルタリング:元のデータに対して品質管理、低品質なシーケンスの除去、宿主DNAの除去などを行う。
- ヒト腸内メタゲノム分類:データを分類し、宿主腸内微生物を同定する。
- 機能アノテーション:メタゲノムデータに対して機能アノテーションを行い、腸内微生物の機能的特性を解析する。
詳細な手順
ステップ 1: データ準備
ヒト腸サンプルからメタゲノムシーケンシングデータをダウンロード・準備する。
ステップ 2: 品質管理とフィルタリング
NGLessを使用して品質管理とフィルタリングを行う:
ngless "1.0"
raw_data = fastq('gut_samples.fastq.gz')
preprocessed = preprocess(raw_data, keep_singles=False) using |read|:
if len(read) < 45:
discard
elif count(N) > 0.1:
discard
else:
keep
filtered_data = preprocessed | keep
ステップ 3: ヒト腸内メタゲノム分類
NGLessと対応するデータベースを使用してメタゲノム分類を行う。この例ではSilvaデータベースを使用:
ngless "1.0"
filtered_data = fastq('filtered_samples.fastq.gz')
preprocessed = preprocess(filtered_data)
taxonomic_profile = map(preprocessed, reference='silva_db.fasta')
write(taxonomic_profile, 'taxonomic_profile.csv', format="csv")
ステップ 4: 機能アノテーション
メタゲノムデータに対して機能アノテーションを行い、腸内微生物の機能的特性を解析する:
ngless "1.0"
filtered_data = fastq('filtered_samples.fastq.gz')
preprocessed = preprocess(filtered_data)
mapped_reads = map(preprocessed, reference='gene_catalog.fasta')
functional_profile = annotate_functions(mapped_reads, db='kegg_db')
write(functional_profile, 'functional_profile.csv', format="csv")