Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions assets/test_msa/test_msa.a3m
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
>1
ALDLKLRKDMQYELKTMQQELGITFIYVTHDQEEALTMSDRIVVMKDGYIQQIGTPEDIYNEPVNKFVADFIGESNILDGIM
>2
NLDVALRNRLRKELKELQRKTGVTMVFVTHDQEEALSLSDRLVVMEHGKIVQINTPEEVYYHPVNHYVASFVGKSNFMRGED
>3
GLHQRDNEKLIATLKKL-RDLGNTVIVVEHDEDTMYA-ADQIIDIGpgpgvhGGKVIAQGTAEQIKQI---peSITGQYLSgkkqipi-----PEKR
25 changes: 25 additions & 0 deletions conf/test_full_colabfold_local_msa.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nextflow config file for running full-size tests
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Defines input files and everything required to run a full size pipeline test.

Use as follows:
nextflow run nf-core/proteinfold -profile test_full_colabfold_local_msa,<docker/singularity> --outdir <OUTDIR>

----------------------------------------------------------------------------------------
*/

params {
config_profile_name = 'Full test profile for colabfold local with msa input'
config_profile_description = 'Minimal test dataset to check pipeline function'


// Input data to test colabfold with a local server analysis
mode = 'colabfold'
colabfold_server = 'local'
colabfold_model_preset = 'alphafold2_ptm'
input = params.pipelines_testdata_base_path + 'proteinfold/testdata/samplesheet/v1.0/samplesheet.csv'
colabfold_db = 's3://proteinfold-dataset/test-data/db/colabfold_mini'
msa_folder_path = "${projectDir}/assets/test_msa"
}
2 changes: 2 additions & 0 deletions nextflow.config
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ params {
host_url = null
use_templates = true
create_colabfold_index = false
msa_folder_path = null

// Colabfold links
colabfold_db_link = null
Expand Down Expand Up @@ -261,6 +262,7 @@ profiles {
test_full_alphafold2_split { includeConfig 'conf/test_full_alphafold_split.config' }
test_full_alphafold2_multimer { includeConfig 'conf/test_full_alphafold_multimer.config' }
test_full_colabfold_local { includeConfig 'conf/test_full_colabfold_local.config' }
test_full_colabfold_local_msa { includeConfig 'conf/test_full_colabfold_local_msa.config' }
test_full_colabfold_webserver { includeConfig 'conf/test_full_colabfold_webserver.config' }
test_full_colabfold_multimer { includeConfig 'conf/test_full_colabfold_webserver_multimer.config' }
test_full_esmfold { includeConfig 'conf/test_full_esmfold.config' }
Expand Down
7 changes: 7 additions & 0 deletions nextflow_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,13 @@
"type": "boolean",
"description": "Create databases indexes when running colabfold_local mode",
"fa_icon": "fas fa-bezier-curve"
},
"msa_folder_path": {
"type": "string",
"format": "path",
"exists": true,
"description": "Specifies the path to a folder with precalcualted MSA files for 'colabfold' mode",
"fa_icon": "fas fa-folder-open"
}
}
},
Expand Down
125 changes: 78 additions & 47 deletions workflows/colabfold.nf
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,18 @@ workflow COLABFOLD {
.fromSamplesheet("input")
.set { ch_fasta }

if (params.msa_folder_path) {
Channel.fromPath(params.msa_folder_path)
.map { filepath ->
return [ [id:"msa"], file(filepath) ]
}
.set { ch_msa }
}

if (params.colabfold_server == 'webserver') {
//
// MODULE: Run colabfold
//
if (params.colabfold_model_preset != 'alphafold2_ptm' && params.colabfold_model_preset != 'alphafold2') {
MULTIFASTA_TO_CSV(
ch_fasta
)
ch_versions = ch_versions.mix(MULTIFASTA_TO_CSV.out.versions)
if (params.msa_folder_path) {
COLABFOLD_BATCH(
MULTIFASTA_TO_CSV.out.input_csv,
ch_msa,
colabfold_model_preset,
ch_colabfold_params,
[],
Expand All @@ -76,55 +77,85 @@ workflow COLABFOLD {
)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
} else {
//
// MODULE: Run colabfold
//
if (params.colabfold_model_preset != 'alphafold2_ptm' && params.colabfold_model_preset != 'alphafold2') {
MULTIFASTA_TO_CSV(
ch_fasta
)
ch_versions = ch_versions.mix(MULTIFASTA_TO_CSV.out.versions)
COLABFOLD_BATCH(
MULTIFASTA_TO_CSV.out.input_csv,
colabfold_model_preset,
ch_colabfold_params,
[],
[],
num_recycles
)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
} else {
COLABFOLD_BATCH(
ch_fasta,
colabfold_model_preset,
ch_colabfold_params,
[],
[],
num_recycles
)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
}
}
} else if (params.colabfold_server == 'local') {
if (params.msa_folder_path) {
COLABFOLD_BATCH(
ch_fasta,
ch_msa,
colabfold_model_preset,
ch_colabfold_params,
[],
[],
ch_colabfold_db,
ch_uniref30,
num_recycles
)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
}

} else if (params.colabfold_server == 'local') {
//
// MODULE: Run mmseqs
//
if (params.colabfold_model_preset != 'AlphaFold2-ptm') {
MULTIFASTA_TO_CSV(
ch_fasta
)
ch_versions = ch_versions.mix(MULTIFASTA_TO_CSV.out.versions)
MMSEQS_COLABFOLDSEARCH (
MULTIFASTA_TO_CSV.out.input_csv,
ch_colabfold_params,
ch_colabfold_db,
ch_uniref30
)
ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions)
} else {
MMSEQS_COLABFOLDSEARCH (
ch_fasta,
//
// MODULE: Run mmseqs
//
if (params.colabfold_model_preset != 'AlphaFold2-ptm') {
MULTIFASTA_TO_CSV(
ch_fasta
)
ch_versions = ch_versions.mix(MULTIFASTA_TO_CSV.out.versions)
MMSEQS_COLABFOLDSEARCH (
MULTIFASTA_TO_CSV.out.input_csv,
ch_colabfold_params,
ch_colabfold_db,
ch_uniref30
)
ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions)
} else {
MMSEQS_COLABFOLDSEARCH (
ch_fasta,
ch_colabfold_params,
ch_colabfold_db,
ch_uniref30
)
ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions)
}

//
// MODULE: Run colabfold
//
COLABFOLD_BATCH(
MMSEQS_COLABFOLDSEARCH.out.a3m,
colabfold_model_preset,
ch_colabfold_params,
ch_colabfold_db,
ch_uniref30
ch_uniref30,
num_recycles
)
ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
}

//
// MODULE: Run colabfold
//
COLABFOLD_BATCH(
MMSEQS_COLABFOLDSEARCH.out.a3m,
colabfold_model_preset,
ch_colabfold_params,
ch_colabfold_db,
ch_uniref30,
num_recycles
)
ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions)
}

//
Expand Down