バイオインフォマティクスでは、大量のデータを処理する必要があり、そのためにはLinuxの基本コマンドを活用することが不可欠です。特に、テキストデータを処理する際にはLinuxのコマンド群が役立ちます。本記事では、「Operating on fields」 に分類される cut
コマンドについて、基本的な使い方から応用までを解説します。
1. cut コマンドとは?
cut
コマンドは、テキストデータの「列(フィールド)」を切り出すためのコマンドです。カンマ区切り(CSV)やタブ区切り(TSV)などのデータの特定の列を取得する際に便利です。主に以下の3つの方法でデータを抽出できます。
- 文字位置で抽出(
-c
オプション) - 区切り文字でフィールドを指定(
-d
と-f
オプション) - バイト単位で抽出(
-b
オプション)
2. 基本的な使い方
2.1 文字位置での抽出(-c オプション)
-c
オプションを使用すると、指定した文字位置の範囲を抽出できます。
echo "bioinformatics" | cut -c 1-4
出力
bioi
この例では、”bioinformatics” の最初の1〜4文字 (bioi
) を取得しています。
2.2 区切り文字を使ってフィールドを抽出(-d と -f オプション)
バイオインフォマティクスでは、タブ区切りやカンマ区切りのデータを扱うことが多いです。この場合、-d
オプション(区切り文字)と -f
オプション(フィールド番号)を使います。
例1:タブ区切りデータ(TSV)の特定の列を取得
echo -e "Gene\tExpression\tSample" | cut -d $'\t' -f 2
出力
Expression
この例では、タブ区切りデータの2列目(”Expression”) を取得しています。
例2:CSVデータの特定の列を取得
echo "gene1,high,control" | cut -d ',' -f 1,3
出力
gene1,control
カンマ(,
)を区切り文字として1列目と3列目 を取得しました。
2.3 バイト単位で抽出(-b オプション)
バイト単位で文字列を取得する場合は -b
オプションを使います。ただし、UTF-8 などのマルチバイト文字では意図した結果にならない場合があるので注意が必要です。
echo "bioinformatics" | cut -b 1-4
出力
bioi
(この例では -c
オプションと同じ動作になります。)
3. 応用編:バイオインフォマティクスのデータ処理
バイオインフォマティクスでは、大量の遺伝子データを処理する必要があります。cut
コマンドを活用すると、簡単に必要な情報を抽出できます。
3.1 遺伝子発現データ(TSV)の解析
サンプルデータ (expression_data.tsv
)
Gene Expression_Level Condition
TP53 12.4 Cancer
BRCA1 8.9 Normal
EGFR 15.2 Cancer
このデータから遺伝子名(1列目)と発現レベル(2列目) だけを取得する場合:
cut -d $'\t' -f 1,2 expression_data.tsv
出力
Gene Expression_Level
TP53 12.4
BRCA1 8.9
EGFR 15.2
3.2 FASTAファイルのヘッダー取得
FASTAファイル(配列データ)のヘッダー(>
から始まる行)だけを抽出するには、grep
と cut
を組み合わせます。
grep '^>' sequences.fasta | cut -d ' ' -f 1
このコマンドは、FASTA形式のヘッダーの最初のフィールド(遺伝子ID) を取得します。
3.3 awk や paste と組み合わせた応用
cut
は他のコマンドと組み合わせることで、さらに柔軟なデータ操作が可能です。
複数のファイルから特定の列を抽出して統合
たとえば、異なるサンプルの発現データ(sample1.tsv
, sample2.tsv
)の遺伝子名と発現レベルを結合するには:
paste <(cut -d $'\t' -f 1,2 sample1.tsv) <(cut -d $'\t' -f 2 sample2.tsv)
4. cut コマンドの制限と代替手段
制限
- 複数の区切り文字に対応していない(例えば
,
と;
を同時に扱うことは不可) - 条件に基づくフィルタリングができない(
awk
やgrep
を併用する必要がある) - 区切り文字が不均一な場合の処理が難しい(
awk
の方が柔軟)
代替手段
awk
→ より高度なフィールド抽出や計算が可能sed
→ 文字列の置換・パターンマッチングが可能grep
→ フィルタリングと組み合わせると強力
例えば、特定の遺伝子 (TP53
) の発現データだけを抽出する場合:
grep 'TP53' expression_data.tsv | cut -d $'\t' -f 1,2
5. まとめ
cut
コマンドは、シンプルながらバイオインフォマティクスのデータ解析で非常に便利なツールです。特に、タブ区切り・カンマ区切りデータの特定列を抽出する のに適しており、grep
や paste
と組み合わせることでさらに応用の幅が広がります。
ただし、cut
だけではできない処理も多いため、必要に応じて awk
や sed
などのコマンドと組み合わせて、より柔軟なデータ処理を行うのが良いでしょう!!
今後のデータ解析にぜひ活用してみてください〜!