サンプルジョブの実行方法(基礎生物学編)
はじめに
RCCS では分子科学系のアプリケーションの他に、基礎生物学向けのアプリケーションについて、サンプルジョブスクリプトを順次用意しております。
RCCS で用意したものをそのまま使う場合はもちろん、自身のディレクトリに導入した別バージョンを使う際のテンプレートとしても利用できます。
以下では salmon を例にして、サンプルをどのように実行するのかを説明します。
導入済みアプリケーションのリスト
いくつかの方法があります。
1. ウェブページ上のアプリケーション情報を参照する
基礎生物学向けのパッケージプログラムを使用する際は、事前に設定ファイルを読み込む必要があります。
source /apl/bio/etc/bio.sh
パッケージプログラム一覧(基礎生物学) のページに掲載されている情報で確認できます。
(現在順次サンプルプログラムを作成中です。)
2. module avail コマンドの出力を見る
source /apl/bio/etc/bio.sh で設定ファイルを読み込み終わると、以下のように出力されます。通常、ジョブとして投入するようなアプリについては以下で赤で示した /apl/bio/etc/modulefiles 内にあります。
基礎生物学向けのパッケージプログラム以外は /apl/modules/apl 内にあります。
[user@ccfep3 ~]$ module avail
--------------------------- /apl/bio/etc/modulefiles ---------------------------
abyss/2.3.4 meryl/1.4.1
allpathslg/52415 metaeuk/7-bba0d80
allpathslg/52488 metaphlan2/2.7.6
AmpliconNoise/1.27 metaphlan4/4.0.4
AMRFinderPlus/4.2.7 minialign/0.6.0
ARAGORN/1.2.41 minimap2/2-2.24
arcs/1.2.4 minimap2/2-2.30
atria/3.1.2 miniprot/0.18
augustus/3.5.0 MMseqs2/14-7e284
bakta/1.12.0 MMseqs2/17-b804f
...
(中略)
...
meme/5.4.1 vsearch/2.22.1
merqury/1.3 vsearch/2.29.0
meryl/1.4 wgs/8.2
----------------------------- /apl/modules/defaults ----------------------------
2022 2024 2025----------------------------- /apl/modules/oneapi ------------------------------
compiler-rt/2022.0.2 intelmpi/2021.5.1 mkl/2022.2.1 tbb/2021.10.0
compiler-rt/2022.2.1 intelmpi/2021.7.1 mkl/2023.0.0 tbb/2021.11
...
(略)
...Key:
loaded directory/ auto-loaded default-version modulepath
[user@ccfep3 ~]$
(module avail コマンドはキーボードの q を押すか、画面の下までスクロールさせると終了します。)
3. /apl を参照する
alphafoldなど、OS 非標準のアプリやライブラリについては、/apl に導入されています。そちらで直接確認することもできます。
/apl/(アプリケーション名)/(バージョンやリビジョン) のようなディレクトリ構成となっています。
[user@ccfep3 apl]$ ls
ABINIT-MP autodock cuda gsl nbo plumed
GRRM autodock-gpu cudnn hpc-x nciplot psi4
LigandMPNN autodock-vina cudss i-pi ninja pyenv
ProteinMPNN bindcraft cusparselt imolpro ntchem qe
RFDiffusionAA bio dalton julia nvhpc reactionplus
RFdiffusion boltz dftb+ lammps nwchem rosetta
RoseTTAFold-AA boltzgen dftd4 libtorch omegafold scalapack
abcluster boost dirac luscus oneapi siesta
aiida censo eigen lustre-dev openbabel tcl
alphafold cmake elsi magma openblas tmolex
amber colabfold ffmpeg modules openmm togl
aocc conda gamess molden openmolcas turbomole
aocl cp2k gaussian molpro openmpi vmd
apptainer crest genesis mvapich orca xcrysden
autoconf crystal gromacs namd pbs xtb[user@ccfep3 apl]$ ls /apl/alphafold
2.0.0-20210720 README.miniforge mini2_init.csh run-af-21x.sh
2.0.0-20210819 af300-2_init.csh mini2_init.sh run-af-22x.sh
2.1.0 af300-2_init.sh mini3_init.csh run-af-232.sh
2.1.1 af300_init.csh mini3_init.sh run-af-23x.sh
2.2.0 af300_init.sh miniforge-3.0.0-20250116 run-af-300-2.sh
2.3.1 databases miniforge1 run-af-300.sh
2.3.2 databases3 miniforge1-3.0.0 samples
3.0.0 hmmer-3.4 miniforge2
3.0.0-20241126 mini1_init.csh miniforge3
3.0.0-20250116 mini1_init.sh run-af-200.sh[user@ccfep3 apl]$ ls /apl/alphafold/3.0.0-20250116/
CMakeLists.txt docs
LICENSE fetch_databases.sh
OUTPUT_TERMS_OF_USE.md pyproject.toml
README.md requirements.txt
WEIGHTS_PROHIBITED_USE_POLICY.md run_alphafold.py
WEIGHTS_TERMS_OF_USE.md run_alphafold_data_test.py
dev-requirements.txt run_alphafold_test.py
docker src
サンプルスクリプトの場所
基礎生物学向けの各アプリのサンプルスクリプトは原則として以下のディレクトリに置いてあります。
- /apl/bio/package/(アプリ名)/samples
- /apl/bio/container/(アプリ名)/samples
例: salmon のサンプルを /apl/bio/package から探す
(base) [ebw@ccfep3 package]$ ls
AGAT HpcGridRunner SMRTAnalysis bedops cutadapt glimmerhmm meryl phylip src
AMRFinderPlus Infernal SMRTLink bedtools db2fasta gmap metaeuk phyml stacks
ARAGORN LINKS SOAP biotoolbox dbget graphlan metaphlan2 picard-tools strcalc
Alphafold3 LTR_retriever SOAPdenovo blasr deepconsensus h_bin microbiomeutil plink stringtie
AmpliconNoise LongStitch SPAdes blast diamond hh-suite minialign plottree subread
BRAKER MATLAB_Compiler_Runtime STAR blast+ discovar hifiasm miniconda3 prank tRNAscan-SE
CAP3 MMseqs2 SeqPrep blat discovardenovo hisat2 minimap2 primer3 t_coffee
CAT_pack MUMmer TD2 bowtie edirect hmmer miniprot psipred tabix
ConsensusCore MaSuRCA TETools-1.6 bowtie2 eggnog-mapper htslib mothur pyenv tbb
ConsensusCore2 NECAT TEsorter breseq elprep humann2 mrbayes python3 telomerecat
DROMPA3 NINJA TGICL btllib exonerate infernal muscle raxmlHPC tigmint
Dali OrthoFinder TSEBRA busco express iprscan nextflow rdp_classifier tmhmm
DaliLite PASApipeline TransAnnot bwa falcon iupred nf-core repeatexplorer tophat
EDirect PILERCR TrimGalore bwa-mem2 fasta jdk nim rnammer transdecoder
EIG Phrap Trinityrnaseq canu fastp jellyfish njplot roche tree-puzzle
EMBOSS Phred abyss cd-hit fasttree jemalloc nseg rsync trf
EVidenceModeler-1.1.1 Prodigal alf cdbfasta fastx_toolkit kSNP ntLink rtax trimal
FALCON-integrate ProtHint allpathslg cellranger fc_env kalign openmm ruby tssfinder
FAMSA Qualimap amos clearcut foldseek kallisto parallel salmon ublast
FCS R arcs clustalo freebayes last paup samtools ucsc
FamDB RECON atria clustalw gatk lastz pbalign seqkit usearch
FastME RMBlast augustus clustalw2 genomeGTFtools libpng pbcommand snap vbz_compression
FastQC RSEM aws cmake genometools libsequence pbh5tools snpEff vcftools
Flye RSeQC bakta codonW genscan macs pblat snp_sites-1.5.0 velvet
GRIT Red bam2fastx consed gffcompare macs2 pbmm2 sortmerna virtuoso
GUSHR RepeatAfterMe bamtools corset gffread mafft pbzip2 sourcetracker vsearch
Gblocks RepeatMasker bcftools cpanm ghostx maven pcre2 sprai wgs
GeneMark RepeatModeler bcl2fastq csblast git meme pdbfixer sqlite3 wwwblast
GenomicConsensus RepeatScout beagle cufflinks glimmer merqury perl sratoolkit xpclr[user@ccfep3 package]$ ls /apl/bio/package/salmon
1.10.0 1.10.1 1.8.0 samples[user@ccfep3 package]$ ls /apl/bio/package/salmon/samples
sample_salmon_paired.sh sample_salmon_single.sh
サンプルディレクトリ内のファイルについて
サンプルディレクトリ内には、テスト計算用のインプットデータと、それを実行するためのジョブスクリプトが含まれています。
ジョブスクリプトは、入力データの形式(シングルエンド・ペアエンドなど)や計算条件に合わせて複数用意されている場合があります。
- 例1: sample_se.sh => シングルエンド (Single-end) データを使うサンプル
例2: sample_pe.sh => ペアエンド (Paired-end) データを使うサンプル
例: salmon の場合
実行スクリプトが2つあります (sample_salmon_single.sh, sample_salmon_paired.sh)。
それぞれシングルエンド解析用、ペアエンド解析用となっており、対応するインプットファイル (fastq ファイル等)も異なります。
[user@ccfep3 package]$ ls /apl/bio/package/salmon/samples
sample_salmon_paired.sh sample_salmon_single.sh
サンプルスクリプトが参照するデータについて
基礎生物学向けの各アプリのサンプルスクリプトは、原則として /apl/bio/data_sample に置いてあるデータをフルパスで直接参照しています。 各データについてはNCBIのデータを data_sample 下に保存してあります。
- ecoli
- yeast
- proteins
- GCF_000001635.27 (Mouse) -> mouse_proteins.faa
- GCF_000002945.1 (Pombe) -> pombe_proteins.faa
- GCF_000001735.4 (Arabidopsis) -> arabidopsis_proteins.faa
- GCF_000009045.1 (BS168) -> bs168_proteins.faa
- GCF_000209795.2 (Natto) -> natto_proteins.faa
- misc
- GCF_000005845.2 の一部データ
[user@ccfep3 data_sample]$ ls
ecoli misc proteins yeast[user@ccfep3 data_sample]$ tree /apl/bio/data_sample
/apl/bio/data_sample
├── ecoli
│ ├── ecoli.gff
│ ├── ecoli.gtf
│ ├── ecoli_genome.fasta
│ ├── ecoli_illumina_R1.fastq
│ ├── ecoli_illumina_R2.fastq
│ ├── ecoli_illumina_single.fastq
│ ├── ecoli_nanopore_longread.fastq
│ ├── ecoli_proteins.faa
│ ├── ecoli_single.sam
│ ├── ecoli_single_sorted.bam
│ ├── ecoli_transcriptome.fasta
│ └── metadata
│ ├── assembly_data_report.jsonl
│ ├── dataset_catalog.json
│ ├── ecoli_illumina_prep.sh
│ ├── ecoli_nanopore_prep.sh
│ ├── ecoli_reference_prep.sh
│ └── md5sum.txt
├── misc
│ ├── ecoli_single.sam
│ ├── genome.fasta
│ ├── illumina_R1.fastq
│ ├── illumina_R2.fastq
│ ├── illumina_single.fastq
│ └── metadata
├── proteins
│ ├── arabidopsis_proteins.faa
│ ├── bs168_proteins.faa
│ ├── metadata
│ │ └── proteins_prep.sh
│ ├── mouse_proteins.faa
│ ├── natto_proteins.faa
│ └── pombe_proteins.faa
└── yeast
├── metadata
│ ├── assembly_data_report.jsonl
│ ├── dataset_catalog.json
│ ├── md5sum.txt
│ ├── yeast_illumina_prep.sh
│ ├── yeast_nanopore_prep.sh
│ └── yeast_reference_prep.sh
├── yeast.gff
├── yeast.gtf
├── yeast_cds.fasta
├── yeast_genome.fasta
├── yeast_illumina_R1.fastq
├── yeast_illumina_R2.fastq
├── yeast_illumina_single.fastq
├── yeast_nanopore_longread.fastq
├── yeast_proteins.faa
├── yeast_single.sam
├── yeast_single_sorted.bam
└── yeast_transcriptome.fasta
サンプルの実行: 一般的な手順
まず、サンプルのファイルを自分の書き込める領域にコピーします。
サンプルをコピーしたディレクトリで jsub sample.sh のように実行します。
(大抵の場合は、sh ./sample.sh のような形でログインノードで実行可能にもなっています。ただし、CPU 数の指定が jsub 時と変わる場合があります。)
例1: salmon の場合
サンプルスクリプト sample_salmon_paired.sh を ホームディレクトリ上に新たに生成する salmon_test というディレクトリで実行する場合です。
[user@ccfep3 ~]$ mkdir -p ~/salmon_test
[user@ccfep3 ~]$ cd ~/salmon_test
[user@ccfep3 salmon_test]$ cp /apl/bio/package/salmon/samples/* .
[user@ccfep3 salmon_test]$ ls
sample_salmon_paired.sh sample_salmon_single.sh[user@ccfep3 salmon_test]$ jsub sample_salmon_single.sh
11166909.ccpbs1
実行中のジョブの状況は jobinfo -c コマンドで確認できます。
[user@ccfep3 salmon_test]$ jobinfo -c
--------------------------------------------------------------------------------
Queue Job ID Name Status CPUs User/Grp Elaps Node/(Reason)
--------------------------------------------------------------------------------
H 11166909 *mple_salmon_* Run 4 ebw/--- 0:00 ccc003
--------------------------------------------------------------------------------
混雑していなければ、しばらく待てばジョブが終了し、出力結果が得られます。
[user@ccfep3 salmon_test]$ ls
sample_salmon_paired.sh sample_salmon_single.sh.o186015
sample_salmon_single.sh yeast_salmon_idx
sample_salmon_single.sh.e186015 yeast_single_salmon_out
[user@ccfep3 salmon_test]$
参考: sample_salmon_paired.sh の中身について
#!/bin/sh
#PBS -l select=1:ncpus=4:mpiprocs=1:ompthreads=4
#PBS -l walltime=00:10:00if [ ! -z "${PBS_O_WORKDIR}" ]; then
cd ${PBS_O_WORKDIR}
NCPUS=${OMP_NUM_THREADS}
else
NCPUS=4
export OMP_NUM_THREADS=${NCPUS}
fisource /apl/bio/etc/bio.sh
module -s purge
module -s load salmon# -----------------------------------------------------------------------------
# 入力・出力変数の定義 (ここを変更して再利用します)
# -----------------------------------------------------------------------------# === 入力ファイル ===
# 転写産物(Transcriptome)のリファレンス配列 (FASTA形式)
# ※ Salmonのリファレンスには「ゲノム配列」ではなく「転写産物」を指定してください。
IN_REF="/apl/bio/data_sample/yeast/yeast_transcriptome.fasta"
# シングルエンドの入力 (FASTQ形式)
IN_FASTQ_SINGLE="/apl/bio/data_sample/yeast/yeast_illumina_single.fastq"# === 出力ディレクトリ ===
# インデックスの出力ディレクトリ
OUT_DIR_IDX="./yeast_salmon_idx"
# 定量結果の出力ディレクトリ
OUT_DIR="./yeast_single_salmon_out"# === 実行パラメータ ===
# CPUスレッド数
PARAM_THREADS=${NCPUS}
# k-mer長 (リード長に応じて調整してください。デフォルトは31)
PARAM_KMER_LEN=31# -----------------------------------------------------------------------------
# 実行セクション
# -----------------------------------------------------------------------------echo "--- Job started at $(date) ---"
echo "Running Salmon (Single-end mode) on ${PARAM_THREADS} threads (Allocated ${NCPUS} cores)."
echo ""# Step 1: インデックスの構築
echo "Step 1: Building Index..."
# -t: 参照配列
# -i: 出力するインデックスのディレクトリ
# -k: k-mer長
# -p: 使用するCPUスレッド数
if [ ! -d "${OUT_DIR_IDX}" ]; then
salmon index \
-t "${IN_REF}" \
-i "${OUT_DIR_IDX}" \
-k ${PARAM_KMER_LEN} \
-p ${PARAM_THREADS}
echo "Indexing finished. Saved to: ${OUT_DIR_IDX}"
else
echo "Index directory '${OUT_DIR_IDX}' already exists. Skipping indexing step."
fi
echo ""# Step 2: 発現量の定量
echo "Step 2: Quantifying expression..."# -i: 作成した(または既存の)インデックスディレクトリ
# -l: ライブラリタイプ (A: 自動検出)
# -r: シングルエンドの入力
# --validateMappings: マッピング精度の向上 (推奨オプション)
# -o: 結果の出力ディレクトリ
# -p: 使用するCPUスレッド数
salmon quant \
-i "${OUT_DIR_IDX}" \
-l A \
-r "${IN_FASTQ_SINGLE}" \
--validateMappings \
-o "${OUT_DIR}" \
-p ${PARAM_THREADS}
echo "Quantification finished. Results saved to: ${OUT_DIR}"
echo ""
echo "--- Job finished at $(date) ---"