バイオインフォマティクスでは、大量のデータを効率的に処理することが重要です。そのためにPython3は非常に強力なツールであり、ファイル操作はデータ管理の基本です。ここでは、Pythonを使ったフォルダーやファイルの操作について基本から応用までを解説します。
1. ファイル操作の基本
ファイル操作には以下のような場面があります:
- フォルダーやファイルの作成
- リネーム(名前の変更)
- 削除
- ファイルの存在確認
Pythonでは、これらの操作を主にos
モジュールとshutil
モジュールで実行します。
1.1 フォルダーの作成
新しいフォルダーを作成するにはos.mkdir()
またはos.makedirs()
を使用します。
os.mkdir()
は1階層のみのフォルダー作成os.makedirs()
は階層を含むフォルダー作成
import os
# 1階層のフォルダー作成
os.mkdir('bio_data')
# 階層を含むフォルダー作成
os.makedirs('bio_data/sequencing_results')
1.2 フォルダーやファイルの名前変更(リネーム)
os.rename()
を使うことで、フォルダーやファイルの名前を変更できます。
# フォルダー名の変更
os.rename('bio_data', 'bioinformatics_data')
# ファイル名の変更
os.rename('old_file.txt', 'new_file.txt')
1.3 フォルダーやファイルの削除
os.rmdir()
やos.remove()
で削除を行います。ただし、os.rmdir()
は空のフォルダーしか削除できません。
# 空のフォルダー削除
os.rmdir('empty_folder')
# ファイル削除
os.remove('unnecessary_file.txt')
空でないフォルダーを削除する場合は、shutil.rmtree()
を使用します。
import shutil
# フォルダーごと削除
shutil.rmtree('non_empty_folder')
1.4 ファイルやフォルダーの存在確認
ファイルやフォルダーが存在するかどうかはos.path.exists()
で確認できます。
# 存在確認
if os.path.exists('bioinformatics_data'):
print("フォルダーが存在します")
else:
print("フォルダーが存在しません")
2. 応用:自動化スクリプトの作成
バイオインフォマティクスでは、毎回手動でファイルを整理するのは非効率です。Pythonを使うことで、データ処理を自動化できます。
2.1 大量のフォルダーを一括作成
プロジェクトごとに大量のフォルダーを作成する場合、リストを使うと便利です。
projects = ['genomics', 'transcriptomics', 'proteomics']
for project in projects:
os.makedirs(f'research/{project}/data', exist_ok=True)
このスクリプトは以下の構造を作成します:
research/
genomics/
data/
transcriptomics/
data/
proteomics/
data/
2.2 ファイルの一括リネーム
例えば、シーケンシング結果のファイル名を整理する場合、以下のスクリプトが役立ちます。
import glob
# 対象のファイル一覧を取得
files = glob.glob('raw_data/*.fastq')
# リネーム処理
for i, file in enumerate(files):
new_name = f'processed_data/sample_{i+1}.fastq'
os.rename(file, new_name)
このスクリプトは、raw_data
フォルダー内の全.fastq
ファイルをprocessed_data
フォルダーにsample_1.fastq
, sample_2.fastq
のようにリネームして移動します。
2.3 古いデータの自動削除
一定期間使用していない古いデータを削除するには、ファイルの最終変更日時を利用します。
import time
# 現在時刻を取得
now = time.time()
# 対象フォルダー
folder = 'archive'
# 古いファイルを削除
for file in os.listdir(folder):
file_path = os.path.join(folder, file)
if os.path.isfile(file_path) and now - os.path.getmtime(file_path) > 30 * 24 * 60 * 60: # 30日以上
os.remove(file_path)
print(f'{file} を削除しました')
3. 応用例:パイプラインの構築
実際のバイオインフォマティクスプロジェクトでは、以下のようなパイプラインを構築できます。
3.1 データの整理とリネーム
複数の研究機関から送られてきたシーケンシングデータを整理し、共通のフォーマットに変換します。
import shutil
input_folder = 'incoming_data'
output_folder = 'organized_data'
os.makedirs(output_folder, exist_ok=True)
for file in os.listdir(input_folder):
if file.endswith('.fastq'):
new_name = f"{file.split('_')[0]}_sample.fastq"
shutil.move(os.path.join(input_folder, file), os.path.join(output_folder, new_name))
3.2 解析結果のバックアップとアーカイブ
解析が終わった結果を圧縮し、不要な一時ファイルを削除することでディスク容量を節約します。
import zipfile
# フォルダーを圧縮
with zipfile.ZipFile('analysis_results.zip', 'w') as zipf:
for root, dirs, files in os.walk('results'):
for file in files:
zipf.write(os.path.join(root, file))
4. まとめと今後の活用
Pythonを活用したファイル操作は、バイオインフォマティクスにおいてデータ管理を効率化する強力な手段です。基本的な操作から始め、応用スクリプトを作成することで、作業を大幅に効率化できます。
これらのスキルを基に、さらなる自動化やデータ解析のパイプライン構築に挑戦してみてください。Pythonの力を最大限に活用し、バイオインフォマティクスの可能性を広げましょう!