From f0372593024b7fcff0e58ed704a92c176fdf1116 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 12 Aug 2025 15:38:09 +1000 Subject: [PATCH 01/70] adding main logic --- assets/samplesheet.csv | 6 +- assets/schema_input.json | 27 ++- conf/test_gadi.config | 65 ++++++ main.nf | 22 +- modules/local/collect_confidence.nf | 82 ++++++++ modules/local/mmseqs_colabfoldsearch/main.nf | 53 +++++ modules/local/prepare_interactions.nf | 81 ++++++++ modules/local/run_boltz/main.nf | 49 +++++ nextflow.config | 3 +- .../local/utils_nfcore_wisps_pipeline/main.nf | 37 ++-- workflows/interactions.nf | 138 +++++++++++++ workflows/wisps.nf | 193 ++++++++++++------ 12 files changed, 657 insertions(+), 99 deletions(-) create mode 100644 conf/test_gadi.config create mode 100644 modules/local/collect_confidence.nf create mode 100644 modules/local/mmseqs_colabfoldsearch/main.nf create mode 100644 modules/local/prepare_interactions.nf create mode 100644 modules/local/run_boltz/main.nf create mode 100644 workflows/interactions.nf diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 5f653ab..8e79bde 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,3 +1,3 @@ -sample,fastq_1,fastq_2 -SAMPLE_PAIRED_END,/path/to/fastq/files/AEG588A1_S1_L002_R1_001.fastq.gz,/path/to/fastq/files/AEG588A1_S1_L002_R2_001.fastq.gz -SAMPLE_SINGLE_END,/path/to/fastq/files/AEG588A4_S4_L003_R1_001.fastq.gz, +id,fasta,type,group +T1024,https://raw.githubusercontent.com/nf-core/test-datasets/proteinfold/testdata/sequences/T1024.fasta,protein,G1 +T1026,https://raw.githubusercontent.com/nf-core/test-datasets/proteinfold/testdata/sequences/T1026.fasta,protein,G1 diff --git a/assets/schema_input.json b/assets/schema_input.json index e78c383..bcc9839 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -7,27 +7,32 @@ "items": { "type": "object", "properties": { - "sample": { + "id": { "type": "string", "pattern": "^\\S+$", - "errorMessage": "Sample name must be provided and cannot contain spaces", + "errorMessage": "Sequence name must be provided and cannot contain spaces", "meta": ["id"] }, - "fastq_1": { + "fasta": { "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", - "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "pattern": "^\\S+\\.fa(sta)?$", + "errorMessage": "Fasta file must be provided, cannot contain spaces and must have extension '.fa' or '.fasta'" }, - "fastq_2": { + "type": { "type": "string", - "format": "file-path", - "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", - "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "pattern": "^\\S+$", + "meta": ["type"], + "default": "protein" + }, + "group": { + "type": "string", + "pattern": "^\\S+$", + "meta": ["group"], + "default": "all" } }, - "required": ["sample", "fastq_1"] + "required": ["id", "fasta"] } } diff --git a/conf/test_gadi.config b/conf/test_gadi.config new file mode 100644 index 0000000..df1edfb --- /dev/null +++ b/conf/test_gadi.config @@ -0,0 +1,65 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/wisps -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ +includeConfig 'https://raw.githubusercontent.com/nf-core/configs/master/conf/nci_gadi.config' + +singularity.cacheDir = "/g/data/if89/singularity_cache/" +singularity.autoMounts = true +singularity.enabled = true +if (params.use_gpu) { singularity.runOptions = '--nv' } + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Input data + outdir = "out-test" + input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" + samplesheet2 = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" + + boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" + boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" + colabfold_db = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" + uniref30 = "/g/data/if89/proteinfold_dbs/miniature_databases/uniref30_2302/" + use_gpu = true + project = "ll61" + use_dgxa100 = false +} + +process { + //executor = "local" + storage = "gdata/if89+scratch/${params.project}+gdata/${params.project}" + + withName: 'MMSEQS_COLABFOLDSEARCH' { + memory = 300.GB + time = 16.h + } + withName: 'RUN_BOLTZ' { + cpus = 12 + queue = "gpuvolta" + time = 10.h + memory = 24.GB + cpus = 12 + gpus = 1 + } + resourceLimits = [ + cpus: 1, + memory: '5.GB', + time: '1.h' + ] + resourceLimits = [ + cpus: 1000, + memory: '2000.GB', + time: '24.h' + ] + +} + diff --git a/main.nf b/main.nf index efef31d..bf91b45 100644 --- a/main.nf +++ b/main.nf @@ -16,6 +16,7 @@ */ include { WISPS } from './workflows/wisps' + include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_wisps_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_wisps_pipeline' /* @@ -33,15 +34,26 @@ workflow NFCORE_WISPS { samplesheet // channel: samplesheet read in from --input main: - + ch_samplesheet = samplesheet + ch_multiqc = Channel.empty() + ch_versions = Channel.empty() + multiqc_report = Channel.empty() // // WORKFLOW: Run pipeline // - WISPS ( - samplesheet - ) + WISPS ( + ch_samplesheet, + params.mode, + ch_versions, + params.boltz_ccd, + params.boltz_model, + params.colabfold_db, + params.uniref30 + ) + ch_versions = ch_versions.mix(WISPS.out.versions) + emit: - multiqc_report = WISPS.out.multiqc_report // channel: /path/to/multiqc_report.html + multiqc_report //= WISPS.out.multiqc_report // channel: /path/to/multiqc_report.html } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf new file mode 100644 index 0000000..77881ac --- /dev/null +++ b/modules/local/collect_confidence.nf @@ -0,0 +1,82 @@ +process COLLECT_CONFIDENCE { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), val(samples) + path(json_files) + output: + tuple val(meta), path ("confidence_scores_full.csv"), emit: confidence + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + #!/usr/bin/env python3 + + import os, sys + import json + import csv + + # Folder containing the JSON files + output_csv = "confidence_scores_full.csv" + + # Collect all JSON files + json_files = ["${json_files.join('", "')}"] + samples = ["${samples.join('", "')}"] + + # Store all rows here + rows = [] + all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] + writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + # First pass: read and collect keys + cntr = 0 + for file in json_files: + with open(file) as f: + data = json.load(f) + flat_data = {"id" : samples[cntr]} + cntr += 1 + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict): + for sub_key, sub_value in value.items(): + flat_data[f"{key}_{sub_key}"] = sub_value + writing_keys.append(f"{key}_{sub_key}") + else: + flat_data[key] = value + rows.append(flat_data) + + # Write to CSV + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=writing_keys) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in writing_keys}) + + print(f"CSV file created at: {output_csv}") + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch "confidence_scores_full.csv" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + generate_comparison_report.py: \$(python3 --version) + END_VERSIONS + """ +} diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf new file mode 100644 index 0000000..68d2d2c --- /dev/null +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -0,0 +1,53 @@ +process MMSEQS_COLABFOLDSEARCH { + tag "$meta.id" + label 'process_high_memory' + + container "nf-core/proteinfold_colabfold:dev" + + input: + tuple val(meta), path(fasta) + path ('db/*') + path ('db/*') + + output: + tuple val(meta), path("**.a3m"), emit: a3m + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error("Local MMSEQS_COLABFOLDSEARCH module does not support Conda. Please use Docker / Singularity / Podman instead.") + } + def args = task.ext.args ?: '' + + """ + colabfold_search \\ + $args \\ + --threads $task.cpus ${fasta} \\ + ./db \\ + "result/" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + alphafold_colabfold: \$(conda run -n colabfold pip list | grep "^alphafold-colabfold" | awk '{print \$2}') + mmseqs: \$(mmseqs version) + END_VERSIONS + """ + + stub: + """ + mkdir results + touch results/${meta.id}.a3m + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + alphafold_colabfold: \$(conda run -n colabfold pip list | grep "^alphafold-colabfold" | awk '{print \$2}') + mmseqs: \$(mmseqs version) + END_VERSIONS + """ +} \ No newline at end of file diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf new file mode 100644 index 0000000..2eb0a49 --- /dev/null +++ b/modules/local/prepare_interactions.nf @@ -0,0 +1,81 @@ +process PREPARE_INTERACTIONS { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), val(fasta) + tuple val(meta), val(a3m) + tuple val(meta), val(types) + path(files) + output: + tuple val(meta), path ("*.fasta"), emit: fasta + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + #!/usr/bin/env python3 + import os, sys + import string + + #single_letters = list(string.ascii_uppercase) + #two_letter_combinations = [''.join(p) for p in product(string.ascii_uppercase, repeat=2)] + #all_combinations = single_letters + two_letter_combinations + all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] + fasta_files = ["${fasta.join('", "')}"] + a3m_files = ["${a3m.join('", "')}"] + seq_types = ["${types.join('", "')}"] + for seq_type in seq_types: + if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: + print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') + exit (1) + output_file = "${meta.id}_boltz_interaction_input.fasta" + counter = 0 + with open(output_file, "w") as outfile: + for seq_itr in range(len(seq_types)): + fasta = fasta_files[seq_itr] + a3m = a3m_files[seq_itr] + seq_type = seq_types[seq_itr] + + with open(fasta, "r") as f: + lines = f.readlines() + + if not lines: + continue # Skip empty FASTA files + + #header = lines[0].strip() + body = lines[1:] + header = f">{all_combinations[counter]}|{seq_type}" + counter += 1 + if seq_type == "protein": + header += f"|{os.path.basename(a3m)}\\n" + else: + header += "\\n" + + outfile.write(header) + outfile.writelines(body) + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch "${meta.id}_boltz_interaction_input.fasta" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + generate_comparison_report.py: \$(python3 --version) + END_VERSIONS + """ +} diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf new file mode 100644 index 0000000..b513437 --- /dev/null +++ b/modules/local/run_boltz/main.nf @@ -0,0 +1,49 @@ +/* + * Run Boltz + */ +process RUN_BOLTZ { + tag "$meta.id" + label 'process_medium' + + container "fastfold/boltz-1:latest" + + input: + tuple val(meta), path(fasta) + path (files) + path ('boltz1_conf.ckpt') + path ('ccd.pkl') + + output: + tuple val(meta), path ("boltz_results_*/processed/msa/*.npz"), emit: msa + tuple val(meta), path ("boltz_results_*/processed/structures/*.npz"), emit: structures + tuple val(meta), path ("boltz_results_*/predictions/*/confidence*.json"), emit: confidence + tuple val(meta), path ("*"), emit: plddt + tuple val(meta), path ("boltz_results_*/predictions/*/*.pdb"), emit: pdb + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + boltz predict --output_format pdb ${args} "${fasta}" --cache ./ + """ + stub: + """ + mkdir -p boltz_results_${meta.id}/processed/msa/ + mkdir -p boltz_results_${meta.id}/processed/structures/ + mkdir -p boltz_results_${meta.id}/predictions/${meta.id}/ + + touch boltz_results_${meta.id}/processed/msa/${meta.id}.npz + touch boltz_results_${meta.id}/processed/structures/${meta.id}.npz + touch boltz_results_${meta.id}/predictions/${meta.id}/confidence_${meta.id}.json + touch boltz_results_${meta.id}/predictions/${meta.id}/${meta.id}.pdb + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/nextflow.config b/nextflow.config index d89986c..1b1bf29 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,7 +12,7 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null - + mode = "all-all" // MultiQC options @@ -153,6 +153,7 @@ profiles { } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } + test_gadi { includeConfig 'conf/test_gadi.config' } } // Load nf-core custom profiles from different Institutions diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index 410549e..c113275 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -67,25 +67,26 @@ workflow PIPELINE_INITIALISATION { // Create channel from input file provided through params.input // - Channel - .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) - .map { - meta, fastq_1, fastq_2 -> - if (!fastq_2) { - return [ meta.id, meta + [ single_end:true ], [ fastq_1 ] ] - } else { - return [ meta.id, meta + [ single_end:false ], [ fastq_1, fastq_2 ] ] - } + ch_samplesheet = Channel.fromList(samplesheetToList(params.input, "assets/schema_input.json")) + if (params.split_fasta) { + // TODO: here we have to validate that the ids are unique and valid as an extra step + // since it is not done with the samplesheet schema (they are all in the same file) + ch_samplesheet.map { meta, fasta -> + validateFasta(fasta) } - .groupTuple() - .map { samplesheet -> - validateInputSamplesheet(samplesheet) - } - .map { - meta, fastqs -> - return [ meta, fastqs.flatten() ] - } - .set { ch_samplesheet } + + // Split the fasta file into individual files for each sequence + ch_samplesheet + .map { meta,fasta -> fasta } + .splitFasta( record: [header: true, sequence: true] ) + .collectFile { item -> + [ "${cleanHeader(item["header"])}.fa", ">" + cleanHeader(item["header"]) + '\n' +item["sequence"] ] + } + .map { + file -> [[id: file.baseName], file] + } + .set { ch_samplesheet } + } emit: samplesheet = ch_samplesheet diff --git a/workflows/interactions.nf b/workflows/interactions.nf new file mode 100644 index 0000000..6542a68 --- /dev/null +++ b/workflows/interactions.nf @@ -0,0 +1,138 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT LOCAL MODULES/SUBWORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// +// MODULE: Loaded from modules/local/ +// + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT NF-CORE MODULES/SUBWORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// +// MODULE: Installed directly from nf-core/modules +// +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { CREATE_SAMPLESHEET_YAML } from '../modules/local/create_samplesheet' +include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' +include { PREPARE_INTERACTIONS } from '../modules/local/prepare_interactions' +include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' +// +// SUBWORKFLOW: Consisting entirely of nf-core/modules +// +include { paramsSummaryMap } from 'plugin/nf-schema' +include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_proteinfold_pipeline' + +// +// MODULE: Boltz +// +include { RUN_BOLTZ } from '../modules/local/run_boltz' + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RUN MAIN WORKFLOW +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +workflow INTERACTIONS { + + take: + ch_samplesheet_1 // channel: samplesheet read from --input + samplesheet_2 // channel: samplesheet read from --input + ch_versions // channel: [ path(versions.yml) ] + ch_boltz_ccd // channel: [ path(boltz_ccd) ] + ch_boltz_model // channel: [ path(model) ] + ch_colabfold_params // channel: [ path(colabfold_params) ] + ch_colabfold_db // channel: [ path(colabfold_db) ] + ch_uniref30 // channel: [ path(uniref30) ] + + main: + ch_multiqc_files = Channel.empty() + + Channel.fromPath(samplesheet_2) + .splitCsv(header: true) + .map{row -> [["id": row.id, "type": row.type ?: "protein"], file(row.fasta, checkIfExists: true)]} + .set{ch_samplesheet_2} + + ch_samplesheet_1.map{it[0]}.combine(ch_samplesheet_2.map{it[0]}).map{["id": [it[0]["id"], it[1]["id"]].min() + "-" + [it[0]["id"], it[1]["id"]].max()]}.unique().set{ch_unique_pairs} + + + MMSEQS_COLABFOLDSEARCH ( + ch_samplesheet_1.map{it[0].type = "protein"; it}.mix(ch_samplesheet_2).unique().filter{it[0].type == "protein"}, + ch_colabfold_params, + ch_colabfold_db, + ch_uniref30 + ) + ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) + + ch_left_list = ch_samplesheet_1.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) + ch_right_list = ch_samplesheet_2.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) + + //ch_samplesheet_1.view() + //ch_samplesheet_2.view() + //MMSEQS_COLABFOLDSEARCH.out.a3m.view() + + //ch_left_list.combine(ch_right_list).view() + + ch_left_list + .combine(ch_right_list) + .map{[ + ["id": [it[0]["id"], it[3]["id"]].min() + "-" + [it[0]["id"], it[3]["id"]].max()], + [it[1].name, it[4].name], + [it[2] ? it[2].name : "", it[5] ? it[5].name : ""], + [it[0]["type"], it[3]["type"]], + [it[1], it[2], it[4], it[5]].findAll{it}.unique{it.toUriString()}, + + ]}.set{ch_pairs} + + ch_pairs + .join(ch_unique_pairs) + .set{ch_interaction_input} + + PREPARE_INTERACTIONS( + ch_interaction_input.map{[it[0], it[1]]}, + ch_interaction_input.map{[it[0], it[2]]}, + ch_interaction_input.map{[it[0], it[3]]}, + ch_interaction_input.map{it[4]} + ) + + PREPARE_INTERACTIONS.out.fasta + .join(ch_interaction_input) + .set{ch_boltz_input} + + RUN_BOLTZ( + ch_boltz_input.map{[it[0], it[1]]}, + ch_boltz_input.map{it[5].findAll { it.name.endsWith(".a3m") }}, + ch_boltz_model, + ch_boltz_ccd + ) + RUN_BOLTZ.out.confidence.toSortedList().multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_confidence_scores} + + COLLECT_CONFIDENCE( + ch_confidence_scores.ids.map{[["id": "full_run"], it]}, + ch_confidence_scores.json + ) + + //ch_confidence_scores.ids.view() + //ch_confidence_scores.json.view() + + emit: + versions = ch_versions + msa = RUN_BOLTZ.out.msa + structures = RUN_BOLTZ.out.structures + confidence = RUN_BOLTZ.out.confidence + run_confidence = COLLECT_CONFIDENCE.out.confidence + plddt = RUN_BOLTZ.out.plddt + pdb = RUN_BOLTZ.out.pdb + +} diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 787c124..f4710c1 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -1,14 +1,37 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS + IMPORT LOCAL MODULES/SUBWORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { MULTIQC } from '../modules/nf-core/multiqc/main' +// +// MODULE: Loaded from modules/local/ +// + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT NF-CORE MODULES/SUBWORKFLOWS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +// +// MODULE: Installed directly from nf-core/modules +// +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' +include { PREPARE_INTERACTIONS } from '../modules/local/prepare_interactions' +include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' +// +// SUBWORKFLOW: Consisting entirely of nf-core/modules +// include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_wisps_pipeline' + +// +// MODULE: Boltz +// +include { RUN_BOLTZ } from '../modules/local/run_boltz' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -17,73 +40,121 @@ include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_wisp */ workflow WISPS { - + take: - ch_samplesheet // channel: samplesheet read in from --input - main: + ch_samplesheet // channel: samplesheet read from --input + mode + ch_versions // channel: [ path(versions.yml) ] + ch_boltz_ccd // channel: [ path(boltz_ccd) ] + ch_boltz_model // channel: [ path(model) ] + ch_colabfold_db // channel: [ path(colabfold_db) ] + ch_uniref30 // channel: [ path(uniref30) ] - ch_versions = Channel.empty() + main: ch_multiqc_files = Channel.empty() + + interaction_mode = mode.split(",").collect { pair -> + pair.split('-').sort().join('-') + } + + if ("all-all" in interaction_mode) { + interaction_mode = ["all-all"] + }else{ + required = interaction_mode.collect{it.split("-")}.flatten().unique() + ch_samplesheet + .map{it[0].group} + .unique() + .toList() + .subscribe{ + emitted -> { + if (required - emitted){ + log.error "The groups ${required - emitted} is not in the sample sheet!" + exit 1 + } + } + } + } - // - // Collate and save software versions - // - softwareVersionsToYAML(ch_versions) - .collectFile( - storeDir: "${params.outdir}/pipeline_info", - name: 'nf_core_' + 'pipeline_software_' + 'mqc_' + 'versions.yml', - sort: true, - newLine: true - ).set { ch_collated_versions } - + log.info "Used Interactions (Sorted): ${interaction_mode.join(',')}" + + ch_samplesheet.map{it[0]} + .combine(ch_samplesheet.map{it[0]}) + .map{[ + "id": [it[0]["id"], it[1]["id"]].min() + "-" + [it[0]["id"], it[1]["id"]].max(), + "group": [it[0]["group"], it[1]["group"]].min() + "-" + [it[0]["group"], it[1]["group"]].max(), + ]} + .filter{ it["group"] in interaction_mode || interaction_mode[0] == "all-all"} + .unique() + .set{ch_unique_pairs} - // - // MODULE: MultiQC - // - ch_multiqc_config = Channel.fromPath( - "$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = params.multiqc_config ? - Channel.fromPath(params.multiqc_config, checkIfExists: true) : - Channel.empty() - ch_multiqc_logo = params.multiqc_logo ? - Channel.fromPath(params.multiqc_logo, checkIfExists: true) : - Channel.empty() + MMSEQS_COLABFOLDSEARCH ( + ch_samplesheet.filter{it[0].type == "protein"}, + ch_colabfold_db, + ch_uniref30 + ) + ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) + + ch_input_aligned = ch_samplesheet.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) + + ch_input_aligned + .combine(ch_input_aligned) + .map{[ + [ + "id": [it[0]["id"], it[3]["id"]].min() + "-" + [it[0]["id"], it[3]["id"]].max(), + "group": [it[0]["group"], it[3]["group"]].min() + "-" + [it[0]["group"], it[3]["group"]].max(), + ], + [it[1].name, it[4].name], + [it[2] ? it[2].name : "", it[5] ? it[5].name : ""], + [it[0]["type"], it[3]["type"]], + [it[1], it[2], it[4], it[5]].findAll{it}.unique{it.toUriString()}, - summary_params = paramsSummaryMap( - workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_files = ch_multiqc_files.mix( - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? - file(params.multiqc_methods_description, checkIfExists: true) : - file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value( - methodsDescriptionText(ch_multiqc_custom_methods_description)) + ]}.set{ch_pairs} + + //ch_pairs.view() + + ch_pairs + .join(ch_unique_pairs) + .set{ch_interaction_input} + + //ch_interaction_input.view() - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix( - ch_methods_description.collectFile( - name: 'methods_description_mqc.yaml', - sort: true - ) + PREPARE_INTERACTIONS( + ch_interaction_input.map{[it[0], it[1]]}, + ch_interaction_input.map{[it[0], it[2]]}, + ch_interaction_input.map{[it[0], it[3]]}, + ch_interaction_input.map{it[4]} ) - - MULTIQC ( - ch_multiqc_files.collect(), - ch_multiqc_config.toList(), - ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList(), - [], - [] + + PREPARE_INTERACTIONS.out.fasta + .join(ch_interaction_input) + .set{ch_boltz_input} + + RUN_BOLTZ( + ch_boltz_input.map{[it[0], it[1]]}, + ch_boltz_input.map{it[5].findAll { it.name.endsWith(".a3m") }}, + ch_boltz_model, + ch_boltz_ccd ) + RUN_BOLTZ.out.confidence.toSortedList().multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_confidence_scores} - emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] + COLLECT_CONFIDENCE( + ch_confidence_scores.ids.map{[["id": "full_run"], it]}, + ch_confidence_scores.json + ) + + //ch_confidence_scores.ids.view() + //ch_confidence_scores.json.view() -} + emit: + versions = ch_versions + msa = RUN_BOLTZ.out.msa + structures = RUN_BOLTZ.out.structures + confidence = RUN_BOLTZ.out.confidence + run_confidence = COLLECT_CONFIDENCE.out.confidence + plddt = RUN_BOLTZ.out.plddt + pdb = RUN_BOLTZ.out.pdb -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - THE END -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ +} From cf01fbf437fb27d58219200ec0ad62dbf6a98581 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Wed, 3 Sep 2025 14:26:38 +1000 Subject: [PATCH 02/70] adding batch mmseq --- conf/test_gadi.config | 2 +- main.nf | 3 +- modules/local/mmseqs_colabfoldsearch/main.nf | 21 ++- nextflow.config | 18 +- subworkflows/local/msa.nf | 156 ++++++++++++++++++ .../local/utils_nfcore_wisps_pipeline/main.nf | 1 - workflows/wisps.nf | 51 ++++-- 7 files changed, 229 insertions(+), 23 deletions(-) create mode 100644 subworkflows/local/msa.nf diff --git a/conf/test_gadi.config b/conf/test_gadi.config index df1edfb..ca8ca36 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -52,7 +52,7 @@ process { } resourceLimits = [ cpus: 1, - memory: '5.GB', + memory: '4.GB', time: '1.h' ] resourceLimits = [ diff --git a/main.nf b/main.nf index bf91b45..a1c8c4c 100644 --- a/main.nf +++ b/main.nf @@ -48,7 +48,8 @@ workflow NFCORE_WISPS { params.boltz_ccd, params.boltz_model, params.colabfold_db, - params.uniref30 + params.uniref30, + params.mmseq_batch_size ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 68d2d2c..a3e53ea 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -41,8 +41,27 @@ process MMSEQS_COLABFOLDSEARCH { stub: """ mkdir results - touch results/${meta.id}.a3m + if [[ "$fasta" == *.csv ]]; then + line_num=0 + while IFS=, read -r firstcol rest; do + line_num=\$((line_num + 1)) + # Skip the first line (header) + if [ "\$line_num" -eq 1 ]; then + continue + fi + # Skip empty first column + [ -z "\$firstcol" ] && continue + + # Clean filename (letters, numbers, dash, underscore) + safe_name=\$(echo "\$firstcol" | tr -cd '[:alnum:]_-') + + touch "results/\${safe_name}.a3m" + done < "$fasta" + else + touch results/${meta.id}.a3m + fi + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') diff --git a/nextflow.config b/nextflow.config index 1b1bf29..dcfccf8 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,7 +13,7 @@ params { // Input options input = null mode = "all-all" - + mmseq_batch_size = 10 // MultiQC options multiqc_config = null @@ -186,14 +186,14 @@ env { } // Set bash options -process.shell = """\ -bash - -set -e # Exit if a tool returns a non-zero status/exit code -set -u # Treat unset variables and parameters as an error -set -o pipefail # Returns the status of the last command to exit with a non-zero status or zero if all successfully execute -set -C # No clobber - prevent output redirection from overwriting files. -""" +process.shell = [ + "bash", + "-C", // No clobber - prevent output redirection from overwriting files. + "-e", // Exit if a tool returns a non-zero status/exit code + "-u", // Treat unset variables and parameters as an error + "-o", // Returns the status of the last command to exit.. + "pipefail" // ..with a non-zero status or zero if all successfully execute +] // Disable process selector warnings by default. Use debug profile to enable warnings. nextflow.enable.configProcessNamesValidation = false diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf new file mode 100644 index 0000000..e30b989 --- /dev/null +++ b/subworkflows/local/msa.nf @@ -0,0 +1,156 @@ +// +// Post processing analysis for the predicted structures +// + +// +// SUBWORKFLOW: Consisting entirely of nf-core/modules +// +include { MMSEQS_COLABFOLDSEARCH } from '../../modules/local/mmseqs_colabfoldsearch' + +workflow MSA { + + take: + ch_samplesheet + ch_colabfold_db // channel: path(colabfold_db) + ch_uniref30 // channel: path(uniref30) + mmseq_batch_size + + main: + ch_versions = Channel.empty() + ch_a3m = Channel.empty() + + ch_samplesheet + .branch { + fasta: it[1].extension == "fasta" || it[1].extension == "fa" + yaml: it[1].extension == "yaml" || it[1].extension == ".yml" + json: it[1].extension == "json" + } + .set{ch_input} + + ch_input.yaml + .map{ + [it[0], "${it[0].id},${getYamlSequences(it[1].text).collect { it.sequence }.join(':')}"] + } + .set{ch_yaml_seqs} + + if (mmseq_batch_size > 1){ + def batch_itr = 0 + + ch_input.fasta + .map{ + "${it[0].id},${getFastaSequences(it[1].text).collect { it.sequence }.join(':')}" + } + .mix( + ch_yaml_seqs.map{it[1]} + ) + .buffer( size: mmseq_batch_size, remainder: true ) + .collectFile { + batch_itr += 1; + [ "input_seqs_${batch_itr}.csv", "id,sequence\n" + it.join("\n") + '\n' ] + } + .map{[["id": it.baseName], it]} + .set {ch_input_seqs} + }else{ + ch_input.fasta + .mix( + ch_yaml_seqs + .collectFile { + [ "${it[0].id}.csv", "id,sequence\n" + it[1].join("\n") + '\n' ] + } + .map{[["id": it.baseName], it]} + .join( + ch_yaml_seqs.map{[it[0].id, it[0]]} + ) + .map{[it[2], it[1]]} + ).set{ch_input_seqs} + } + ch_input_seqs.view() + + MMSEQS_COLABFOLDSEARCH ( + ch_input_seqs, + ch_colabfold_db, + ch_uniref30 + ) + ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) + + ch_a3m = ch_a3m.mix( + ch_input.fasta.mix(ch_input.yaml) + .map{[it[1].baseName, it[0]]} + .combine( + MMSEQS_COLABFOLDSEARCH.out.a3m + .map{it[1]} + .flatten() + .map {[it.baseName, it]}, + by:0 + ) + .map{[it[1], it[2]]} + ) + //MMSEQS_COLABFOLDSEARCH.out.a3m.view() + //ch_a3m.view() + + emit: + formated_input = ch_input.fasta.mix(ch_input.yaml) + a3m = ch_a3m + versions = ch_versions +} + +def getYamlSequences(yamlData) { + List enrichedEntries = [] + Map currentEntry = [:] + inSequences = false + yamlData.split("\n").each { line -> + def trimmed = line.trim() + + // Detect start of sequences section + if (trimmed == 'sequences:') { + inSequences = true + return + } + if (inSequences && !line.startsWith(' ') && !trimmed.isEmpty()) { + inSequences = false + return + } + if (!inSequences){ + return + } + + + if (trimmed.startsWith('-') && trimmed.endsWith(':')) { + if (!currentEntry.isEmpty()) { + enrichedEntries << currentEntry + } + currentEntry = ['type': trimmed[1..-2]] + }else{ + def (key, value) = trimmed.split(':', 2)*.trim() + currentEntry[key] = value + } + } + if (!currentEntry.isEmpty()) { + enrichedEntries << currentEntry + } + return enrichedEntries +} + +def getFastaSequences(fastaData) { + List fastaEntries = [] + String currentId = null + StringBuilder currentSeq = new StringBuilder() + + fastaData.split("\n").each { line -> + if (line.startsWith(">")) { + if (currentId) { + fastaEntries << [id: currentId, sequence: currentSeq.toString()] + } + currentId = line[1..-1].trim() // Remove '>' and trim + currentSeq = new StringBuilder() + } else { + currentSeq.append(line.trim()) + } + } + + if (currentId) { + fastaEntries << [id: currentId, sequence: currentSeq.toString()] + } + + return fastaEntries +} \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index c113275..784c656 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -225,4 +225,3 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } - diff --git a/workflows/wisps.nf b/workflows/wisps.nf index f4710c1..23364ca 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -18,7 +18,6 @@ // MODULE: Installed directly from nf-core/modules // include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' include { PREPARE_INTERACTIONS } from '../modules/local/prepare_interactions' include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' // @@ -27,12 +26,20 @@ include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { MSA } from '../subworkflows/local/msa' // // MODULE: Boltz // include { RUN_BOLTZ } from '../modules/local/run_boltz' +// +// FUNCTIONS +// +include { getFastaSequences } from '../subworkflows/local/msa' +include { getYamlSequences } from '../subworkflows/local/msa' + + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RUN MAIN WORKFLOW @@ -49,6 +56,7 @@ workflow WISPS { ch_boltz_model // channel: [ path(model) ] ch_colabfold_db // channel: [ path(colabfold_db) ] ch_uniref30 // channel: [ path(uniref30) ] + mmseq_batch_size // number main: ch_multiqc_files = Channel.empty() @@ -56,7 +64,6 @@ workflow WISPS { interaction_mode = mode.split(",").collect { pair -> pair.split('-').sort().join('-') } - if ("all-all" in interaction_mode) { interaction_mode = ["all-all"] }else{ @@ -74,9 +81,7 @@ workflow WISPS { } } } - log.info "Used Interactions (Sorted): ${interaction_mode.join(',')}" - ch_samplesheet.map{it[0]} .combine(ch_samplesheet.map{it[0]}) .map{[ @@ -87,15 +92,41 @@ workflow WISPS { .unique() .set{ch_unique_pairs} - MMSEQS_COLABFOLDSEARCH ( - ch_samplesheet.filter{it[0].type == "protein"}, + ch_samplesheet + .branch { + fasta: it[1].extension == "fasta" || it[1].extension == "fa" + it[0].cnt = getFastaSequences(it[1].text).size() + return it + yaml: it[1].extension == "yaml" || it[1].extension == ".yml" + it[0].cnt = getYamlSequences(it[1].text).size() + return it + json: it[1].extension == "json" + } + .set{ch_input} + + + MSA ( + ch_input.fasta + .mix(ch_input.json) + .mix(ch_input.yaml) + .filter{it[0].type == "protein"}, ch_colabfold_db, - ch_uniref30 + ch_uniref30, + mmseq_batch_size ) - ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) - - ch_input_aligned = ch_samplesheet.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) + ch_versions = ch_versions.mix(MSA.out.versions) + ch_input.fasta + .mix(ch_input.json) + .mix(ch_input.yaml) + .map{[it[0].id, it]} + .join( + MSA.out.a3m.map{[it[0].id, it]} + , remainder: true + ) + .map{[it[2][0], it[1][1], it[2][1]]} + .set{ch_input_aligned} + ch_input_aligned .combine(ch_input_aligned) .map{[ From a617b2b27ce962ffd5c6cd594c4f266eb9465049 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 26 Sep 2025 22:41:58 +1000 Subject: [PATCH 03/70] major updates --- bin/extract_metrics.py | 462 +++++++++ bin/ipsae.py | 971 ++++++++++++++++++ bin/latest.py | 787 ++++++++++++++ bin/msa_manager.py | 125 +++ bin/utils.py | 112 ++ bin/zt-search.py | 802 +++++++++++++++ conf/gadi.config | 68 ++ conf/modules.config | 28 +- conf/test_gadi.config | 54 +- main.nf | 27 +- modules/local/colabfold_batch/Dockerfile | 5 + modules/local/colabfold_batch/main.nf | 81 ++ .../local/data_convertor/boltz_fasta/main.nf | 129 +++ .../local/data_convertor/fasta2json/main.nf | 74 ++ .../local/data_convertor/fasta2yaml/main.nf | 72 ++ modules/local/ipsae/main.nf | 46 + modules/local/mmseqs_colabfoldsearch/main.nf | 11 +- modules/local/msa_manager/split_msa.nf | 42 + modules/local/prepare_interactions.nf | 1 + modules/local/run_alphafold3/Dockerfile | 59 ++ modules/local/run_alphafold3/main.nf | 95 ++ modules/local/run_boltz/Dockerfile | 25 + modules/local/run_boltz/main.nf | 93 +- nextflow.config | 13 +- nextflow_schema.json | 89 ++ subworkflows/local/msa.nf | 22 +- .../local/utils_nfcore_wisps_pipeline/main.nf | 21 +- workflows/interactions.nf | 138 --- workflows/wisps.nf | 293 ++++-- 29 files changed, 4486 insertions(+), 259 deletions(-) create mode 100755 bin/extract_metrics.py create mode 100755 bin/ipsae.py create mode 100644 bin/latest.py create mode 100755 bin/msa_manager.py create mode 100755 bin/utils.py create mode 100755 bin/zt-search.py create mode 100644 conf/gadi.config create mode 100644 modules/local/colabfold_batch/Dockerfile create mode 100644 modules/local/colabfold_batch/main.nf create mode 100644 modules/local/data_convertor/boltz_fasta/main.nf create mode 100644 modules/local/data_convertor/fasta2json/main.nf create mode 100644 modules/local/data_convertor/fasta2yaml/main.nf create mode 100644 modules/local/ipsae/main.nf create mode 100644 modules/local/msa_manager/split_msa.nf create mode 100644 modules/local/run_alphafold3/Dockerfile create mode 100644 modules/local/run_alphafold3/main.nf create mode 100644 modules/local/run_boltz/Dockerfile delete mode 100644 workflows/interactions.nf diff --git a/bin/extract_metrics.py b/bin/extract_metrics.py new file mode 100755 index 0000000..c8db726 --- /dev/null +++ b/bin/extract_metrics.py @@ -0,0 +1,462 @@ +#!/usr/bin/env python +import pickle +import os +import argparse +import json +#import torch moved to a conditional import since too bulky import if not used +import numpy as np +import csv +import string +from utils import plddt_from_struct_b_factor, get_chain_ids + +# TODO: Issue #309, make into a poper separate process, it its own module so that dependencies can be managed better +# TODO: Need a sense of ranking, so that metrics can be traced back to correct model structure, even if they're not in sequential order. The enumerates() here are not sufficient. +# Needs to be program-dependent, (see item below). +# TODO: look into have a --prog argument that could set filenames etc, logically seperate it? +# {name}_{prog}_{metric}.tsv might be easier for MultiQC to parse a complex workdir, than without the .prog +# TODO: read --prog from ${meta.model} in the NextFlow pipes. This also allows case switching in a proper EXTRACT_METRICS process. +# E.g. in main.nf of EXTACT_METRICS process, we could have: +# match ${meta.mode}: +# case 'alphafold2': +# ... +# case 'rosettafold_all_atom': +# ... +#... +# ^ overwrought with duplication, but can catch program specific weirdness, and lower barrier to adding new programs in the future. + +# TODO: Chain-wise iPTM since the relevant interface might not always be the average of all. +# Would complete Issue #308 +# Proposed format is pair-interfaces in rows, structure inference number in cols: https://github.com/nf-core/proteinfold/pull/312#issuecomment-2917709432 +# KR - changed to have both sides of the matrix, because it's not symmetrical (see comment in Issue #306) + +# Mapping of characters to integers for MSA parsing. +# 20 is for unknown characters, and 21 is for gaps. +AA_to_int = { + "A": 0, "C": 1, "D": 2, "E": 3, "F": 4, "G": 5, "H": 6, "I": 7, "K": 8, "L": 9, + "M": 10, "N": 11, "P": 12, "Q": 13, "R": 14, "S": 15, "T": 16, "V": 17, "W": 18, "Y": 19, + ".": 20, "-": 21 +} + +def a3m_to_int(a3m_file): + """ + Convert an A3M MSA representation into an integer representation (0-21). + """ + with open(a3m_file, "r") as f: + msa = f.read() + + # Convert each sequence in the MSA + int_sequences = [] + for idx, line in enumerate(msa.splitlines()): + if idx == 0 and not line.startswith(">"): # If there's an additional header (non-FASTA) skip it. E.g ColabFold + continue + + if not line.startswith(">"): # Ignore header lines + filtered_line = ''.join(char for char in line if not char.islower()) # Remove inserts (lower-case chars) in a3m + int_sequence = [AA_to_int.get(char.upper(), 20) for char in filtered_line] + int_sequences.append(int_sequence) + + int_sequences_array = np.array(int_sequences, dtype=object) + return int_sequences_array + +def format_msa_rows(msa_data): + return [[str(x) for x in val] for val in msa_data] + +def format_pae_rows(pae_data): + return [[f"{num:.4f}" for num in row] for row in pae_data] + +def format_iptm_rows(chain_pair_entries, chain_ids=None): + """ + Format iPTM data into a list of rows for writing to a TSV file. + Each row contains: the chain-pair in uppercase, e.g. "A:B", "B:A", A:C", etc. and then the iPTM value formatted to 4 decimal places. + """ + def idx_to_letter(idx): + """ Convert the index integer of the matrix to a letter representation that wraps to double representation, e.g. 0 -> A, 1 -> B, ..., 25 -> Z, 26 -> AA, 27 -> AB, etc. + This is somewhat compatible with how protein structure chain names are numbered by biochemists. + But we should move away from fixed-format PDB files -- we have nothing to lose but our chains.""" + result = "" + while idx >= 0: + result = string.ascii_uppercase[idx % 26] + result + idx = idx // 26 - 1 + if idx < 0: + break + return result + + if chain_ids: + #would be better with some model_id sorting + iptm_rows = [[""]+[f"{chain_ids[idx[0]]}:{chain_ids[idx[1]]}" for idx, val in next(iter(chain_pair_entries.values()))]] + else: + iptm_rows = [[""]+[f"{idx_to_letter(idx[0])}:{idx_to_letter(idx[1])}" for idx, val in next(iter(chain_pair_entries.values()))]] + + for model_idx, chain_pair_entries_values in chain_pair_entries.items(): + iptm_rows.append([model_idx]+[f"{val:.4f}" for idx, val in chain_pair_entries_values]) + + return [list(row) for row in zip(*iptm_rows)] + + +def chain_iptm_matrix_to_pairs(iptm_matrix): + """ + Convert a chain-wise iPTM matrix to pair values by taking off-diagonal elements. + """ + # From AlphaFold3 output docs: + # 'chain_pair_iptm': An [num_chains, num_chains] array. + # Off-diagonal element (i, j) of the array contains the ipTM restricted to tokens from chains i and j. + # Diagonal element (i, i) contains the pTM restricted to chain i. + return [(idx, val) for idx, val in np.ndenumerate(iptm_matrix) if idx[0] != idx[1]] + +def chainwise_iptm_matrix_to_ptms(iptm_matrix): + return [(idx, val) for idx, val in np.ndenumerate(iptm_matrix) if idx[0] == idx[1]] + +def write_tsv(file_path, rows): + with open(file_path, 'w') as out_f: + writer = csv.writer(out_f, delimiter='\t') + writer.writerows(rows) + +def extract_structs_plddt_to_tsv(name, structures): + """ + Write out a tsv file contain pLDDTs for reading by MultiQC in nf-core/proteinfold + Uses utils function with BioPython PDB package to extract residue pLDDT values from the b-factor column. + """ + plddt_cols = [plddt_from_struct_b_factor(structure) for structure in structures] + res_counts = [len(plddt_col) for plddt_col in plddt_cols] + + if len(set(res_counts)) != 1: + raise ValueError("Not all structures have the same number of residues!") + + rank_names = [f"rank_{i}" for i in range(len(structures))] + # Create header as the first row + plddt_rows = [["Positions"] + rank_names] + res_id_col = list(range(len(plddt_cols[0]))) + plddt_rows.extend(zip(res_id_col, *plddt_cols)) # Combine lists column-wise to make rows + write_tsv(f"{name}_plddt.tsv", plddt_rows) + +def read_pkl(name, pkl_files): + """ + Adapted from the Galaxy AlphaFold tool (https://github.com/usegalaxy-au/tools-au/blob/de94df520c8dc7b8652aedb92e90f6ebb312f95f/tools/alphafold/scripts/outputs.py), originally authored by @neoformit and @graceahall and funded by Australian Biocommons and QCIF Australia. + """ + ptm_data = {} + iptm_data = {} + for pkl_file in pkl_files: + print(f"Processing {pkl_file}") + data = pickle.load(open(pkl_file, "rb")) + + # Process MSA data + if pkl_file.endswith("final_features.pkl"): # HelixFold3 - This one must be first + write_tsv(f"{name}_msa.tsv", format_msa_rows(data["feat"]["msa"])) + elif pkl_file.endswith("features.pkl"): # AlphaFold2.3 + # TODO: AlphaFold2.3 fills end rows with 0s in AlpahFold muliter for an alanine nf-core/proteinfold Issue #300 + write_tsv(f"{name}_msa.tsv", format_msa_rows(data["msa"])) + # AlphaFold2.3 non-summary, for each pkl. TODO: Need to either read in ranking_debug.json to get the ranking order, or do it later in the workflow. + else: + model_info = os.path.basename(pkl_file).replace("result_", "").replace(".pkl", "") + #TODO: Make this explicit input + with open(os.path.join(os.path.dirname(pkl_file),"ranking_debug.json")) as f: + ranking_data = json.load(f)['order'] + model_id = ranking_data.index(model_info) + if 'predicted_aligned_error' not in data.keys(): + print(f"No PAE output in {pkl_file}, it was likely a monomer calculation") + else: + write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["predicted_aligned_error"])) + + if 'ptm' not in data.keys(): + print(f"No pTM/iPTM output in {pkl_file}, it was likely a monomer calculation") + else: + #with open(f"{name}_{model_id}_ptm.tsv", 'w') as f: + # f.write(f"{np.round(data['ptm'],3)}\n") + #with open(f"{name}_{model_id}_iptm.tsv", 'w') as f: + # f.write(f"{np.round(data['iptm'],3)}\n") + ptm_data[f"{model_id}"] = f"{np.round(data['ptm'],3)}\n" + iptm_data[f"{model_id}"] = f"{np.round(data.get('iptm',0.),3)}\n" + if ptm_data: + ptm_rows = [[k, v.strip()] for k, v in ptm_data.items()] + write_tsv(f"{name}_ptm.tsv", ptm_rows) + + if iptm_data: + iptm_rows = [[k, v.strip()] for k, v in iptm_data.items()] + write_tsv(f"{name}_iptm.tsv", iptm_rows) + + + +def read_a3m(name, a3m_files): + # RosettaFold-All-Atom + #TODO: DRY with unpaired below for Boltz + msa_rows = {} + for a3m_file in a3m_files: #Should already be alphabetical by chain + msa_rows[a3m_file] = a3m_to_int(a3m_file) + + final_rows = [] + temp_row = [] + for a3m_file in a3m_files: + temp_row.extend(msa_rows[a3m_file][0]) + final_rows.append(temp_row) + + # Un-paired TODO: get pairing code from RF-AA source + # https://github.com/baker-laboratory/RoseTTAFold-All-Atom/blob/main/rf2aa/data/parsers.py#L405 + msa_widths = [len(msa_rows[chain][0]) for chain in a3m_files] + msa_heights = [len(msa_rows[chain]) for chain in a3m_files] + + cum_total_rows = np.cumsum(msa_heights) + for row_idx in range(cum_total_rows[-1]): + temp_row = [] + + for i, chain in enumerate(a3m_files): + msa = msa_rows[chain] + width = msa_widths[i] + if i == 0: + minrow = 0 + else: + minrow = cum_total_rows[i-1] + maxrow = cum_total_rows[i] + + if minrow <= row_idx < maxrow: + msa_row_idx = row_idx - minrow + temp_row.extend(msa[msa_row_idx]) + else: + temp_row.extend(["21"] * width) #gap + final_rows.append(temp_row) + + write_tsv(f"{name}_msa.tsv", format_msa_rows(final_rows)) + +def read_npz(name, npz_files): + for idx, npz_file in enumerate(npz_files): + data = np.load(npz_file) + #Boltz PAE files if --write_full_pae is used + if npz_file.split('/')[-1].startswith('pae') and npz_file.endswith('.npz'): + model_id = os.path.basename(npz_file).split('_model_')[-1].split('.npz')[0] + write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["pae"])) + +# Boltz MSA processing +def read_csv(name, csv_files): + if not os.path.isfile(csv_files[0]): return #TODO: Fix temporary workaround + msa_rows = {} + unpaired_msa_rows = {} + for csv_file in sorted(csv_files, key=lambda x: int(x.split('_')[-1].split('.csv')[0])): + msa_lines = [] + unpaired_msa_lines = [] + with open(csv_file) as f: + f.readline() + for line in f: + if line.split(',')[0] == '-1' and len(csv_files)>1: #Server MSA appears as un-paired + unpaired_msa_lines.append(''.join(c for c in line.strip('\n').split(',')[1] if not c.islower())) + else: + msa_lines.append(''.join(c for c in line.strip('\n').split(',')[1] if not c.islower())) + msa_rows[csv_file.split('_')[-1].split('.csv')[0]] = [[str(AA_to_int.get(residue, 20)) for residue in line] for line in msa_lines] + unpaired_msa_rows[csv_file.split('_')[-1].split('.csv')[0]] = [[str(AA_to_int.get(residue, 20)) for residue in line] for line in unpaired_msa_lines] + + # Get Chain to MSA mapping (ie non-redundant for homomers) + # TODO: Make this explicit input + with open(f'boltz_results_{name}/processed/manifest.json') as f: + manifest = json.load(f) + + final_rows = [] + # Paired + for i in range(len(msa_rows["0"])): #The number of paired lines is common to all MSAs + temp_row = [] + #This needs to be fixed if inference is batched in future. + for chain in manifest["records"][0]["chains"]: + j = chain["msa_id"].split("_")[-1] + temp_row.extend(msa_rows[j][i]) + final_rows.append(temp_row) + + # Un-paired + msa_widths = [len(msa_rows[chain["msa_id"].split("_")[-1]][0]) for chain in manifest["records"][0]["chains"]] + msa_heights = [len(unpaired_msa_rows[chain["msa_id"].split("_")[-1]]) for chain in manifest["records"][0]["chains"]] + + cum_total_rows = np.cumsum(msa_heights) + + for row_idx in range(cum_total_rows[-1]): + temp_row = [] + + for i, chain in enumerate(manifest["records"][0]["chains"]): + msa = unpaired_msa_rows[chain["msa_id"].split("_")[-1]] + width = msa_widths[i] + if i == 0: + minrow = 0 + else: + minrow = cum_total_rows[i-1] + maxrow = cum_total_rows[i] + + if minrow <= row_idx < maxrow: + msa_row_idx = row_idx - minrow + temp_row.extend(msa[msa_row_idx]) + else: + temp_row.extend(["21"] * width) #gap + final_rows.append(temp_row) + + write_tsv(f"{name}_msa.tsv", final_rows) + +def read_json(name, json_files): + ptm_data = {} + iptm_data = {} + chain_pair_iptm_data = {} # For iPTM data to be converted into formatted pairs with non-self elements + chain_pair_entries = {} + chainwise_ptms = {} + chain_ids = [] + + for idx, json_file in enumerate(json_files): + with open(json_file, 'r') as f: + data = json.load(f) + if json_file.endswith("_data.json"): #AF3 output with MSA info + # Can't just used format_msa_rows since there's FASTA headers in the json content + paired_msa_rows = [] + unpaired_msa_rows = [] + for chain in data['sequences']: + unpaired_MSA = chain['protein']['unpairedMsa'] + unpaired_msa_lines = [''.join(c for c in line if not c.islower()) for line in unpaired_MSA.split("\n") if line.strip() and not line.startswith(">")] + unpaired_msa_rows.append([[str(AA_to_int.get(residue, 20)) for residue in line] for line in unpaired_msa_lines]) + paired_MSA = chain['protein']['pairedMsa'] + paired_msa_lines = [''.join(c for c in line if not c.islower()) for line in paired_MSA.split("\n") if line.strip() and not line.startswith(">")] + paired_msa_rows.append([[str(AA_to_int.get(residue, 20)) for residue in line] for line in paired_msa_lines]) + + chains = len(data['sequences']) + final_rows = [] + # Paired + for i in range(len(paired_msa_rows[0])): #The number of paired lines is common to all MSAs + temp_row = [] + #This needs to be fixed if inference is batched in future. + for j in range(chains): + temp_row.extend(paired_msa_rows[j][i]) + final_rows.append(temp_row) + + # Un-paired + msa_widths = [len(paired_msa_rows[chain][0]) for chain in range(chains)] + msa_heights = [len(unpaired_msa_rows[chain]) for chain in range(chains)] + + cum_total_rows = np.cumsum(msa_heights) + + for row_idx in range(cum_total_rows[-1]): + temp_row = [] + + for i in range(chains): + msa = unpaired_msa_rows[i] + width = msa_widths[i] + if i == 0: + minrow = 0 + else: + minrow = cum_total_rows[i-1] + maxrow = cum_total_rows[i] + if minrow <= row_idx < maxrow: + msa_row_idx = row_idx - minrow + temp_row.extend(msa[msa_row_idx]) + else: + temp_row.extend(["21"] * width) #gap + final_rows.append(temp_row) + write_tsv(f"{name}_msa.tsv", final_rows) + #AF3 output with PAE info, or HF3 PAE data. TODO: Need to make sure the workflow points to [protein]/[protein]_rank1/all_results.json + + # TODO: I think I need to capture model_id and inference_id -- MUST FIX since this is so fragile and will be different for different programs. + #if '_alphafold2_ptm_model_' in json_file: # ColabFold, multimer or monomer + ## Might want to cut more if I just want ${meta.id}_[metric].tsv + # model_id = os.path.basename(json_file) + # print(model_id) + if 'all_results' in json_file: # Individual predictions in HF3 + model_id = int(os.path.dirname(json_file).split('-rank')[-1]) #Use re-ranked output + if 'predictions' in json_file: # Boltz-1 confidences in predictions/[protein]/confidence_[protein]_model_*.json + # TODO: haven't tested this for multiple models with --diffusion_samples + model_id = os.path.basename(json_file).split('_model_')[-1].split('.json')[0] + #TODO: Fix this for AF3 - the top-ranked files are in the top-level directory + if 'confidences' in json_file: #Prevent crash when model_id is not defined + #model_id = os.path.basename(json_file).split('confidences_')[-1].split('.json')[0] + model_id = 0 + + if "pae" not in data.keys(): + print(f"No PAE output in {json_file}, it was likely a monomer calculation") + else: + write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["pae"])) + + if 'ptm' not in data.keys(): + print(f"No pTM/iPTM output in {json_file}, it was likely a monomer calculation") + #This message should change - currently called on boltz files not expected to contain ptm + else: + ptm_data[model_id] = f"{np.round(data['ptm'],3)}\n" + + if 'iptm' not in data.keys(): + print(f"No pTM/iPTM output in {json_file}, it was likely a monomer calculation") + else: + if data['iptm']: #ie not null + iptm_data[model_id] = f"{np.round(data['iptm'],3)}\n" + + if 'chain_pair_iptm' not in data.keys() and 'pair_chains_iptm' not in data.keys(): + print(f"No chain-wise iPTM output in {json_file}, it was likely a monomer calculation") + else: + if 'chain_pair_iptm' in data.keys(): + chain_pair_iptm_data = data['chain_pair_iptm'] + chain_iptm_matrix = np.array(chain_pair_iptm_data) + elif 'pair_chains_iptm' in data.keys(): #Boltz key + chain_pair_iptm_data = data['pair_chains_iptm'] + # casting to int works for sorting boltz - need to carefully check other modes + chain_iptm_matrix = np.array([[chain_pair_iptm_data[row][col] for col in sorted(chain_pair_iptm_data[row], key=int)] for row in sorted(chain_pair_iptm_data, key=int)]) + basename = os.path.basename(json_file) + dirname = os.path.dirname(json_file) + pdb_name = ".".join(basename[11:].split('.')[:-1])+'.pdb' #TODO: Fix magic number + chain_ids = get_chain_ids(os.path.join(dirname,pdb_name)) + else: + raise ValueError("No chain-wise iPTM data found in the JSON file.") + + chain_pair_entries[model_id] = chain_iptm_matrix_to_pairs(chain_iptm_matrix) + chainwise_ptms[model_id] = chainwise_iptm_matrix_to_ptms(chain_iptm_matrix) + + if chainwise_ptms: + write_tsv(f"{name}_chainwise_ptm.tsv", format_iptm_rows(chainwise_ptms, chain_ids=chain_ids)) + + if chain_pair_entries: + write_tsv(f"{name}_chainwise_iptm.tsv", format_iptm_rows(chain_pair_entries, chain_ids=chain_ids)) + + if ptm_data: + ptm_rows = [[k, v.strip()] for k, v in sorted(ptm_data.items(), key=lambda x: x[0])] + write_tsv(f"{name}_ptm.tsv", ptm_rows) + + if iptm_data: + iptm_rows = [[k, v.strip()] for k, v in sorted(iptm_data.items(), key=lambda x: x[0])] + write_tsv(f"{name}_iptm.tsv", iptm_rows) + + +def read_pt(name, pt_files): + import torch # moved to a conditional import since too bulky import if not used + #TODO: Handle this better when refactored - Is this just RFAA?? + for pt_file in pt_files: + with open(pt_file, 'rb') as f: # TODO: point to [protein]_aux.pt + data = torch.load(f, map_location="cpu") + if 'pae' in data: + # The pt file contains a tensor that needs to be cast as an array + # Squeeze leading dimension (batch?) + write_tsv(f"{name}_0_pae.tsv", format_pae_rows(np.squeeze(data["pae"].numpy()))) + break + +def read_colabfold_paes(name, colabfold_pae_fn): + with open(colabfold_pae_fn) as f: + data = json.load(f) + pae = data["predicted_aligned_error"] + write_tsv(f"{name}_0_pae.tsv", format_pae_rows(pae)) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--pkls", dest="pkls", required=False, nargs="+") # For reading both HelixFold3 and AlphaFold2 MSA formats + parser.add_argument("--npzs", dest="npzs", required=False, nargs="+") # For reading the Boltz-1 PAE formats. TODO: Boltz-1 MSA not implemented (go straight to .a3m file), implement + parser.add_argument("--a3ms", dest="a3ms", required=False, nargs="+") # For reading the RosettaFold-All-Atom, ColabFold MSA formats + parser.add_argument("--csvs", dest="csvs", required=False, nargs="+") # For reading boltz csvs + parser.add_argument("--jsons", dest="jsons", required=False, nargs="+") # For reading the AF3 MSA & PAE, HF3 PAE + parser.add_argument("--colabfold_pae_fn", required=False) + parser.add_argument("--pts", dest="pts", required=False, nargs="+") # For read RFAA pytorch model to get PAE data + parser.add_argument("--structs", dest="structs", required=False, nargs="+") + parser.add_argument("--name", default="untitled", dest="name") # might need a --name $meta.id + args = parser.parse_args() + + if args.pkls: + read_pkl(args.name, args.pkls) + if args.a3ms: + read_a3m(args.name, args.a3ms) + if args.csvs: + read_csv(args.name, args.csvs) + if args.npzs: + read_npz(args.name, args.npzs) + if args.jsons: + read_json(args.name, args.jsons) + if args.pts: + read_pt(args.name, args.pts) + if args.structs: + extract_structs_plddt_to_tsv(args.name, args.structs) + if args.colabfold_pae_fn: + read_colabfold_paes(args.name, args.colabfold_pae_fn) + +if __name__ == "__main__": + main() diff --git a/bin/ipsae.py b/bin/ipsae.py new file mode 100755 index 0000000..bca9b42 --- /dev/null +++ b/bin/ipsae.py @@ -0,0 +1,971 @@ +#!/usr/bin/env python +# ipsae.py +# script for calculating the ipSAE score for scoring pairwise protein-protein interactions in AlphaFold2 and AlphaFold3 models +# https://www.biorxiv.org/content/10.1101/2025.02.10.637595v1 + +# Also calculates: +# pDockQ: Bryant, Pozotti, and Eloffson. https://www.nature.com/articles/s41467-022-28865-w +# pDockQ2: Zhu, Shenoy, Kundrotas, Elofsson. https://academic.oup.com/bioinformatics/article/39/7/btad424/7219714 +# LIS: Kim, Hu, Comjean, Rodiger, Mohr, Perrimon. https://www.biorxiv.org/content/10.1101/2024.02.19.580970v1 + +# Roland Dunbrack +# Fox Chase Cancer Center +# version 3 +# April 6, 2025 +# MIT license: script can be modified and redistributed for non-commercial and commercial use, as long as this information is reproduced. + +# includes support for Boltz1 structures and structures with nucleic acids + +# It may be necessary to install numpy with the following command: +# pip install numpy + +# Usage: + +# python ipsae.py +# python ipsae.py +# python ipsae.py +# +# All output files will be in same path/folder as cif or pdb file + +import sys, os, math +import json +import numpy as np +np.set_printoptions(threshold=np.inf) # for printing out full numpy arrays for debugging + + +# Input and output files and parameters + +# Ensure correct usage +if len(sys.argv) < 5: + print("Usage for AF2:") + print(" python ipsae.py ") + print(" python ipsae.py RAF1_KSR1_scores_rank_001_alphafold2_multimer_v3_model_4_seed_003.json RAF1_KSR1_unrelaxed_rank_001_alphafold2_multimer_v3_model_4_seed_003.pdb 10 10") + print("") + print("Usage for AF3:") + print(" python ipsae.py ") + print(" python ipsae.py fold_aurka_tpx2_full_data_0.json fold_aurka_tpx2_model_0.cif 10 10") + print("") + print("Usage for Boltz1:") + print(" python ipsae.py ") + print(" python ipsae.py pae_AURKA_TPX2_model_0.npz AURKA_TPX2_model_0.cif 10 10") + sys.exit(1) + +pae_file_path = sys.argv[1] +pdb_path = sys.argv[2] +pae_cutoff = float(sys.argv[3]) +dist_cutoff = float(sys.argv[4]) +pae_string = str(int(pae_cutoff)) +if pae_cutoff<10: pae_string="0"+pae_string +dist_string = str(int(dist_cutoff)) +if dist_cutoff<10: dist_string="0"+dist_string + +#pae_AURKA_TPX2_model_0.npz + +if ".pdb" in pdb_path: + pdb_stem=pdb_path.replace(".pdb","") + path_stem = f'{pdb_path.replace(".pdb","")}_{pae_string}_{dist_string}' + af2 = True + af3 = False + boltz1 = False + cif = False +elif ".cif" in pdb_path and pae_file_path.endswith(".json"): + pdb_stem=pdb_path.replace(".cif","") + path_stem = f'{pdb_path.replace(".cif","")}_{pae_string}_{dist_string}' + af2 = False + af3 = True + boltz1 = False + cif = True +elif ".cif" in pdb_path and pae_file_path.endswith(".npz"): + pdb_stem=pdb_path.replace(".cif","") + path_stem = f'{pdb_path.replace(".cif","")}_{pae_string}_{dist_string}' + af2 = False + af3 = False + boltz1 = True + cif = True +else: + print("Wrong PDB or PAE file type ", pdb_path) + sys.exit() + +file_path = path_stem + ".txt" +file2_path = path_stem + "_byres.txt" +pml_path = path_stem + ".pml" +OUT = open(file_path,'w') +PML = open(pml_path,'w') +OUT2 = open(file2_path,'w') + + + +# Define the ptm and d0 functions +def ptm_func(x,d0): + return 1.0/(1+(x/d0)**2.0) +ptm_func_vec=np.vectorize(ptm_func) # vector version + +# Define the d0 functions for numbers and arrays; minimum value = 1.0; from Yang and Skolnick, PROTEINS: Structure, Function, and Bioinformatics 57:702–710 (2004) +def calc_d0(L,pair_type): + L=float(L) + if L<27: L=27 + min_value=1.0 + if pair_type=='nucleic_acid': min_value=2.0 + d0=1.24*(L-15)**(1.0/3.0) - 1.8 + return max(min_value, d0) + +def calc_d0_array(L,pair_type): + # Convert L to a NumPy array if it isn't already one (enables flexibility in input types) + L = np.array(L, dtype=float) + L = np.maximum(27,L) + min_value=1.0 + + if pair_type=='nucleic_acid': min_value=2.0 + + # Calculate d0 using the vectorized operation + return np.maximum(min_value, 1.24 * (L - 15) ** (1.0/3.0) - 1.8) + + +# Define the parse_atom_line function for PDB lines (by column) and mmCIF lines (split by white_space) +# parsed_line = parse_atom_line(line) +# line = "ATOM 123 CA ALA A 15 11.111 22.222 33.333 1.00 20.00 C" +def parse_pdb_atom_line(line): + atom_num = line[6:11].strip() + atom_name = line[12:16].strip() + residue_name = line[17:20].strip() + chain_id = line[21].strip() + residue_seq_num = line[22:26].strip() + x = line[30:38].strip() + y = line[38:46].strip() + z = line[46:54].strip() + + # Convert string numbers to integers or floats as appropriate + atom_num = int(atom_num) + residue_seq_num = int(residue_seq_num) + x = float(x) + y = float(y) + z = float(z) + + return { + 'atom_num': atom_num, + 'atom_name': atom_name, + 'residue_name': residue_name, + 'chain_id': chain_id, + 'residue_seq_num': residue_seq_num, + 'x': x, + 'y': y, + 'z': z + } + +def parse_cif_atom_line(line,fielddict): + # for parsing AF3 and Boltz1 mmCIF files + # ligands do not have residue numbers but modified residues do. Return "None" for ligand. + # AF3 mmcif lines + # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 + #ATOM 1294 N N . ARG A 1 159 ? 5.141 -14.096 10.526 1.00 95.62 159 A 1 + #ATOM 1295 C CA . ARG A 1 159 ? 4.186 -13.376 11.366 1.00 96.27 159 A 1 + #ATOM 1296 C C . ARG A 1 159 ? 2.976 -14.235 11.697 1.00 96.42 159 A 1 + #ATOM 1297 O O . ARG A 1 159 ? 2.654 -15.174 10.969 1.00 95.46 159 A 1 + # ... + #HETATM 1305 N N . TPO A 1 160 ? 2.328 -13.853 12.742 1.00 96.42 160 A 1 + #HETATM 1306 C CA . TPO A 1 160 ? 1.081 -14.560 13.218 1.00 96.78 160 A 1 + #HETATM 1307 C C . TPO A 1 160 ? -2.115 -11.668 12.263 1.00 96.19 160 A 1 + #HETATM 1308 O O . TPO A 1 160 ? -1.790 -11.556 11.113 1.00 95.75 160 A 1 + # ... + #HETATM 2608 P PG . ATP C 3 . ? -6.858 4.182 10.275 1.00 84.94 1 C 1 + #HETATM 2609 O O1G . ATP C 3 . ? -6.178 5.238 11.074 1.00 75.56 1 C 1 + #HETATM 2610 O O2G . ATP C 3 . ? -5.889 3.166 9.748 1.00 75.15 1 C 1 + # ... + #HETATM 2639 MG MG . MG D 4 . ? -7.262 2.709 4.825 1.00 91.47 1 D 1 + #HETATM 2640 MG MG . MG E 5 . ? -4.994 2.251 8.755 1.00 85.96 1 E 1 + + + # Boltz1 mmcif files (in non-standard order)) + #_atom_site.group_PDB + #_atom_site.id + #_atom_site.type_symbol + #_atom_site.label_atom_id + #_atom_site.label_alt_id + #_atom_site.label_comp_id + #_atom_site.label_seq_id + #_atom_site.auth_seq_id + #_atom_site.pdbx_PDB_ins_code + #_atom_site.label_asym_id + #_atom_site.Cartn_x + #_atom_site.Cartn_y + #_atom_site.Cartn_z + #_atom_site.occupancy + #_atom_site.label_entity_id + #_atom_site.auth_asym_id + #_atom_site.auth_comp_id + #_atom_site.B_iso_or_equiv + #_atom_site.pdbx_PDB_model_num + # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 + #ATOM 2652 N N . ASN 43 43 ? B 10.83538 6.06359 18.45139 1 2 B ASN 1 1 + #ATOM 2653 C CA . ASN 43 43 ? B 10.76295 5.07366 19.53232 1 2 B ASN 1 1 + #ATOM 2654 C C . ASN 43 43 ? B 11.21770 5.64437 20.88774 1 2 B ASN 1 1 + #ATOM 2655 O O . ASN 43 43 ? B 12.06730 6.51688 20.91168 1 2 B ASN 1 1 + #ATOM 2656 C CB . ASN 43 43 ? B 11.60137 3.84778 19.19481 1 2 B ASN 1 1 + #ATOM 2657 C CG . ASN 43 43 ? B 10.96208 3.03997 18.07013 1 2 B ASN 1 1 + #ATOM 2658 O OD1 . ASN 43 43 ? B 9.79094 3.17033 17.81165 1 2 B ASN 1 1 + #ATOM 2659 N ND2 . ASN 43 43 ? B 11.77101 2.23791 17.39764 1 2 B ASN 1 1 + #HETATM 2660 P PG . ATP . 1 ? C -8.79525 6.04621 -4.99212 1 3 C ATP 1 1 + #HETATM 2661 O O1G . ATP . 1 ? C -10.01901 6.83468 -5.24825 1 3 C ATP 1 1 + #HETATM 2662 O O2G . ATP . 1 ? C -9.03047 4.56941 -4.85246 1 3 C ATP 1 1 + #HETATM 2663 O O3G . ATP . 1 ? C -7.97335 6.60305 -3.86656 1 3 C ATP 1 1 + #HETATM 2664 P PB . ATP . 1 ? C -6.63618 7.04315 -6.56073 1 3 C ATP 1 1 + #HETATM 2665 O O1B . ATP . 1 ? C -7.04640 8.36577 -7.14326 1 3 C ATP 1 1 + #HETATM 2666 O O2B . ATP . 1 ? C -5.79036 7.13926 -5.33995 1 3 C ATP 1 1 + + + linelist = line.split() + atom_num = linelist[ fielddict['id'] ] + atom_name = linelist[ fielddict['label_atom_id'] ] + residue_name = linelist[ fielddict['label_comp_id'] ] + chain_id = linelist[ fielddict['label_asym_id'] ] + residue_seq_num = linelist[ fielddict['label_seq_id'] ] + x = linelist[ fielddict['Cartn_x'] ] + y = linelist[ fielddict['Cartn_y'] ] + z = linelist[ fielddict['Cartn_z'] ] + + if residue_seq_num == ".": return None # ligand atom + + # Convert string numbers to integers or floats as appropriate + atom_num = int(atom_num) + residue_seq_num = int(residue_seq_num) + x = float(x) + y = float(y) + z = float(z) + + return { + 'atom_num': atom_num, + 'atom_name': atom_name, + 'residue_name': residue_name, + 'chain_id': chain_id, + 'residue_seq_num': residue_seq_num, + 'x': x, + 'y': y, + 'z': z + } + + + +# Function for printing out residue numbers in PyMOL scripts +def contiguous_ranges(numbers): + if not numbers: # Check if the set is empty + return + + sorted_numbers = sorted(numbers) # Sort the numbers + start = sorted_numbers[0] + end = start + ranges = [] # List to store ranges + + def format_range(start, end): + if start == end: + return f"{start}" + else: + return f"{start}-{end}" + + for number in sorted_numbers[1:]: + if number == end + 1: + end = number + else: + ranges.append(format_range(start, end)) + start = end = number + + # Append the last range after the loop + ranges.append(format_range(start, end)) + + # Join all ranges with a plus sign and print the result + string='+'.join(ranges) + return(string) + +# Initializes a nested dictionary with all values set to 0 +def init_chainpairdict_zeros(chainlist): + return {chain1: {chain2: 0 for chain2 in chainlist if chain1 != chain2} for chain1 in chainlist} + +# Initializes a nested dictionary with NumPy arrays of zeros of a specified size +def init_chainpairdict_npzeros(chainlist, arraysize): + return {chain1: {chain2: np.zeros(arraysize) for chain2 in chainlist if chain1 != chain2} for chain1 in chainlist} + +# Initializes a nested dictionary with empty sets. +def init_chainpairdict_set(chainlist): + return {chain1: {chain2: set() for chain2 in chainlist if chain1 != chain2} for chain1 in chainlist} + + +def classify_chains(chains, residue_types): + nuc_residue_set = {"DA", "DC", "DT", "DG", "A", "C", "U", "G"} + chain_types = {} + + # Get unique chains and iterate over them + unique_chains = np.unique(chains) + for chain in unique_chains: + # Find indices where the current chain is located + indices = np.where(chains == chain)[0] + # Get the residues for these indices + chain_residues = residue_types[indices] + # Count nucleic acid residues + nuc_count = sum(residue in nuc_residue_set for residue in chain_residues) + + # Determine if the chain is a nucleic acid or protein + chain_types[chain] = 'nucleic_acid' if nuc_count > 0 else 'protein' + + return chain_types + + +# Load residues from AlphaFold PDB or mmCIF file into lists; each residue is a dictionary +# Read PDB file to get CA coordinates, chainids, and residue numbers +# Convert to np arrays, and calculate distances +residues = [] +cb_residues = [] +chains = [] +atomsitefield_num=0 +atomsitefield_dict={} # contains order of atom_site fields in mmCIF files; handles any mmCIF field order + +# For af3 and boltz1: need mask to identify CA atom tokens in plddt vector and pae matrix; +# Skip ligand atom tokens and non-CA-atom tokens in PTMs (those not in residue_set) +token_mask=list() +residue_set= {"ALA", "ARG", "ASN", "ASP", "CYS", + "GLN", "GLU", "GLY", "HIS", "ILE", + "LEU", "LYS", "MET", "PHE", "PRO", + "SER", "THR", "TRP", "TYR", "VAL", + "DA", "DC", "DT", "DG", "A", "C", "U", "G"} + +nuc_residue_set = {"DA", "DC", "DT", "DG", "A", "C", "U", "G"} + +with open(pdb_path, 'r') as PDB: + for line in PDB: + + if line.startswith("_atom_site."): + line=line.strip() + (atomsite,fieldname)=line.split(".") + atomsitefield_dict[fieldname]=atomsitefield_num + atomsitefield_num += 1 + + if line.startswith("ATOM") or line.startswith("HETATM"): + if cif: + atom=parse_cif_atom_line(line, atomsitefield_dict) + else: + atom=parse_pdb_atom_line(line) + if atom is None: # ligand atom + token_mask.append(0) + continue + + if atom['atom_name'] == "CA" or "C1" in atom['atom_name']: + token_mask.append(1) + residues.append({ + 'atom_num': atom['atom_num'], + 'coor': np.array([atom['x'], atom['y'], atom['z']]), + 'res': atom['residue_name'], + 'chainid': atom['chain_id'], + 'resnum': atom['residue_seq_num'], + 'residue': f"{atom['residue_name']:3} {atom['chain_id']:3} {atom['residue_seq_num']:4}" + }) + chains.append(atom['chain_id']) + + if atom['atom_name'] == "CB" or "C3" in atom['atom_name'] or (atom['residue_name']=="GLY" and atom['atom_name']=="CA"): + cb_residues.append({ + 'atom_num': atom['atom_num'], + 'coor': np.array([atom['x'], atom['y'], atom['z']]), + 'res': atom['residue_name'], + 'chainid': atom['chain_id'], + 'resnum': atom['residue_seq_num'], + 'residue': f"{atom['residue_name']:3} {atom['chain_id']:3} {atom['residue_seq_num']:4}" + }) + + # add nucleic acids and non-CA atoms in PTM residues to tokens (as 0), whether labeled as "HETATM" (af3) or as "ATOM" (boltz1) + if atom['atom_name'] != "CA" and "C1" not in atom['atom_name'] and atom['residue_name'] not in residue_set: + token_mask.append(0) + +# Convert structure information to numpy arrays +numres = len(residues) +CA_atom_num= np.array([res['atom_num']-1 for res in residues]) # for AF3 atom indexing from 0 +CB_atom_num= np.array([res['atom_num']-1 for res in cb_residues]) # for AF3 atom indexing from 0 +coordinates = np.array([res['coor'] for res in cb_residues]) +chains = np.array(chains) +unique_chains = np.unique(chains) +token_array=np.array(token_mask) +ntokens=np.sum(token_array) +residue_types=np.array([res['res'] for res in residues]) + +# chain types (nucleic acid (NA) or protein) and chain_pair_types ('nucleic_acid' if either chain is NA) for d0 calculation +# arbitrarily setting d0 to 2.0 for NA/protein or NA/NA chain pairs (approximately 21 base pairs) +d0_nucleic_acid=2.0 +chain_dict = classify_chains(chains, residue_types) +chain_pair_type = init_chainpairdict_zeros(unique_chains) +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1==chain2: continue + if chain_dict[chain1] == 'nucleic_acid' or chain_dict[chain2] == 'nucleic_acid': + chain_pair_type[chain1][chain2]='nucleic_acid' + else: + chain_pair_type[chain1][chain2]='protein' + +# Calculate distance matrix using NumPy broadcasting +distances = np.sqrt(((coordinates[:, np.newaxis, :] - coordinates[np.newaxis, :, :])**2).sum(axis=2)) + +# Load AF2, AF3, or BOLTZ1 data and extract plddt and pae_matrix (and ptm_matrix if available) +if af2: + + + if os.path.exists(pae_file_path): + if pae_file_path.endswith('.pkl'): + data = np.load(pae_file_path, allow_pickle=True) + else: + with open(pae_file_path, 'r') as file: + data = json.load(file) + + if 'iptm' in data: iptm_af2 = float(data['iptm']) + else: iptm_af2=-1.0 + if 'ptm' in data: ptm_af2 = float(data['ptm']) + else: ptm_af2=-1.0 + + if 'plddt' in data: + plddt = np.array(data['plddt']) + cb_plddt = np.array(data['plddt']) # for pDockQ + else: + plddt = np.zeros(numres) + cb_plddt = np.zeros(numres) + + if 'pae' in data: + pae_matrix = np.array(data['pae']) + elif 'predicted_aligned_error' in data: + pae_matrix=np.array(data['predicted_aligned_error']) + + else: + print("AF2 PAE file does not exist: ", pae_file_path) + sys.exit() + +if boltz1: + # Boltz1 filenames: + # AURKA_TPX2_model_0.cif + # confidence_AURKA_TPX2_model_0.json + # pae_AURKA_TPX2_model_0.npz + # plddt_AURKA_TPX2_model_0.npz + + + plddt_file_path=pae_file_path.replace("pae","plddt") + if os.path.exists(plddt_file_path): + data_plddt=np.load(plddt_file_path) + plddt_boltz1=np.array(100.0*data_plddt['plddt']) + plddt = plddt_boltz1[np.ix_(token_array.astype(bool))] + cb_plddt = plddt_boltz1[np.ix_(token_array.astype(bool))] + else: + plddt = np.zeros(ntokens) + cb_plddt = np.zeros(ntokens) + + if os.path.exists(pae_file_path): + data_pae = np.load(pae_file_path) + pae_matrix_boltz1=np.array(data_pae['pae']) + pae_matrix = pae_matrix_boltz1[np.ix_(token_array.astype(bool), token_array.astype(bool))] + + else: + print("Boltz1 PAE file does not exist: ", pae_file_path) + sys.exit() + + summary_file_path=pae_file_path.replace("pae","confidence") + summary_file_path=summary_file_path.replace(".npz",".json") + iptm_boltz1= {chain1: {chain2: 0 for chain2 in unique_chains if chain1 != chain2} for chain1 in unique_chains} + if os.path.exists(summary_file_path): + with open(summary_file_path, 'r') as file: + data_summary = json.load(file) + + boltz1_chain_pair_iptm_data=data_summary['pair_chains_iptm'] + for chain1 in unique_chains: + nchain1= ord(chain1) - ord('A') # map A,B,C... to 0,1,2... + for chain2 in unique_chains: + if chain1 == chain2: continue + nchain2=ord(chain2) - ord('A') + iptm_boltz1[chain1][chain2]=boltz1_chain_pair_iptm_data[str(nchain1)][str(nchain2)] + else: + print("Boltz1 summary file does not exist: ", summary_file_path) + +if af3: + # Example Alphafold3 server filenames + # fold_aurka_0_tpx2_0_full_data_0.json + # fold_aurka_0_tpx2_0_summary_confidences_0.json + # fold_aurka_0_tpx2_0_model_0.cif + # Example AlphaFold3 downloadable code filenames + # confidences.json + # summary_confidences.json + # model1.cif + if os.path.exists(pae_file_path): + with open(pae_file_path, 'r') as file: + data = json.load(file) + else: + print("AF3 PAE file does not exist: ", pae_file_path) + sys.exit() + + atom_plddts=np.array(data['atom_plddts']) + plddt=atom_plddts[CA_atom_num] # pull out residue plddts from Calpha atoms + cb_plddt=atom_plddts[CB_atom_num] # pull out residue plddts from Cbeta atoms for pDockQ + + # Get pairwise residue PAE matrix by identifying one token per protein residue. + # Modified residues have separate tokens for each atom, so need to pull out Calpha atom as token + # Skip ligands + if 'pae' in data: + pae_matrix_af3 = np.array(data['pae']) + else: + print("no PAE data in AF3 json file; quitting") + sys.exit() + + # Set pae_matrix for AF3 from subset of full PAE matrix from json file + token_array=np.array(token_mask) + pae_matrix = pae_matrix_af3[np.ix_(token_array.astype(bool), token_array.astype(bool))] + # Get iptm matrix from AF3 summary_confidences file + iptm_af3= {chain1: {chain2: 0 for chain2 in unique_chains if chain1 != chain2} for chain1 in unique_chains} + + summary_file_path = None + if "confidences" in pae_file_path: + summary_file_path = pae_file_path.replace("confidences", "summary_confidences") + elif "full_data" in pae_file_path: + summary_file_path = pae_file_path.replace("full_data", "summary_confidences") + + if summary_file_path is not None and os.path.exists(summary_file_path): + with open(summary_file_path,'r') as file: + data_summary=json.load(file) + af3_chain_pair_iptm_data=data_summary['chain_pair_iptm'] + for chain1 in unique_chains: + nchain1= ord(chain1) - ord('A') # map A,B,C... to 0,1,2... + for chain2 in unique_chains: + if chain1 == chain2: continue + nchain2=ord(chain2) - ord('A') + iptm_af3[chain1][chain2]=af3_chain_pair_iptm_data[nchain1][nchain2] + else: + print("AF3 summary file does not exist: ", summary_file_path) + + +# Compute chain-pair-specific interchain PTM and PAE, count valid pairs, and count unique residues +# First, create dictionaries of appropriate size: top keys are chain1 and chain2 where chain1 != chain2 +# Nomenclature: +# iptm_d0chn = calculate iptm from PAEs with no PAE cutoff; d0 = numres in chain pair = len(chain1) + len(chain2) +# ipsae_d0chn = calculate ipsae from PAEs with PAE cutoff; d0 = numres in chain pair = len(chain1) + len(chain2) +# ipsae_d0dom = calculate ipsae from PAEs with PAE cutoff; d0 from number of residues in chain1 and chain2 that have interchain PAEB is different from B->A) +# ipsae_d0res_max = maximum of A->B and B->A value +# ipsae_d0res_asymres = identify of residue that provides each asym maximum +# ipsae_d0res_maxres = identify of residue that provides each maximum over both chains +# +# n0num = number of residues in whole complex provided by AF2 model +# n0chn = number of residues in chain pair = len(chain1) + len(chain2) +# n0dom = number of residues in chain pair that have good PAE values (0: + nres=len(list(pDockQ_unique_residues[chain1][chain2])) + mean_plddt= cb_plddt[ list(pDockQ_unique_residues[chain1][chain2])].mean() + x=mean_plddt*math.log10(npairs) + pDockQ[chain1][chain2]= 0.724 / (1 + math.exp(-0.052*(x-152.611)))+0.018 + else: + mean_plddt=0.0 + x=0.0 + pDockQ[chain1][chain2]=0.0 + nres=0 + +# pDockQ2 + +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1 == chain2: + continue + npairs=0 + sum=0.0 + for i in range(numres): + if chains[i] != chain1: + continue + valid_pairs = (chains==chain2) & (distances[i] <= pDockQ_cutoff) + if valid_pairs.any(): + npairs += np.sum(valid_pairs) + pae_list=pae_matrix[i][valid_pairs] + pae_list_ptm=ptm_func_vec(pae_list,10.0) + sum += pae_list_ptm.sum() + + if npairs>0: + nres=len(list(pDockQ_unique_residues[chain1][chain2])) + mean_plddt= cb_plddt[ list(pDockQ_unique_residues[chain1][chain2])].mean() + mean_ptm = sum/npairs + x=mean_plddt*mean_ptm + pDockQ2[chain1][chain2]= 1.31 / (1 + math.exp(-0.075*(x-84.733)))+0.005 + else: + mean_plddt=0.0 + x=0.0 + nres=0 + pDockQ2[chain1][chain2]=0.0 + +# LIS + +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1==chain2: continue + + mask = (chains[:, None] == chain1) & (chains[None, :] == chain2) # Select residues for (chain1, chain2) + selected_pae = pae_matrix[mask] # Get PAE values for this pair + + if selected_pae.size > 0: # Ensure we have values + valid_pae = selected_pae[selected_pae <= 12] # Apply the threshold + if valid_pae.size > 0: + scores = (12 - valid_pae) / 12 # Compute scores + avg_score = np.mean(scores) # Average score for (chain1, chain2) + LIS[chain1][chain2] = avg_score + else: + LIS[chain1][chain2] = 0.0 # No valid values + else: + LIS[chain1][chain2]=0.0 + + + +# calculate ipTM/ipSAE with and without PAE cutoff + +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1 == chain2: + continue + + n0chn[chain1][chain2]=np.sum( chains==chain1) + np.sum(chains==chain2) # total number of residues in chain1 and chain2 + d0chn[chain1][chain2]=calc_d0(n0chn[chain1][chain2], chain_pair_type[chain1][chain2]) + ptm_matrix_d0chn=np.zeros((numres,numres)) + ptm_matrix_d0chn=ptm_func_vec(pae_matrix,d0chn[chain1][chain2]) + + valid_pairs_iptm = (chains == chain2) + valid_pairs_matrix = (chains == chain2) & (pae_matrix < pae_cutoff) + + for i in range(numres): + + + if chains[i] != chain1: + continue + + valid_pairs_ipsae = valid_pairs_matrix[i] # row for residue i of chain1 + iptm_d0chn_byres[chain1][chain2][i] = ptm_matrix_d0chn[i, valid_pairs_iptm].mean() if valid_pairs_iptm.any() else 0.0 + ipsae_d0chn_byres[chain1][chain2][i] = ptm_matrix_d0chn[i, valid_pairs_ipsae].mean() if valid_pairs_ipsae.any() else 0.0 + + # Track unique residues contributing to the IPSAE for chain1,chain2 + valid_pair_counts[chain1][chain2] += np.sum(valid_pairs_ipsae) + if valid_pairs_ipsae.any(): + iresnum=residues[i]['resnum'] + unique_residues_chain1[chain1][chain2].add(iresnum) + for j in np.where(valid_pairs_ipsae)[0]: + jresnum=residues[j]['resnum'] + unique_residues_chain2[chain1][chain2].add(jresnum) + + # Track unique residues contributing to iptm in interface + valid_pairs = (chains == chain2) & (pae_matrix[i] < pae_cutoff) & (distances[i] < dist_cutoff) + dist_valid_pair_counts[chain1][chain2] += np.sum(valid_pairs) + + # Track unique residues contributing to the IPTM + if valid_pairs.any(): + iresnum=residues[i]['resnum'] + dist_unique_residues_chain1[chain1][chain2].add(iresnum) + for j in np.where(valid_pairs)[0]: + jresnum=residues[j]['resnum'] + dist_unique_residues_chain2[chain1][chain2].add(jresnum) + +OUT2.write("i AlignChn ScoredChain AlignResNum AlignResType AlignRespLDDT n0chn n0dom n0res d0chn d0dom d0res ipTM_pae ipSAE_d0chn ipSAE_d0dom ipSAE \n") +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1 == chain2: + continue + residues_1 = len(unique_residues_chain1[chain1][chain2]) + residues_2 = len(unique_residues_chain2[chain1][chain2]) + n0dom[chain1][chain2] = residues_1+residues_2 + d0dom[chain1][chain2] = calc_d0(n0dom[chain1][chain2], chain_pair_type[chain1][chain2]) + + ptm_matrix_d0dom = np.zeros((numres,numres)) + ptm_matrix_d0dom = ptm_func_vec(pae_matrix,d0dom[chain1][chain2]) + + valid_pairs_matrix = (chains == chain2) & (pae_matrix < pae_cutoff) + + # Assuming valid_pairs_matrix is already defined + n0res_byres_all = np.sum(valid_pairs_matrix, axis=1) + d0res_byres_all = calc_d0_array(n0res_byres_all, chain_pair_type[chain1][chain2]) + + n0res_byres[chain1][chain2] = n0res_byres_all + d0res_byres[chain1][chain2] = d0res_byres_all + + for i in range(numres): + if chains[i] != chain1: + continue + valid_pairs = valid_pairs_matrix[i] + ipsae_d0dom_byres[chain1][chain2][i] = ptm_matrix_d0dom[i, valid_pairs].mean() if valid_pairs.any() else 0.0 + + ptm_row_d0res=np.zeros((numres)) + ptm_row_d0res=ptm_func_vec(pae_matrix[i], d0res_byres[chain1][chain2][i]) + ipsae_d0res_byres[chain1][chain2][i] = ptm_row_d0res[valid_pairs].mean() if valid_pairs.any() else 0.0 + + outstring = f'{i+1:<4d} ' + ( + f'{chain1:4} ' + f'{chain2:4} ' + f'{residues[i]["resnum"]:4d} ' + f'{residues[i]["res"]:3} ' + f'{plddt[i]:8.2f} ' + f'{int(n0chn[chain1][chain2]):5d} ' + f'{int(n0dom[chain1][chain2]):5d} ' + f'{int(n0res_byres[chain1][chain2][i]):5d} ' + f'{d0chn[chain1][chain2]:8.3f} ' + f'{d0dom[chain1][chain2]:8.3f} ' + f'{d0res_byres[chain1][chain2][i]:8.3f} ' + f'{iptm_d0chn_byres[chain1][chain2][i]:8.4f} ' + f'{ipsae_d0chn_byres[chain1][chain2][i]:8.4f} ' + f'{ipsae_d0dom_byres[chain1][chain2][i]:8.4f} ' + f'{ipsae_d0res_byres[chain1][chain2][i]:8.4f}\n' + ) + OUT2.write(outstring) + +# Compute interchain ipTM and ipSAE for each chain pair +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1 == chain2: + continue + + interchain_values = iptm_d0chn_byres[chain1][chain2] + max_index = np.argmax(interchain_values) + iptm_d0chn_asym[chain1][chain2] = interchain_values[max_index] + iptm_d0chn_asymres[chain1][chain2] = residues[max_index]['residue'] if max_index is not None else "None" + + interchain_values = ipsae_d0chn_byres[chain1][chain2] + max_index = np.argmax(interchain_values) + ipsae_d0chn_asym[chain1][chain2] = interchain_values[max_index] + ipsae_d0chn_asymres[chain1][chain2] = residues[max_index]['residue'] if max_index is not None else "None" + + interchain_values = ipsae_d0dom_byres[chain1][chain2] + max_index = np.argmax(interchain_values) + ipsae_d0dom_asym[chain1][chain2] = interchain_values[max_index] + ipsae_d0dom_asymres[chain1][chain2] = residues[max_index]['residue'] if max_index is not None else "None" + + interchain_values = ipsae_d0res_byres[chain1][chain2] + max_index = np.argmax(interchain_values) + ipsae_d0res_asym[chain1][chain2] = interchain_values[max_index] + ipsae_d0res_asymres[chain1][chain2] = residues[max_index]['residue'] if max_index is not None else "None" + n0res[chain1][chain2]=n0res_byres[chain1][chain2][max_index] + d0res[chain1][chain2]=d0res_byres[chain1][chain2][max_index] + + # pick maximum value for each chain pair for each iptm/ipsae type + if chain1 > chain2: + maxvalue=max(iptm_d0chn_asym[chain1][chain2], iptm_d0chn_asym[chain2][chain1]) + if maxvalue==iptm_d0chn_asym[chain1][chain2]: maxres=iptm_d0chn_asymres[chain1][chain2] + else: maxres=iptm_d0chn_asymres[chain2][chain1] + iptm_d0chn_max[chain1][chain2]=maxvalue + iptm_d0chn_maxres[chain1][chain2]=maxres + iptm_d0chn_max[chain2][chain1]=maxvalue + iptm_d0chn_maxres[chain2][chain1]=maxres + + maxvalue=max(ipsae_d0chn_asym[chain1][chain2], ipsae_d0chn_asym[chain2][chain1]) + if maxvalue==ipsae_d0chn_asym[chain1][chain2]: maxres=ipsae_d0chn_asymres[chain1][chain2] + else: maxres=ipsae_d0chn_asymres[chain2][chain1] + ipsae_d0chn_max[chain1][chain2]=maxvalue + ipsae_d0chn_maxres[chain1][chain2]=maxres + ipsae_d0chn_max[chain2][chain1]=maxvalue + ipsae_d0chn_maxres[chain2][chain1]=maxres + + maxvalue=max(ipsae_d0dom_asym[chain1][chain2], ipsae_d0dom_asym[chain2][chain1]) + if maxvalue==ipsae_d0dom_asym[chain1][chain2]: + maxres=ipsae_d0dom_asymres[chain1][chain2] + maxn0=n0dom[chain1][chain2] + maxd0=d0dom[chain1][chain2] + else: + maxres=ipsae_d0dom_asymres[chain2][chain1] + maxn0=n0dom[chain2][chain1] + maxd0=d0dom[chain2][chain1] + ipsae_d0dom_max[chain1][chain2]=maxvalue + ipsae_d0dom_maxres[chain1][chain2]=maxres + ipsae_d0dom_max[chain2][chain1]=maxvalue + ipsae_d0dom_maxres[chain2][chain1]=maxres + n0dom_max[chain1][chain2]=maxn0 + n0dom_max[chain2][chain1]=maxn0 + d0dom_max[chain1][chain2]=maxd0 + d0dom_max[chain2][chain1]=maxd0 + + maxvalue=max(ipsae_d0res_asym[chain1][chain2], ipsae_d0res_asym[chain2][chain1]) + if maxvalue==ipsae_d0res_asym[chain1][chain2]: + maxres=ipsae_d0res_asymres[chain1][chain2] + maxn0=n0res[chain1][chain2] + maxd0=d0res[chain1][chain2] + else: + maxres=ipsae_d0res_asymres[chain2][chain1] + maxn0=n0res[chain2][chain1] + maxd0=d0res[chain2][chain1] + ipsae_d0res_max[chain1][chain2]=maxvalue + ipsae_d0res_maxres[chain1][chain2]=maxres + ipsae_d0res_max[chain2][chain1]=maxvalue + ipsae_d0res_maxres[chain2][chain1]=maxres + n0res_max[chain1][chain2]=maxn0 + n0res_max[chain2][chain1]=maxn0 + d0res_max[chain1][chain2]=maxd0 + d0res_max[chain2][chain1]=maxd0 + + +chaincolor={'A':'magenta', 'B':'marine', 'C':'lime', 'D':'orange', + 'E':'yellow', 'F':'cyan', 'G':'lightorange', 'H':'pink', + 'I':'deepteal', 'J':'forest', 'K':'lightblue', 'L':'slate', + 'M':'violet', 'N':'arsenic', 'O':'iodine', 'P':'silver', + 'Q':'red', 'R':'sulfur', 'S':'purple', 'T':'olive', + 'U':'palegreen', 'V':'green', 'W':'blue', 'X':'palecyan', + 'Y':'limon', 'Z':'chocolate'} + +chainpairs=set() +for chain1 in unique_chains: + for chain2 in unique_chains: + if chain1 >= chain2: continue + chainpairs.add(chain1 + "-" + chain2) + +OUT.write("\nChn1 Chn2 PAE Dist Type ipSAE ipSAE_d0chn ipSAE_d0dom ipTM_af ipTM_d0chn pDockQ pDockQ2 LIS n0res n0chn n0dom d0res d0chn d0dom nres1 nres2 dist1 dist2 Model\n") +PML.write("# Chn1 Chn2 PAE Dist Type ipSAE ipSAE_d0chn ipSAE_d0dom ipTM_af ipTM_d0chn pDockQ pDockQ2 LIS n0res n0chn n0dom d0res d0chn d0dom nres1 nres2 dist1 dist2 Model\n") +for pair in sorted(chainpairs): + (chain_a, chain_b) = pair.split("-") + pair1 = (chain_a, chain_b) + pair2 = (chain_b, chain_a) + for pair in (pair1, pair2): + chain1=pair[0] + chain2=pair[1] + + if chain1 in chaincolor: + color1=chaincolor[chain1] + else: + color1='magenta' + + if chain2 in chaincolor: + color2=chaincolor[chain2] + else: + color2='marine' + + residues_1 = len(unique_residues_chain1[chain1][chain2]) + residues_2 = len(unique_residues_chain2[chain1][chain2]) + dist_residues_1 = len(dist_unique_residues_chain1[chain1][chain2]) + dist_residues_2 = len(dist_unique_residues_chain2[chain1][chain2]) + pairs = valid_pair_counts[chain1][chain2] + dist_pairs = dist_valid_pair_counts[chain1][chain2] + if af2: iptm_af = iptm_af2 # same for all chain pairs in entry + if af3: iptm_af = iptm_af3[chain1][chain2] # symmetric value for each chain pair + if boltz1: iptm_af=iptm_boltz1[chain1][chain2] + + outstring=f'{chain1} {chain2} {pae_string:3} {dist_string:3} {"asym":5} ' + ( + f'{ipsae_d0res_asym[chain1][chain2]:8.6f} ' + f'{ipsae_d0chn_asym[chain1][chain2]:8.6f} ' + f'{ipsae_d0dom_asym[chain1][chain2]:8.6f} ' + f'{iptm_af:5.3f} ' + f'{iptm_d0chn_asym[chain1][chain2]:8.6f} ' + f'{pDockQ[chain1][chain2]:8.4f} ' + f'{pDockQ2[chain1][chain2]:8.4f} ' + f'{LIS[chain1][chain2]:8.4f} ' + f'{int(n0res[chain1][chain2]):5d} ' + f'{int(n0chn[chain1][chain2]):5d} ' + f'{int(n0dom[chain1][chain2]):5d} ' + f'{d0res[chain1][chain2]:6.2f} ' + f'{d0chn[chain1][chain2]:6.2f} ' + f'{d0dom[chain1][chain2]:6.2f} ' + f'{residues_1:5d} ' + f'{residues_2:5d} ' + f'{dist_residues_1:5d} ' + f'{dist_residues_2:5d} ' + f'{pdb_stem}\n') + OUT.write(outstring) + PML.write("# " + outstring) + if chain1 > chain2: + residues_1 = max(len(unique_residues_chain2[chain1][chain2]), len(unique_residues_chain1[chain2][chain1])) + residues_2 = max(len(unique_residues_chain1[chain1][chain2]), len(unique_residues_chain2[chain2][chain1])) + dist_residues_1 = max(len(dist_unique_residues_chain2[chain1][chain2]), len(dist_unique_residues_chain1[chain2][chain1])) + dist_residues_2 = max(len(dist_unique_residues_chain1[chain1][chain2]), len(dist_unique_residues_chain2[chain2][chain1])) + + iptm_af_value=iptm_af + pDockQ2_value=max(pDockQ2[chain1][chain2], pDockQ2[chain2][chain1]) + if boltz1: + iptm_af_value=max(iptm_boltz1[chain1][chain2], iptm_boltz1[chain2][chain1]) + + + LIS_Score=(LIS[chain1][chain2]+LIS[chain2][chain1])/2.0 + outstring=f'{chain2} {chain1} {pae_string:3} {dist_string:3} {"max":5} ' + ( + f'{ipsae_d0res_max[chain1][chain2]:8.6f} ' + f'{ipsae_d0chn_max[chain1][chain2]:8.6f} ' + f'{ipsae_d0dom_max[chain1][chain2]:8.6f} ' + f'{iptm_af_value:5.3f} ' + f'{iptm_d0chn_max[chain1][chain2]:8.6f} ' + f'{pDockQ[chain1][chain2]:8.4f} ' + f'{pDockQ2_value:8.4f} ' + f'{LIS_Score:8.4f} ' + f'{int(n0res_max[chain1][chain2]):5d} ' + f'{int(n0chn[chain1][chain2]):5d} ' + f'{int(n0dom_max[chain1][chain2]):5d} ' + f'{d0res_max[chain1][chain2]:6.2f} ' + f'{d0chn[chain1][chain2]:6.2f} ' + f'{d0dom_max[chain1][chain2]:6.2f} ' + f'{residues_1:5d} ' + f'{residues_2:5d} ' + f'{dist_residues_1:5d} ' + f'{dist_residues_2:5d} ' + f'{pdb_stem}\n') + OUT.write(outstring) + PML.write("# " + outstring) + + chain_pair= f'color_{chain1}_{chain2}' + chain1_residues = f'chain {chain1} and resi {contiguous_ranges(unique_residues_chain1[chain1][chain2])}' + chain2_residues = f'chain {chain2} and resi {contiguous_ranges(unique_residues_chain2[chain1][chain2])}' + PML.write(f'alias {chain_pair}, color gray80, all; color {color1}, {chain1_residues}; color {color2}, {chain2_residues}\n\n') + OUT.write("\n") diff --git a/bin/latest.py b/bin/latest.py new file mode 100644 index 0000000..d2b4651 --- /dev/null +++ b/bin/latest.py @@ -0,0 +1,787 @@ +#!/opt/miniforge/bin/python3 +""" +#!/usr/local/bin/python3 + +Functionality for running mmseqs locally. Takes in a fasta file, outputs final.a3m +""" +import logging +import math +import os +import shutil +import subprocess +import json +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter +from pathlib import Path +from typing import List, Optional, Tuple, Union, Dict +import random + +from input import get_queries, msa_to_str, safe_filename +from utils import AF3Utils + + +logger = logging.getLogger(__name__) + +MODULE_OUTPUT_POS = { + "align": 4, + "convertalis": 4, + "expandaln": 5, + "filterresult": 4, + "lndb": 2, + "mergedbs": 2, + "mvdb": 2, + "pairaln": 4, + "result2msa": 4, + "search": 3, +} + +def rename_output(queries_unique, ext, base): + for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): + os.rename( + base.joinpath(f"{job_number}.{ext}"), + base.joinpath(f"{safe_filename(raw_jobname)}.{ext}"), + ) + +def expand_db(db_path, seq_map, overwrite=True): + index_data = [] + with open(f"{db_path}.index", "r") as in_f: + for line in in_f: + index_data.append([int(x) for x in line.strip().split()]) + + new_index = "" + offset = 0 + seq_itr = 0 + with open(f"{db_path}-tmp", "wb") as out_file: + for seqs in seq_map: + for seq_index in seqs: + start_byte = index_data[seq_index][1] + byte_cnt = index_data[seq_index][2] + with open(f"{db_path}", "rb") as f: + f.seek(start_byte) + out_file.write(f.read(byte_cnt)) + new_index += f"{seq_itr}\t{offset}\t{byte_cnt}\n" + offset += byte_cnt + seq_itr += 1 + + with open(f"{db_path}-tmp.index", "w") as out_f: + out_f.write(new_index) + + if overwrite: + os.rename(f"{db_path}-tmp.index", f"{db_path}.index") + os.rename(f"{db_path}-tmp", f"{db_path}") + +def run_mmseqs(mmseqs: Path, params: List[Union[str, Path]]): + module = params[0] + if module in MODULE_OUTPUT_POS: + output_pos = MODULE_OUTPUT_POS[module] + output_path = Path(params[output_pos]).with_suffix('.dbtype') + if output_path.exists(): + logger.info(f"Skipping {module} because {output_path} already exists") + return + + params_log = " ".join(str(i) for i in params) + logger.info(f"Running {mmseqs} {params_log}") + # hide MMseqs2 verbose paramters list that clogs up the log + os.environ["MMSEQS_CALL_DEPTH"] = "1" + os.environ["MMSEQS_FORCE_MERGE"] = "True" + subprocess.check_call([mmseqs] + params) + + +def mmseqs_search_monomer( + dbbase: Path, + base: Path, + uniref_db: Path = Path("uniref30_2302_db"), + template_db: Path = Path(""), # Unused by default + metagenomic_db: Path = Path("colabfold_envdb_202108_db"), + mmseqs: Path = Path("mmseqs"), + use_env: bool = True, + use_templates: bool = False, + filter: bool = True, + expand_eval: float = math.inf, + align_eval: int = 10, + diff: int = 3000, + qsc: float = -20.0, + max_accept: int = 1000000, + prefilter_mode: int = 0, + s: float = 8, + db_load_mode: int = 2, + threads: int = 32, + gpu: int = 0, + gpu_server: int = 0, + unpack: bool = True, +): + """Run mmseqs with a local colabfold database set + + db1: uniprot db (UniRef30) + db2: Template (unused by default) + db3: metagenomic db (colabfold_envdb_202108 or bfd_mgy_colabfold, the former is preferred) + """ + if filter: + # 0.1 was not used in benchmarks due to POSIX shell bug in line above + # EXPAND_EVAL=0.1 + align_eval = 10 + qsc = 0.8 + max_accept = 100000 + + used_dbs = [uniref_db] + if use_templates: + used_dbs.append(template_db) + if use_env: + used_dbs.append(metagenomic_db) + + for db in used_dbs: + if not dbbase.joinpath(f"{db}.dbtype").is_file(): + raise FileNotFoundError(f"Database {db} does not exist") + if ( + ( + not dbbase.joinpath(f"{db}.idx").is_file() + and not dbbase.joinpath(f"{db}.idx.index").is_file() + ) + or os.environ.get("MMSEQS_IGNORE_INDEX", False) + ): + logger.info("Search does not use index") + db_load_mode = 0 + dbSuffix1 = "_seq" + dbSuffix2 = "_aln" + dbSuffix3 = "" + else: + dbSuffix1 = ".idx" + dbSuffix2 = ".idx" + dbSuffix3 = ".idx" + + search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000"] + template_search_param = [] + if gpu: + search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently + template_search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] + else: + search_param += ["--prefilter-mode", str(prefilter_mode)] + template_search_param += ["-s", "7.5", "--prefilter-mode", str(prefilter_mode)] + if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity + search_param += ["-s", "{:.1f}".format(s)] + else: + search_param += ["--k-score", "'seq:96,prof:80'"] + if gpu_server: + search_param += ["--gpu-server", str(gpu_server)] + + filter_param = ["--filter-msa", str(filter), "--filter-min-enable", "1000", "--diff", str(diff), "--qid", "0.0,0.2,0.4,0.6,0.8,1.0", "--qsc", "0", "--max-seq-id", "0.95",] + expand_param = ["--expansion-mode", "0", "-e", str(expand_eval), "--expand-filter-clusters", str(filter), "--max-seq-id", "0.95",] + + if not base.joinpath("uniref.a3m").with_suffix('.a3m.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(uniref_db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads)] + search_param) + os.mkdir(base.joinpath("kept_data")) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_1"), base.joinpath("kept_data/aln_1")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_0"), base.joinpath("kept_data/aln_0")]) + #run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_0"), base.joinpath("kept_data/profile_0")]) + #exit() + run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) + + run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{uniref_db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + expand_param) + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", str(threads), "--alt-ali", "10", "-a"]) + run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), + base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_filter"), "--db-load-mode", + str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", "--threads", + str(threads), "--max-seq-id", "1.0", "--filter-min-enable", "100"]) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), + base.joinpath("res_exp_realign_filter"), base.joinpath("uniref.a3m"), "--msa-format-mode", + "6", "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_filter")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + + else: + logger.info(f"Skipping {uniref_db} search because uniref.a3m already exists") + + if use_env and not base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m").with_suffix('.a3m.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(metagenomic_db), base.joinpath("res_env"), + base.joinpath("tmp3"), "--threads", str(threads)] + search_param) + run_mmseqs(mmseqs, ["expandaln", base.joinpath("prof_res"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), base.joinpath("res_env"), + dbbase.joinpath(f"{metagenomic_db}{dbSuffix2}"), base.joinpath("res_env_exp"), "-e", str(expand_eval), + "--expansion-mode", "0", "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) + run_mmseqs(mmseqs, ["align", base.joinpath("tmp3/latest/profile_1"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp"), base.joinpath("res_env_exp_realign"), "--db-load-mode", + str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", + str(threads), "--alt-ali", "10", "-a"]) + run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp_realign"), base.joinpath("res_env_exp_realign_filter"), + "--db-load-mode", str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", + "--max-seq-id", "1.0", "--threads", str(threads), "--filter-min-enable", "100"]) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp_realign_filter"), + base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m"), "--msa-format-mode", "6", + "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign_filter")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env")]) + elif use_env: + logger.info(f"Skipping {metagenomic_db} search because bfd.mgnify30.metaeuk30.smag30.a3m already exists") + + if use_templates and not base.joinpath(f"{template_db}.m8").with_suffix('.m8.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(template_db), base.joinpath("res_pdb"), + base.joinpath("tmp2"), "--db-load-mode", str(db_load_mode), "--threads", str(threads), "-a", "-e", "0.1"] + template_search_param) + run_mmseqs(mmseqs, ["convertalis", base.joinpath("prof_res"), dbbase.joinpath(f"{template_db}{dbSuffix3}"), base.joinpath("res_pdb"), + base.joinpath(f"{template_db}"), "--format-output", + "query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits,cigar", + "--db-output", "1", + "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_pdb")]) + elif use_templates: + logger.info(f"Skipping {template_db} search because {template_db}.m8 already exists") + + if use_env: + run_mmseqs(mmseqs, ["mergedbs", base.joinpath("qdb"), base.joinpath("final.a3m"), base.joinpath("uniref.a3m"), base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) + else: + run_mmseqs(mmseqs, ["mvdb", base.joinpath("uniref.a3m"), base.joinpath("final.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) + + if unpack: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath("final.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".a3m"]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("final.a3m")]) + + if use_templates: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath(f"{template_db}"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".m8"]) + if base.joinpath(f"{template_db}").exists(): + run_mmseqs(mmseqs, ["rmdb", base.joinpath(f"{template_db}")]) + + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + shutil.rmtree(base.joinpath("tmp")) + if use_templates: + shutil.rmtree(base.joinpath("tmp2")) + if use_env: + shutil.rmtree(base.joinpath("tmp3")) + +def mmseqs_search_pair( + dbbase: Path, + base: Path, + uniref_db: Path = Path("uniref30_2302_db"), + spire_db: Path = Path("spire_ctg10_2401_db"), + mmseqs: Path = Path("mmseqs"), + pair_env: bool = True, + prefilter_mode: int = 0, + s: float = 8, + threads: int = 64, + gpu: bool = False, + gpu_server: bool = False, + db_load_mode: int = 2, + pairing_strategy: int = 0, + unpack: bool = True, + seq_map: list=[], +): + if not dbbase.joinpath(f"{uniref_db}.dbtype").is_file(): + raise FileNotFoundError(f"Database {uniref_db} does not exist") + if ( + ( + not dbbase.joinpath(f"{uniref_db}.idx").is_file() + and not dbbase.joinpath(f"{uniref_db}.idx.index").is_file() + ) + or os.environ.get("MMSEQS_IGNORE_INDEX", False) + ): + logger.info("Search does not use index") + db_load_mode = 0 + dbSuffix1 = "_seq" + dbSuffix2 = "_aln" + else: + dbSuffix1 = ".idx" + dbSuffix2 = ".idx" + + if pair_env: + db = spire_db + output = ".env.paired.a3m" + else: + db = uniref_db + output = ".paired.a3m" + + # fmt: off + # @formatter:off + search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000",] + if gpu: + search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently + else: + search_param += ["--prefilter-mode", str(prefilter_mode)] + if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity + search_param += ["-s", "{:.1f}".format(s)] + else: + search_param += ["--k-score", "'seq:96,prof:80'"] + if gpu_server: + search_param += ["--gpu-server", str(gpu_server)] + expand_param = ["--expansion-mode", "0", "-e", "inf", "--expand-filter-clusters", "0", "--max-seq-id", "0.95",] + + if db != uniref_db: + # cleaning + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + + run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads),] + search_param,) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) + else: + os.makedirs(base.joinpath("tmp/latest")) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_0"), base.joinpath("tmp/latest/aln_0")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_1"), base.joinpath("tmp/latest/aln_1")]) + #run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/profile_0"), base.joinpath("tmp/latest/profile_0")]) + shutil.rmtree(base.joinpath("kept_data")) + + run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads),] + expand_param,) + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", "0.001", "--max-accept", "1000000", "--threads", str(threads),],) + + # Added by Ziad + #shutil.copy(base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign-minimal")) + #shutil.copy(base.joinpath("res_exp_realign.index"), base.joinpath("res_exp_realign-minimal.index")) + #exit() + run_mmseqs(mmseqs, ["cpdb", base.joinpath("qdb"), base.joinpath("qdb-minimal")]) + + for merged_db in [base.joinpath("res_exp_realign"), base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/aln_1")]: + print(f"merging {merged_db}") + expand_db(merged_db, seq_map, True) + + os.rename(base.joinpath("original-query.fas"), base.joinpath("query.fas")) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("qdb")]) + query_file = base.joinpath("query.fas") + run_mmseqs( + mmseqs, + ["createdb", query_file, base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], + ) + shutil.copy(base.joinpath("org-qdb.lookup"), base.joinpath("qdb.lookup")) + + + # create profile + prof_param = f"--sub-mat aa:blosum62.out,nucl:nucleotide.out -e 0.1 --mask-profile 1 --e-profile 0.1 --comp-bias-corr 1 --comp-bias-corr-scale 1 --wg 0 --allow-deletion 0 --filter-msa 1 --filter-min-enable 0 --max-seq-id 0.9 --qid 0.0 --qsc -20 --cov 0 --diff 1000 --pseudo-cnt-mode 0 --pca substitution:1.100,context:1.400 --pcb substitution:4.100,context:5.800 --db-load-mode 0 --gap-open aa:11,nucl:5 --gap-extend aa:1,nucl:2 --threads {threads} --compressed 0 -v 3 --profile-output-mode 0" + run_mmseqs( + mmseqs, + ["result2profile", base.joinpath("qdb"), dbbase.joinpath(db), + base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/profile_0")] + prof_param.split(), + ) + run_mmseqs( + mmseqs, + ["result2profile", base.joinpath("tmp/latest/profile_0"), dbbase.joinpath(db), + base.joinpath("tmp/latest/aln_1"), base.joinpath("prof_res")] + prof_param.split(), + ) + + ### + + run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_pair"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "0", "--threads", str(threads), ],) + + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp_realign_pair"), base.joinpath("res_exp_realign_pair_bt"), "--db-load-mode", str(db_load_mode), "-e", "inf", "-a", "--threads", str(threads), ],) + run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign_pair_bt"), base.joinpath("res_final"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "1", "--threads", str(threads),],) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_final"), base.joinpath("pair.a3m"), "--db-load-mode", str(db_load_mode), "--msa-format-mode", "5", "--threads", str(threads),],) + + if unpack: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath("pair.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", output,],) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("pair.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair_bt")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_final")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + shutil.rmtree(base.joinpath("tmp")) + # @formatter:on + # fmt: on + +def main(): + parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) + parser.add_argument( + "query", + type=Path, + help="fasta files with the queries.", + ) + parser.add_argument( + "dbbase", + type=Path, + help="The path to the database and indices you downloaded and created with setup_databases.sh", + ) + parser.add_argument( + "base", type=Path, help="Directory for the results (and intermediate files)" + ) + parser.add_argument( + "--prefilter-mode", + type=int, + default=0, + choices=[0, 1, 2], + help="Prefiltering algorithm to use: 0: k-mer (high-mem), 1: ungapped (high-cpu), 2: exhaustive (no prefilter, very slow). See wiki for more details: https://github.com/sokrypton/ColabFold/wiki#colabfold_search", + ) + parser.add_argument( + "-s", + type=float, + default=None, + help="MMseqs2 sensitivity. Lowering this will result in a much faster search but possibly sparser MSAs. By default, the k-mer threshold is directly set to the same one of the server, which corresponds to a sensitivity of ~8.", + ) + # dbs are uniref, templates and environmental + # We normally don't use templates + parser.add_argument( + "--db1", type=Path, default=Path("uniref30_2302_db"), help="UniRef database" + ) + parser.add_argument("--db2", type=Path, default=Path(""), help="Templates database") + parser.add_argument( + "--db3", + type=Path, + default=Path("colabfold_envdb_202108_db"), + help="Environmental database", + ) + parser.add_argument("--db4", type=Path, default=Path("spire_ctg10_2401_db"), help="Environmental pairing database") + + # poor man's boolean arguments + parser.add_argument( + "--use-env", type=int, default=1, choices=[0, 1], help="Use --db3" + ) + parser.add_argument( + "--use-env-pairing", type=int, default=0, choices=[0, 1], help="Use --db4" + ) + parser.add_argument( + "--use-templates", type=int, default=0, choices=[0, 1], help="Use --db2" + ) + parser.add_argument( + "--filter", + type=int, + default=1, + choices=[0, 1], + help="Filter the MSA by pre-defined align_eval, qsc, max_accept", + ) + + # mmseqs params + parser.add_argument( + "--mmseqs", + type=Path, + default=Path("mmseqs"), + help="Location of the mmseqs binary.", + ) + parser.add_argument( + "--expand-eval", + type=float, + default=math.inf, + help="e-val threshold for 'expandaln'.", + ) + parser.add_argument( + "--align-eval", type=int, default=10, help="e-val threshold for 'align'." + ) + parser.add_argument( + "--diff", + type=int, + default=3000, + help="filterresult - Keep at least this many seqs in each MSA block.", + ) + parser.add_argument( + "--qsc", + type=float, + default=-20.0, + help="filterresult - reduce diversity of output MSAs using min score thresh.", + ) + parser.add_argument( + "--max-accept", + type=int, + default=1000000, + help="align - Maximum accepted alignments before alignment calculation for a query is stopped.", + ) + parser.add_argument( + "--pairing_strategy", type=int, default=0, help="pairaln - Pairing strategy." + ) + parser.add_argument( + "--db-load-mode", + type=int, + default=0, + help="Database preload mode 0: auto, 1: fread, 2: mmap, 3: mmap+touch", + ) + parser.add_argument( + "--unpack", type=int, default=1, choices=[0, 1], help="Unpack results to loose files or keep MMseqs2 databases." + ) + parser.add_argument( + "--threads", type=int, default=64, help="Number of threads to use." + ) + parser.add_argument( + "--gpu", type=int, default=0, choices=[0, 1], help="Whether to use GPU (1) or not (0). Control number of GPUs with CUDA_VISIBLE_DEVICES env var." + ) + parser.add_argument( + "--gpu-server", type=int, default=0, choices=[0, 1], help="Whether to use GPU server (1) or not (0)" + ) + + # AlphaFold3 relevant params + parser.add_argument( + "--af3-json", action="store_true", help="Generate input JSON for AlphaFold3 from the provided FASTA/A3M file." + ) + parser.add_argument( + "--af3-msa-as-path", action="store_true", help="Save MSA as a file path instead of a string in the JSON." + ) + args = parser.parse_args() + + logging.basicConfig(level = logging.INFO) + + queries, is_complex = get_queries(args.query, None) + + monomor_seqs = set() + multimer_seqs = set() + queries_unique = [] + overall_unique_seqs = [] + seq_map = [] + for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): + # remove duplicates before searching + query_sequences = ( + [query_sequences] if isinstance(query_sequences, str) else query_sequences + ) + if len(query_sequences) == 1: + monomor_seqs.add(query_sequences[0]) + else: + multimer_seqs.update(query_sequences) + + query_seqs_unique = [] + for x in query_sequences: + if x not in query_seqs_unique: + query_seqs_unique.append(x) + + if x not in overall_unique_seqs: + overall_unique_seqs.append(x) + + + query_seqs_cardinality = [0] * len(query_seqs_unique) + for seq in query_sequences: + seq_idx = query_seqs_unique.index(seq) + query_seqs_cardinality[seq_idx] += 1 + + queries_unique.append([raw_jobname, query_seqs_unique, query_seqs_cardinality, other_molecules]) + # Ziad added + + monomor_seqs = monomor_seqs.difference(multimer_seqs) + + for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): + seq_map.append([]) + query_seqs_unique = [] + query_sequences = ( + [query_sequences] if isinstance(query_sequences, str) else query_sequences + ) + for x in query_sequences: + if x not in query_seqs_unique: + query_seqs_unique.append(x) + seq_map[job_number].append(overall_unique_seqs.index(x)) + + args.base.mkdir(exist_ok=True, parents=True) + + query_file = args.base.joinpath("original-query.fas") + with query_file.open("w") as f: + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + _ + ) in enumerate(queries_unique): + for j, seq in enumerate(query_sequences): + # The header of first sequence set as 101 + query_seq_headername = 101 + j + f.write(f">{query_seq_headername}\n{seq}\n") + + query_file = args.base.joinpath("query.fas") + with query_file.open("w") as f: + for j, seq in enumerate(overall_unique_seqs): + # The header of first sequence set as 101 + query_seq_headername = 101 + j + f.write(f">{query_seq_headername}\n{seq}\n") + + run_mmseqs( + args.mmseqs, + ["createdb", query_file, args.base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], + ) + with args.base.joinpath("qdb.lookup").open("w") as f: + id = 0 + file_number = 0 + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + _ + ) in enumerate(queries_unique): + for seq in query_sequences: + raw_jobname_first = raw_jobname.split()[0] + f.write(f"{id}\t{raw_jobname_first}\t{file_number}\n") + id += 1 + file_number += 1 + shutil.copy(args.base.joinpath("qdb.lookup"), args.base.joinpath("org-qdb.lookup")) + + mmseqs_search_monomer( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + template_db=args.db2, + metagenomic_db=args.db3, + use_env=args.use_env, + use_templates=args.use_templates, + filter=args.filter, + expand_eval=args.expand_eval, + align_eval=args.align_eval, + diff=args.diff, + qsc=args.qsc, + max_accept=args.max_accept, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + unpack=args.unpack, + ) + ## + #exit() + for seq_id in range(len(overall_unique_seqs)): + shutil.copy(args.base.joinpath(f"{seq_id}.a3m"), args.base.joinpath(f"u-{seq_id}.a3m")) + seq_itr = 0 + for seqs in seq_map: + for j, seq_index in enumerate(seqs): + #if seq_index == seq_id: + a3m_content = open(args.base.joinpath(f"u-{seq_index}.a3m"), "r").readlines() + header = a3m_content[0] + new_header = f">{101 + j}\n" + with open(args.base.joinpath(f"{seq_itr}.a3m"), "w") as out_f: + for line in a3m_content: + out_f.write(line.replace(header, new_header)) + seq_itr += 1 + + #exit() + for seq_id in range(len(overall_unique_seqs)): + os.remove(args.base.joinpath(f"u-{seq_id}.a3m")) + ## finish monomors and keep going for hybrid batch + ## + if is_complex is True: + mmseqs_search_pair( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + pairing_strategy=args.pairing_strategy, + pair_env=False, + unpack=args.unpack, + seq_map=seq_map + ) + #exit() + if args.use_env_pairing: + mmseqs_search_pair( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + spire_db=args.db4, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + pairing_strategy=args.pairing_strategy, + pair_env=True, + unpack=args.unpack, + ) + #exit() + if args.unpack or args.af3_json: + id = 0 + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + other_molecules, + ) in enumerate(queries_unique): + unpaired_msa = [] + paired_msa = None + if len(query_seqs_cardinality) > 1: + paired_msa = [] + for seq in query_sequences: + with args.base.joinpath(f"{id}.a3m").open("r") as f: + unpaired_msa.append(f.read()) + if args.af3_json: + args.base.joinpath(f"{id}.a3m").unlink() + + if args.use_env_pairing: + with open(args.base.joinpath(f"{id}.paired.a3m"), 'a') as file_pair: + with open(args.base.joinpath(f"{id}.env.paired.a3m"), 'r') as file_pair_env: + while chunk := file_pair_env.read(10 * 1024 * 1024): + file_pair.write(chunk) + if args.unpack: + args.base.joinpath(f"{id}.env.paired.a3m").unlink() + + if len(query_seqs_cardinality) > 1: + with args.base.joinpath(f"{id}.paired.a3m").open("r") as f: + paired_msa.append(f.read()) + if args.unpack: + args.base.joinpath(f"{id}.paired.a3m").unlink() + #os.remove(args.base.joinpath(f"{id}.a3m")) + id += 1 + + if args.af3_json: + af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, paired_msa, other_molecules) + with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: + f.write(json.dumps(af3.content, indent=4)) + + if args.unpack: + msa = msa_to_str( + unpaired_msa, paired_msa, query_sequences, query_seqs_cardinality + ) + args.base.joinpath(f"{job_number}.a3m").write_text(msa) + #exit() + #os.remove(args.base.joinpath("res_exp_realign-minimal.index")) + #os.remove(args.base.joinpath("res_exp_realign-minimal")) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res_exp_realign-minimal")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal_h")]) + + + + else: + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res_h")]) + os.remove(args.base.joinpath("original-query.fas")) + + if args.af3_json: + id = 0 + for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): + unpaired_msa = [] + for seq in query_sequences: + with args.base.joinpath(f"{id}.a3m").open("r") as f: + unpaired_msa.append(f.read()) + os.remove(args.base.joinpath(f"{id}.a3m")) + id += 1 + + # Create AF3Utils object and write JSON + af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, None, other_molecules) + with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: + f.write(json.dumps(af3.content, indent=4)) + + if args.unpack: + # rename a3m files + rename_output(queries_unique, "a3m", args.base) + + # rename m8 files + if args.use_templates: + id = 0 + for raw_jobname, query_sequences, query_seqs_cardinality, _ in queries_unique: + with args.base.joinpath(f"{safe_filename(raw_jobname)}_{args.db2}.m8").open( + "w" + ) as f: + for _ in range(len(query_seqs_cardinality)): + with args.base.joinpath(f"{id}.m8").open("r") as g: + f.write(g.read()) + os.remove(args.base.joinpath(f"{id}.m8")) + id += 1 + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb_h")]) + + if args.af3_json: + # rename json files + rename_output(queries_unique, "json", args.base) + + query_file.unlink() + os.remove(args.base.joinpath("org-qdb.lookup")) + + +if __name__ == "__main__": + main() diff --git a/bin/msa_manager.py b/bin/msa_manager.py new file mode 100755 index 0000000..242f0a9 --- /dev/null +++ b/bin/msa_manager.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +import os +import string +import argparse + + +MAX_MSA_SEQS = 16384 +MAX_PAIRED_SEQS = 8192 +ID_CHARS = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(10)] + + +def get_sub_sequences(seq_lengths, whole_seq): + out_seqs = [] + curr_seq = "" + curr_seq_itr = 0 + total_letters = 0 + for letter in whole_seq: + curr_seq += letter + if letter.isupper() or letter == "-": + total_letters += 1 + if total_letters == seq_lengths[curr_seq_itr]: + out_seqs.append(curr_seq) + curr_seq = "" + curr_seq_itr += 1 + total_letters = 0 + + if len(out_seqs) != len(seq_lengths): + print("Something wrong in the input file, could not generate the required number of sequences") + exit(1) + + return out_seqs + + +def parse_msa(msa_path, output_dir, meta_id): + os.makedirs(output_dir, exist_ok=True) + homolog = "" + section_index = 0 + + with open(msa_path, "r") as file: + first_line = file.readline() + if not first_line.startswith("#"): + homologs_lengths = [len(file.readline().strip('\n'))] + sequence_groups = [[[],[]]] + is_multimer = False + else: + homologs_lengths = [int(x.strip()) for x in first_line.replace('#',"").split()[0].split(",")] + sequence_groups = [[[], []] for _ in range(len(homologs_lengths))] + is_multimer = True + + with open(msa_path, "r") as file: + if is_multimer: + file.readline() + header_line = file.readline().strip()[1:] + expected_section_headers = [x.strip() for x in header_line.split()] + current_header = header_line + first_seq = False + for line in file: + line = line.strip() + if line.startswith(">"): + if homolog: + if first_seq and section_index > 0: + first_seq = False + else: + sub_sequences = get_sub_sequences(homologs_lengths, homolog) + for seq_index in range(len(homologs_lengths)): + if section_index == 0: + if len(sequence_groups[seq_index][0]) < MAX_PAIRED_SEQS: + sequence_groups[seq_index][0].append(sub_sequences[seq_index]) + else: + if seq_index == section_index - 1: + if len(sequence_groups[seq_index][1]) + len(sequence_groups[seq_index][0]) < MAX_MSA_SEQS: + sequence_groups[seq_index][1].append(sub_sequences[seq_index]) + + homolog = "" + current_header = line[1:].strip() + + if section_index < len(homologs_lengths) and current_header == expected_section_headers[section_index]: + section_index += 1 + first_seq = True + else: + homolog += line + if homolog: + if first_seq and section_index > 0: + first_seq = False + else: + sub_sequences = get_sub_sequences(homologs_lengths, homolog) + for seq_index in range(len(homologs_lengths)): + if section_index == 0: + if len(sequence_groups[seq_index][0]) < MAX_PAIRED_SEQS: + sequence_groups[seq_index][0].append(sub_sequences[seq_index]) + else: + if seq_index == section_index - 1: + if len(sequence_groups[seq_index][1]) + len(sequence_groups[seq_index][0]) < MAX_MSA_SEQS: + sequence_groups[seq_index][1].append(sub_sequences[seq_index]) + + for seq_index in range(len(homologs_lengths)): + filename = os.path.join(output_dir, f"{meta_id}_{seq_index}.csv") + with open(filename, "w") as out_file: + out_file.write("key,sequence\n") + if len(homologs_lengths)==1: #Homo-oligomer: all sequences are paired + paired_sequences = sequence_groups[seq_index][0]+sequence_groups[seq_index][1] + for i, seq in enumerate(paired_sequences): + out_file.write(f"{i},{seq}\n") + else: + paired_sequences = sequence_groups[seq_index][0] + for i, seq in enumerate(paired_sequences, start=1): + out_file.write(f"{i},{seq}\n") + + unpaired_sequences = sequence_groups[seq_index][1] + for seq in unpaired_sequences: + out_file.write(f"-1,{seq}\n") + + +def main(): + parser = argparse.ArgumentParser(description="Split multi-A3M file into CSV sequences per section.") + parser.add_argument("msa_path", help="Path to input .a3m file") + parser.add_argument("-o", "--output_dir", default="output_msa", help="Directory to write output CSVs") + parser.add_argument("--meta_id", default="default", help="Prefix for MSA files") + + args = parser.parse_args() + parse_msa(args.msa_path, args.output_dir, args.meta_id) + + +if __name__ == "__main__": + main() diff --git a/bin/utils.py b/bin/utils.py new file mode 100755 index 0000000..60f2f1c --- /dev/null +++ b/bin/utils.py @@ -0,0 +1,112 @@ +import importlib.util +import numpy as np +bio_is_installed = importlib.util.find_spec("Bio") is not None + +def _convert_plddt_to_100(res_plddt): + if (res_plddt < 1): # Converting to a [0,100] range + res_plddt *= 100 + return res_plddt + + +def plddt_from_struct_b_factor_adhoc(struct_file): + """ + Uses ad hoc PDB parser to extract residue pLDDT values from the b-factor column. Iterates over PDB objects rather than processes raw file + """ + #NOTE: this is a temporary hack which is not robust as a general parser. + #Should be temporary - need to check with non-protein entities + if not str(struct_file).endswith(".pdb"): + raise ValueError(f"{struct_file} must be a PDB file!") + + res_plddts = [] + resid_prev = -1 + atom_plddt_list = [] + + with open(struct_file) as f: + for line in f: + if not line.startswith('ATOM'): continue + resid = int(line[23:26].strip()) + if resid == resid_prev: + atom_plddt_list.append(float(line[61:66].strip())) + else: + if resid_prev == -1: + resid_prev = resid + continue + res_plddt = sum(atom_plddt_list)/len(atom_plddt_list) + res_plddt = _convert_plddt_to_100(res_plddt) + res_plddts.append(res_plddt) + resid_prev = resid + + # Reset atom tracking + atom_plddt_list = [] + atom_plddt_list.append(float(line[61:66].strip())) + + res_plddt = sum(atom_plddt_list)/len(atom_plddt_list) + res_plddt = _convert_plddt_to_100(res_plddt) + res_plddts.append(res_plddt) + + res_plddts = np.array(res_plddts) + res_plddts = np.round(res_plddts, 2) + + return res_plddts + +def get_chain_ids(struct_file): + from Bio import PDB + if str(struct_file).endswith(".pdb"): + parser = PDB.PDBParser(QUIET=True) + structure = parser.get_structure(id=id, file=struct_file) + elif str(struct_file).endswith(".cif"): + parser = PDB.MMCIFParser(QUIET=True) + structure = parser.get_structure(structure_id=id, filename=struct_file) + else: + raise ValueError(f"{struct_file} is neither a PDB or mmCIF file!") + + return [chain.id for chain in structure.get_chains()] + + +def plddt_from_struct_b_factor_biopython(struct_file): + """ + Uses the BioPython PDB package to extract residue pLDDT values from the b-factor column. Iterates over PDB objects rather than processes raw file + """ + from Bio import PDB + if str(struct_file).endswith(".pdb"): + parser = PDB.PDBParser(QUIET=True) + structure = parser.get_structure(id=id, file=struct_file) + elif str(struct_file).endswith(".cif"): + parser = PDB.MMCIFParser(QUIET=True) + structure = parser.get_structure(structure_id=id, filename=struct_file) + else: + raise ValueError(f"{struct_file} is neither a PDB or mmCIF file!") + +# res_list = [] + res_plddts = [] +# plddt_tot = 0 + + for model in structure: + for chain in model: + chain_res_list = chain.get_unpacked_list() +# res_list.extend(chain_res_list) + for residue in chain: + atom_list = residue.get_unpacked_list() + atom_plddt_tot = 0 + for atom in residue: # ESMFold and others have separate atom-wise values, so doing atom-wise to cover that and residue-wise + atom_plddt = atom.get_bfactor() + atom_plddt_tot += atom_plddt + + res_plddt = float(atom_plddt_tot / len(atom_list)) + + if (res_plddt < 1): # RFAA the multiplication of mean isn't failing. Anyway covering to a [0,100] range for any structure file1 + res_plddt *= 100 + res_plddt = _convert_plddt_to_100(res_plddt) + + res_plddts.append(res_plddt) +# plddt_tot += res_plddt + + res_plddts = np.array(res_plddts) + res_plddts = np.round(res_plddts, 2) + + return res_plddts + +if bio_is_installed: + plddt_from_struct_b_factor = plddt_from_struct_b_factor_biopython +else: + plddt_from_struct_b_factor = plddt_from_struct_b_factor_adhoc diff --git a/bin/zt-search.py b/bin/zt-search.py new file mode 100755 index 0000000..5026066 --- /dev/null +++ b/bin/zt-search.py @@ -0,0 +1,802 @@ +#!/opt/miniforge/bin/python3 +""" +#!/usr/local/bin/python3 + +Functionality for running mmseqs locally. Takes in a fasta file, outputs final.a3m +""" +import logging +import math +import os +import shutil +import subprocess +import json +from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter +from pathlib import Path +from typing import List, Optional, Tuple, Union, Dict +import random + +from input import get_queries, msa_to_str, safe_filename +from utils import AF3Utils + + +logger = logging.getLogger(__name__) + +MODULE_OUTPUT_POS = { + "align": 4, + "convertalis": 4, + "expandaln": 5, + "filterresult": 4, + "lndb": 2, + "mergedbs": 2, + "mvdb": 2, + "pairaln": 4, + "result2msa": 4, + "search": 3, +} + +def rename_output(queries_unique, ext, base): + for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): + os.rename( + base.joinpath(f"{job_number}.{ext}"), + base.joinpath(f"{safe_filename(raw_jobname)}.{ext}"), + ) + +def expand_db(db_path, seq_map, overwrite=True): + index_data = [] + with open(f"{db_path}.index", "r") as in_f: + for line in in_f: + index_data.append([int(x) for x in line.strip().split()]) + + print(index_data) + new_index = "" + offset = 0 + seq_itr = 0 + with open(f"{db_path}-tmp", "wb") as out_file: + for seqs in seq_map: + for seq_index in seqs: + start_byte = index_data[seq_index][1] + byte_cnt = index_data[seq_index][2] + print(start_byte, byte_cnt, index_data[seq_index]) + with open(f"{db_path}", "rb") as f: + f.seek(start_byte) + out_file.write(f.read(byte_cnt)) + new_index += f"{seq_itr}\t{offset}\t{byte_cnt}\n" + offset += index_data[seq_index][2] + seq_itr += 1 + + with open(f"{db_path}-tmp.index", "w") as out_f: + out_f.write(new_index) + + if overwrite: + os.rename(f"{db_path}-tmp.index", f"{db_path}.index") + os.rename(f"{db_path}-tmp", f"{db_path}") + +def run_mmseqs(mmseqs: Path, params: List[Union[str, Path]]): + module = params[0] + if module in MODULE_OUTPUT_POS: + output_pos = MODULE_OUTPUT_POS[module] + output_path = Path(params[output_pos]).with_suffix('.dbtype') + if output_path.exists(): + logger.info(f"Skipping {module} because {output_path} already exists") + return + + params_log = " ".join(str(i) for i in params) + logger.info(f"Running {mmseqs} {params_log}") + # hide MMseqs2 verbose paramters list that clogs up the log + os.environ["MMSEQS_CALL_DEPTH"] = "1" + os.environ["MMSEQS_FORCE_MERGE"] = "True" + subprocess.check_call([mmseqs] + params) + + +def mmseqs_search_monomer( + dbbase: Path, + base: Path, + uniref_db: Path = Path("uniref30_2302_db"), + template_db: Path = Path(""), # Unused by default + metagenomic_db: Path = Path("colabfold_envdb_202108_db"), + mmseqs: Path = Path("mmseqs"), + use_env: bool = True, + use_templates: bool = False, + filter: bool = True, + expand_eval: float = math.inf, + align_eval: int = 10, + diff: int = 3000, + qsc: float = -20.0, + max_accept: int = 1000000, + prefilter_mode: int = 0, + s: float = 8, + db_load_mode: int = 2, + threads: int = 32, + gpu: int = 0, + gpu_server: int = 0, + unpack: bool = True, +): + """Run mmseqs with a local colabfold database set + + db1: uniprot db (UniRef30) + db2: Template (unused by default) + db3: metagenomic db (colabfold_envdb_202108 or bfd_mgy_colabfold, the former is preferred) + """ + if filter: + # 0.1 was not used in benchmarks due to POSIX shell bug in line above + # EXPAND_EVAL=0.1 + align_eval = 10 + qsc = 0.8 + max_accept = 100000 + + used_dbs = [uniref_db] + if use_templates: + used_dbs.append(template_db) + if use_env: + used_dbs.append(metagenomic_db) + + for db in used_dbs: + if not dbbase.joinpath(f"{db}.dbtype").is_file(): + raise FileNotFoundError(f"Database {db} does not exist") + if ( + ( + not dbbase.joinpath(f"{db}.idx").is_file() + and not dbbase.joinpath(f"{db}.idx.index").is_file() + ) + or os.environ.get("MMSEQS_IGNORE_INDEX", False) + ): + logger.info("Search does not use index") + db_load_mode = 0 + dbSuffix1 = "_seq" + dbSuffix2 = "_aln" + dbSuffix3 = "" + else: + dbSuffix1 = ".idx" + dbSuffix2 = ".idx" + dbSuffix3 = ".idx" + + search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000"] + template_search_param = [] + if gpu: + search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently + template_search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] + else: + search_param += ["--prefilter-mode", str(prefilter_mode)] + template_search_param += ["-s", "7.5", "--prefilter-mode", str(prefilter_mode)] + if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity + search_param += ["-s", "{:.1f}".format(s)] + else: + search_param += ["--k-score", "'seq:96,prof:80'"] + if gpu_server: + search_param += ["--gpu-server", str(gpu_server)] + + filter_param = ["--filter-msa", str(filter), "--filter-min-enable", "1000", "--diff", str(diff), "--qid", "0.0,0.2,0.4,0.6,0.8,1.0", "--qsc", "0", "--max-seq-id", "0.95",] + expand_param = ["--expansion-mode", "0", "-e", str(expand_eval), "--expand-filter-clusters", str(filter), "--max-seq-id", "0.95",] + + if not base.joinpath("uniref.a3m").with_suffix('.a3m.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(uniref_db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads)] + search_param) + os.mkdir(base.joinpath("kept_data")) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_1"), base.joinpath("kept_data/aln_1")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_0"), base.joinpath("kept_data/aln_0")]) + #run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_0"), base.joinpath("kept_data/profile_0")]) + #exit() + run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) + + run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{uniref_db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + expand_param) + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", str(threads), "--alt-ali", "10", "-a"]) + run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), + base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_filter"), "--db-load-mode", + str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", "--threads", + str(threads), "--max-seq-id", "1.0", "--filter-min-enable", "100"]) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), + base.joinpath("res_exp_realign_filter"), base.joinpath("uniref.a3m"), "--msa-format-mode", + "6", "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_filter")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + + else: + logger.info(f"Skipping {uniref_db} search because uniref.a3m already exists") + + if use_env and not base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m").with_suffix('.a3m.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(metagenomic_db), base.joinpath("res_env"), + base.joinpath("tmp3"), "--threads", str(threads)] + search_param) + run_mmseqs(mmseqs, ["expandaln", base.joinpath("prof_res"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), base.joinpath("res_env"), + dbbase.joinpath(f"{metagenomic_db}{dbSuffix2}"), base.joinpath("res_env_exp"), "-e", str(expand_eval), + "--expansion-mode", "0", "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) + run_mmseqs(mmseqs, ["align", base.joinpath("tmp3/latest/profile_1"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp"), base.joinpath("res_env_exp_realign"), "--db-load-mode", + str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", + str(threads), "--alt-ali", "10", "-a"]) + run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp_realign"), base.joinpath("res_env_exp_realign_filter"), + "--db-load-mode", str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", + "--max-seq-id", "1.0", "--threads", str(threads), "--filter-min-enable", "100"]) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), + base.joinpath("res_env_exp_realign_filter"), + base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m"), "--msa-format-mode", "6", + "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign_filter")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env")]) + elif use_env: + logger.info(f"Skipping {metagenomic_db} search because bfd.mgnify30.metaeuk30.smag30.a3m already exists") + + if use_templates and not base.joinpath(f"{template_db}.m8").with_suffix('.m8.dbtype').exists(): + run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(template_db), base.joinpath("res_pdb"), + base.joinpath("tmp2"), "--db-load-mode", str(db_load_mode), "--threads", str(threads), "-a", "-e", "0.1"] + template_search_param) + run_mmseqs(mmseqs, ["convertalis", base.joinpath("prof_res"), dbbase.joinpath(f"{template_db}{dbSuffix3}"), base.joinpath("res_pdb"), + base.joinpath(f"{template_db}"), "--format-output", + "query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits,cigar", + "--db-output", "1", + "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_pdb")]) + elif use_templates: + logger.info(f"Skipping {template_db} search because {template_db}.m8 already exists") + + if use_env: + run_mmseqs(mmseqs, ["mergedbs", base.joinpath("qdb"), base.joinpath("final.a3m"), base.joinpath("uniref.a3m"), base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) + else: + run_mmseqs(mmseqs, ["mvdb", base.joinpath("uniref.a3m"), base.joinpath("final.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) + + if unpack: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath("final.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".a3m"]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("final.a3m")]) + + if use_templates: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath(f"{template_db}"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".m8"]) + if base.joinpath(f"{template_db}").exists(): + run_mmseqs(mmseqs, ["rmdb", base.joinpath(f"{template_db}")]) + + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + shutil.rmtree(base.joinpath("tmp")) + if use_templates: + shutil.rmtree(base.joinpath("tmp2")) + if use_env: + shutil.rmtree(base.joinpath("tmp3")) + +def mmseqs_search_pair( + dbbase: Path, + base: Path, + uniref_db: Path = Path("uniref30_2302_db"), + spire_db: Path = Path("spire_ctg10_2401_db"), + mmseqs: Path = Path("mmseqs"), + pair_env: bool = True, + prefilter_mode: int = 0, + s: float = 8, + threads: int = 64, + gpu: bool = False, + gpu_server: bool = False, + db_load_mode: int = 2, + pairing_strategy: int = 0, + unpack: bool = True, + seq_map: list=[], +): + if not dbbase.joinpath(f"{uniref_db}.dbtype").is_file(): + raise FileNotFoundError(f"Database {uniref_db} does not exist") + if ( + ( + not dbbase.joinpath(f"{uniref_db}.idx").is_file() + and not dbbase.joinpath(f"{uniref_db}.idx.index").is_file() + ) + or os.environ.get("MMSEQS_IGNORE_INDEX", False) + ): + logger.info("Search does not use index") + db_load_mode = 0 + dbSuffix1 = "_seq" + dbSuffix2 = "_aln" + else: + dbSuffix1 = ".idx" + dbSuffix2 = ".idx" + + if pair_env: + db = spire_db + output = ".env.paired.a3m" + else: + db = uniref_db + output = ".paired.a3m" + + # fmt: off + # @formatter:off + search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000",] + if gpu: + search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently + else: + search_param += ["--prefilter-mode", str(prefilter_mode)] + if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity + search_param += ["-s", "{:.1f}".format(s)] + else: + search_param += ["--k-score", "'seq:96,prof:80'"] + if gpu_server: + search_param += ["--gpu-server", str(gpu_server)] + expand_param = ["--expansion-mode", "0", "-e", "inf", "--expand-filter-clusters", "0", "--max-seq-id", "0.95",] + + if db != uniref_db: + # cleaning + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + + run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads),] + search_param,) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) + run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) + else: + os.makedirs(base.joinpath("tmp/latest")) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_0"), base.joinpath("tmp/latest/aln_0")]) + run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_1"), base.joinpath("tmp/latest/aln_1")]) + #run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/profile_0"), base.joinpath("tmp/latest/profile_0")]) + shutil.rmtree(base.joinpath("kept_data")) + + run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads),] + expand_param,) + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", "0.001", "--max-accept", "1000000", "--threads", str(threads),],) + + # Added by Ziad + #shutil.copy(base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign-minimal")) + #shutil.copy(base.joinpath("res_exp_realign.index"), base.joinpath("res_exp_realign-minimal.index")) + #exit() + run_mmseqs(mmseqs, ["cpdb", base.joinpath("qdb"), base.joinpath("qdb-minimal")]) + + for merged_db in [base.joinpath("res_exp_realign"), base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/aln_1")]: + print(f"merging {merged_db}") + expand_db(merged_db, seq_map, True) + + os.rename(base.joinpath("original-query.fas"), base.joinpath("query.fas")) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("qdb")]) + query_file = base.joinpath("query.fas") + run_mmseqs( + mmseqs, + ["createdb", query_file, base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], + ) + shutil.copy(base.joinpath("org-qdb.lookup"), base.joinpath("qdb.lookup")) + + ### fix with res + + #exit() + + + # create profile + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + + prof_param = f"--sub-mat aa:blosum62.out,nucl:nucleotide.out -e 0.1 --mask-profile 1 --e-profile 0.1 --comp-bias-corr 1 --comp-bias-corr-scale 1 --wg 0 --allow-deletion 0 --filter-msa 1 --filter-min-enable 0 --max-seq-id 0.9 --qid 0.0 --qsc -20 --cov 0 --diff 1000 --pseudo-cnt-mode 0 --pca substitution:1.100,context:1.400 --pcb substitution:4.100,context:5.800 --db-load-mode 0 --gap-open aa:11,nucl:5 --gap-extend aa:1,nucl:2 --threads {threads} --compressed 0 -v 3 --profile-output-mode 0" + run_mmseqs( + mmseqs, + ["result2profile", base.joinpath("qdb"), dbbase.joinpath(db), + base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/profile_0")] + prof_param.split(), + ) + run_mmseqs( + mmseqs, + ["result2profile", base.joinpath("tmp/latest/profile_0"), dbbase.joinpath(db), + base.joinpath("tmp/latest/aln_1"), base.joinpath("prof_res")] + prof_param.split(), + ) + + ### + + #exit() + run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_pair"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "0", "--threads", str(threads), ],) + + run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp_realign_pair"), base.joinpath("res_exp_realign_pair_bt"), "--db-load-mode", str(db_load_mode), "-e", "inf", "-a", "--threads", str(threads), ],) + run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign_pair_bt"), base.joinpath("res_final"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "1", "--threads", str(threads),],) + run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_final"), base.joinpath("pair.a3m"), "--db-load-mode", str(db_load_mode), "--msa-format-mode", "5", "--threads", str(threads),],) + + if unpack: + run_mmseqs(mmseqs, ["unpackdb", base.joinpath("pair.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", output,],) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("pair.a3m")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair_bt")]) + run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_final")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) + #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) + #shutil.rmtree(base.joinpath("tmp")) + # @formatter:on + # fmt: on + +def main(): + parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) + parser.add_argument( + "query", + type=Path, + help="fasta files with the queries.", + ) + parser.add_argument( + "dbbase", + type=Path, + help="The path to the database and indices you downloaded and created with setup_databases.sh", + ) + parser.add_argument( + "base", type=Path, help="Directory for the results (and intermediate files)" + ) + parser.add_argument( + "--prefilter-mode", + type=int, + default=0, + choices=[0, 1, 2], + help="Prefiltering algorithm to use: 0: k-mer (high-mem), 1: ungapped (high-cpu), 2: exhaustive (no prefilter, very slow). See wiki for more details: https://github.com/sokrypton/ColabFold/wiki#colabfold_search", + ) + parser.add_argument( + "-s", + type=float, + default=None, + help="MMseqs2 sensitivity. Lowering this will result in a much faster search but possibly sparser MSAs. By default, the k-mer threshold is directly set to the same one of the server, which corresponds to a sensitivity of ~8.", + ) + # dbs are uniref, templates and environmental + # We normally don't use templates + parser.add_argument( + "--db1", type=Path, default=Path("uniref30_2302_db"), help="UniRef database" + ) + parser.add_argument("--db2", type=Path, default=Path(""), help="Templates database") + parser.add_argument( + "--db3", + type=Path, + default=Path("colabfold_envdb_202108_db"), + help="Environmental database", + ) + parser.add_argument("--db4", type=Path, default=Path("spire_ctg10_2401_db"), help="Environmental pairing database") + + # poor man's boolean arguments + parser.add_argument( + "--use-env", type=int, default=1, choices=[0, 1], help="Use --db3" + ) + parser.add_argument( + "--use-env-pairing", type=int, default=0, choices=[0, 1], help="Use --db4" + ) + parser.add_argument( + "--use-templates", type=int, default=0, choices=[0, 1], help="Use --db2" + ) + parser.add_argument( + "--filter", + type=int, + default=1, + choices=[0, 1], + help="Filter the MSA by pre-defined align_eval, qsc, max_accept", + ) + + # mmseqs params + parser.add_argument( + "--mmseqs", + type=Path, + default=Path("mmseqs"), + help="Location of the mmseqs binary.", + ) + parser.add_argument( + "--expand-eval", + type=float, + default=math.inf, + help="e-val threshold for 'expandaln'.", + ) + parser.add_argument( + "--align-eval", type=int, default=10, help="e-val threshold for 'align'." + ) + parser.add_argument( + "--diff", + type=int, + default=3000, + help="filterresult - Keep at least this many seqs in each MSA block.", + ) + parser.add_argument( + "--qsc", + type=float, + default=-20.0, + help="filterresult - reduce diversity of output MSAs using min score thresh.", + ) + parser.add_argument( + "--max-accept", + type=int, + default=1000000, + help="align - Maximum accepted alignments before alignment calculation for a query is stopped.", + ) + parser.add_argument( + "--pairing_strategy", type=int, default=0, help="pairaln - Pairing strategy." + ) + parser.add_argument( + "--db-load-mode", + type=int, + default=0, + help="Database preload mode 0: auto, 1: fread, 2: mmap, 3: mmap+touch", + ) + parser.add_argument( + "--unpack", type=int, default=1, choices=[0, 1], help="Unpack results to loose files or keep MMseqs2 databases." + ) + parser.add_argument( + "--threads", type=int, default=64, help="Number of threads to use." + ) + parser.add_argument( + "--gpu", type=int, default=0, choices=[0, 1], help="Whether to use GPU (1) or not (0). Control number of GPUs with CUDA_VISIBLE_DEVICES env var." + ) + parser.add_argument( + "--gpu-server", type=int, default=0, choices=[0, 1], help="Whether to use GPU server (1) or not (0)" + ) + + # AlphaFold3 relevant params + parser.add_argument( + "--af3-json", action="store_true", help="Generate input JSON for AlphaFold3 from the provided FASTA/A3M file." + ) + parser.add_argument( + "--af3-msa-as-path", action="store_true", help="Save MSA as a file path instead of a string in the JSON." + ) + args = parser.parse_args() + + logging.basicConfig(level = logging.INFO) + + queries, is_complex = get_queries(args.query, None) + + monomor_seqs = set() + multimer_seqs = set() + queries_unique = [] + overall_unique_seqs = [] + seq_map = [] + for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): + # remove duplicates before searching + query_sequences = ( + [query_sequences] if isinstance(query_sequences, str) else query_sequences + ) + if len(query_sequences) == 1: + monomor_seqs.add(query_sequences[0]) + else: + multimer_seqs.update(query_sequences) + + query_seqs_unique = [] + for x in query_sequences: + if x not in query_seqs_unique: + query_seqs_unique.append(x) + + if x not in overall_unique_seqs: + overall_unique_seqs.append(x) + + + query_seqs_cardinality = [0] * len(query_seqs_unique) + for seq in query_sequences: + seq_idx = query_seqs_unique.index(seq) + query_seqs_cardinality[seq_idx] += 1 + + queries_unique.append([raw_jobname, query_seqs_unique, query_seqs_cardinality, other_molecules]) + # Ziad added + + monomor_seqs = monomor_seqs.difference(multimer_seqs) + + for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): + seq_map.append([]) + query_seqs_unique = [] + query_sequences = ( + [query_sequences] if isinstance(query_sequences, str) else query_sequences + ) + for x in query_sequences: + if x not in query_seqs_unique: + query_seqs_unique.append(x) + seq_map[job_number].append(overall_unique_seqs.index(x)) + + #print(seq_map) + #exit() + args.base.mkdir(exist_ok=True, parents=True) + + # updated by Ziad + query_file = args.base.joinpath("original-query.fas") + with query_file.open("w") as f: + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + _ + ) in enumerate(queries_unique): + for j, seq in enumerate(query_sequences): + # The header of first sequence set as 101 + query_seq_headername = 101 + j + f.write(f">{query_seq_headername}\n{seq}\n") + + query_file = args.base.joinpath("query.fas") + with query_file.open("w") as f: + for j, seq in enumerate(overall_unique_seqs): + # The header of first sequence set as 101 + query_seq_headername = 101 + j + f.write(f">{query_seq_headername}\n{seq}\n") + + run_mmseqs( + args.mmseqs, + ["createdb", query_file, args.base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], + ) + with args.base.joinpath("qdb.lookup").open("w") as f: + id = 0 + file_number = 0 + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + _ + ) in enumerate(queries_unique): + for seq in query_sequences: + raw_jobname_first = raw_jobname.split()[0] + f.write(f"{id}\t{raw_jobname_first}\t{file_number}\n") + id += 1 + file_number += 1 + shutil.copy(args.base.joinpath("qdb.lookup"), args.base.joinpath("org-qdb.lookup")) + #print("DOne") + + #exit() + mmseqs_search_monomer( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + template_db=args.db2, + metagenomic_db=args.db3, + use_env=args.use_env, + use_templates=args.use_templates, + filter=args.filter, + expand_eval=args.expand_eval, + align_eval=args.align_eval, + diff=args.diff, + qsc=args.qsc, + max_accept=args.max_accept, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + unpack=args.unpack, + ) + ## + print(seq_map) + + for seq_id in range(len(overall_unique_seqs)): + a3m_content = open(args.base.joinpath(f"{seq_id}.a3m"), "r").readlines() + shutil.copy(args.base.joinpath(f"{seq_id}.a3m"), args.base.joinpath(f"u-{seq_id}.a3m")) + seq_itr = 0 + header = a3m_content[0] + for seqs in seq_map: + for j, seq_index in enumerate(seqs): + if seq_index == seq_id: + new_header = f">{101 + j}\n" + with open(args.base.joinpath(f"{seq_itr}.a3m"), "w") as out_f: + for line in a3m_content: + out_f.write(line.replace(header, new_header)) + seq_itr += 1 + + + + for seq_id in range(len(overall_unique_seqs)): + os.remove(args.base.joinpath(f"u-{seq_id}.a3m")) + #exit() + ## finish monomors and keep going for hybrid batch + ## + if is_complex is True: + mmseqs_search_pair( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + pairing_strategy=args.pairing_strategy, + pair_env=False, + unpack=args.unpack, + seq_map=seq_map + ) + #exit() + if args.use_env_pairing: + mmseqs_search_pair( + mmseqs=args.mmseqs, + dbbase=args.dbbase, + base=args.base, + uniref_db=args.db1, + spire_db=args.db4, + prefilter_mode=args.prefilter_mode, + s=args.s, + db_load_mode=args.db_load_mode, + threads=args.threads, + gpu=args.gpu, + gpu_server=args.gpu_server, + pairing_strategy=args.pairing_strategy, + pair_env=True, + unpack=args.unpack, + ) + if args.unpack or args.af3_json: + id = 0 + for job_number, ( + raw_jobname, + query_sequences, + query_seqs_cardinality, + other_molecules, + ) in enumerate(queries_unique): + unpaired_msa = [] + paired_msa = None + if len(query_seqs_cardinality) > 1: + paired_msa = [] + for seq in query_sequences: + with args.base.joinpath(f"{id}.a3m").open("r") as f: + unpaired_msa.append(f.read()) + if args.af3_json: + args.base.joinpath(f"{id}.a3m").unlink() + + if args.use_env_pairing: + with open(args.base.joinpath(f"{id}.paired.a3m"), 'a') as file_pair: + with open(args.base.joinpath(f"{id}.env.paired.a3m"), 'r') as file_pair_env: + while chunk := file_pair_env.read(10 * 1024 * 1024): + file_pair.write(chunk) + if args.unpack: + args.base.joinpath(f"{id}.env.paired.a3m").unlink() + + if len(query_seqs_cardinality) > 1: + with args.base.joinpath(f"{id}.paired.a3m").open("r") as f: + paired_msa.append(f.read()) + if args.unpack: + args.base.joinpath(f"{id}.paired.a3m").unlink() + id += 1 + + if args.af3_json: + af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, paired_msa, other_molecules) + with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: + f.write(json.dumps(af3.content, indent=4)) + + if args.unpack: + msa = msa_to_str( + unpaired_msa, paired_msa, query_sequences, query_seqs_cardinality + ) + args.base.joinpath(f"{job_number}.a3m").write_text(msa) + + + #os.remove(args.base.joinpath("res_exp_realign-minimal.index")) + #os.remove(args.base.joinpath("res_exp_realign-minimal")) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res_exp_realign-minimal")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal_h")]) + + + + else: + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res_h")]) + os.remove(args.base.joinpath("original-query.fas")) + + if args.af3_json: + id = 0 + for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): + unpaired_msa = [] + for seq in query_sequences: + with args.base.joinpath(f"{id}.a3m").open("r") as f: + unpaired_msa.append(f.read()) + id += 1 + + # Create AF3Utils object and write JSON + af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, None, other_molecules) + with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: + f.write(json.dumps(af3.content, indent=4)) + if args.unpack: + # rename a3m files + rename_output(queries_unique, "a3m", args.base) + + # rename m8 files + if args.use_templates: + id = 0 + for raw_jobname, query_sequences, query_seqs_cardinality, _ in queries_unique: + with args.base.joinpath(f"{safe_filename(raw_jobname)}_{args.db2}.m8").open( + "w" + ) as f: + for _ in range(len(query_seqs_cardinality)): + with args.base.joinpath(f"{id}.m8").open("r") as g: + f.write(g.read()) + os.remove(args.base.joinpath(f"{id}.m8")) + id += 1 + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb")]) + run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb_h")]) + + if args.af3_json: + # rename json files + rename_output(queries_unique, "json", args.base) + + query_file.unlink() + os.remove(args.base.joinpath("org-qdb.lookup")) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/conf/gadi.config b/conf/gadi.config new file mode 100644 index 0000000..f90850f --- /dev/null +++ b/conf/gadi.config @@ -0,0 +1,68 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/wisps -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ +includeConfig 'https://raw.githubusercontent.com/nf-core/configs/master/conf/nci_gadi.config' + +singularity.cacheDir = "/g/data/if89/singularity_cache/" +singularity.autoMounts = true +singularity.enabled = true +if (params.use_gpu) { singularity.runOptions = '--nv' } + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Input data + outdir = "out-test" + input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" + samplesheet2 = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" + + boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" + boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" + colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" + colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" + + uniref30 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/uniref30_2302/" + use_gpu = true + project = "ll61" + use_dgxa100 = false + +} + +process { + //executor = "local" + storage = "gdata/if89+scratch/${params.project}+gdata/${params.project}" + + withName: 'MMSEQS_COLABFOLDSEARCH' { + memory = 300.GB + time = 16.h + } + withName: 'RUN_BOLTZ' { + cpus = 12 + queue = "gpuvolta" + time = 10.h + memory = 24.GB + cpus = 12 + gpus = 1 + } + resourceLimits = [ + cpus: 1, + memory: '4.GB', + time: '1.h' + ] + resourceLimits = [ + cpus: 1000, + memory: '2000.GB', + time: '24.h' + ] + +} + diff --git a/conf/modules.config b/conf/modules.config index 255b138..c424f6d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -9,7 +9,7 @@ ext.prefix = File name prefix for output files. ---------------------------------------------------------------------------------------- */ - +singularity.runOptions = params.mmseqs_gpu ? '--nv' : '' process { publishDir = [ @@ -18,7 +18,6 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ @@ -28,4 +27,29 @@ process { ] } + withName: 'MMSEQS_COLABFOLDSEARCH' { + memory = 300.GB + time = 16.h + def args = "" + if (params.mmseqs_gpu){ + args += "--gpu 1 " + } + + if ("${params.tools}".split(",").contains("alphafold3")){ + args += "--af3-json " + } + + ext.args = args + } + + withName: 'RUN_BOLTZ' { + cpus = 12 + time = 10.h + memory = 24.GB + ext.args = "--write_full_pae --output_format mmcif" + } + + withName: 'IPSAE' { + ext.args = "${params.ipsae_pae_cutoff} ${params.ipsae_dist_cutoff}" + } } diff --git a/conf/test_gadi.config b/conf/test_gadi.config index ca8ca36..4cb1c2b 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -9,8 +9,6 @@ ---------------------------------------------------------------------------------------- */ -includeConfig 'https://raw.githubusercontent.com/nf-core/configs/master/conf/nci_gadi.config' - singularity.cacheDir = "/g/data/if89/singularity_cache/" singularity.autoMounts = true singularity.enabled = true @@ -23,25 +21,38 @@ params { // Input data outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - samplesheet2 = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" + boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" + boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" + boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" colabfold_db = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" - uniref30 = "/g/data/if89/proteinfold_dbs/miniature_databases/uniref30_2302/" + uniref30 = "/g/data/za08/tom/colabfold_uniref30" + colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" + + alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_small_bfd = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_mgnify = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_pdb_mmcif = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_uniref90 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_pdb_seqres = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + alphafold3_uniprot = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + use_gpu = true project = "ll61" use_dgxa100 = false } process { + executor = "pbspro" //executor = "local" - storage = "gdata/if89+scratch/${params.project}+gdata/${params.project}" - - withName: 'MMSEQS_COLABFOLDSEARCH' { - memory = 300.GB - time = 16.h - } + storage = "gdata/za08+gdata/if89+scratch/${params.project}+gdata/${params.project}" + module = 'singularity' + cache = 'lenient' + stageInMode = 'symlink' + queue = { task.memory < 128.GB ? 'normalbw' : (task.memory >= 128.GB && task.memory <= 190.GB ? 'normal' : (task.memory > 190.GB && task.memory <= 1020.GB ? 'hugemembw' : '')) } + withName: 'RUN_BOLTZ' { cpus = 12 queue = "gpuvolta" @@ -50,6 +61,24 @@ process { cpus = 12 gpus = 1 } + withName: 'MMSEQS_COLABFOLDSEARCH' { + time = 1.h + if (params.mmseqs_gpu){ + queue = "dgxa100" + memory = 24.GB + cpus = 16 + gpus = 1 + } + } + + withName: 'COLABFOLD_BATCH' { + queue = "gpuvolta" + time = 10.h + memory = 64.GB + cpus = 12 + gpus = 1 + } + resourceLimits = [ cpus: 1, memory: '4.GB', @@ -60,6 +89,11 @@ process { memory: '2000.GB', time: '24.h' ] + resourceLimits = [ + cpus: 16, + memory: '24.GB', + time: '3.h' + ] } diff --git a/main.nf b/main.nf index a1c8c4c..c4301d2 100644 --- a/main.nf +++ b/main.nf @@ -41,15 +41,32 @@ workflow NFCORE_WISPS { // // WORKFLOW: Run pipeline // + + WISPS ( ch_samplesheet, params.mode, ch_versions, - params.boltz_ccd, - params.boltz_model, - params.colabfold_db, - params.uniref30, - params.mmseq_batch_size + Channel.fromPath(params.boltz_ccd, checkIfExists: true).first(), + Channel.fromPath(params.boltz_model, checkIfExists: true).first(), + Channel.fromPath(params.boltz2_aff, checkIfExists: true).first(), + Channel.fromPath(params.boltz2_conf, checkIfExists: true).first(), + Channel.fromPath(params.boltz2_mols, checkIfExists: true).first(), + Channel.fromPath(params.colabfold_db, checkIfExists: true).first(), + Channel.fromPath(params.uniref30, checkIfExists: true).first(), + params.mmseqs_batch_size, + params.colabfold_model_preset, + Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first(), + params.colabfold_num_recycles, + Channel.fromPath(params.alphafold3_params, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_small_bfd, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_mgnify, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_pdb_mmcif, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_uniref90, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_pdb_seqres, checkIfExists: true).first(), + Channel.fromPath(params.alphafold3_uniprot, checkIfExists: true).first(), + params.tools + ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/colabfold_batch/Dockerfile b/modules/local/colabfold_batch/Dockerfile new file mode 100644 index 0000000..2437848 --- /dev/null +++ b/modules/local/colabfold_batch/Dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/sokrypton/colabfold:1.5.5-cuda12.2.2 + +RUN mamba install -y -n colabfold -c conda-forge -c bioconda mmseqs2=18.8cc5c && \ + mamba clean -afy && \ + mmseqs version diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf new file mode 100644 index 0000000..bbd5d13 --- /dev/null +++ b/modules/local/colabfold_batch/main.nf @@ -0,0 +1,81 @@ +process COLABFOLD_BATCH { + tag "$meta.id" + label 'process_medium' + label 'process_gpu' + + container "nf-core/proteinfold_colabfold:dev" + + input: + tuple val(meta), path(fasta) + val colabfold_model_preset + path ('params/*') + path ('colabfold_db/*') + path ('uniref30/*') + val numRec + + output: + tuple val(meta), path ("${meta.id}_colabfold.pdb"), emit: top_ranked_pdb + tuple val(meta), path ("*relaxed_rank_*.pdb") , emit: pdb + tuple val(meta), path ("*_coverage.png") , emit: msa + tuple val(meta), path ("*_mqc.png") , emit: multiqc + tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae + tuple val(meta), path ("${meta.id}_scores_rank_001_*.json") , emit: top_ranked_scores + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error("Local COLABFOLD_BATCH module does not support Conda. Please use Docker / Singularity / Podman instead.") + } + def args = task.ext.args ?: '' + + """ + ln -s \$(realpath params/alphafold_params_*/*) params/ + touch params/download_finished.txt + + colabfold_batch \\ + $args \\ + --num-recycle ${numRec} \\ + --data \$PWD \\ + --model-type ${colabfold_model_preset} \\ + ${fasta} \\ + \$PWD + for i in `find *.png -maxdepth 0`; do cp \$i \${i%'.png'}_mqc.png; done + if [ ! -e `find *_relaxed_rank_001_*.pdb` ]; then + cp *_relaxed_rank_001*.pdb ${meta.id}_colabfold.pdb + else + cp *_unrelaxed_rank_001*.pdb ${meta.id}_colabfold.pdb + fi + + #Note: only multimer prefix is meta.id + extract_metrics.py --name ${meta.id} \\ + --colabfold_pae *_predicted_aligned_error_v1.json + + mv *_coverage.png ${meta.id}_seq_coverage.png + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + colabfold_batch: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + END_VERSIONS + """ + + stub: + """ + touch ./"${meta.id}"_colabfold.pdb + touch ./"${meta.id}"_mqc.png + touch ./${meta.id}_relaxed_rank_01.pdb + touch ./${meta.id}_relaxed_rank_02.pdb + touch ./${meta.id}_relaxed_rank_03.pdb + touch ./${meta.id}_coverage.png + touch ./${meta.id}_scores_rank.json + touch ./${meta.id}_0_pae.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + colabfold_batch: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + END_VERSIONS + """ +} diff --git a/modules/local/data_convertor/boltz_fasta/main.nf b/modules/local/data_convertor/boltz_fasta/main.nf new file mode 100644 index 0000000..200125a --- /dev/null +++ b/modules/local/data_convertor/boltz_fasta/main.nf @@ -0,0 +1,129 @@ +process BOLTZ_FASTA { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), path(fasta), path(msa) + + output: + tuple val(meta), path ("output_fasta/*.fasta"), path(msa), emit: formatted_fasta + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def msa_files = msa ? "\"" + msa.join('", "') + "\"" : "" + """ + #!/usr/bin/env python3 + import os, sys + import string + import re + #def safe_filename(file: str) -> str: + # return "".join([c if c.isalnum() or c in ["_", ".", "-"] else "_" for c in file]) + ".a3m" + + all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] + msa_files = [${msa_files}] + ENTITY_TYPES = ["protein", "ccd", "smiles", "dna", "rna"] + + def infer_entity_type(header, sequence): + header_lower = header.lower() + for entity in ENTITY_TYPES: + if entity in header_lower: + return entity + seq = sequence.strip() + seq_set = set(seq) + # RNA: only A,C,U,G,N + if len(seq_set - set("ACUGN")) == 0: + return "rna" + # DNA: only A,C,T,G,N + if len(seq_set - set("ACTGN")) == 0: + return "dna" + # Protein: only 20 AA, not just A,C,T,G,U,N + protein_letters = set("ACDEFGHIKLMNPQRSTVWY") + if len(seq_set - protein_letters) == 0 and not (seq_set <= set("ACUGTN")): + return "protein" + # SMILES: fallback + if re.fullmatch(r"[A-Za-z0-9@+\\-\\[\\]\\(\\)=#\\\$%]+", seq): + return "smiles" + return "unknown" + + os.makedirs("output_fasta", exist_ok=True) + counter = 0 + msa_counter = 0 + with open("${fasta}", "r") as f: + lines = f.readlines() + + msa = "" + fasta_data = "" + seq_lines = [] + header = None + + unique_proteins = {} + for line in lines: + line = line.strip() + if line.startswith(">"): + # Write previous entry if exists + if header is not None: + sequence = "".join(seq_lines) + entity_type = infer_entity_type(header, sequence) + msa = "" + if entity_type == 'protein': + if len(msa_files) > 0: + if not sequence in unique_proteins: + unique_proteins[sequence] = msa_counter + msa_counter += 1 + this_msa = unique_proteins[sequence] + msa = f"|{os.path.basename(msa_files[this_msa])}" + if msa[1:] not in msa_files: + print(f"Can not find msa file {os.path.basename(msa_files[counter])}") + exit(1) + fasta_data += f">{all_combinations[counter]}|{entity_type}{msa}\\n{sequence}\\n" + counter += 1 + header = line + seq_lines = [] + else: + seq_lines.append(line) + # Write last entry + if header is not None: + sequence = "".join(seq_lines) + entity_type = infer_entity_type(header, sequence) + msa = "" + if entity_type == 'protein': + if len(msa_files) > 0: + if not sequence in unique_proteins: + unique_proteins[sequence] = msa_counter + msa_counter += 1 + this_msa = unique_proteins[sequence] + msa = f"|{os.path.basename(msa_files[this_msa])}" + if msa[1:] not in msa_files: + print(f"Can not find msa file {os.path.basename(msa_files[counter])}") + exit(1) + fasta_data += f">{all_combinations[counter]}|{entity_type}{msa}\\n{sequence}\\n" + + if len(fasta_data) > 0: + with open(f"output_fasta/${meta.id}.fasta", "w") as outfile: + outfile.write(fasta_data) + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + ${args} + """ + + stub: + """ + mkdir output_fasta + touch "output_fasta/${meta.id}.fasta" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/data_convertor/fasta2json/main.nf b/modules/local/data_convertor/fasta2json/main.nf new file mode 100644 index 0000000..4b5c507 --- /dev/null +++ b/modules/local/data_convertor/fasta2json/main.nf @@ -0,0 +1,74 @@ +process FASTA2JSON { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), path(fasta) + output: + tuple val(meta), path ("*.json"), emit: json + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + #!/usr/bin/env python3 + import os, sys + import json + import copy + seq_template = { + "type": "", + "sequence": "", + "count": 1 + } + final_res = {"entities": []} + seq_type = "protein" + counter = 0 + fasta_data = "" + + with open("${fasta}", "r") as f: + lines = f.readlines() + + for line in lines: + line = line.strip() + if line.startswith(">"): + if len(fasta_data) > 0: + new_entry = copy.deepcopy(seq_template) + new_entry["type"] = seq_type + new_entry["sequence"] = fasta_data + final_res["entities"].append(new_entry) + counter += 1 + fasta_data = "" + else: + fasta_data += f"{line}" + if len(fasta_data) > 0: + new_entry = copy.deepcopy(seq_template) + new_entry["type"] = seq_type + new_entry["sequence"] = fasta_data + final_res["entities"].append(new_entry) + + with open("${meta.id}.json", "w") as json_file: + json.dump(final_res, json_file, indent=4, sort_keys=True) + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch "${meta.id}.json" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/data_convertor/fasta2yaml/main.nf b/modules/local/data_convertor/fasta2yaml/main.nf new file mode 100644 index 0000000..5c4dccc --- /dev/null +++ b/modules/local/data_convertor/fasta2yaml/main.nf @@ -0,0 +1,72 @@ +process FASTA2YAML { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path ("*.yaml"), emit: yaml + tuple val(meta), path ("out_fasta/*.fasta"), emit: fasta + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + #!/usr/bin/env python3 + import os, sys + import string + yaml_template = "defaults:\\n - base\\njob_name: \\"${meta.id}\\"\\nprotein_inputs:\\n" + seq_type = "protein" + counter = 0 + fasta_data = "" + os.makedirs("out_fasta", exist_ok=True) + all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] + with open("${fasta}", "r") as f: + lines = f.readlines() + + for line in lines: + line = line.strip() + if line.startswith(">"): + if len(fasta_data) > 0: + with open(f"out_fasta/{all_combinations[counter]}.fasta", "w") as fasta_file: + fasta_file.write(fasta_data + "\\n") + yaml_template += f" {all_combinations[counter]}:\\n fasta_file: {all_combinations[counter]}.fasta\\n" + counter += 1 + fasta_data = f"{line}\\n" + else: + fasta_data += f"{line}" + if len(fasta_data) > 0: + with open(f"out_fasta/{all_combinations[counter]}.fasta", "w") as fasta_file: + fasta_file.write(fasta_data + "\\n") + yaml_template += f" {all_combinations[counter]}:\\n fasta_file: {all_combinations[counter]}.fasta\\n" + + with open("${meta.id}.yaml", "w") as yaml_file: + yaml_file.write(yaml_template) + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch "${meta.id}.yaml" + mkdir out_fasta + touch "out_fasta/A.fasta" + touch "out_fasta/B.fasta" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/ipsae/main.nf b/modules/local/ipsae/main.nf new file mode 100644 index 0000000..72f3eeb --- /dev/null +++ b/modules/local/ipsae/main.nf @@ -0,0 +1,46 @@ +process IPSAE { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/numpy:2.2.2' : + 'quay.io/biocontainers/numpy:2.2.2' }" + + input: + tuple val(meta), path(pae), path(pdb) + output: + tuple val(meta), path ("*.pml"), emit: pml + tuple val(meta), path ("*_byres.txt"), emit: byres + tuple val(meta), path ("*.txt"), emit: txt + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + ipsae.py ${pae} \\ + ${pdb} \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ + + stub: + """ + touch "${meta.id}.pml" + touch "${meta.id}.txt" + touch "${meta.id}.byres.txt" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index a3e53ea..232f42a 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -2,7 +2,7 @@ process MMSEQS_COLABFOLDSEARCH { tag "$meta.id" label 'process_high_memory' - container "nf-core/proteinfold_colabfold:dev" + container "/g/data/ll61/colabfold_search-gpu.sif" input: tuple val(meta), path(fasta) @@ -11,6 +11,7 @@ process MMSEQS_COLABFOLDSEARCH { output: tuple val(meta), path("**.a3m"), emit: a3m + tuple val(meta), path("**.json"), emit: json, optional: true path "versions.yml", emit: versions when: @@ -24,9 +25,11 @@ process MMSEQS_COLABFOLDSEARCH { def args = task.ext.args ?: '' """ - colabfold_search \\ + mamba run --name colab colabfold_search \\ $args \\ - --threads $task.cpus ${fasta} \\ + --threads $task.cpus \\ + --use-env 0 --db1 colabfold_uniref30/uniref30_2302_db --db3 colabfold_envdb_202108/colabfold_envdb_202108_db \\ + ${fasta} \\ ./db \\ "result/" @@ -34,7 +37,7 @@ process MMSEQS_COLABFOLDSEARCH { "${task.process}": colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') alphafold_colabfold: \$(conda run -n colabfold pip list | grep "^alphafold-colabfold" | awk '{print \$2}') - mmseqs: \$(mmseqs version) + mmseqs: \$(mamba run --name colab mmseqs version) END_VERSIONS """ diff --git a/modules/local/msa_manager/split_msa.nf b/modules/local/msa_manager/split_msa.nf new file mode 100644 index 0000000..c7f7b4d --- /dev/null +++ b/modules/local/msa_manager/split_msa.nf @@ -0,0 +1,42 @@ +process SPLIT_MSA { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + tuple val(meta), path(msa) + output: + tuple val(meta), path ("output_msa/*.csv"), emit: msa_csv + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + + """ + msa_manager.py ${msa} -o output_msa --meta_id ${meta.id} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ + + stub: + """ + mkdir output_msa + touch "output_msa/A.csv" + touch "output_msa/B.csv" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index 2eb0a49..b26693e 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -53,6 +53,7 @@ process PREPARE_INTERACTIONS { continue # Skip empty FASTA files #header = lines[0].strip() + lines[-1] = lines[-1].strip() + "\\n" body = lines[1:] header = f">{all_combinations[counter]}|{seq_type}" counter += 1 diff --git a/modules/local/run_alphafold3/Dockerfile b/modules/local/run_alphafold3/Dockerfile new file mode 100644 index 0000000..1a541f2 --- /dev/null +++ b/modules/local/run_alphafold3/Dockerfile @@ -0,0 +1,59 @@ +FROM nvidia/cuda:12.6.0-base-ubuntu22.04 + +LABEL authors="Jose Espinosa-Carrasco" \ + title="nfcore/proteinfold_alphafold3" \ + Version="1.2.0dev" \ + description="Docker image containing all software requirements to run Alphafold3 using the nf-core/proteinfold pipeline" + +# Some RUN statements are combined together to make Docker build run faster. +# Get latest package listing, install software-properties-common, git and wget. +# git is required for pyproject.toml toolchain's use of CMakeLists.txt. +RUN apt update --quiet \ + && apt install --yes --quiet software-properties-common \ + && apt install --yes --quiet git wget jq \ + && rm -rf /var/lib/apt/lists/* + +# Get apt repository of specific Python versions. Then install Python. Tell APT +# this isn't an interactive TTY to avoid timezone prompt when installing. +RUN add-apt-repository ppa:deadsnakes/ppa \ + && DEBIAN_FRONTEND=noninteractive apt install --yes --quiet python3.11 python3-pip python3.11-venv python3.11-dev +RUN python3.11 -m venv /alphafold3_venv +ENV PATH="/hmmer/bin:/alphafold3_venv/bin:$PATH" + +# Install HMMER. Do so before copying the source code, so that docker can cache +# the image layer containing HMMER. +RUN mkdir /hmmer_build /hmmer ; \ + wget http://eddylab.org/software/hmmer/hmmer-3.4.tar.gz --directory-prefix /hmmer_build ; \ + (cd /hmmer_build && tar zxf hmmer-3.4.tar.gz && rm hmmer-3.4.tar.gz) ; \ + (cd /hmmer_build/hmmer-3.4 && ./configure --prefix /hmmer) ; \ + (cd /hmmer_build/hmmer-3.4 && make -j8) ; \ + (cd /hmmer_build/hmmer-3.4 && make install) ; \ + (cd /hmmer_build/hmmer-3.4/easel && make install) ; \ + rm -R /hmmer_build + +# Clone AlphaFold3 +RUN git clone https://github.com/google-deepmind/alphafold3.git /app/alphafold && \ + cd /app/alphafold && \ + git checkout 3c27a149a25b6c8930ce68cfeb2a6cbb9afb3359 && \ + cd - + +# # Install the Python dependencies AlphaFold 3 needs. +# RUN pip3 install -r dev-requirements.txt +# RUN pip3 install --no-deps . + +# Install pip packages. +RUN pip3 install --upgrade pip --no-cache-dir \ + && pip3 install -r /app/alphafold/dev-requirements.txt --no-cache-dir \ + && pip3 install --no-deps /app/alphafold/ --no-cache-dir \ + && pip3 install --no-deps biopython + +# # Build chemical components database (this binary was installed by pip). +RUN build_data + +# To work around a known XLA issue causing the compilation time to greatly +# increase, the following environment variable setting XLA flags must be enabled +# when running AlphaFold 3: +ENV XLA_FLAGS="--xla_gpu_enable_triton_gemm=false" +# Memory settings used for folding up to 5,120 tokens on A100 80 GB. +ENV XLA_PYTHON_CLIENT_PREALLOCATE=true +ENV XLA_CLIENT_MEM_FRACTION=0.95 diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf new file mode 100644 index 0000000..556980e --- /dev/null +++ b/modules/local/run_alphafold3/main.nf @@ -0,0 +1,95 @@ +/* + * Run Alphafold3 + */ +process RUN_ALPHAFOLD3 { + tag "$meta.id" + label 'process_medium' + label 'process_gpu' + container "nf-core/proteinfold_alphafold3_standard:1.2.0dev" + input: + tuple val(meta), path(json) + path "params/*" + path "small_bfd/*" + path "mgnify/*" + path "mmcif_files" + path "uniref90/*" + path "pdb_seqres/*" + path "uniprot/*" + output: + tuple val(meta), path ("publish/*alphafold3.cif") , emit: top_ranked_cif + tuple val(meta), path ("publish/*ranked_*.cif") , emit: cif + tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc + tuple val(meta), path ("${meta.id}_alphafold3_msa.tsv") , emit: msa + tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae + tuple val(meta), path ("*_full_data_0.json") , emit: raw_pae + path "versions.yml" , emit: versions + when: + task.ext.when == null || task.ext.when + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error("Local RUN_ALPHAFOLD3 module does not support Conda. Please use Docker / Singularity / Podman instead.") + } + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def af3_id = meta.id.toLowerCase() + """ + if [ -f pdb_seqres/pdb_seqres.txt ] + then + sed -i "/^\\w*0/d" pdb_seqres/pdb_seqres.txt + fi + python3 /app/alphafold/run_alphafold.py \\ + --json_path=${json} \\ + --model_dir=./params \\ + --uniref90_database_path=./uniref90/uniref90_2022_05.fa \\ + --mgnify_database_path=./mgnify/mgy_clusters_2022_05.fa \\ + --pdb_database_path=./mmcif_files \\ + --small_bfd_database_path=./small_bfd/bfd-first_non_consensus_sequences.fasta \\ + --uniprot_cluster_annot_database_path=./uniprot/uniprot_all_2021_04.fa \\ + --seqres_database_path=./pdb_seqres/pdb_seqres_2022_09_28.fasta \\ + --output_dir=\$PWD \\ + $args + ## Rename the top ranked model + if [ ! -d publish ]; then + mkdir -p publish + fi + ## Move the rest of the models and rename them according to their rank + name=\$(jq -r '.name' ${json}) + cp -n "\${name}/\${name}_model.cif" "publish/${prefix}_alphafold3.cif" + # Sort the rows by ranking_score in descending order + sorted_csv=\$(head -n 1 "\${name}/ranking_scores.csv"; tail -n +2 "\${name}/ranking_scores.csv" | sort -t, -k3 -nr) + rank=0 + touch publish/combined_plddt_mqc.tsv + # Generate files with rank tag + echo "\$sorted_csv" | tail -n +2 | while IFS=',' read -r seed sample ranking_score; do + cp -n "\${name}/seed-\${seed}_sample-\${sample}/model.cif" "publish/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" + rank=\$((rank + 1)) + done + extract_metrics.py --name ${prefix} \\ + --jsons ${af3_id}/${af3_id}_data.json ${af3_id}/${af3_id}_summary_confidences.json ${af3_id}/${af3_id}_confidences.json \\ + --structs publish/*ranked_*.cif + mv "${prefix}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir publish + touch publish/${prefix}_alphafold3.cif + touch publish/${prefix}_ranked_1.cif + touch publish/${prefix}_ranked_2.cif + touch publish/${prefix}_ranked_3.cif + touch publish/${prefix}_ranked_4.cif + touch publish/${prefix}_ranked_5.cif + touch ${prefix}_plddt.tsv + touch ${prefix}_alphafold3_msa.tsv + touch ${prefix}_0_pae.tsv + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/local/run_boltz/Dockerfile b/modules/local/run_boltz/Dockerfile new file mode 100644 index 0000000..0ef3a4f --- /dev/null +++ b/modules/local/run_boltz/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3.12-slim + +LABEL authors="Ziad Al-Bkhetan " \ + title="nfcore/proteinfold_boltz" \ + Version="1.2.0dev" \ + description="Docker image containing all software requirements to run boltz using the nf-core/proteinfold pipeline" + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + build-essential \ + procps \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* + +RUN pip install --no-cache-dir boltz==2.0.3 + +## To update to version 2.2.0, uncomment the following lines, though still was complaining +## about triton version, thought the error msg state to be sure of using 3.3.0 +# RUN pip install --no-cache-dir \ +# cuequivariance_ops_cu12==0.5.1\ +# cuequivariance_ops_torch_cu12==0.5.1 \ +# cuequivariance_torch==0.5.1 \ +# triton==3.3.0 + +CMD ["boltz"] diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index b513437..581bbbc 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -4,46 +4,113 @@ process RUN_BOLTZ { tag "$meta.id" label 'process_medium' + label 'process_gpu' + + container "nf-core/proteinfold_boltz:dev" - container "fastfold/boltz-1:latest" - input: tuple val(meta), path(fasta) path (files) path ('boltz1_conf.ckpt') path ('ccd.pkl') - + path ('boltz2_aff.ckpt') + path ('boltz2_conf.ckpt') + path ('mols') + output: - tuple val(meta), path ("boltz_results_*/processed/msa/*.npz"), emit: msa - tuple val(meta), path ("boltz_results_*/processed/structures/*.npz"), emit: structures - tuple val(meta), path ("boltz_results_*/predictions/*/confidence*.json"), emit: confidence - tuple val(meta), path ("*"), emit: plddt - tuple val(meta), path ("boltz_results_*/predictions/*/*.pdb"), emit: pdb + // TODO: rename npz into different emit channels as to not conflict with raw (.tsv) PAE etc. As in PR #306 + tuple val(meta), path ("boltz_results_*/processed/msa/*.npz") , optional: true, emit: msa + tuple val(meta), path ("boltz_results_*/processed/structures/*.npz") , emit: structures + tuple val(meta), path ("boltz_results_*/predictions/*/confidence*.json") , emit: confidence + tuple val(meta), path ("${meta.id}_plddt.tsv") , optional: true, emit: multiqc + // TODO: support cif as well like with HelixFold3 + tuple val(meta), path ("${meta.id}_boltz.pdb") , optional: true, emit: top_ranked_pdb + tuple val(meta), path ("boltz_results_*/predictions/*/*.pdb") , optional: true, emit: pdb + tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , optional: true, emit: cif + tuple val(meta), path ("boltz_results_*/predictions/*/plddt_*model_0.npz") , emit: plddt + tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , optional: true, emit: pae + tuple val(meta), path ("${meta.id}_plddt.tsv") , optional: true, emit: plddt_raw + tuple val(meta), path ("${meta.id}_boltz_msa.tsv") , optional: true, emit: msa_raw + tuple val(meta), path ("${meta.id}_*_pae.tsv") , optional: true, emit: pae_raw + tuple val(meta), path ("${meta.id}_ptm.tsv") , optional: true, emit: ptm_raw + tuple val(meta), path ("${meta.id}_iptm.tsv") , optional: true, emit: iptm_raw + tuple val(meta), path ("${meta.id}_chainwise_ptm.tsv") , optional: true, emit: summary_chainwise_ptm_raw + tuple val(meta), path ("${meta.id}_chainwise_iptm.tsv") , optional: true, emit: chainwise_iptm_raw + + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when - + script: + // Exit if running this module with -profile conda / -profile mamba + + // TODO: "boltz_results_*" dir should be be further specified using --out_dir when running Boltz, and being able to go "boltz_results_${meta.id}" instead of "boltz_results_*" + // TODO: MSA processing for Boltz is not solid yet. They can come from webserver, local mmseq, or a custom paired .csv (see docs below) + // https://github.com/jwohlwend/boltz/blob/main/docs/prediction.md#yaml-format + // TODO: what I really need to do is add a function to read /processed/msa/*.npz and convert it to a .tsv file + + // TODO: Boltz is the example to do chain-wise summary files. This will be better if model_id was properly written per prog and EXTRACT_METRICs was a process + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error("Local RUN_BOLTZ module does not support Conda. Please use Docker / Singularity / Podman instead.") + } + def version = "2.0.3" def args = task.ext.args ?: '' """ - boltz predict --output_format pdb ${args} "${fasta}" --cache ./ + export NUMBA_CACHE_DIR=/tmp + export HOME=/tmp + + boltz predict "${fasta}" ${args} --cache ./ + + if [[ "${args}" == *pdb* ]]; then + cp boltz_results_*/predictions/${meta.id}/*_0.pdb ./${meta.id}_boltz.pdb + if [ -f boltz_results_*/msa/${meta.id}_0.csv ]; then + cp boltz_results_*/msa/${meta.id}_*.csv ./ + fi + + extract_metrics.py --name ${meta.id} \\ + --structs boltz_results_*/predictions/${meta.id}/*.pdb \\ + --jsons boltz_results_*/predictions/${meta.id}/confidence_*_model_*.json \\ + --npzs boltz_results_*/predictions/${meta.id}/pae_*_model_*.npz \\ + --csvs ${meta.id}_*.csv + + mv "${meta.id}_msa.tsv" "${meta.id}_boltz_msa.tsv" + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + boltz: $version + END_VERSIONS """ + stub: + def version = "2.0.3" """ mkdir -p boltz_results_${meta.id}/processed/msa/ mkdir -p boltz_results_${meta.id}/processed/structures/ mkdir -p boltz_results_${meta.id}/predictions/${meta.id}/ - + touch boltz_results_${meta.id}/processed/msa/${meta.id}.npz touch boltz_results_${meta.id}/processed/structures/${meta.id}.npz touch boltz_results_${meta.id}/predictions/${meta.id}/confidence_${meta.id}.json touch boltz_results_${meta.id}/predictions/${meta.id}/${meta.id}.pdb - + touch boltz_results_${meta.id}/predictions/${meta.id}/${meta.id}.cif + touch boltz_results_${meta.id}/predictions/${meta.id}/plddt_${meta.id}_model_0.npz + touch boltz_results_${meta.id}/predictions/${meta.id}/pae_${meta.id}_model_0.npz + + touch "${meta.id}_boltz.pdb" + touch "${meta.id}_plddt.tsv" + touch "${meta.id}_boltz_msa.tsv" + touch "${meta.id}_0_pae.tsv" + touch "${meta.id}_0_ptm.tsv" + touch "${meta.id}_0_iptm.tsv" + touch "${meta.id}_chainwise_ptm.tsv" + touch "${meta.id}_chainwise_iptm.tsv" cat <<-END_VERSIONS > versions.yml "${task.process}": - python: \$(python3 --version | sed 's/Python //g') + boltz: $version END_VERSIONS """ } diff --git a/nextflow.config b/nextflow.config index dcfccf8..7423d46 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,8 +13,16 @@ params { // Input options input = null mode = "all-all" - mmseq_batch_size = 10 - + mmseqs_batch_size = 10 + mmseqs_gpu = false + + colabfold_model_preset = "alphafold2_multimer_v3" + colabfold_num_recycles = 3 + tools = "boltz,colabfold" + + ipsae_pae_cutoff = 10 + ipsae_dist_cutoff = 10 + // MultiQC options multiqc_config = null multiqc_title = null @@ -154,6 +162,7 @@ profiles { test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } test_gadi { includeConfig 'conf/test_gadi.config' } + gadi { includeConfig 'conf/gadi.config' } } // Load nf-core custom profiles from different Institutions diff --git a/nextflow_schema.json b/nextflow_schema.json index f29da16..e59345f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -29,6 +29,23 @@ "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", "fa_icon": "fas fa-folder-open" }, + "mode": { + "type": "string", + "default": "alphafold2", + "description": "Specifies the mode in which the pipeline will be run. mode can be any combination of ['alphafold2', 'alphafold3', 'colabfold', 'esmfold', 'rosettafold_all_atom', 'boltz', 'helixfold3'] separated by a comma (',') with no spaces.", + "fa_icon": "fas fa-cogs", + "errorMessage": "Mode must be a comma-separated list containing any combination of 'alphafold2', 'alphafold3', 'colabfold', 'esmfold', 'rosettafold_all_atom', 'boltz', or 'helixfold3' with no spaces." + }, + "mmseq_batch_size": { + "type": "integer", + "description": "Number of samples in each mmseq run (batching leads to higher performance time in total.)", + "fa_icon": "fas fa-microchip" + }, + "use_gpu": { + "type": "boolean", + "description": "Run on CPUs (default) or GPUs", + "fa_icon": "fas fa-microchip" + }, "email": { "type": "string", "description": "Email address for completion summary.", @@ -43,6 +60,78 @@ } } }, + "dbs_options": { + "title": "Databases options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "outdir"], + "properties": { + "colabfold_db": { + "type": "string", + "format": "path", + "exists": true, + "description": "Specifies the PARAMS and DB path used by 'colabfold' mode", + "fa_icon": "fas fa-folder-open", + "errorMessage": "Please provide a valid path to ColabFold database" + }, + "uniref30": { + "type": "string", + "description": "Link to the UniRef30 database", + "fa_icon": "fas fa-folder-open", + "default": "null/colabfold_uniref30/*" + }, + "colabfold_envdb": { + "type": "string", + "description": "Link to the ColabFold database", + "fa_icon": "fas fa-folder-open", + "default": "null/colabfold_envdb/*" + }, + "colabfold_alphafold2_params": { + "type": "string", + "description": "Link to the Alphafold2 parameters for Colabfold", + "fa_icon": "fas fa-folder-open" + }, + "colabfold_alphafold2_params_tags": { + "type": "object", + "description": "Dictionary with Alphafold2 parameters tags", + "fa_icon": "fas fa-stream" + }, + "boltz_db": { + "type": "string", + "description": "Path to boltz databases", + "icon": "fas folder-open" + }, + "boltz_ccd": { + "type": "string", + "description": "Path to CCD file", + "icon": "fas folder-open", + "default": "null/params/ccd.pkl" + }, + "boltz_model": { + "type": "string", + "description": "Path to boltz Model file", + "icon": "fas folder-open", + "default": "null/params/boltz1_conf.ckpt" + }, + "boltz2_aff": { + "type": "string", + "default": "null/params/boltz2_aff.ckpt", + "description": "Path to boltz affinity file" + }, + "boltz2_conf_path": { + "type": "string", + "default": "null/params/boltz2_conf.ckpt", + "description": "Path to boltz-2 conf file" + }, + "boltz2_mols_path": { + "type": "string", + "default": "null/params/mols/", + "description": "Path to boltz-2 mols" + } + } + }, + "institutional_config_options": { "title": "Institutional config options", "type": "object", diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf index e30b989..b32acc0 100644 --- a/subworkflows/local/msa.nf +++ b/subworkflows/local/msa.nf @@ -13,11 +13,12 @@ workflow MSA { ch_samplesheet ch_colabfold_db // channel: path(colabfold_db) ch_uniref30 // channel: path(uniref30) - mmseq_batch_size + batch_size main: ch_versions = Channel.empty() ch_a3m = Channel.empty() + ch_json = Channel.empty() ch_samplesheet .branch { @@ -33,7 +34,7 @@ workflow MSA { } .set{ch_yaml_seqs} - if (mmseq_batch_size > 1){ + if (batch_size > 1){ def batch_itr = 0 ch_input.fasta @@ -43,7 +44,7 @@ workflow MSA { .mix( ch_yaml_seqs.map{it[1]} ) - .buffer( size: mmseq_batch_size, remainder: true ) + .buffer( size: batch_size, remainder: true ) .collectFile { batch_itr += 1; [ "input_seqs_${batch_itr}.csv", "id,sequence\n" + it.join("\n") + '\n' ] @@ -64,7 +65,7 @@ workflow MSA { .map{[it[2], it[1]]} ).set{ch_input_seqs} } - ch_input_seqs.view() + //ch_input_seqs.view() MMSEQS_COLABFOLDSEARCH ( ch_input_seqs, @@ -85,12 +86,25 @@ workflow MSA { ) .map{[it[1], it[2]]} ) + ch_json = ch_json.mix( + ch_input.fasta.mix(ch_input.yaml) + .map{[it[1].baseName, it[0]]} + .combine( + MMSEQS_COLABFOLDSEARCH.out.json + .map{it[1]} + .flatten() + .map {[it.baseName, it]}, + by:0 + ) + .map{[it[1], it[2]]} + ) //MMSEQS_COLABFOLDSEARCH.out.a3m.view() //ch_a3m.view() emit: formated_input = ch_input.fasta.mix(ch_input.yaml) a3m = ch_a3m + json = ch_json versions = ch_versions } diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index 784c656..9a5b9c4 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -68,26 +68,7 @@ workflow PIPELINE_INITIALISATION { // ch_samplesheet = Channel.fromList(samplesheetToList(params.input, "assets/schema_input.json")) - if (params.split_fasta) { - // TODO: here we have to validate that the ids are unique and valid as an extra step - // since it is not done with the samplesheet schema (they are all in the same file) - ch_samplesheet.map { meta, fasta -> - validateFasta(fasta) - } - - // Split the fasta file into individual files for each sequence - ch_samplesheet - .map { meta,fasta -> fasta } - .splitFasta( record: [header: true, sequence: true] ) - .collectFile { item -> - [ "${cleanHeader(item["header"])}.fa", ">" + cleanHeader(item["header"]) + '\n' +item["sequence"] ] - } - .map { - file -> [[id: file.baseName], file] - } - .set { ch_samplesheet } - } - + emit: samplesheet = ch_samplesheet versions = ch_versions diff --git a/workflows/interactions.nf b/workflows/interactions.nf deleted file mode 100644 index 6542a68..0000000 --- a/workflows/interactions.nf +++ /dev/null @@ -1,138 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT LOCAL MODULES/SUBWORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// -// MODULE: Loaded from modules/local/ -// - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT NF-CORE MODULES/SUBWORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// -// MODULE: Installed directly from nf-core/modules -// -include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { CREATE_SAMPLESHEET_YAML } from '../modules/local/create_samplesheet' -include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' -include { PREPARE_INTERACTIONS } from '../modules/local/prepare_interactions' -include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' -// -// SUBWORKFLOW: Consisting entirely of nf-core/modules -// -include { paramsSummaryMap } from 'plugin/nf-schema' -include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_proteinfold_pipeline' - -// -// MODULE: Boltz -// -include { RUN_BOLTZ } from '../modules/local/run_boltz' - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RUN MAIN WORKFLOW -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -workflow INTERACTIONS { - - take: - ch_samplesheet_1 // channel: samplesheet read from --input - samplesheet_2 // channel: samplesheet read from --input - ch_versions // channel: [ path(versions.yml) ] - ch_boltz_ccd // channel: [ path(boltz_ccd) ] - ch_boltz_model // channel: [ path(model) ] - ch_colabfold_params // channel: [ path(colabfold_params) ] - ch_colabfold_db // channel: [ path(colabfold_db) ] - ch_uniref30 // channel: [ path(uniref30) ] - - main: - ch_multiqc_files = Channel.empty() - - Channel.fromPath(samplesheet_2) - .splitCsv(header: true) - .map{row -> [["id": row.id, "type": row.type ?: "protein"], file(row.fasta, checkIfExists: true)]} - .set{ch_samplesheet_2} - - ch_samplesheet_1.map{it[0]}.combine(ch_samplesheet_2.map{it[0]}).map{["id": [it[0]["id"], it[1]["id"]].min() + "-" + [it[0]["id"], it[1]["id"]].max()]}.unique().set{ch_unique_pairs} - - - MMSEQS_COLABFOLDSEARCH ( - ch_samplesheet_1.map{it[0].type = "protein"; it}.mix(ch_samplesheet_2).unique().filter{it[0].type == "protein"}, - ch_colabfold_params, - ch_colabfold_db, - ch_uniref30 - ) - ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) - - ch_left_list = ch_samplesheet_1.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) - ch_right_list = ch_samplesheet_2.join(MMSEQS_COLABFOLDSEARCH.out.a3m, remainder: true) - - //ch_samplesheet_1.view() - //ch_samplesheet_2.view() - //MMSEQS_COLABFOLDSEARCH.out.a3m.view() - - //ch_left_list.combine(ch_right_list).view() - - ch_left_list - .combine(ch_right_list) - .map{[ - ["id": [it[0]["id"], it[3]["id"]].min() + "-" + [it[0]["id"], it[3]["id"]].max()], - [it[1].name, it[4].name], - [it[2] ? it[2].name : "", it[5] ? it[5].name : ""], - [it[0]["type"], it[3]["type"]], - [it[1], it[2], it[4], it[5]].findAll{it}.unique{it.toUriString()}, - - ]}.set{ch_pairs} - - ch_pairs - .join(ch_unique_pairs) - .set{ch_interaction_input} - - PREPARE_INTERACTIONS( - ch_interaction_input.map{[it[0], it[1]]}, - ch_interaction_input.map{[it[0], it[2]]}, - ch_interaction_input.map{[it[0], it[3]]}, - ch_interaction_input.map{it[4]} - ) - - PREPARE_INTERACTIONS.out.fasta - .join(ch_interaction_input) - .set{ch_boltz_input} - - RUN_BOLTZ( - ch_boltz_input.map{[it[0], it[1]]}, - ch_boltz_input.map{it[5].findAll { it.name.endsWith(".a3m") }}, - ch_boltz_model, - ch_boltz_ccd - ) - RUN_BOLTZ.out.confidence.toSortedList().multiMap{json_list -> - ids: json_list.collect{it[0].id} - json: json_list.collect{it[1]} - }.set{ch_confidence_scores} - - COLLECT_CONFIDENCE( - ch_confidence_scores.ids.map{[["id": "full_run"], it]}, - ch_confidence_scores.json - ) - - //ch_confidence_scores.ids.view() - //ch_confidence_scores.json.view() - - emit: - versions = ch_versions - msa = RUN_BOLTZ.out.msa - structures = RUN_BOLTZ.out.structures - confidence = RUN_BOLTZ.out.confidence - run_confidence = COLLECT_CONFIDENCE.out.confidence - plddt = RUN_BOLTZ.out.plddt - pdb = RUN_BOLTZ.out.pdb - -} diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 23364ca..d927483 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -29,9 +29,15 @@ include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pi include { MSA } from '../subworkflows/local/msa' // -// MODULE: Boltz +// LOCAL MODULE: Boltz // include { RUN_BOLTZ } from '../modules/local/run_boltz' +include { RUN_ALPHAFOLD3 } from '../modules/local/run_alphafold3' +include { COLABFOLD_BATCH } from '../modules/local/colabfold_batch' +include { BOLTZ_FASTA } from '../modules/local/data_convertor/boltz_fasta' +include { SPLIT_MSA } from '../modules/local/msa_manager/split_msa' +include { IPSAE } from '../modules/local/ipsae' + // // FUNCTIONS @@ -55,12 +61,26 @@ workflow WISPS { ch_boltz_ccd // channel: [ path(boltz_ccd) ] ch_boltz_model // channel: [ path(model) ] ch_colabfold_db // channel: [ path(colabfold_db) ] + ch_boltz2_aff // channel: [ path(boltz2_aff) ] + ch_boltz2_conf // channel: [ path(boltz2_conf) ] + ch_mols // channel: [ path(mols) ] ch_uniref30 // channel: [ path(uniref30) ] - mmseq_batch_size // number + mmseqs_batch_size // number + colabfold_model_preset + ch_colabfold_params + num_recycles + ch_alphafold3_params // channel: path(alphafold2_params) + ch_small_bfd // channel: path(small_bfd) + ch_mgnify // channel: path(mgnify) + ch_mmcif_files // channel: path(mmcif_files) + ch_uniref90 // channel: path(uniref90) + ch_pdb_seqres // channel: path(pdb_seqres) + ch_uniprot // channel: path(uniprot) + tools main: ch_multiqc_files = Channel.empty() - + ch_confidence_scores = Channel.empty() interaction_mode = mode.split(",").collect { pair -> pair.split('-').sort().join('-') } @@ -92,90 +112,242 @@ workflow WISPS { .unique() .set{ch_unique_pairs} - ch_samplesheet - .branch { - fasta: it[1].extension == "fasta" || it[1].extension == "fa" - it[0].cnt = getFastaSequences(it[1].text).size() - return it - yaml: it[1].extension == "yaml" || it[1].extension == ".yml" - it[0].cnt = getYamlSequences(it[1].text).size() - return it - json: it[1].extension == "json" + /*ch_samplesheet + .map { + if (it[1].extension == "fasta" || it[1].extension == "fa") + {it[0].cnt = getFastaSequences(it[1].text).size()} + else if (it[1].extension == "yaml" || it[1].extension == ".yml") + {it[0].cnt = getYamlSequences(it[1].text).size()} + else if (it[1].extension == "json") + {it[0].cnt = 0} } - .set{ch_input} + .set{ch_input_seqs} + */ + + ch_samplesheet + .combine(ch_samplesheet) + .map{[ + [ + "id": [it[0]["id"], it[2]["id"]].min() + "-" + [it[0]["id"], it[2]["id"]].max(), + "group": [it[0]["group"], it[2]["group"]].min() + "-" + [it[0]["group"], it[2]["group"]].max(), + ], + [it[0], it[2]], + [it[1], it[3]], + ]}.set{ch_pairs} + ch_pairs + .join(ch_unique_pairs) + .set{ch_interaction_in} + //ch_interaction_in.view() + + ch_interaction_in + .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} + .collectFile{ + seqs = [] + for (j in [0, 1]){ + if (it[2][j].extension == "fasta" || it[2][j].extension == "fa") + {seqs.add(getFastaSequences(it[2][j].text))} + else if (it[2][j].extension == "yaml" || it[2][j].extension == ".yml") + {seqs.add(getYamlSequences(it[2][j].text))} + else if (it[2][j].extension == "json") + {seqs.add("")} + } + [ "${it[0].id}.fasta", ">${it[0].id}\n${seqs.collect{it.sequence.join(":")}.join(":")}\n" ] + } + .map{[["id": it.baseName], it]} + .set {ch_protein_pairs} + //ch_protein_pairs.view() MSA ( - ch_input.fasta - .mix(ch_input.json) - .mix(ch_input.yaml) - .filter{it[0].type == "protein"}, + ch_protein_pairs + .mix( + ch_interaction_in + .map{ + if (it[1][0].type != "protein" && it[1][1].type == "protein"){ + [it[1][1], it[2][1]] + }else if (it[1][1].type != "protein" && it[1][0].type == "protein"){ + [it[1][0], it[2][0]] + } + }.unique() + ), ch_colabfold_db, ch_uniref30, - mmseq_batch_size + mmseqs_batch_size ) ch_versions = ch_versions.mix(MSA.out.versions) - ch_input.fasta - .mix(ch_input.json) - .mix(ch_input.yaml) - .map{[it[0].id, it]} - .join( - MSA.out.a3m.map{[it[0].id, it]} - , remainder: true - ) - .map{[it[2][0], it[1][1], it[2][1]]} - .set{ch_input_aligned} - - ch_input_aligned - .combine(ch_input_aligned) - .map{[ - [ - "id": [it[0]["id"], it[3]["id"]].min() + "-" + [it[0]["id"], it[3]["id"]].max(), - "group": [it[0]["group"], it[3]["group"]].min() + "-" + [it[0]["group"], it[3]["group"]].max(), - ], - [it[1].name, it[4].name], - [it[2] ? it[2].name : "", it[5] ? it[5].name : ""], - [it[0]["type"], it[3]["type"]], - [it[1], it[2], it[4], it[5]].findAll{it}.unique{it.toUriString()}, - - ]}.set{ch_pairs} + //MSA.out.json.view() + //ch_interaction_in.view() - //ch_pairs.view() + // Prepare interactions for boltz + ch_boltz_data = Channel.empty() + ch_split_msa_in = Channel.empty() + ch_boltz_interactions_in = Channel.empty() + + if ("boltz" in tools.split(",")){ + ch_split_msa_in = MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + ch_boltz_interactions_in = ch_interaction_in + } + + ch_boltz_data = ch_boltz_data.mix(ch_boltz_interactions_in + .filter{it[1][0].type != "protein" && it[1][1].type != "protein"} + .map{[it, ["", ""]]} + ) + + ch_boltz_data = ch_boltz_data.mix( + ch_boltz_interactions_in + .filter{[it[1][0].type, it[1][1].type].count("protein") == 1} + .map{ + if (it[1][0].type == "protein"){ + [it[1][0], it] + }else if (it[1][1].type == "protein"){ + [it[1][1], it] + } + } + .combine(MSA.out.a3m.filter{it[0].type == "protein"}) + .filter{it[0] == it[2]} + .map{ + if (it[1][1][0].type == "protein") + [it[1], [it[3], ""]] + else + [it[1], ["", it[3]]] + } + ) + + SPLIT_MSA( + ch_split_msa_in.join(ch_protein_pairs.map{it[0]}) + ) + + ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) - ch_pairs - .join(ch_unique_pairs) - .set{ch_interaction_input} + ch_boltz_data = ch_boltz_data.mix(ch_boltz_interactions_in + .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} + .map{[["id": it[0].id], it]} + .join( + SPLIT_MSA.out.msa_csv + .map{ + if (it[1] instanceof List){ + if (it[1].size() != 2){ + log.warn "Something wrong with the data expected 2 csv!" + } + }else{ + it[1] = [it[1], it[1]] + } + it + } + + ) + .map{[it[1], it[2]]} + ) - //ch_interaction_input.view() - PREPARE_INTERACTIONS( - ch_interaction_input.map{[it[0], it[1]]}, - ch_interaction_input.map{[it[0], it[2]]}, - ch_interaction_input.map{[it[0], it[3]]}, - ch_interaction_input.map{it[4]} + ch_boltz_data.map{[it[0][0], it[0][2].collect{it.name}]}, + ch_boltz_data.map{[it[0][0], it[1].collect{it ? it.name: ""}]}, + ch_boltz_data.map{[it[0][0], [it[0][1][0].type, it[0][1][1].type]]}, + ch_boltz_data.map{[it[0][2][0], it[0][2][1], it[1][0], it[1][1]].findAll{it}.unique{it.toUriString()}} + ) + //PREPARE_INTERACTIONS.out.fasta.view() + + PREPARE_INTERACTIONS.out.fasta.join( + ch_boltz_data.map{[it[0][0], [it[1][0], it[1][1]].findAll{it}.unique{it.toUriString()}]} ) + .map{ + meta = it[0].clone() + meta.model = "boltz" + [meta, it[1], it[2]] + } + .set{ch_boltz_in} + + //ch_boltz_in.view() - PREPARE_INTERACTIONS.out.fasta - .join(ch_interaction_input) - .set{ch_boltz_input} RUN_BOLTZ( - ch_boltz_input.map{[it[0], it[1]]}, - ch_boltz_input.map{it[5].findAll { it.name.endsWith(".a3m") }}, + ch_boltz_in.map{[it[0], it[1]]}, + ch_boltz_in.map{it[2]}, ch_boltz_model, - ch_boltz_ccd + ch_boltz_ccd, + ch_boltz2_aff, + ch_boltz2_conf, + ch_mols ) - RUN_BOLTZ.out.confidence.toSortedList().multiMap{json_list -> + + RUN_BOLTZ.out.confidence.collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_confidence_scores} + + //prepare interactions for colabfold + ch_colabfold_interaction_in = Channel.empty() + if ("colabfold" in tools.split(",")){ + MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + .map{ + meta = it[0].clone() + meta.model = "colabfold" + [meta, it[1]] + } + .set{ + ch_colabfold_interaction_in + } + } + //ch_colabfold_interaction_in.view() + + COLABFOLD_BATCH( + ch_colabfold_interaction_in, + colabfold_model_preset, + ch_colabfold_params, + [], + [], + num_recycles + ) + ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) + + ch_alphafold3_interaction_in = Channel.empty() + if ("ZZalphafold3" in tools.split(",")){ + MSA.out.json.join(ch_protein_pairs.map{it[0]}) + .map{ + meta = it[0].clone() + meta.model = "alphafold3" + [meta, it[1]]} + .set{ + ch_alphafold3_interaction_in + } + } + + + RUN_ALPHAFOLD3 ( + ch_alphafold3_interaction_in, + ch_alphafold3_params, + ch_small_bfd, + ch_mgnify, + ch_mmcif_files, + ch_uniref90, + ch_pdb_seqres, + ch_uniprot + ) + + IPSAE( + COLABFOLD_BATCH.out.top_ranked_scores.join( + COLABFOLD_BATCH.out.top_ranked_pdb + ).map{[["id": it[0].id], it]} + .join(ch_protein_pairs.map{it[0]}) + .mix( + RUN_BOLTZ.out.pae.join(RUN_BOLTZ.out.cif) + .map{[["id": it[0].id], it]} + .join(ch_protein_pairs.map{it[0]}) + ) + .mix( + RUN_ALPHAFOLD3.out.pae.join(RUN_ALPHAFOLD3.out.top_ranked_cif) + .map{[["id": it[0].id], it]} + .join(ch_protein_pairs.map{it[0]}) + ) + .map{it[1]} + ) + COLLECT_CONFIDENCE( ch_confidence_scores.ids.map{[["id": "full_run"], it]}, ch_confidence_scores.json ) - //ch_confidence_scores.ids.view() //ch_confidence_scores.json.view() @@ -187,5 +359,4 @@ workflow WISPS { run_confidence = COLLECT_CONFIDENCE.out.confidence plddt = RUN_BOLTZ.out.plddt pdb = RUN_BOLTZ.out.pdb - } From 2bea094eb8105daf40fc457698e1e67348023a8b Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Thu, 2 Oct 2025 17:20:26 +1000 Subject: [PATCH 04/70] fixing ipsae input --- modules/local/ipsae/main.nf | 2 + workflows/wisps.nf | 78 ++++++++++++++++++++++--------------- 2 files changed, 48 insertions(+), 32 deletions(-) diff --git a/modules/local/ipsae/main.nf b/modules/local/ipsae/main.nf index 72f3eeb..ed4551c 100644 --- a/modules/local/ipsae/main.nf +++ b/modules/local/ipsae/main.nf @@ -9,6 +9,8 @@ process IPSAE { input: tuple val(meta), path(pae), path(pdb) + path (extra_files) + output: tuple val(meta), path ("*.pml"), emit: pml tuple val(meta), path ("*_byres.txt"), emit: byres diff --git a/workflows/wisps.nf b/workflows/wisps.nf index d927483..48e9b5a 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -157,18 +157,21 @@ workflow WISPS { } .map{[["id": it.baseName], it]} .set {ch_protein_pairs} + + ch_interaction_in + .map{ + if (it[1][0].type != "protein" && it[1][1].type == "protein"){ + [it[1][1], it[2][1]] + }else if (it[1][1].type != "protein" && it[1][0].type == "protein"){ + [it[1][0], it[2][0]] + } + }.unique() + .set{ch_single_protein} //ch_protein_pairs.view() MSA ( ch_protein_pairs .mix( - ch_interaction_in - .map{ - if (it[1][0].type != "protein" && it[1][1].type == "protein"){ - [it[1][1], it[2][1]] - }else if (it[1][1].type != "protein" && it[1][0].type == "protein"){ - [it[1][0], it[2][0]] - } - }.unique() + ch_single_protein ), ch_colabfold_db, ch_uniref30, @@ -252,15 +255,14 @@ workflow WISPS { ch_boltz_data.map{[it[0][0], [it[1][0], it[1][1]].findAll{it}.unique{it.toUriString()}]} ) .map{ - meta = it[0].clone() - meta.model = "boltz" - [meta, it[1], it[2]] + meta = it[0].clone() + meta.model = "boltz" + [meta, it[1], it[2]] } .set{ch_boltz_in} //ch_boltz_in.view() - - + RUN_BOLTZ( ch_boltz_in.map{[it[0], it[1]]}, ch_boltz_in.map{it[2]}, @@ -302,7 +304,7 @@ workflow WISPS { ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) ch_alphafold3_interaction_in = Channel.empty() - if ("ZZalphafold3" in tools.split(",")){ + if ("alphafold3" in tools.split(",")){ MSA.out.json.join(ch_protein_pairs.map{it[0]}) .map{ meta = it[0].clone() @@ -313,7 +315,6 @@ workflow WISPS { } } - RUN_ALPHAFOLD3 ( ch_alphafold3_interaction_in, ch_alphafold3_params, @@ -325,22 +326,37 @@ workflow WISPS { ch_uniprot ) - IPSAE( - COLABFOLD_BATCH.out.top_ranked_scores.join( - COLABFOLD_BATCH.out.top_ranked_pdb - ).map{[["id": it[0].id], it]} - .join(ch_protein_pairs.map{it[0]}) - .mix( - RUN_BOLTZ.out.pae.join(RUN_BOLTZ.out.cif) - .map{[["id": it[0].id], it]} - .join(ch_protein_pairs.map{it[0]}) + + COLABFOLD_BATCH.out.top_ranked_scores + .join(COLABFOLD_BATCH.out.top_ranked_pdb) + .map{[["id": it[0].id], it, []]} + .join(ch_interaction_in + .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} + .map{["id": it[0].id]} + ) + .mix( + RUN_BOLTZ.out.pae + .join(RUN_BOLTZ.out.cif) + .join(RUN_BOLTZ.out.confidence) + .map{[["id": it[0].id], [it[0], it[1], it[2]], it[3]]} + .join(ch_interaction_in + .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} + .map{["id": it[0].id]} ) - .mix( - RUN_ALPHAFOLD3.out.pae.join(RUN_ALPHAFOLD3.out.top_ranked_cif) - .map{[["id": it[0].id], it]} - .join(ch_protein_pairs.map{it[0]}) + ) + .mix( + RUN_ALPHAFOLD3.out.pae.join(RUN_ALPHAFOLD3.out.top_ranked_cif) + .map{[["id": it[0].id], it, []]} + .join(ch_interaction_in + .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} + .map{["id": it[0].id]} ) - .map{it[1]} + ) + .set{ch_ipsae_in} + + IPSAE( + ch_ipsae_in.map{it[1]}, + ch_ipsae_in.map{it[2]} ) @@ -348,9 +364,7 @@ workflow WISPS { ch_confidence_scores.ids.map{[["id": "full_run"], it]}, ch_confidence_scores.json ) - //ch_confidence_scores.ids.view() - //ch_confidence_scores.json.view() - + emit: versions = ch_versions msa = RUN_BOLTZ.out.msa From 2c9b86c1026a35e4dbfd84ac2c5ebfcb9c4d1465 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Thu, 2 Oct 2025 23:42:36 +1000 Subject: [PATCH 05/70] add multiqc --- bin/extract_metrics.py | 218 +----------------------- main.nf | 29 ++-- modules/local/collect_confidence.nf | 100 ++++++++--- modules/local/run_alphafold3/Dockerfile | 97 ++++++----- modules/local/run_alphafold3/main.nf | 30 +--- workflows/wisps.nf | 96 ++++++++--- 6 files changed, 222 insertions(+), 348 deletions(-) diff --git a/bin/extract_metrics.py b/bin/extract_metrics.py index c8db726..f952b21 100755 --- a/bin/extract_metrics.py +++ b/bin/extract_metrics.py @@ -243,220 +243,4 @@ def read_csv(name, csv_files): unpaired_msa_rows[csv_file.split('_')[-1].split('.csv')[0]] = [[str(AA_to_int.get(residue, 20)) for residue in line] for line in unpaired_msa_lines] # Get Chain to MSA mapping (ie non-redundant for homomers) - # TODO: Make this explicit input - with open(f'boltz_results_{name}/processed/manifest.json') as f: - manifest = json.load(f) - - final_rows = [] - # Paired - for i in range(len(msa_rows["0"])): #The number of paired lines is common to all MSAs - temp_row = [] - #This needs to be fixed if inference is batched in future. - for chain in manifest["records"][0]["chains"]: - j = chain["msa_id"].split("_")[-1] - temp_row.extend(msa_rows[j][i]) - final_rows.append(temp_row) - - # Un-paired - msa_widths = [len(msa_rows[chain["msa_id"].split("_")[-1]][0]) for chain in manifest["records"][0]["chains"]] - msa_heights = [len(unpaired_msa_rows[chain["msa_id"].split("_")[-1]]) for chain in manifest["records"][0]["chains"]] - - cum_total_rows = np.cumsum(msa_heights) - - for row_idx in range(cum_total_rows[-1]): - temp_row = [] - - for i, chain in enumerate(manifest["records"][0]["chains"]): - msa = unpaired_msa_rows[chain["msa_id"].split("_")[-1]] - width = msa_widths[i] - if i == 0: - minrow = 0 - else: - minrow = cum_total_rows[i-1] - maxrow = cum_total_rows[i] - - if minrow <= row_idx < maxrow: - msa_row_idx = row_idx - minrow - temp_row.extend(msa[msa_row_idx]) - else: - temp_row.extend(["21"] * width) #gap - final_rows.append(temp_row) - - write_tsv(f"{name}_msa.tsv", final_rows) - -def read_json(name, json_files): - ptm_data = {} - iptm_data = {} - chain_pair_iptm_data = {} # For iPTM data to be converted into formatted pairs with non-self elements - chain_pair_entries = {} - chainwise_ptms = {} - chain_ids = [] - - for idx, json_file in enumerate(json_files): - with open(json_file, 'r') as f: - data = json.load(f) - if json_file.endswith("_data.json"): #AF3 output with MSA info - # Can't just used format_msa_rows since there's FASTA headers in the json content - paired_msa_rows = [] - unpaired_msa_rows = [] - for chain in data['sequences']: - unpaired_MSA = chain['protein']['unpairedMsa'] - unpaired_msa_lines = [''.join(c for c in line if not c.islower()) for line in unpaired_MSA.split("\n") if line.strip() and not line.startswith(">")] - unpaired_msa_rows.append([[str(AA_to_int.get(residue, 20)) for residue in line] for line in unpaired_msa_lines]) - paired_MSA = chain['protein']['pairedMsa'] - paired_msa_lines = [''.join(c for c in line if not c.islower()) for line in paired_MSA.split("\n") if line.strip() and not line.startswith(">")] - paired_msa_rows.append([[str(AA_to_int.get(residue, 20)) for residue in line] for line in paired_msa_lines]) - - chains = len(data['sequences']) - final_rows = [] - # Paired - for i in range(len(paired_msa_rows[0])): #The number of paired lines is common to all MSAs - temp_row = [] - #This needs to be fixed if inference is batched in future. - for j in range(chains): - temp_row.extend(paired_msa_rows[j][i]) - final_rows.append(temp_row) - - # Un-paired - msa_widths = [len(paired_msa_rows[chain][0]) for chain in range(chains)] - msa_heights = [len(unpaired_msa_rows[chain]) for chain in range(chains)] - - cum_total_rows = np.cumsum(msa_heights) - - for row_idx in range(cum_total_rows[-1]): - temp_row = [] - - for i in range(chains): - msa = unpaired_msa_rows[i] - width = msa_widths[i] - if i == 0: - minrow = 0 - else: - minrow = cum_total_rows[i-1] - maxrow = cum_total_rows[i] - if minrow <= row_idx < maxrow: - msa_row_idx = row_idx - minrow - temp_row.extend(msa[msa_row_idx]) - else: - temp_row.extend(["21"] * width) #gap - final_rows.append(temp_row) - write_tsv(f"{name}_msa.tsv", final_rows) - #AF3 output with PAE info, or HF3 PAE data. TODO: Need to make sure the workflow points to [protein]/[protein]_rank1/all_results.json - - # TODO: I think I need to capture model_id and inference_id -- MUST FIX since this is so fragile and will be different for different programs. - #if '_alphafold2_ptm_model_' in json_file: # ColabFold, multimer or monomer - ## Might want to cut more if I just want ${meta.id}_[metric].tsv - # model_id = os.path.basename(json_file) - # print(model_id) - if 'all_results' in json_file: # Individual predictions in HF3 - model_id = int(os.path.dirname(json_file).split('-rank')[-1]) #Use re-ranked output - if 'predictions' in json_file: # Boltz-1 confidences in predictions/[protein]/confidence_[protein]_model_*.json - # TODO: haven't tested this for multiple models with --diffusion_samples - model_id = os.path.basename(json_file).split('_model_')[-1].split('.json')[0] - #TODO: Fix this for AF3 - the top-ranked files are in the top-level directory - if 'confidences' in json_file: #Prevent crash when model_id is not defined - #model_id = os.path.basename(json_file).split('confidences_')[-1].split('.json')[0] - model_id = 0 - - if "pae" not in data.keys(): - print(f"No PAE output in {json_file}, it was likely a monomer calculation") - else: - write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["pae"])) - - if 'ptm' not in data.keys(): - print(f"No pTM/iPTM output in {json_file}, it was likely a monomer calculation") - #This message should change - currently called on boltz files not expected to contain ptm - else: - ptm_data[model_id] = f"{np.round(data['ptm'],3)}\n" - - if 'iptm' not in data.keys(): - print(f"No pTM/iPTM output in {json_file}, it was likely a monomer calculation") - else: - if data['iptm']: #ie not null - iptm_data[model_id] = f"{np.round(data['iptm'],3)}\n" - - if 'chain_pair_iptm' not in data.keys() and 'pair_chains_iptm' not in data.keys(): - print(f"No chain-wise iPTM output in {json_file}, it was likely a monomer calculation") - else: - if 'chain_pair_iptm' in data.keys(): - chain_pair_iptm_data = data['chain_pair_iptm'] - chain_iptm_matrix = np.array(chain_pair_iptm_data) - elif 'pair_chains_iptm' in data.keys(): #Boltz key - chain_pair_iptm_data = data['pair_chains_iptm'] - # casting to int works for sorting boltz - need to carefully check other modes - chain_iptm_matrix = np.array([[chain_pair_iptm_data[row][col] for col in sorted(chain_pair_iptm_data[row], key=int)] for row in sorted(chain_pair_iptm_data, key=int)]) - basename = os.path.basename(json_file) - dirname = os.path.dirname(json_file) - pdb_name = ".".join(basename[11:].split('.')[:-1])+'.pdb' #TODO: Fix magic number - chain_ids = get_chain_ids(os.path.join(dirname,pdb_name)) - else: - raise ValueError("No chain-wise iPTM data found in the JSON file.") - - chain_pair_entries[model_id] = chain_iptm_matrix_to_pairs(chain_iptm_matrix) - chainwise_ptms[model_id] = chainwise_iptm_matrix_to_ptms(chain_iptm_matrix) - - if chainwise_ptms: - write_tsv(f"{name}_chainwise_ptm.tsv", format_iptm_rows(chainwise_ptms, chain_ids=chain_ids)) - - if chain_pair_entries: - write_tsv(f"{name}_chainwise_iptm.tsv", format_iptm_rows(chain_pair_entries, chain_ids=chain_ids)) - - if ptm_data: - ptm_rows = [[k, v.strip()] for k, v in sorted(ptm_data.items(), key=lambda x: x[0])] - write_tsv(f"{name}_ptm.tsv", ptm_rows) - - if iptm_data: - iptm_rows = [[k, v.strip()] for k, v in sorted(iptm_data.items(), key=lambda x: x[0])] - write_tsv(f"{name}_iptm.tsv", iptm_rows) - - -def read_pt(name, pt_files): - import torch # moved to a conditional import since too bulky import if not used - #TODO: Handle this better when refactored - Is this just RFAA?? - for pt_file in pt_files: - with open(pt_file, 'rb') as f: # TODO: point to [protein]_aux.pt - data = torch.load(f, map_location="cpu") - if 'pae' in data: - # The pt file contains a tensor that needs to be cast as an array - # Squeeze leading dimension (batch?) - write_tsv(f"{name}_0_pae.tsv", format_pae_rows(np.squeeze(data["pae"].numpy()))) - break - -def read_colabfold_paes(name, colabfold_pae_fn): - with open(colabfold_pae_fn) as f: - data = json.load(f) - pae = data["predicted_aligned_error"] - write_tsv(f"{name}_0_pae.tsv", format_pae_rows(pae)) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("--pkls", dest="pkls", required=False, nargs="+") # For reading both HelixFold3 and AlphaFold2 MSA formats - parser.add_argument("--npzs", dest="npzs", required=False, nargs="+") # For reading the Boltz-1 PAE formats. TODO: Boltz-1 MSA not implemented (go straight to .a3m file), implement - parser.add_argument("--a3ms", dest="a3ms", required=False, nargs="+") # For reading the RosettaFold-All-Atom, ColabFold MSA formats - parser.add_argument("--csvs", dest="csvs", required=False, nargs="+") # For reading boltz csvs - parser.add_argument("--jsons", dest="jsons", required=False, nargs="+") # For reading the AF3 MSA & PAE, HF3 PAE - parser.add_argument("--colabfold_pae_fn", required=False) - parser.add_argument("--pts", dest="pts", required=False, nargs="+") # For read RFAA pytorch model to get PAE data - parser.add_argument("--structs", dest="structs", required=False, nargs="+") - parser.add_argument("--name", default="untitled", dest="name") # might need a --name $meta.id - args = parser.parse_args() - - if args.pkls: - read_pkl(args.name, args.pkls) - if args.a3ms: - read_a3m(args.name, args.a3ms) - if args.csvs: - read_csv(args.name, args.csvs) - if args.npzs: - read_npz(args.name, args.npzs) - if args.jsons: - read_json(args.name, args.jsons) - if args.pts: - read_pt(args.name, args.pts) - if args.structs: - extract_structs_plddt_to_tsv(args.name, args.structs) - if args.colabfold_pae_fn: - read_colabfold_paes(args.name, args.colabfold_pae_fn) - -if __name__ == "__main__": - main() + # TODO: Make this explicit inpu... \ No newline at end of file diff --git a/main.nf b/main.nf index c4301d2..291b09f 100644 --- a/main.nf +++ b/main.nf @@ -8,15 +8,12 @@ Slack : https://nfcore.slack.com/channels/wisps ---------------------------------------------------------------------------------------- */ - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - include { WISPS } from './workflows/wisps' - include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_wisps_pipeline' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_wisps_pipeline' /* @@ -24,24 +21,24 @@ include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_wisp NAMED WORKFLOWS FOR PIPELINE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - // // WORKFLOW: Run main analysis pipeline depending on type of input // workflow NFCORE_WISPS { - take: samplesheet // channel: samplesheet read in from --input - main: ch_samplesheet = samplesheet ch_multiqc = Channel.empty() ch_versions = Channel.empty() multiqc_report = Channel.empty() + ch_multiqc_config = Channel.fromPath("$projectDir/assets/multiqc_config.yml", checkIfExists: true).first() + ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath( params.multiqc_config ).first() : Channel.empty() + ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath( params.multiqc_logo ).first() : Channel.empty() + ch_multiqc_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) // // WORKFLOW: Run pipeline // - WISPS ( ch_samplesheet, @@ -59,14 +56,12 @@ workflow NFCORE_WISPS { Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first(), params.colabfold_num_recycles, Channel.fromPath(params.alphafold3_params, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_small_bfd, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_mgnify, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_pdb_mmcif, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_uniref90, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_pdb_seqres, checkIfExists: true).first(), - Channel.fromPath(params.alphafold3_uniprot, checkIfExists: true).first(), - params.tools - + params.tools, + ch_multiqc_config, + ch_multiqc_custom_config, + ch_multiqc_logo, + ch_multiqc_methods_description, + params.outdir ) ch_versions = ch_versions.mix(WISPS.out.versions) @@ -78,9 +73,7 @@ workflow NFCORE_WISPS { RUN MAIN WORKFLOW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ - workflow { - main: // // SUBWORKFLOW: Run initialisation tasks @@ -93,7 +86,6 @@ workflow { params.outdir, params.input ) - // // WORKFLOW: Run main workflow // @@ -113,7 +105,6 @@ workflow { NFCORE_WISPS.out.multiqc_report ) } - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 77881ac..95223c1 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -11,7 +11,7 @@ process COLLECT_CONFIDENCE { tuple val(meta), val(samples) path(json_files) output: - tuple val(meta), path ("confidence_scores_full.csv"), emit: confidence + tuple val(meta), path ("*confidence_scores_full.csv"), emit: confidence path "versions.yml" , emit: versions when: @@ -28,41 +28,87 @@ process COLLECT_CONFIDENCE { import csv # Folder containing the JSON files - output_csv = "confidence_scores_full.csv" + output_csv = "${meta.model}_confidence_scores_full.csv" # Collect all JSON files json_files = ["${json_files.join('", "')}"] samples = ["${samples.join('", "')}"] - # Store all rows here - rows = [] - all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] - writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] - # First pass: read and collect keys - cntr = 0 - for file in json_files: - with open(file) as f: - data = json.load(f) - flat_data = {"id" : samples[cntr]} - cntr += 1 - for key, value in data.items(): - if key not in all_keys: + def extract_boltz_results(json_files, samples, output_csv): + rows = [] + all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] + writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + # First pass: read and collect keys + cntr = 0 + for file in json_files: + with open(file) as f: + data = json.load(f) + flat_data = {"id": samples[cntr]} + cntr += 1 + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict): + for sub_key, sub_value in value.items(): + flat_data[f"{key}_{sub_key}"] = sub_value + writing_keys.append(f"{key}_{sub_key}") + else: + flat_data[key] = value + rows.append(flat_data) + + # Write to CSV + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=writing_keys) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in writing_keys}) + + def extract_colabfold_results(json_files, samples, output_csv): + def parse_colabfold_metrics(json_file): + with open(json_file, "r") as f: + data = json.load(f) + + result = {} + for key in ["iptm", "max_pae", "pae", "ptm", "plddt"]: + if key not in data: + result[key] = None continue - if isinstance(value, dict): - for sub_key, sub_value in value.items(): - flat_data[f"{key}_{sub_key}"] = sub_value - writing_keys.append(f"{key}_{sub_key}") + + if key == "plddt" and isinstance(data[key], list): + # Compute mean for list + result[key] = statistics.mean(data[key]) if data[key] else None else: - flat_data[key] = value + # Take value directly + result[key] = data[key] + + return result + + rows = [] + all_keys = ["id", "plddt", "ptm", "iptm", "max_pae"] + writing_keys = all_keys + cntr = 0 + for file in json_files: + flat_data = parse_colabfold_metrics(file) + flat_data["id"] = samples[cntr] + cntr += 1 rows.append(flat_data) - - # Write to CSV - with open(output_csv, "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=writing_keys) - writer.writeheader() - for row in rows: - writer.writerow({key: row.get(key, "") for key in writing_keys}) + # Write to CSV + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=writing_keys) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in writing_keys}) + + + + if "${meta.model}".lower() == "boltz": + extract_boltz_results(json_files, samples, output_csv) + elif "${meta.model}".lower() == "colabfold": + extract_colabfold_results(json_files, samples, output_csv) + elif "${meta.model}".lower() == "alphafold3": + extract_alphafold3_results(json_files, samples, output_csv) + print(f"CSV file created at: {output_csv}") with open ("versions.yml", "w") as version_file: diff --git a/modules/local/run_alphafold3/Dockerfile b/modules/local/run_alphafold3/Dockerfile index 1a541f2..2f6526e 100644 --- a/modules/local/run_alphafold3/Dockerfile +++ b/modules/local/run_alphafold3/Dockerfile @@ -1,59 +1,70 @@ -FROM nvidia/cuda:12.6.0-base-ubuntu22.04 - -LABEL authors="Jose Espinosa-Carrasco" \ - title="nfcore/proteinfold_alphafold3" \ - Version="1.2.0dev" \ - description="Docker image containing all software requirements to run Alphafold3 using the nf-core/proteinfold pipeline" - +# Copyright 2024 DeepMind Technologies Limited +# +# AlphaFold 3 source code is licensed under CC BY-NC-SA 4.0. To view a copy of +# this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/ +# +# To request access to the AlphaFold 3 model parameters, follow the process set +# out at https://github.com/google-deepmind/alphafold3. You may only use these +# if received directly from Google. Use is subject to terms of use available at +# https://github.com/google-deepmind/alphafold3/blob/main/WEIGHTS_TERMS_OF_USE.md +FROM nvidia/cuda:12.6.3-base-ubuntu24.04 # Some RUN statements are combined together to make Docker build run faster. -# Get latest package listing, install software-properties-common, git and wget. -# git is required for pyproject.toml toolchain's use of CMakeLists.txt. -RUN apt update --quiet \ - && apt install --yes --quiet software-properties-common \ - && apt install --yes --quiet git wget jq \ - && rm -rf /var/lib/apt/lists/* - -# Get apt repository of specific Python versions. Then install Python. Tell APT -# this isn't an interactive TTY to avoid timezone prompt when installing. -RUN add-apt-repository ppa:deadsnakes/ppa \ - && DEBIAN_FRONTEND=noninteractive apt install --yes --quiet python3.11 python3-pip python3.11-venv python3.11-dev -RUN python3.11 -m venv /alphafold3_venv +# Get latest package listing, install python, git, wget, compilers and libs. +# * git is required for pyproject.toml toolchain's use of CMakeLists.txt. +# * gcc, g++, make are required for compiling HMMER and AlphaFold 3 libaries. +# * zlib is a required dependency of AlphaFold 3. +RUN DEBIAN_FRONTEND=noninteractive \ + apt-get update --quiet \ + && apt-get install --yes --quiet python3.12 python3-pip python3.12-venv python3.12-dev \ + && apt-get install --yes --quiet git wget gcc g++ make zlib1g-dev zstd jq +# The base image uses Python 3.12. For local installation use 3.11 or greater. +RUN python3 -m venv /alphafold3_venv ENV PATH="/hmmer/bin:/alphafold3_venv/bin:$PATH" - +# Update pip to the latest version. Not necessary in Docker, but good to do when +# this is used as a recipe for local installation since we rely on new pip +# features for secure installs. +RUN pip3 install --no-cache-dir --upgrade pip # Install HMMER. Do so before copying the source code, so that docker can cache -# the image layer containing HMMER. +# the image layer containing HMMER. Alternatively, you could also install it +# using `apt-get install hmmer` instead of bulding it from source, but we want +# to have control over the exact version of HMMER and also apply the sequence +# limit patch. Also note that eddylab.org unfortunately doesn't support HTTPS +# and the tar file published on GitHub is explicitly not recommended to be used +# for building from source. +# Download, check hash, and extract the HMMER source code. RUN mkdir /hmmer_build /hmmer ; \ wget http://eddylab.org/software/hmmer/hmmer-3.4.tar.gz --directory-prefix /hmmer_build ; \ - (cd /hmmer_build && tar zxf hmmer-3.4.tar.gz && rm hmmer-3.4.tar.gz) ; \ - (cd /hmmer_build/hmmer-3.4 && ./configure --prefix /hmmer) ; \ - (cd /hmmer_build/hmmer-3.4 && make -j8) ; \ + (cd /hmmer_build && echo "ca70d94fd0cf271bd7063423aabb116d42de533117343a9b27a65c17ff06fbf3 hmmer-3.4.tar.gz" | sha256sum --check) && \ + (cd /hmmer_build && tar zxf hmmer-3.4.tar.gz && rm hmmer-3.4.tar.gz) +# Apply the --seq_limit patch to HMMER. +COPY docker/jackhmmer_seq_limit.patch /hmmer_build/ +RUN (cd /hmmer_build && patch -p0 < jackhmmer_seq_limit.patch) +# Build HMMER. +RUN (cd /hmmer_build/hmmer-3.4 && ./configure --prefix /hmmer) ; \ + (cd /hmmer_build/hmmer-3.4 && make -j) ; \ (cd /hmmer_build/hmmer-3.4 && make install) ; \ (cd /hmmer_build/hmmer-3.4/easel && make install) ; \ rm -R /hmmer_build - -# Clone AlphaFold3 -RUN git clone https://github.com/google-deepmind/alphafold3.git /app/alphafold && \ - cd /app/alphafold && \ - git checkout 3c27a149a25b6c8930ce68cfeb2a6cbb9afb3359 && \ - cd - - -# # Install the Python dependencies AlphaFold 3 needs. -# RUN pip3 install -r dev-requirements.txt -# RUN pip3 install --no-deps . - -# Install pip packages. -RUN pip3 install --upgrade pip --no-cache-dir \ - && pip3 install -r /app/alphafold/dev-requirements.txt --no-cache-dir \ - && pip3 install --no-deps /app/alphafold/ --no-cache-dir \ +# Copy the AlphaFold 3 source code from the local machine to the container and +# set the working directory to there. +COPY . /app/alphafold +WORKDIR /app/alphafold +# Install setuptools (removed in Python 3.12) which some libraries still need. +# Then install the Python dependencies of AlphaFold 3. +RUN pip3 install --no-cache-dir setuptools \ + && pip3 install --no-cache-dir -r dev-requirements.txt \ + && pip3 install --no-cache-dir --no-deps . \ && pip3 install --no-deps biopython - -# # Build chemical components database (this binary was installed by pip). +# Build chemical components database (this binary was installed by pip). RUN build_data - # To work around a known XLA issue causing the compilation time to greatly # increase, the following environment variable setting XLA flags must be enabled -# when running AlphaFold 3: +# when running AlphaFold 3. Note that if using CUDA capability 7 GPUs, it is +# necessary to set the following XLA_FLAGS value instead: +# ENV XLA_FLAGS="--xla_disable_hlo_passes=custom-kernel-fusion-rewriter" +# (no need to disable gemm in that case as it is not supported for such GPU). ENV XLA_FLAGS="--xla_gpu_enable_triton_gemm=false" # Memory settings used for folding up to 5,120 tokens on A100 80 GB. ENV XLA_PYTHON_CLIENT_PREALLOCATE=true ENV XLA_CLIENT_MEM_FRACTION=0.95 +CMD ["python3", "run_alphafold.py"] diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 556980e..61d8935 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -5,23 +5,17 @@ process RUN_ALPHAFOLD3 { tag "$meta.id" label 'process_medium' label 'process_gpu' - container "nf-core/proteinfold_alphafold3_standard:1.2.0dev" + container "" input: tuple val(meta), path(json) path "params/*" - path "small_bfd/*" - path "mgnify/*" - path "mmcif_files" - path "uniref90/*" - path "pdb_seqres/*" - path "uniprot/*" output: tuple val(meta), path ("publish/*alphafold3.cif") , emit: top_ranked_cif tuple val(meta), path ("publish/*ranked_*.cif") , emit: cif tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc tuple val(meta), path ("${meta.id}_alphafold3_msa.tsv") , emit: msa tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae - tuple val(meta), path ("*_full_data_0.json") , emit: raw_pae + tuple val(meta), path ("${meta.id}/${meta.id}_confidences.json") , emit: raw_pae path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -32,21 +26,11 @@ process RUN_ALPHAFOLD3 { } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def af3_id = meta.id.toLowerCase() """ - if [ -f pdb_seqres/pdb_seqres.txt ] - then - sed -i "/^\\w*0/d" pdb_seqres/pdb_seqres.txt - fi python3 /app/alphafold/run_alphafold.py \\ --json_path=${json} \\ --model_dir=./params \\ - --uniref90_database_path=./uniref90/uniref90_2022_05.fa \\ - --mgnify_database_path=./mgnify/mgy_clusters_2022_05.fa \\ - --pdb_database_path=./mmcif_files \\ - --small_bfd_database_path=./small_bfd/bfd-first_non_consensus_sequences.fasta \\ - --uniprot_cluster_annot_database_path=./uniprot/uniprot_all_2021_04.fa \\ - --seqres_database_path=./pdb_seqres/pdb_seqres_2022_09_28.fasta \\ + --norun_data_pipeline \\ --output_dir=\$PWD \\ $args ## Rename the top ranked model @@ -57,18 +41,18 @@ process RUN_ALPHAFOLD3 { name=\$(jq -r '.name' ${json}) cp -n "\${name}/\${name}_model.cif" "publish/${prefix}_alphafold3.cif" # Sort the rows by ranking_score in descending order - sorted_csv=\$(head -n 1 "\${name}/ranking_scores.csv"; tail -n +2 "\${name}/ranking_scores.csv" | sort -t, -k3 -nr) + sorted_csv=\$(head -n 1 "\${name}/\${name}_ranking_scores.csv"; tail -n +2 "\${name}/\${name}_ranking_scores.csv" | sort -t, -k3 -nr) rank=0 touch publish/combined_plddt_mqc.tsv # Generate files with rank tag echo "\$sorted_csv" | tail -n +2 | while IFS=',' read -r seed sample ranking_score; do - cp -n "\${name}/seed-\${seed}_sample-\${sample}/model.cif" "publish/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" + cp -n "\${name}/seed-\${seed}_sample-\${sample}/\${name}_seed-\${seed}_sample-\${sample}_model.cif" "publish/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" rank=\$((rank + 1)) done extract_metrics.py --name ${prefix} \\ - --jsons ${af3_id}/${af3_id}_data.json ${af3_id}/${af3_id}_summary_confidences.json ${af3_id}/${af3_id}_confidences.json \\ + --jsons ${meta.id}/${meta.id}_data.json ${meta.id}/${meta.id}_summary_confidences.json ${meta.id}/${meta.id}_confidences.json \\ --structs publish/*ranked_*.cif - mv "${prefix}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" + mv "${meta.id}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 48e9b5a..ee1853d 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -26,6 +26,7 @@ include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_wisps_pipeline' include { MSA } from '../subworkflows/local/msa' // @@ -70,17 +71,18 @@ workflow WISPS { ch_colabfold_params num_recycles ch_alphafold3_params // channel: path(alphafold2_params) - ch_small_bfd // channel: path(small_bfd) - ch_mgnify // channel: path(mgnify) - ch_mmcif_files // channel: path(mmcif_files) - ch_uniref90 // channel: path(uniref90) - ch_pdb_seqres // channel: path(pdb_seqres) - ch_uniprot // channel: path(uniprot) tools - + ch_multiqc_config + ch_multiqc_custom_config + ch_multiqc_logo + ch_multiqc_methods_description + outdir + main: ch_multiqc_files = Channel.empty() ch_confidence_scores = Channel.empty() + + interaction_mode = mode.split(",").collect { pair -> pair.split('-').sort().join('-') } @@ -276,7 +278,7 @@ workflow WISPS { RUN_BOLTZ.out.confidence.collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} - }.set{ch_confidence_scores} + }.set{ch_boltz_confidence_scores} //prepare interactions for colabfold ch_colabfold_interaction_in = Channel.empty() @@ -302,7 +304,11 @@ workflow WISPS { num_recycles ) ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) - + COLABFOLD_BATCH.out.top_ranked_scores.collect(flat: false, sort: true).multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_colabfold_confidence_scores} + ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ MSA.out.json.join(ch_protein_pairs.map{it[0]}) @@ -317,15 +323,15 @@ workflow WISPS { RUN_ALPHAFOLD3 ( ch_alphafold3_interaction_in, - ch_alphafold3_params, - ch_small_bfd, - ch_mgnify, - ch_mmcif_files, - ch_uniref90, - ch_pdb_seqres, - ch_uniprot + ch_alphafold3_params ) - + ch_versions = ch_versions.mix(RUN_ALPHAFOLD3.out.versions) + + RUN_ALPHAFOLD3.out.raw_pae.collect(flat: false, sort: true).multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_alphafold3_confidence_scores} + COLABFOLD_BATCH.out.top_ranked_scores .join(COLABFOLD_BATCH.out.top_ranked_pdb) @@ -359,12 +365,64 @@ workflow WISPS { ch_ipsae_in.map{it[2]} ) + ch_versions = ch_versions.mix(IPSAE.out.versions) COLLECT_CONFIDENCE( - ch_confidence_scores.ids.map{[["id": "full_run"], it]}, - ch_confidence_scores.json + ch_boltz_confidence_scores.ids + .map{[["id": "all-boltz", "model": "boltz"], it]} + .mix(ch_colabfold_confidence_scores.ids + .map{[["id": "all-colabfold", "model": "colabfold"], it]} + ) + .mix(ch_alphafold3_confidence_scores.ids + .map{[["id": "all-alphafold3", "model": "alphafold3"], it]} + ), + ch_boltz_confidence_scores.json + .mix(ch_colabfold_confidence_scores.json) + .mix(ch_alphafold3_confidence_scores.json) ) + ch_versions = ch_versions.mix(COLLECT_CONFIDENCE.out.versions) + + + // + // Collate and save software versions + // + softwareVersionsToYAML(ch_versions) + .collectFile( + storeDir: "${outdir}/pipeline_info", + name: 'nf_core_' + 'proteinfold_software_' + 'mqc_' + 'versions.yml', + sort: true, + newLine: true + ).set { ch_collated_versions } + + // + // MODULE: MultiQC + // + summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + ch_methods_description = Channel.value(methodsDescriptionText(ch_multiqc_methods_description)) + + ch_multiqc_files = Channel.empty() + ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + + MULTIQC ( + COLLECT_CONFIDENCE.out.confidence.collect(flat: false, sort: true), + ch_multiqc_config.collect() + .ifEmpty([]), + ch_multiqc_custom_config + .collect() + .ifEmpty([]), + ch_multiqc_logo + .collect() + .ifEmpty([]), + [], + [] + ) + + ch_versions = ch_versions.mix(MULTIQC.out.versions) + emit: versions = ch_versions msa = RUN_BOLTZ.out.msa From 348b765538da6036372d9f46e5332cd34362e6fe Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 3 Oct 2025 13:58:55 +1000 Subject: [PATCH 06/70] update --- conf/test_gadi.config | 6 ------ modules/local/colabfold_batch/main.nf | 4 ++-- workflows/wisps.nf | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 4cb1c2b..96293d6 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -32,12 +32,6 @@ params { colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_small_bfd = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_mgnify = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_pdb_mmcif = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_uniref90 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_pdb_seqres = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - alphafold3_uniprot = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" use_gpu = true project = "ll61" diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index bbd5d13..4b672f1 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -58,7 +58,7 @@ process COLABFOLD_BATCH { cat <<-END_VERSIONS > versions.yml "${task.process}": - colabfold_batch: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') END_VERSIONS """ @@ -75,7 +75,7 @@ process COLABFOLD_BATCH { cat <<-END_VERSIONS > versions.yml "${task.process}": - colabfold_batch: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') + colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') END_VERSIONS """ } diff --git a/workflows/wisps.nf b/workflows/wisps.nf index ee1853d..b7bb700 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -244,7 +244,7 @@ workflow WISPS { ) .map{[it[1], it[2]]} ) - + PREPARE_INTERACTIONS( ch_boltz_data.map{[it[0][0], it[0][2].collect{it.name}]}, ch_boltz_data.map{[it[0][0], it[1].collect{it ? it.name: ""}]}, From 91bd5036650c3bffba0af7b362448420d1644eb3 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 3 Oct 2025 19:33:21 +1000 Subject: [PATCH 07/70] update batching analysis --- bin/extract_metrics.py | 246 -------------------------- bin/utils.py | 112 ------------ conf/test_gadi.config | 2 +- main.nf | 3 +- modules/local/colabfold_batch/main.nf | 30 +--- modules/local/prepare_interactions.nf | 84 +++++---- modules/local/run_alphafold3/main.nf | 29 +-- modules/local/run_boltz/main.nf | 51 +----- nextflow.config | 3 +- workflows/wisps.nf | 140 ++++++++++----- 10 files changed, 157 insertions(+), 543 deletions(-) delete mode 100755 bin/extract_metrics.py delete mode 100755 bin/utils.py diff --git a/bin/extract_metrics.py b/bin/extract_metrics.py deleted file mode 100755 index f952b21..0000000 --- a/bin/extract_metrics.py +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env python -import pickle -import os -import argparse -import json -#import torch moved to a conditional import since too bulky import if not used -import numpy as np -import csv -import string -from utils import plddt_from_struct_b_factor, get_chain_ids - -# TODO: Issue #309, make into a poper separate process, it its own module so that dependencies can be managed better -# TODO: Need a sense of ranking, so that metrics can be traced back to correct model structure, even if they're not in sequential order. The enumerates() here are not sufficient. -# Needs to be program-dependent, (see item below). -# TODO: look into have a --prog argument that could set filenames etc, logically seperate it? -# {name}_{prog}_{metric}.tsv might be easier for MultiQC to parse a complex workdir, than without the .prog -# TODO: read --prog from ${meta.model} in the NextFlow pipes. This also allows case switching in a proper EXTRACT_METRICS process. -# E.g. in main.nf of EXTACT_METRICS process, we could have: -# match ${meta.mode}: -# case 'alphafold2': -# ... -# case 'rosettafold_all_atom': -# ... -#... -# ^ overwrought with duplication, but can catch program specific weirdness, and lower barrier to adding new programs in the future. - -# TODO: Chain-wise iPTM since the relevant interface might not always be the average of all. -# Would complete Issue #308 -# Proposed format is pair-interfaces in rows, structure inference number in cols: https://github.com/nf-core/proteinfold/pull/312#issuecomment-2917709432 -# KR - changed to have both sides of the matrix, because it's not symmetrical (see comment in Issue #306) - -# Mapping of characters to integers for MSA parsing. -# 20 is for unknown characters, and 21 is for gaps. -AA_to_int = { - "A": 0, "C": 1, "D": 2, "E": 3, "F": 4, "G": 5, "H": 6, "I": 7, "K": 8, "L": 9, - "M": 10, "N": 11, "P": 12, "Q": 13, "R": 14, "S": 15, "T": 16, "V": 17, "W": 18, "Y": 19, - ".": 20, "-": 21 -} - -def a3m_to_int(a3m_file): - """ - Convert an A3M MSA representation into an integer representation (0-21). - """ - with open(a3m_file, "r") as f: - msa = f.read() - - # Convert each sequence in the MSA - int_sequences = [] - for idx, line in enumerate(msa.splitlines()): - if idx == 0 and not line.startswith(">"): # If there's an additional header (non-FASTA) skip it. E.g ColabFold - continue - - if not line.startswith(">"): # Ignore header lines - filtered_line = ''.join(char for char in line if not char.islower()) # Remove inserts (lower-case chars) in a3m - int_sequence = [AA_to_int.get(char.upper(), 20) for char in filtered_line] - int_sequences.append(int_sequence) - - int_sequences_array = np.array(int_sequences, dtype=object) - return int_sequences_array - -def format_msa_rows(msa_data): - return [[str(x) for x in val] for val in msa_data] - -def format_pae_rows(pae_data): - return [[f"{num:.4f}" for num in row] for row in pae_data] - -def format_iptm_rows(chain_pair_entries, chain_ids=None): - """ - Format iPTM data into a list of rows for writing to a TSV file. - Each row contains: the chain-pair in uppercase, e.g. "A:B", "B:A", A:C", etc. and then the iPTM value formatted to 4 decimal places. - """ - def idx_to_letter(idx): - """ Convert the index integer of the matrix to a letter representation that wraps to double representation, e.g. 0 -> A, 1 -> B, ..., 25 -> Z, 26 -> AA, 27 -> AB, etc. - This is somewhat compatible with how protein structure chain names are numbered by biochemists. - But we should move away from fixed-format PDB files -- we have nothing to lose but our chains.""" - result = "" - while idx >= 0: - result = string.ascii_uppercase[idx % 26] + result - idx = idx // 26 - 1 - if idx < 0: - break - return result - - if chain_ids: - #would be better with some model_id sorting - iptm_rows = [[""]+[f"{chain_ids[idx[0]]}:{chain_ids[idx[1]]}" for idx, val in next(iter(chain_pair_entries.values()))]] - else: - iptm_rows = [[""]+[f"{idx_to_letter(idx[0])}:{idx_to_letter(idx[1])}" for idx, val in next(iter(chain_pair_entries.values()))]] - - for model_idx, chain_pair_entries_values in chain_pair_entries.items(): - iptm_rows.append([model_idx]+[f"{val:.4f}" for idx, val in chain_pair_entries_values]) - - return [list(row) for row in zip(*iptm_rows)] - - -def chain_iptm_matrix_to_pairs(iptm_matrix): - """ - Convert a chain-wise iPTM matrix to pair values by taking off-diagonal elements. - """ - # From AlphaFold3 output docs: - # 'chain_pair_iptm': An [num_chains, num_chains] array. - # Off-diagonal element (i, j) of the array contains the ipTM restricted to tokens from chains i and j. - # Diagonal element (i, i) contains the pTM restricted to chain i. - return [(idx, val) for idx, val in np.ndenumerate(iptm_matrix) if idx[0] != idx[1]] - -def chainwise_iptm_matrix_to_ptms(iptm_matrix): - return [(idx, val) for idx, val in np.ndenumerate(iptm_matrix) if idx[0] == idx[1]] - -def write_tsv(file_path, rows): - with open(file_path, 'w') as out_f: - writer = csv.writer(out_f, delimiter='\t') - writer.writerows(rows) - -def extract_structs_plddt_to_tsv(name, structures): - """ - Write out a tsv file contain pLDDTs for reading by MultiQC in nf-core/proteinfold - Uses utils function with BioPython PDB package to extract residue pLDDT values from the b-factor column. - """ - plddt_cols = [plddt_from_struct_b_factor(structure) for structure in structures] - res_counts = [len(plddt_col) for plddt_col in plddt_cols] - - if len(set(res_counts)) != 1: - raise ValueError("Not all structures have the same number of residues!") - - rank_names = [f"rank_{i}" for i in range(len(structures))] - # Create header as the first row - plddt_rows = [["Positions"] + rank_names] - res_id_col = list(range(len(plddt_cols[0]))) - plddt_rows.extend(zip(res_id_col, *plddt_cols)) # Combine lists column-wise to make rows - write_tsv(f"{name}_plddt.tsv", plddt_rows) - -def read_pkl(name, pkl_files): - """ - Adapted from the Galaxy AlphaFold tool (https://github.com/usegalaxy-au/tools-au/blob/de94df520c8dc7b8652aedb92e90f6ebb312f95f/tools/alphafold/scripts/outputs.py), originally authored by @neoformit and @graceahall and funded by Australian Biocommons and QCIF Australia. - """ - ptm_data = {} - iptm_data = {} - for pkl_file in pkl_files: - print(f"Processing {pkl_file}") - data = pickle.load(open(pkl_file, "rb")) - - # Process MSA data - if pkl_file.endswith("final_features.pkl"): # HelixFold3 - This one must be first - write_tsv(f"{name}_msa.tsv", format_msa_rows(data["feat"]["msa"])) - elif pkl_file.endswith("features.pkl"): # AlphaFold2.3 - # TODO: AlphaFold2.3 fills end rows with 0s in AlpahFold muliter for an alanine nf-core/proteinfold Issue #300 - write_tsv(f"{name}_msa.tsv", format_msa_rows(data["msa"])) - # AlphaFold2.3 non-summary, for each pkl. TODO: Need to either read in ranking_debug.json to get the ranking order, or do it later in the workflow. - else: - model_info = os.path.basename(pkl_file).replace("result_", "").replace(".pkl", "") - #TODO: Make this explicit input - with open(os.path.join(os.path.dirname(pkl_file),"ranking_debug.json")) as f: - ranking_data = json.load(f)['order'] - model_id = ranking_data.index(model_info) - if 'predicted_aligned_error' not in data.keys(): - print(f"No PAE output in {pkl_file}, it was likely a monomer calculation") - else: - write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["predicted_aligned_error"])) - - if 'ptm' not in data.keys(): - print(f"No pTM/iPTM output in {pkl_file}, it was likely a monomer calculation") - else: - #with open(f"{name}_{model_id}_ptm.tsv", 'w') as f: - # f.write(f"{np.round(data['ptm'],3)}\n") - #with open(f"{name}_{model_id}_iptm.tsv", 'w') as f: - # f.write(f"{np.round(data['iptm'],3)}\n") - ptm_data[f"{model_id}"] = f"{np.round(data['ptm'],3)}\n" - iptm_data[f"{model_id}"] = f"{np.round(data.get('iptm',0.),3)}\n" - if ptm_data: - ptm_rows = [[k, v.strip()] for k, v in ptm_data.items()] - write_tsv(f"{name}_ptm.tsv", ptm_rows) - - if iptm_data: - iptm_rows = [[k, v.strip()] for k, v in iptm_data.items()] - write_tsv(f"{name}_iptm.tsv", iptm_rows) - - - -def read_a3m(name, a3m_files): - # RosettaFold-All-Atom - #TODO: DRY with unpaired below for Boltz - msa_rows = {} - for a3m_file in a3m_files: #Should already be alphabetical by chain - msa_rows[a3m_file] = a3m_to_int(a3m_file) - - final_rows = [] - temp_row = [] - for a3m_file in a3m_files: - temp_row.extend(msa_rows[a3m_file][0]) - final_rows.append(temp_row) - - # Un-paired TODO: get pairing code from RF-AA source - # https://github.com/baker-laboratory/RoseTTAFold-All-Atom/blob/main/rf2aa/data/parsers.py#L405 - msa_widths = [len(msa_rows[chain][0]) for chain in a3m_files] - msa_heights = [len(msa_rows[chain]) for chain in a3m_files] - - cum_total_rows = np.cumsum(msa_heights) - for row_idx in range(cum_total_rows[-1]): - temp_row = [] - - for i, chain in enumerate(a3m_files): - msa = msa_rows[chain] - width = msa_widths[i] - if i == 0: - minrow = 0 - else: - minrow = cum_total_rows[i-1] - maxrow = cum_total_rows[i] - - if minrow <= row_idx < maxrow: - msa_row_idx = row_idx - minrow - temp_row.extend(msa[msa_row_idx]) - else: - temp_row.extend(["21"] * width) #gap - final_rows.append(temp_row) - - write_tsv(f"{name}_msa.tsv", format_msa_rows(final_rows)) - -def read_npz(name, npz_files): - for idx, npz_file in enumerate(npz_files): - data = np.load(npz_file) - #Boltz PAE files if --write_full_pae is used - if npz_file.split('/')[-1].startswith('pae') and npz_file.endswith('.npz'): - model_id = os.path.basename(npz_file).split('_model_')[-1].split('.npz')[0] - write_tsv(f"{name}_{model_id}_pae.tsv", format_pae_rows(data["pae"])) - -# Boltz MSA processing -def read_csv(name, csv_files): - if not os.path.isfile(csv_files[0]): return #TODO: Fix temporary workaround - msa_rows = {} - unpaired_msa_rows = {} - for csv_file in sorted(csv_files, key=lambda x: int(x.split('_')[-1].split('.csv')[0])): - msa_lines = [] - unpaired_msa_lines = [] - with open(csv_file) as f: - f.readline() - for line in f: - if line.split(',')[0] == '-1' and len(csv_files)>1: #Server MSA appears as un-paired - unpaired_msa_lines.append(''.join(c for c in line.strip('\n').split(',')[1] if not c.islower())) - else: - msa_lines.append(''.join(c for c in line.strip('\n').split(',')[1] if not c.islower())) - msa_rows[csv_file.split('_')[-1].split('.csv')[0]] = [[str(AA_to_int.get(residue, 20)) for residue in line] for line in msa_lines] - unpaired_msa_rows[csv_file.split('_')[-1].split('.csv')[0]] = [[str(AA_to_int.get(residue, 20)) for residue in line] for line in unpaired_msa_lines] - - # Get Chain to MSA mapping (ie non-redundant for homomers) - # TODO: Make this explicit inpu... \ No newline at end of file diff --git a/bin/utils.py b/bin/utils.py deleted file mode 100755 index 60f2f1c..0000000 --- a/bin/utils.py +++ /dev/null @@ -1,112 +0,0 @@ -import importlib.util -import numpy as np -bio_is_installed = importlib.util.find_spec("Bio") is not None - -def _convert_plddt_to_100(res_plddt): - if (res_plddt < 1): # Converting to a [0,100] range - res_plddt *= 100 - return res_plddt - - -def plddt_from_struct_b_factor_adhoc(struct_file): - """ - Uses ad hoc PDB parser to extract residue pLDDT values from the b-factor column. Iterates over PDB objects rather than processes raw file - """ - #NOTE: this is a temporary hack which is not robust as a general parser. - #Should be temporary - need to check with non-protein entities - if not str(struct_file).endswith(".pdb"): - raise ValueError(f"{struct_file} must be a PDB file!") - - res_plddts = [] - resid_prev = -1 - atom_plddt_list = [] - - with open(struct_file) as f: - for line in f: - if not line.startswith('ATOM'): continue - resid = int(line[23:26].strip()) - if resid == resid_prev: - atom_plddt_list.append(float(line[61:66].strip())) - else: - if resid_prev == -1: - resid_prev = resid - continue - res_plddt = sum(atom_plddt_list)/len(atom_plddt_list) - res_plddt = _convert_plddt_to_100(res_plddt) - res_plddts.append(res_plddt) - resid_prev = resid - - # Reset atom tracking - atom_plddt_list = [] - atom_plddt_list.append(float(line[61:66].strip())) - - res_plddt = sum(atom_plddt_list)/len(atom_plddt_list) - res_plddt = _convert_plddt_to_100(res_plddt) - res_plddts.append(res_plddt) - - res_plddts = np.array(res_plddts) - res_plddts = np.round(res_plddts, 2) - - return res_plddts - -def get_chain_ids(struct_file): - from Bio import PDB - if str(struct_file).endswith(".pdb"): - parser = PDB.PDBParser(QUIET=True) - structure = parser.get_structure(id=id, file=struct_file) - elif str(struct_file).endswith(".cif"): - parser = PDB.MMCIFParser(QUIET=True) - structure = parser.get_structure(structure_id=id, filename=struct_file) - else: - raise ValueError(f"{struct_file} is neither a PDB or mmCIF file!") - - return [chain.id for chain in structure.get_chains()] - - -def plddt_from_struct_b_factor_biopython(struct_file): - """ - Uses the BioPython PDB package to extract residue pLDDT values from the b-factor column. Iterates over PDB objects rather than processes raw file - """ - from Bio import PDB - if str(struct_file).endswith(".pdb"): - parser = PDB.PDBParser(QUIET=True) - structure = parser.get_structure(id=id, file=struct_file) - elif str(struct_file).endswith(".cif"): - parser = PDB.MMCIFParser(QUIET=True) - structure = parser.get_structure(structure_id=id, filename=struct_file) - else: - raise ValueError(f"{struct_file} is neither a PDB or mmCIF file!") - -# res_list = [] - res_plddts = [] -# plddt_tot = 0 - - for model in structure: - for chain in model: - chain_res_list = chain.get_unpacked_list() -# res_list.extend(chain_res_list) - for residue in chain: - atom_list = residue.get_unpacked_list() - atom_plddt_tot = 0 - for atom in residue: # ESMFold and others have separate atom-wise values, so doing atom-wise to cover that and residue-wise - atom_plddt = atom.get_bfactor() - atom_plddt_tot += atom_plddt - - res_plddt = float(atom_plddt_tot / len(atom_list)) - - if (res_plddt < 1): # RFAA the multiplication of mean isn't failing. Anyway covering to a [0,100] range for any structure file1 - res_plddt *= 100 - res_plddt = _convert_plddt_to_100(res_plddt) - - res_plddts.append(res_plddt) -# plddt_tot += res_plddt - - res_plddts = np.array(res_plddts) - res_plddts = np.round(res_plddts, 2) - - return res_plddts - -if bio_is_installed: - plddt_from_struct_b_factor = plddt_from_struct_b_factor_biopython -else: - plddt_from_struct_b_factor = plddt_from_struct_b_factor_adhoc diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 96293d6..8892cd8 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -83,7 +83,7 @@ process { memory: '2000.GB', time: '24.h' ] - resourceLimits = [ + resourceLimits1 = [ cpus: 16, memory: '24.GB', time: '3.h' diff --git a/main.nf b/main.nf index 291b09f..86ff548 100644 --- a/main.nf +++ b/main.nf @@ -61,7 +61,8 @@ workflow NFCORE_WISPS { ch_multiqc_custom_config, ch_multiqc_logo, ch_multiqc_methods_description, - params.outdir + params.outdir, + params.analysis_batch_size ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 4b672f1..734fc79 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -6,7 +6,7 @@ process COLABFOLD_BATCH { container "nf-core/proteinfold_colabfold:dev" input: - tuple val(meta), path(fasta) + tuple val(meta), path("alignment/*") val colabfold_model_preset path ('params/*') path ('colabfold_db/*') @@ -14,12 +14,9 @@ process COLABFOLD_BATCH { val numRec output: - tuple val(meta), path ("${meta.id}_colabfold.pdb"), emit: top_ranked_pdb - tuple val(meta), path ("*relaxed_rank_*.pdb") , emit: pdb + tuple val(meta), path ("*relaxed_rank*_model_1_*.pdb") , emit: pdb tuple val(meta), path ("*_coverage.png") , emit: msa - tuple val(meta), path ("*_mqc.png") , emit: multiqc - tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae - tuple val(meta), path ("${meta.id}_scores_rank_001_*.json") , emit: top_ranked_scores + tuple val(meta), path ("*_scores_rank_001_*.json") , emit: top_ranked_scores path "versions.yml" , emit: versions when: @@ -41,21 +38,9 @@ process COLABFOLD_BATCH { --num-recycle ${numRec} \\ --data \$PWD \\ --model-type ${colabfold_model_preset} \\ - ${fasta} \\ + alignment \\ \$PWD - for i in `find *.png -maxdepth 0`; do cp \$i \${i%'.png'}_mqc.png; done - if [ ! -e `find *_relaxed_rank_001_*.pdb` ]; then - cp *_relaxed_rank_001*.pdb ${meta.id}_colabfold.pdb - else - cp *_unrelaxed_rank_001*.pdb ${meta.id}_colabfold.pdb - fi - - #Note: only multimer prefix is meta.id - extract_metrics.py --name ${meta.id} \\ - --colabfold_pae *_predicted_aligned_error_v1.json - - mv *_coverage.png ${meta.id}_seq_coverage.png - + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') @@ -64,15 +49,12 @@ process COLABFOLD_BATCH { stub: """ - touch ./"${meta.id}"_colabfold.pdb - touch ./"${meta.id}"_mqc.png touch ./${meta.id}_relaxed_rank_01.pdb touch ./${meta.id}_relaxed_rank_02.pdb touch ./${meta.id}_relaxed_rank_03.pdb touch ./${meta.id}_coverage.png touch ./${meta.id}_scores_rank.json - touch ./${meta.id}_0_pae.tsv - + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index b26693e..c8189dd 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -8,13 +8,15 @@ process PREPARE_INTERACTIONS { 'quay.io/biocontainers/python:3.8.3' }" input: - tuple val(meta), val(fasta) - tuple val(meta), val(a3m) - tuple val(meta), val(types) - path(files) + tuple val(meta), val(ids) + val(fasta) + val(a3m) + val(types) + path(files) + output: - tuple val(meta), path ("*.fasta"), emit: fasta - path "versions.yml" , emit: versions + tuple val(meta), path ("*_boltz_interaction_input.fasta"), emit: fasta + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -26,44 +28,48 @@ process PREPARE_INTERACTIONS { #!/usr/bin/env python3 import os, sys import string + ids_batch = ${ids.collect { "\"${it}\"" }.toString()} + fasta_files_batch = ${fasta.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} + a3m_files_batch = ${a3m.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} + seq_types_batch = ${types.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} - #single_letters = list(string.ascii_uppercase) - #two_letter_combinations = [''.join(p) for p in product(string.ascii_uppercase, repeat=2)] - #all_combinations = single_letters + two_letter_combinations all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] - fasta_files = ["${fasta.join('", "')}"] - a3m_files = ["${a3m.join('", "')}"] - seq_types = ["${types.join('", "')}"] - for seq_type in seq_types: - if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: - print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') - exit (1) - output_file = "${meta.id}_boltz_interaction_input.fasta" - counter = 0 - with open(output_file, "w") as outfile: - for seq_itr in range(len(seq_types)): - fasta = fasta_files[seq_itr] - a3m = a3m_files[seq_itr] - seq_type = seq_types[seq_itr] + batch_itr = 0 + for batch_itr in range(len(fasta_files_batch)): + a3m_files = a3m_files_batch[batch_itr] + seq_types = seq_types_batch[batch_itr] + fasta_files = fasta_files_batch[batch_itr] + + for seq_type in seq_types: + if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: + print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') + exit (1) + output_file = ids_batch[batch_itr] + "_boltz_interaction_input.fasta" + counter = 0 + with open(output_file, "w") as outfile: + for seq_itr in range(len(seq_types)): + fasta = fasta_files[seq_itr] + a3m = a3m_files[seq_itr] + seq_type = seq_types[seq_itr] - with open(fasta, "r") as f: - lines = f.readlines() + with open(fasta, "r") as f: + lines = f.readlines() - if not lines: - continue # Skip empty FASTA files + if not lines: + continue # Skip empty FASTA files - #header = lines[0].strip() - lines[-1] = lines[-1].strip() + "\\n" - body = lines[1:] - header = f">{all_combinations[counter]}|{seq_type}" - counter += 1 - if seq_type == "protein": - header += f"|{os.path.basename(a3m)}\\n" - else: - header += "\\n" - - outfile.write(header) - outfile.writelines(body) + #header = lines[0].strip() + lines[-1] = lines[-1].strip() + "\\n" + body = lines[1:] + header = f">{all_combinations[counter]}|{seq_type}" + counter += 1 + if seq_type == "protein": + header += f"|{os.path.basename(a3m)}\\n" + else: + header += "\\n" + + outfile.write(header) + outfile.writelines(body) with open ("versions.yml", "w") as version_file: version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 61d8935..dcba10b 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -7,14 +7,11 @@ process RUN_ALPHAFOLD3 { label 'process_gpu' container "" input: - tuple val(meta), path(json) + tuple val(meta), path("data/*") path "params/*" output: tuple val(meta), path ("publish/*alphafold3.cif") , emit: top_ranked_cif tuple val(meta), path ("publish/*ranked_*.cif") , emit: cif - tuple val(meta), path ("${meta.id}_plddt.tsv") , emit: multiqc - tuple val(meta), path ("${meta.id}_alphafold3_msa.tsv") , emit: msa - tuple val(meta), path ("${meta.id}_0_pae.tsv") , emit: pae tuple val(meta), path ("${meta.id}/${meta.id}_confidences.json") , emit: raw_pae path "versions.yml" , emit: versions when: @@ -28,31 +25,13 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" """ python3 /app/alphafold/run_alphafold.py \\ - --json_path=${json} \\ + --input_dir=${data} \\ --model_dir=./params \\ --norun_data_pipeline \\ --output_dir=\$PWD \\ $args - ## Rename the top ranked model - if [ ! -d publish ]; then - mkdir -p publish - fi - ## Move the rest of the models and rename them according to their rank - name=\$(jq -r '.name' ${json}) - cp -n "\${name}/\${name}_model.cif" "publish/${prefix}_alphafold3.cif" - # Sort the rows by ranking_score in descending order - sorted_csv=\$(head -n 1 "\${name}/\${name}_ranking_scores.csv"; tail -n +2 "\${name}/\${name}_ranking_scores.csv" | sort -t, -k3 -nr) - rank=0 - touch publish/combined_plddt_mqc.tsv - # Generate files with rank tag - echo "\$sorted_csv" | tail -n +2 | while IFS=',' read -r seed sample ranking_score; do - cp -n "\${name}/seed-\${seed}_sample-\${sample}/\${name}_seed-\${seed}_sample-\${sample}_model.cif" "publish/seed_\${seed}_sample_\${sample}_ranked_\${rank}.cif" - rank=\$((rank + 1)) - done - extract_metrics.py --name ${prefix} \\ - --jsons ${meta.id}/${meta.id}_data.json ${meta.id}/${meta.id}_summary_confidences.json ${meta.id}/${meta.id}_confidences.json \\ - --structs publish/*ranked_*.cif - mv "${meta.id}_msa.tsv" "${meta.id}_alphafold3_msa.tsv" + + cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 581bbbc..9c24533 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -9,8 +9,8 @@ process RUN_BOLTZ { container "nf-core/proteinfold_boltz:dev" input: - tuple val(meta), path(fasta) - path (files) + tuple val(meta), path("fasta/*") + path(alignments) path ('boltz1_conf.ckpt') path ('ccd.pkl') path ('boltz2_aff.ckpt') @@ -18,39 +18,20 @@ process RUN_BOLTZ { path ('mols') output: - // TODO: rename npz into different emit channels as to not conflict with raw (.tsv) PAE etc. As in PR #306 tuple val(meta), path ("boltz_results_*/processed/msa/*.npz") , optional: true, emit: msa tuple val(meta), path ("boltz_results_*/processed/structures/*.npz") , emit: structures tuple val(meta), path ("boltz_results_*/predictions/*/confidence*.json") , emit: confidence - tuple val(meta), path ("${meta.id}_plddt.tsv") , optional: true, emit: multiqc - // TODO: support cif as well like with HelixFold3 - tuple val(meta), path ("${meta.id}_boltz.pdb") , optional: true, emit: top_ranked_pdb tuple val(meta), path ("boltz_results_*/predictions/*/*.pdb") , optional: true, emit: pdb tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , optional: true, emit: cif tuple val(meta), path ("boltz_results_*/predictions/*/plddt_*model_0.npz") , emit: plddt tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , optional: true, emit: pae - tuple val(meta), path ("${meta.id}_plddt.tsv") , optional: true, emit: plddt_raw - tuple val(meta), path ("${meta.id}_boltz_msa.tsv") , optional: true, emit: msa_raw - tuple val(meta), path ("${meta.id}_*_pae.tsv") , optional: true, emit: pae_raw - tuple val(meta), path ("${meta.id}_ptm.tsv") , optional: true, emit: ptm_raw - tuple val(meta), path ("${meta.id}_iptm.tsv") , optional: true, emit: iptm_raw - tuple val(meta), path ("${meta.id}_chainwise_ptm.tsv") , optional: true, emit: summary_chainwise_ptm_raw - tuple val(meta), path ("${meta.id}_chainwise_iptm.tsv") , optional: true, emit: chainwise_iptm_raw - + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - // Exit if running this module with -profile conda / -profile mamba - - // TODO: "boltz_results_*" dir should be be further specified using --out_dir when running Boltz, and being able to go "boltz_results_${meta.id}" instead of "boltz_results_*" - // TODO: MSA processing for Boltz is not solid yet. They can come from webserver, local mmseq, or a custom paired .csv (see docs below) - // https://github.com/jwohlwend/boltz/blob/main/docs/prediction.md#yaml-format - // TODO: what I really need to do is add a function to read /processed/msa/*.npz and convert it to a .tsv file - - // TODO: Boltz is the example to do chain-wise summary files. This will be better if model_id was properly written per prog and EXTRACT_METRICs was a process if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { error("Local RUN_BOLTZ module does not support Conda. Please use Docker / Singularity / Podman instead.") } @@ -61,22 +42,7 @@ process RUN_BOLTZ { export NUMBA_CACHE_DIR=/tmp export HOME=/tmp - boltz predict "${fasta}" ${args} --cache ./ - - if [[ "${args}" == *pdb* ]]; then - cp boltz_results_*/predictions/${meta.id}/*_0.pdb ./${meta.id}_boltz.pdb - if [ -f boltz_results_*/msa/${meta.id}_0.csv ]; then - cp boltz_results_*/msa/${meta.id}_*.csv ./ - fi - - extract_metrics.py --name ${meta.id} \\ - --structs boltz_results_*/predictions/${meta.id}/*.pdb \\ - --jsons boltz_results_*/predictions/${meta.id}/confidence_*_model_*.json \\ - --npzs boltz_results_*/predictions/${meta.id}/pae_*_model_*.npz \\ - --csvs ${meta.id}_*.csv - - mv "${meta.id}_msa.tsv" "${meta.id}_boltz_msa.tsv" - fi + boltz predict fasta ${args} --cache ./ cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -99,15 +65,6 @@ process RUN_BOLTZ { touch boltz_results_${meta.id}/predictions/${meta.id}/plddt_${meta.id}_model_0.npz touch boltz_results_${meta.id}/predictions/${meta.id}/pae_${meta.id}_model_0.npz - touch "${meta.id}_boltz.pdb" - touch "${meta.id}_plddt.tsv" - touch "${meta.id}_boltz_msa.tsv" - touch "${meta.id}_0_pae.tsv" - touch "${meta.id}_0_ptm.tsv" - touch "${meta.id}_0_iptm.tsv" - touch "${meta.id}_chainwise_ptm.tsv" - touch "${meta.id}_chainwise_iptm.tsv" - cat <<-END_VERSIONS > versions.yml "${task.process}": boltz: $version diff --git a/nextflow.config b/nextflow.config index 7423d46..4b641ce 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,8 +13,9 @@ params { // Input options input = null mode = "all-all" - mmseqs_batch_size = 10 + mmseqs_batch_size = 10000 mmseqs_gpu = false + analysis_batch_size = 10000 colabfold_model_preset = "alphafold2_multimer_v3" colabfold_num_recycles = 3 diff --git a/workflows/wisps.nf b/workflows/wisps.nf index b7bb700..a863cd6 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -77,7 +77,8 @@ workflow WISPS { ch_multiqc_logo ch_multiqc_methods_description outdir - + analysis_batch_size + main: ch_multiqc_files = Channel.empty() ch_confidence_scores = Channel.empty() @@ -114,18 +115,6 @@ workflow WISPS { .unique() .set{ch_unique_pairs} - /*ch_samplesheet - .map { - if (it[1].extension == "fasta" || it[1].extension == "fa") - {it[0].cnt = getFastaSequences(it[1].text).size()} - else if (it[1].extension == "yaml" || it[1].extension == ".yml") - {it[0].cnt = getYamlSequences(it[1].text).size()} - else if (it[1].extension == "json") - {it[0].cnt = 0} - } - .set{ch_input_seqs} - */ - ch_samplesheet .combine(ch_samplesheet) .map{[ @@ -169,6 +158,7 @@ workflow WISPS { } }.unique() .set{ch_single_protein} + //ch_protein_pairs.view() MSA ( ch_protein_pairs @@ -194,11 +184,13 @@ workflow WISPS { ch_boltz_interactions_in = ch_interaction_in } + // Adding non protein for boltz ch_boltz_data = ch_boltz_data.mix(ch_boltz_interactions_in .filter{it[1][0].type != "protein" && it[1][1].type != "protein"} .map{[it, ["", ""]]} ) + // Adding single protein for boltz ch_boltz_data = ch_boltz_data.mix( ch_boltz_interactions_in .filter{[it[1][0].type, it[1][1].type].count("protein") == 1} @@ -244,30 +236,47 @@ workflow WISPS { ) .map{[it[1], it[2]]} ) + + batch_id = 0 PREPARE_INTERACTIONS( - ch_boltz_data.map{[it[0][0], it[0][2].collect{it.name}]}, - ch_boltz_data.map{[it[0][0], it[1].collect{it ? it.name: ""}]}, - ch_boltz_data.map{[it[0][0], [it[0][1][0].type, it[0][1][1].type]]}, - ch_boltz_data.map{[it[0][2][0], it[0][2][1], it[1][0], it[1][1]].findAll{it}.unique{it.toUriString()}} + ch_boltz_data + .map{it[0][0].id} + .buffer( size: analysis_batch_size, remainder: true ) + .map{ batch_id += 1; [["id" : "batch-${batch_id}"], it]}, + ch_boltz_data + .map{it[0][2].collect{it.name}} + .buffer( size: analysis_batch_size, remainder: true ), + ch_boltz_data + .map{it[1].collect{it ? it.name: ""}} + .buffer( size: analysis_batch_size, remainder: true ), + ch_boltz_data + .map{[it[0][1][0].type, it[0][1][1].type]} + .buffer( size: analysis_batch_size, remainder: true ), + ch_boltz_data + .map{[it[0][2][0], it[0][2][1], it[1][0], it[1][1]]} + .buffer( size: analysis_batch_size, remainder: true ) + .map{it.flatten()findAll{it}.unique{it.toUriString()}} + ) - //PREPARE_INTERACTIONS.out.fasta.view() - PREPARE_INTERACTIONS.out.fasta.join( - ch_boltz_data.map{[it[0][0], [it[1][0], it[1][1]].findAll{it}.unique{it.toUriString()}]} + PREPARE_INTERACTIONS.out.fasta + .map{it[1]} + .flatten() + .map{[it.baseName.replace("_boltz_interaction_input", ""), it]} + .join( + ch_boltz_data + .map{[it[0][0].id, [it[1][0], it[1][1]]]} ) - .map{ - meta = it[0].clone() - meta.model = "boltz" - [meta, it[1], it[2]] - } + .buffer( size: analysis_batch_size, remainder: true ) .set{ch_boltz_in} //ch_boltz_in.view() - + boltz_batch = 0 + RUN_BOLTZ( - ch_boltz_in.map{[it[0], it[1]]}, - ch_boltz_in.map{it[2]}, + ch_boltz_in.map{boltz_batch += 1; [["id": "batch-${boltz_batch}"], it.collect{it[1]}]}, + ch_boltz_in.map{it.collect{it[2]}.flatten().findAll{it}.unique{it.toUriString()}}, ch_boltz_model, ch_boltz_ccd, ch_boltz2_aff, @@ -275,19 +284,43 @@ workflow WISPS { ch_mols ) - RUN_BOLTZ.out.confidence.collect(flat: false, sort: true).multiMap{json_list -> + + RUN_BOLTZ.out.confidence + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .view() + .set{ch_boltz_confidence} + + RUN_BOLTZ.out.pae + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .set{ch_boltz_pae} + + RUN_BOLTZ.out.cif + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .set{ch_boltz_cif} + + + ch_boltz_confidence + .collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_boltz_confidence_scores} - + //prepare interactions for colabfold ch_colabfold_interaction_in = Channel.empty() if ("colabfold" in tools.split(",")){ + colabfold_batch = 0 MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + .map{it[1]} + .buffer( size: analysis_batch_size, remainder: true ) .map{ - meta = it[0].clone() - meta.model = "colabfold" - [meta, it[1]] + colabfold_batch += 1; + [["id": "batch-${colabfold_batch}"], it] } .set{ ch_colabfold_interaction_in @@ -304,11 +337,28 @@ workflow WISPS { num_recycles ) ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) - COLABFOLD_BATCH.out.top_ranked_scores.collect(flat: false, sort: true).multiMap{json_list -> + + COLABFOLD_BATCH.out.top_ranked_scores + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[0], "model": "colabfold"], it]} + .set{ch_colabfold_scores} + + COLABFOLD_BATCH.out.pdb + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[0], "model": "colabfold"], it]} + .set{ch_colabfold_pdb} + + + ch_colabfold_scores + .collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_colabfold_confidence_scores} + + ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ MSA.out.json.join(ch_protein_pairs.map{it[0]}) @@ -327,37 +377,38 @@ workflow WISPS { ) ch_versions = ch_versions.mix(RUN_ALPHAFOLD3.out.versions) + RUN_ALPHAFOLD3.out.raw_pae.collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} - COLABFOLD_BATCH.out.top_ranked_scores - .join(COLABFOLD_BATCH.out.top_ranked_pdb) + ch_colabfold_scores + .join(ch_colabfold_pdb) .map{[["id": it[0].id], it, []]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) .mix( - RUN_BOLTZ.out.pae - .join(RUN_BOLTZ.out.cif) - .join(RUN_BOLTZ.out.confidence) + ch_boltz_pae + .join(ch_boltz_cif) + .join(ch_boltz_confidence) .map{[["id": it[0].id], [it[0], it[1], it[2]], it[3]]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) ) - .mix( + /*.mix( RUN_ALPHAFOLD3.out.pae.join(RUN_ALPHAFOLD3.out.top_ranked_cif) .map{[["id": it[0].id], it, []]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) - ) + )*/ .set{ch_ipsae_in} IPSAE( @@ -425,10 +476,5 @@ workflow WISPS { emit: versions = ch_versions - msa = RUN_BOLTZ.out.msa - structures = RUN_BOLTZ.out.structures - confidence = RUN_BOLTZ.out.confidence - run_confidence = COLLECT_CONFIDENCE.out.confidence - plddt = RUN_BOLTZ.out.plddt - pdb = RUN_BOLTZ.out.pdb + } From 2894b937db26e0ae0c5a9322e209da94f92c5116 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 3 Oct 2025 21:30:49 +1000 Subject: [PATCH 08/70] adding statistics --- modules/local/collect_confidence.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 95223c1..d36c20e 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -26,6 +26,7 @@ process COLLECT_CONFIDENCE { import os, sys import json import csv + import statistics # Folder containing the JSON files output_csv = "${meta.model}_confidence_scores_full.csv" From 05a7ba6c8e1124c83a9e737299db9dffe86b46eb Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 3 Oct 2025 21:32:12 +1000 Subject: [PATCH 09/70] adding af3 container --- modules/local/run_alphafold3/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index dcba10b..11e9e91 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -5,7 +5,7 @@ process RUN_ALPHAFOLD3 { tag "$meta.id" label 'process_medium' label 'process_gpu' - container "" + container "quay.io/nf-core/proteinfold_alphafold3_standard:2.1.0dev" input: tuple val(meta), path("data/*") path "params/*" From 96f97e06859fcb7740315f92de0dd466fb4be540 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Sat, 4 Oct 2025 18:12:24 +1000 Subject: [PATCH 10/70] update batching --- modules/local/msa_manager/split_msa.nf | 8 ++++++- workflows/wisps.nf | 32 ++++++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/modules/local/msa_manager/split_msa.nf b/modules/local/msa_manager/split_msa.nf index c7f7b4d..db74af4 100644 --- a/modules/local/msa_manager/split_msa.nf +++ b/modules/local/msa_manager/split_msa.nf @@ -20,7 +20,13 @@ process SPLIT_MSA { def args = task.ext.args ?: '' """ - msa_manager.py ${msa} -o output_msa --meta_id ${meta.id} + files=(${msa.collect { "\"${it}\"" }.join(" ")}) + + for f in "\${files[@]}"; do + meta_id=\$(basename "\$f") + msa_manager.py \$f -o output_msa --meta_id "\${meta_id}" + done + cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/workflows/wisps.nf b/workflows/wisps.nf index a863cd6..7f2cec0 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -210,24 +210,31 @@ workflow WISPS { [it[1], ["", it[3]]] } ) - + split_batch_id = 0 SPLIT_MSA( - ch_split_msa_in.join(ch_protein_pairs.map{it[0]}) + ch_split_msa_in + .map{it[1]} + .buffer( size: mmseqs_batch_size, remainder: true ) + .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}"], it]} ) ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) - ch_boltz_data = ch_boltz_data.mix(ch_boltz_interactions_in + SPLIT_MSA.out.msa_csv + .map{it[1]} + .flatten() + .map{[["id" : it.baseName.split("_")[0]], it]} + .groupTuple(sort: true) + .set{ch_split_msa_out} + + ch_boltz_data = ch_boltz_data + .mix(ch_boltz_interactions_in .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} .map{[["id": it[0].id], it]} .join( - SPLIT_MSA.out.msa_csv + ch_split_msa_out .map{ - if (it[1] instanceof List){ - if (it[1].size() != 2){ - log.warn "Something wrong with the data expected 2 csv!" - } - }else{ + if (it[1].size() == 1){ it[1] = [it[1], it[1]] } it @@ -289,7 +296,6 @@ workflow WISPS { .map{it[1]} .flatten() .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} - .view() .set{ch_boltz_confidence} RUN_BOLTZ.out.pae @@ -457,9 +463,11 @@ workflow WISPS { ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - + ch_multiqc_files = ch_multiqc_files + .mix(COLLECT_CONFIDENCE.out.confidence.map{it[1]}) + //ch_multiqc_files.view() MULTIQC ( - COLLECT_CONFIDENCE.out.confidence.collect(flat: false, sort: true), + ch_multiqc_files.collect(sort: true), ch_multiqc_config.collect() .ifEmpty([]), ch_multiqc_custom_config From 5d3fd40c919c29eb9b6d3658e859f5d898753211 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 10:31:21 +1100 Subject: [PATCH 11/70] update batching --- workflows/wisps.nf | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 7f2cec0..6d4bebc 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -364,15 +364,17 @@ workflow WISPS { }.set{ch_colabfold_confidence_scores} - + af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ - MSA.out.json.join(ch_protein_pairs.map{it[0]}) + MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + .map{it[1]} + .buffer( size: analysis_batch_size, remainder: true ) .map{ - meta = it[0].clone() - meta.model = "alphafold3" - [meta, it[1]]} - .set{ + af3_batch += 1; + [["id": "batch-${af3_batch}"], it] + } + .set{ ch_alphafold3_interaction_in } } From 098d132c0464c9ffdb356be42963da80cee92d0e Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 16:11:31 +1100 Subject: [PATCH 12/70] fix boltz output names --- modules/local/colabfold_batch/main.nf | 8 ++++---- modules/local/run_alphafold3/main.nf | 24 +++++++++------------- workflows/wisps.nf | 29 +++++++++++++++++++++------ 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 734fc79..82f9513 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -49,11 +49,11 @@ process COLABFOLD_BATCH { stub: """ - touch ./${meta.id}_relaxed_rank_01.pdb - touch ./${meta.id}_relaxed_rank_02.pdb - touch ./${meta.id}_relaxed_rank_03.pdb + touch ./${meta.id}_relaxed_rank_model_1_00.pdb + touch ./${meta.id}_relaxed_rank_model_2_00.pdb + touch ./${meta.id}_relaxed_rank_model_3_00.pdb touch ./${meta.id}_coverage.png - touch ./${meta.id}_scores_rank.json + touch ./${meta.id}_scores_rank_001_00.json cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 11e9e91..2726361 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -10,9 +10,9 @@ process RUN_ALPHAFOLD3 { tuple val(meta), path("data/*") path "params/*" output: - tuple val(meta), path ("publish/*alphafold3.cif") , emit: top_ranked_cif - tuple val(meta), path ("publish/*ranked_*.cif") , emit: cif - tuple val(meta), path ("${meta.id}/${meta.id}_confidences.json") , emit: raw_pae + tuple val(meta), path ("out/*/_model.cif") , emit: top_ranked_cif + tuple val(meta), path ("out/*/*_confidences.json") , emit: confidence + tuple val(meta), path ("out/*/*_summary_confidences.json") , emit: summary_confidences path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -28,28 +28,22 @@ process RUN_ALPHAFOLD3 { --input_dir=${data} \\ --model_dir=./params \\ --norun_data_pipeline \\ - --output_dir=\$PWD \\ + --output_dir=out/ \\ $args - cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') END_VERSIONS """ + stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - mkdir publish - touch publish/${prefix}_alphafold3.cif - touch publish/${prefix}_ranked_1.cif - touch publish/${prefix}_ranked_2.cif - touch publish/${prefix}_ranked_3.cif - touch publish/${prefix}_ranked_4.cif - touch publish/${prefix}_ranked_5.cif - touch ${prefix}_plddt.tsv - touch ${prefix}_alphafold3_msa.tsv - touch ${prefix}_0_pae.tsv + mkdir out + touch out/${prefix}_model.cif + touch out/${prefix}_confidences.json + touch out/${prefix}_summary_confidences.json cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 6d4bebc..1fb3cd8 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -307,10 +307,9 @@ workflow WISPS { RUN_BOLTZ.out.cif .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_")[0], "model": "boltz"], it]} .set{ch_boltz_cif} - ch_boltz_confidence .collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} @@ -385,8 +384,26 @@ workflow WISPS { ) ch_versions = ch_versions.mix(RUN_ALPHAFOLD3.out.versions) + RUN_ALPHAFOLD3.out.top_ranked_cif + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .set{ch_alphafold3_cif} + + RUN_ALPHAFOLD3.out.confidence + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .set{ch_alphafold3_confidence} - RUN_ALPHAFOLD3.out.raw_pae.collect(flat: false, sort: true).multiMap{json_list -> + RUN_ALPHAFOLD3.out.summary_confidences + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .set{ch_alphafold3_summary_confidences} + + + ch_alphafold3_summary_confidences.collect(flat: false, sort: true).multiMap{json_list -> ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} @@ -409,14 +426,14 @@ workflow WISPS { .map{["id": it[0].id]} ) ) - /*.mix( - RUN_ALPHAFOLD3.out.pae.join(RUN_ALPHAFOLD3.out.top_ranked_cif) + .mix( + ch_alphafold3_confidence.join(ch_alphafold3_cif) .map{[["id": it[0].id], it, []]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) - )*/ + ) .set{ch_ipsae_in} IPSAE( From d61b0c8f9e17e9300f883ebba178013fa4392922 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 17:48:38 +1100 Subject: [PATCH 13/70] fix minor issues --- modules/local/msa_manager/split_msa.nf | 2 +- modules/local/run_alphafold3/main.nf | 2 +- workflows/wisps.nf | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/local/msa_manager/split_msa.nf b/modules/local/msa_manager/split_msa.nf index db74af4..dad42e5 100644 --- a/modules/local/msa_manager/split_msa.nf +++ b/modules/local/msa_manager/split_msa.nf @@ -23,7 +23,7 @@ process SPLIT_MSA { files=(${msa.collect { "\"${it}\"" }.join(" ")}) for f in "\${files[@]}"; do - meta_id=\$(basename "\$f") + meta_id=\$(basename "\$f" ".a3m") msa_manager.py \$f -o output_msa --meta_id "\${meta_id}" done diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 2726361..c82ecb6 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -25,7 +25,7 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" """ python3 /app/alphafold/run_alphafold.py \\ - --input_dir=${data} \\ + --input_dir=data/ \\ --model_dir=./params \\ --norun_data_pipeline \\ --output_dir=out/ \\ diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 1fb3cd8..19d177c 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -61,10 +61,10 @@ workflow WISPS { ch_versions // channel: [ path(versions.yml) ] ch_boltz_ccd // channel: [ path(boltz_ccd) ] ch_boltz_model // channel: [ path(model) ] - ch_colabfold_db // channel: [ path(colabfold_db) ] ch_boltz2_aff // channel: [ path(boltz2_aff) ] ch_boltz2_conf // channel: [ path(boltz2_conf) ] ch_mols // channel: [ path(mols) ] + ch_colabfold_db // channel: [ path(colabfold_db) ] ch_uniref30 // channel: [ path(uniref30) ] mmseqs_batch_size // number colabfold_model_preset @@ -215,7 +215,7 @@ workflow WISPS { ch_split_msa_in .map{it[1]} .buffer( size: mmseqs_batch_size, remainder: true ) - .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}"], it]} + .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}-${it.size()}"], it]} ) ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) @@ -250,7 +250,7 @@ workflow WISPS { ch_boltz_data .map{it[0][0].id} .buffer( size: analysis_batch_size, remainder: true ) - .map{ batch_id += 1; [["id" : "batch-${batch_id}"], it]}, + .map{ batch_id += 1; [["id" : "batch-${batch_id}-${it.size()}"], it]}, ch_boltz_data .map{it[0][2].collect{it.name}} .buffer( size: analysis_batch_size, remainder: true ), @@ -282,7 +282,7 @@ workflow WISPS { boltz_batch = 0 RUN_BOLTZ( - ch_boltz_in.map{boltz_batch += 1; [["id": "batch-${boltz_batch}"], it.collect{it[1]}]}, + ch_boltz_in.map{boltz_batch += 1; [["id": "batch-${boltz_batch}-${it.size()}"], it.collect{it[1]}]}, ch_boltz_in.map{it.collect{it[2]}.flatten().findAll{it}.unique{it.toUriString()}}, ch_boltz_model, ch_boltz_ccd, @@ -371,7 +371,7 @@ workflow WISPS { .buffer( size: analysis_batch_size, remainder: true ) .map{ af3_batch += 1; - [["id": "batch-${af3_batch}"], it] + [["id": "batch-${af3_batch}-${it.size()}"], it] } .set{ ch_alphafold3_interaction_in @@ -408,6 +408,11 @@ workflow WISPS { json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} + ch_boltz_pae + .join(ch_boltz_cif) + .join(ch_boltz_confidence) + .map{["id": it[0].id]} + .view() ch_colabfold_scores .join(ch_colabfold_pdb) From 0c52e7f6df5a3a6836a4b628619e4bda401705ff Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 17:49:24 +1100 Subject: [PATCH 14/70] fix minor --- workflows/wisps.nf | 5 ----- 1 file changed, 5 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 19d177c..f645389 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -408,11 +408,6 @@ workflow WISPS { json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} - ch_boltz_pae - .join(ch_boltz_cif) - .join(ch_boltz_confidence) - .map{["id": it[0].id]} - .view() ch_colabfold_scores .join(ch_colabfold_pdb) From b9b452091963e327b46e3b9e8cb445b2e7f80d16 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 18:01:37 +1100 Subject: [PATCH 15/70] fix minor for channel --- modules/local/run_alphafold3/main.nf | 2 +- workflows/wisps.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index c82ecb6..becd1be 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -10,7 +10,7 @@ process RUN_ALPHAFOLD3 { tuple val(meta), path("data/*") path "params/*" output: - tuple val(meta), path ("out/*/_model.cif") , emit: top_ranked_cif + tuple val(meta), path ("out/*/*_model.cif") , emit: top_ranked_cif tuple val(meta), path ("out/*/*_confidences.json") , emit: confidence tuple val(meta), path ("out/*/*_summary_confidences.json") , emit: summary_confidences path "versions.yml" , emit: versions diff --git a/workflows/wisps.nf b/workflows/wisps.nf index f645389..7129a75 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -366,7 +366,7 @@ workflow WISPS { af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ - MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + MSA.out.json.join(ch_protein_pairs.map{it[0]}) .map{it[1]} .buffer( size: analysis_batch_size, remainder: true ) .map{ From ab0a1d1d4841119e9ba1d108d8f6814c94a0559a Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 21:56:06 +1100 Subject: [PATCH 16/70] fix file naming --- workflows/wisps.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 7129a75..07ebd90 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -235,7 +235,7 @@ workflow WISPS { ch_split_msa_out .map{ if (it[1].size() == 1){ - it[1] = [it[1], it[1]] + it[1] = [it[1][0], it[1][0]] } it } From d9eee22ac4fed4ce2fd9c14be2f8d0b43507024b Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Mon, 6 Oct 2025 23:02:44 +1100 Subject: [PATCH 17/70] update --- assets/schema_input.json | 6 +-- docs/usage.md | 37 +++++----------- nextflow_schema.json | 93 +++++++++++++++++++++++++++++++++++----- workflows/wisps.nf | 30 +++++-------- 4 files changed, 107 insertions(+), 59 deletions(-) diff --git a/assets/schema_input.json b/assets/schema_input.json index bcc9839..c57b0e9 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -13,12 +13,12 @@ "errorMessage": "Sequence name must be provided and cannot contain spaces", "meta": ["id"] }, - "fasta": { + "sequence": { "type": "string", "format": "file-path", "exists": true, "pattern": "^\\S+\\.fa(sta)?$", - "errorMessage": "Fasta file must be provided, cannot contain spaces and must have extension '.fa' or '.fasta'" + "errorMessage": "Fasta/YAML file must be provided, cannot contain spaces and must have extension '.fa' or '.fasta'" }, "type": { "type": "string", @@ -33,6 +33,6 @@ "default": "all" } }, - "required": ["id", "fasta"] + "required": ["id", "sequence"] } } diff --git a/docs/usage.md b/docs/usage.md index fccfd1c..d4d02ac 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -16,39 +16,23 @@ You will need to create a samplesheet with information about the samples you wou --input '[path to samplesheet file]' ``` -### Multiple runs of the same sample - -The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes: - -```csv title="samplesheet.csv" -sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz -``` - ### Full samplesheet -The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 3 columns to match those defined in the table below. - -A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. +An example of the sample sheet used for the pipeline is shown below: ```csv title="samplesheet.csv" -sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz -CONTROL_REP3,AEG588A3_S3_L002_R1_001.fastq.gz,AEG588A3_S3_L002_R2_001.fastq.gz -TREATMENT_REP1,AEG588A4_S4_L003_R1_001.fastq.gz, -TREATMENT_REP2,AEG588A5_S5_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L004_R1_001.fastq.gz, +id,sequence,group,type +S1,S1.fasta,A,protein +S2,Sample2.fasta,B,protein +S3,S3.yaml,A,rna ``` | Column | Description | | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | -| `fastq_1` | Full path to FastQ file for Illumina short reads 1. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | -| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | +| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore (`_`). | +| `sequence` | Full path to Fasta/YAML file for sample seqeuence. File has to have the extension ".fasta", ".fa" or "yaml". | +| `type` | The sequence type, can be either protein, rna . It is an optional column, by default it will be consdred as protein. | +| `group` | it is a way to group samnples to create custom interactions. It is an optional column, if not provided, the inteactions will be `aa-all' which means all sample against all samples. | An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. @@ -57,7 +41,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The typical command for running the pipeline is as follows: ```bash -nextflow run nf-core/wisps --input ./samplesheet.csv --outdir ./results --genome GRCh37 -profile docker +nextflow run nf-core/wisps --input ./samplesheet.csv --outdir ./results -profile docker ``` This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. @@ -90,7 +74,6 @@ with: ```yaml title="params.yaml" input: './samplesheet.csv' outdir: './results/' -genome: 'GRCh37' <...> ``` diff --git a/nextflow_schema.json b/nextflow_schema.json index e59345f..7625b99 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -31,19 +31,38 @@ }, "mode": { "type": "string", - "default": "alphafold2", - "description": "Specifies the mode in which the pipeline will be run. mode can be any combination of ['alphafold2', 'alphafold3', 'colabfold', 'esmfold', 'rosettafold_all_atom', 'boltz', 'helixfold3'] separated by a comma (',') with no spaces.", + "default": "all-all", + "description": "Specifies the interactions to be created. You can use all-all, or group-group using teh group column in the samplesheet. You can use mu;ltiple group-group separated by a comma (',') with no spaces.", "fa_icon": "fas fa-cogs", - "errorMessage": "Mode must be a comma-separated list containing any combination of 'alphafold2', 'alphafold3', 'colabfold', 'esmfold', 'rosettafold_all_atom', 'boltz', or 'helixfold3' with no spaces." + "errorMessage": "Check the documenation for more details on this." }, - "mmseq_batch_size": { + "tools": { + "type": "string", + "default": "boltz,colabfold", + "description": "Specifies the models to be run. tools can be any combination of ['alphafold3', 'colabfold', 'boltz'] separated by a comma (',') with no spaces.", + "fa_icon": "fas fa-cogs", + "errorMessage": "Tools must be a comma-separated list containing any combination of 'alphafold3', 'colabfold', or 'boltz' with no spaces." + }, + "mmseqs_batch_size": { "type": "integer", + "default": 10000, "description": "Number of samples in each mmseq run (batching leads to higher performance time in total.)", "fa_icon": "fas fa-microchip" }, + "analysis_batch_size": { + "type": "integer", + "default": 10000, + "description": "Number of samples to be processes in teh analysis after multiple single alignment", + "fa_icon": "fas fa-microchip" + }, "use_gpu": { "type": "boolean", - "description": "Run on CPUs (default) or GPUs", + "description": "Run on CPUs (default) or GPUs for the models", + "fa_icon": "fas fa-microchip" + }, + "mmseqs_gpu": { + "type": "boolean", + "description": "Run mmseqs on CPUs (default) or GPUs", "fa_icon": "fas fa-microchip" }, "email": { @@ -60,7 +79,7 @@ } } }, - "dbs_options": { + "dbs_weights_ptions": { "title": "Databases options", "type": "object", "fa_icon": "fas fa-terminal", @@ -119,19 +138,68 @@ "default": "null/params/boltz2_aff.ckpt", "description": "Path to boltz affinity file" }, - "boltz2_conf_path": { + "boltz2_conf": { "type": "string", "default": "null/params/boltz2_conf.ckpt", "description": "Path to boltz-2 conf file" }, - "boltz2_mols_path": { + "boltz2_mols": { "type": "string", "default": "null/params/mols/", "description": "Path to boltz-2 mols" + }, + "alphafold3_params": { + "type": "string", + "default": "null/params//", + "description": "Path to Alphafold3 params" } } }, - + "models_options": { + "title": "Models options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Customise all parameters for the models.", + "required": [], + "properties": { + "colabfold_num_recycles": { + "type": "integer", + "default": 3, + "description": "Number of recycles for ColabFold", + "fa_icon": "fas fa-recycle", + "minimum": 1, + "maximum": 20, + "errorMessage": "Number of recycles must be a whole number between 1 and 20" + }, + "colabfold_model_preset": { + "type": "string", + "default": "alphafold2_multimer_v3", + "description": "Model preset for 'colabfold' mode", + "enum": [ + "alphafold2_ptm", + "alphafold2_multimer_v1", + "alphafold2_multimer_v2", + "alphafold2_multimer_v3" + ], + "fa_icon": "fas fa-stream" + }, + "ipsae_pae_cutoff": { + "type": "integer", + "default": 10, + "description": "The pae cutoff for ipsae.", + "fa_icon": "fas fa-recycle", + "errorMessage": "The pae cutoff for ipsae." + },"ipsae_dist_cutoff": { + "type": "integer", + "default": 10, + "description": "The dist cutoff for ipsae.", + "fa_icon": "fas fa-recycle", + "errorMessage": "" + } + + + } + }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -276,7 +344,12 @@ { "$ref": "#/$defs/input_output_options" }, - + { + "$ref": "#/$defs/dbs_weights_ptions" + }, + { + "$ref": "#/$defs/models_options" + }, { "$ref": "#/$defs/institutional_config_options" }, diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 07ebd90..75b4d1a 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -56,21 +56,21 @@ include { getYamlSequences } from '../subworkflows/local/msa' workflow WISPS { take: - ch_samplesheet // channel: samplesheet read from --input + ch_samplesheet mode - ch_versions // channel: [ path(versions.yml) ] - ch_boltz_ccd // channel: [ path(boltz_ccd) ] - ch_boltz_model // channel: [ path(model) ] - ch_boltz2_aff // channel: [ path(boltz2_aff) ] - ch_boltz2_conf // channel: [ path(boltz2_conf) ] - ch_mols // channel: [ path(mols) ] - ch_colabfold_db // channel: [ path(colabfold_db) ] - ch_uniref30 // channel: [ path(uniref30) ] - mmseqs_batch_size // number + ch_versions + ch_boltz_ccd + ch_boltz_model + ch_boltz2_aff + ch_boltz2_conf + ch_mols + ch_colabfold_db + ch_uniref30 + mmseqs_batch_size colabfold_model_preset ch_colabfold_params num_recycles - ch_alphafold3_params // channel: path(alphafold2_params) + ch_alphafold3_params tools ch_multiqc_config ch_multiqc_custom_config @@ -130,8 +130,6 @@ workflow WISPS { .join(ch_unique_pairs) .set{ch_interaction_in} - //ch_interaction_in.view() - ch_interaction_in .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} .collectFile{ @@ -171,9 +169,6 @@ workflow WISPS { ) ch_versions = ch_versions.mix(MSA.out.versions) - //MSA.out.json.view() - //ch_interaction_in.view() - // Prepare interactions for boltz ch_boltz_data = Channel.empty() ch_split_msa_in = Channel.empty() @@ -278,7 +273,6 @@ workflow WISPS { .buffer( size: analysis_batch_size, remainder: true ) .set{ch_boltz_in} - //ch_boltz_in.view() boltz_batch = 0 RUN_BOLTZ( @@ -331,7 +325,6 @@ workflow WISPS { ch_colabfold_interaction_in } } - //ch_colabfold_interaction_in.view() COLABFOLD_BATCH( ch_colabfold_interaction_in, @@ -484,7 +477,6 @@ workflow WISPS { ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files .mix(COLLECT_CONFIDENCE.out.confidence.map{it[1]}) - //ch_multiqc_files.view() MULTIQC ( ch_multiqc_files.collect(sort: true), ch_multiqc_config.collect() From cb7cee8589fcd01ff93068069be93fef4b7a4f58 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 10:41:03 +1100 Subject: [PATCH 18/70] formatting --- modules/local/collect_confidence.nf | 2 +- modules/local/prepare_interactions.nf | 2 +- nextflow.config | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index d36c20e..bf9b5ad 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -5,7 +5,7 @@ process COLLECT_CONFIDENCE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'quay.io/biocontainers/python:3.8.3' }" + 'biocontainers/python:3.8.3' }" input: tuple val(meta), val(samples) diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index c8189dd..da41840 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -5,7 +5,7 @@ process PREPARE_INTERACTIONS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'quay.io/biocontainers/python:3.8.3' }" + 'biocontainers/python:3.8.3' }" input: tuple val(meta), val(ids) diff --git a/nextflow.config b/nextflow.config index 4b641ce..f8367ed 100644 --- a/nextflow.config +++ b/nextflow.config @@ -24,6 +24,17 @@ params { ipsae_pae_cutoff = 10 ipsae_dist_cutoff = 10 + boltz_ccd = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl' + boltz_model = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt' + boltz2_aff = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt' + boltz2_conf = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt' + boltz2_mols = null // extract this file locally: 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar' + + colabfold_db = null + uniref30 = null + colabfold_alphafold2_params = null + alphafold3_params = null + // MultiQC options multiqc_config = null multiqc_title = null From 3b58a365203bf39c015898f72b42d855b555be4a Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 11:36:13 +1100 Subject: [PATCH 19/70] cleaning --- .nf-core.yml | 12 +- .pre-commit-config.yaml | 7 + CITATIONS.md | 2 - README.md | 1 - bin/ipsae.py | 80 +- bin/latest.py | 787 ----------------- bin/zt-search.py | 802 ------------------ conf/gadi.config | 9 +- conf/modules.config | 4 +- conf/test.config | 2 +- conf/test_gadi.config | 13 +- docs/output.md | 3 - docs/usage.md | 12 +- main.nf | 4 +- modules/local/colabfold_batch/main.nf | 4 +- modules/local/collect_confidence.nf | 14 +- modules/local/mmseqs_colabfoldsearch/main.nf | 4 +- modules/local/msa_manager/split_msa.nf | 4 +- modules/local/prepare_interactions.nf | 10 +- modules/local/run_alphafold3/main.nf | 4 +- modules/local/run_boltz/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 2 +- nextflow.config | 6 +- nextflow_schema.json | 18 +- subworkflows/local/msa.nf | 18 +- .../local/utils_nfcore_wisps_pipeline/main.nf | 6 +- .../tests/main.function.nf.test.snap | 2 +- .../tests/main.function.nf.test.snap | 2 +- .../tests/main.workflow.nf.test.snap | 2 +- .../nf-core/utils_nfschema_plugin/main.nf | 1 - .../tests/nextflow.config | 2 +- workflows/wisps.nf | 64 +- 32 files changed, 154 insertions(+), 1751 deletions(-) delete mode 100644 bin/latest.py delete mode 100755 bin/zt-search.py diff --git a/.nf-core.yml b/.nf-core.yml index 10d202b..d6dc0bc 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,10 +1,10 @@ bump_version: null lint: files_exist: - - conf/igenomes.config - - conf/igenomes_ignored.config - - conf/igenomes.config - - conf/igenomes_ignored.config + - conf/igenomes.config + - conf/igenomes_ignored.config + - conf/igenomes.config + - conf/igenomes_ignored.config nf_core_version: 3.0.2 org_path: null repository_type: pipeline @@ -17,7 +17,7 @@ template: org: nf-core outdir: . skip_features: - - igenomes - - fastqc + - igenomes + - fastqc version: 1.0.0dev update: null diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9e9f0e1..13f7acf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,3 +11,10 @@ repos: hooks: - id: editorconfig-checker alias: ec + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-json diff --git a/CITATIONS.md b/CITATIONS.md index 18a8064..6c0bab4 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -10,8 +10,6 @@ ## Pipeline tools - - - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. diff --git a/README.md b/README.md index d69d77c..28b6924 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ workflows use the "tube map" design for that. See https://nf-co.re/docs/contributing/design_guidelines#examples for examples. --> - 2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Usage diff --git a/bin/ipsae.py b/bin/ipsae.py index bca9b42..dd8ad42 100755 --- a/bin/ipsae.py +++ b/bin/ipsae.py @@ -85,7 +85,7 @@ else: print("Wrong PDB or PAE file type ", pdb_path) sys.exit() - + file_path = path_stem + ".txt" file2_path = path_stem + "_byres.txt" pml_path = path_stem + ".pml" @@ -97,7 +97,7 @@ # Define the ptm and d0 functions def ptm_func(x,d0): - return 1.0/(1+(x/d0)**2.0) + return 1.0/(1+(x/d0)**2.0) ptm_func_vec=np.vectorize(ptm_func) # vector version # Define the d0 functions for numbers and arrays; minimum value = 1.0; from Yang and Skolnick, PROTEINS: Structure, Function, and Bioinformatics 57:702–710 (2004) @@ -167,12 +167,12 @@ def parse_cif_atom_line(line,fielddict): #HETATM 1307 C C . TPO A 1 160 ? -2.115 -11.668 12.263 1.00 96.19 160 A 1 #HETATM 1308 O O . TPO A 1 160 ? -1.790 -11.556 11.113 1.00 95.75 160 A 1 # ... - #HETATM 2608 P PG . ATP C 3 . ? -6.858 4.182 10.275 1.00 84.94 1 C 1 - #HETATM 2609 O O1G . ATP C 3 . ? -6.178 5.238 11.074 1.00 75.56 1 C 1 - #HETATM 2610 O O2G . ATP C 3 . ? -5.889 3.166 9.748 1.00 75.15 1 C 1 + #HETATM 2608 P PG . ATP C 3 . ? -6.858 4.182 10.275 1.00 84.94 1 C 1 + #HETATM 2609 O O1G . ATP C 3 . ? -6.178 5.238 11.074 1.00 75.56 1 C 1 + #HETATM 2610 O O2G . ATP C 3 . ? -5.889 3.166 9.748 1.00 75.15 1 C 1 # ... - #HETATM 2639 MG MG . MG D 4 . ? -7.262 2.709 4.825 1.00 91.47 1 D 1 - #HETATM 2640 MG MG . MG E 5 . ? -4.994 2.251 8.755 1.00 85.96 1 E 1 + #HETATM 2639 MG MG . MG D 4 . ? -7.262 2.709 4.825 1.00 91.47 1 D 1 + #HETATM 2640 MG MG . MG E 5 . ? -4.994 2.251 8.755 1.00 85.96 1 E 1 # Boltz1 mmcif files (in non-standard order)) @@ -212,7 +212,7 @@ def parse_cif_atom_line(line,fielddict): #HETATM 2665 O O1B . ATP . 1 ? C -7.04640 8.36577 -7.14326 1 3 C ATP 1 1 #HETATM 2666 O O2B . ATP . 1 ? C -5.79036 7.13926 -5.33995 1 3 C ATP 1 1 - + linelist = line.split() atom_num = linelist[ fielddict['id'] ] atom_name = linelist[ fielddict['label_atom_id'] ] @@ -249,7 +249,7 @@ def parse_cif_atom_line(line,fielddict): def contiguous_ranges(numbers): if not numbers: # Check if the set is empty return - + sorted_numbers = sorted(numbers) # Sort the numbers start = sorted_numbers[0] end = start @@ -267,7 +267,7 @@ def format_range(start, end): else: ranges.append(format_range(start, end)) start = end = number - + # Append the last range after the loop ranges.append(format_range(start, end)) @@ -291,7 +291,7 @@ def init_chainpairdict_set(chainlist): def classify_chains(chains, residue_types): nuc_residue_set = {"DA", "DC", "DT", "DG", "A", "C", "U", "G"} chain_types = {} - + # Get unique chains and iterate over them unique_chains = np.unique(chains) for chain in unique_chains: @@ -301,10 +301,10 @@ def classify_chains(chains, residue_types): chain_residues = residue_types[indices] # Count nucleic acid residues nuc_count = sum(residue in nuc_residue_set for residue in chain_residues) - + # Determine if the chain is a nucleic acid or protein chain_types[chain] = 'nucleic_acid' if nuc_count > 0 else 'protein' - + return chain_types @@ -319,7 +319,7 @@ def classify_chains(chains, residue_types): # For af3 and boltz1: need mask to identify CA atom tokens in plddt vector and pae matrix; # Skip ligand atom tokens and non-CA-atom tokens in PTMs (those not in residue_set) -token_mask=list() +token_mask=list() residue_set= {"ALA", "ARG", "ASN", "ASP", "CYS", "GLN", "GLU", "GLY", "HIS", "ILE", "LEU", "LYS", "MET", "PHE", "PRO", @@ -336,7 +336,7 @@ def classify_chains(chains, residue_types): (atomsite,fieldname)=line.split(".") atomsitefield_dict[fieldname]=atomsitefield_num atomsitefield_num += 1 - + if line.startswith("ATOM") or line.startswith("HETATM"): if cif: atom=parse_cif_atom_line(line, atomsitefield_dict) @@ -395,13 +395,13 @@ def classify_chains(chains, residue_types): chain_pair_type[chain1][chain2]='nucleic_acid' else: chain_pair_type[chain1][chain2]='protein' - + # Calculate distance matrix using NumPy broadcasting distances = np.sqrt(((coordinates[:, np.newaxis, :] - coordinates[np.newaxis, :, :])**2).sum(axis=2)) # Load AF2, AF3, or BOLTZ1 data and extract plddt and pae_matrix (and ptm_matrix if available) if af2: - + if os.path.exists(pae_file_path): if pae_file_path.endswith('.pkl'): @@ -409,35 +409,35 @@ def classify_chains(chains, residue_types): else: with open(pae_file_path, 'r') as file: data = json.load(file) - + if 'iptm' in data: iptm_af2 = float(data['iptm']) else: iptm_af2=-1.0 if 'ptm' in data: ptm_af2 = float(data['ptm']) else: ptm_af2=-1.0 - + if 'plddt' in data: plddt = np.array(data['plddt']) cb_plddt = np.array(data['plddt']) # for pDockQ else: plddt = np.zeros(numres) cb_plddt = np.zeros(numres) - + if 'pae' in data: pae_matrix = np.array(data['pae']) elif 'predicted_aligned_error' in data: pae_matrix=np.array(data['predicted_aligned_error']) - + else: print("AF2 PAE file does not exist: ", pae_file_path) sys.exit() - + if boltz1: # Boltz1 filenames: # AURKA_TPX2_model_0.cif # confidence_AURKA_TPX2_model_0.json # pae_AURKA_TPX2_model_0.npz # plddt_AURKA_TPX2_model_0.npz - + plddt_file_path=pae_file_path.replace("pae","plddt") if os.path.exists(plddt_file_path): @@ -448,7 +448,7 @@ def classify_chains(chains, residue_types): else: plddt = np.zeros(ntokens) cb_plddt = np.zeros(ntokens) - + if os.path.exists(pae_file_path): data_pae = np.load(pae_file_path) pae_matrix_boltz1=np.array(data_pae['pae']) @@ -457,7 +457,7 @@ def classify_chains(chains, residue_types): else: print("Boltz1 PAE file does not exist: ", pae_file_path) sys.exit() - + summary_file_path=pae_file_path.replace("pae","confidence") summary_file_path=summary_file_path.replace(".npz",".json") iptm_boltz1= {chain1: {chain2: 0 for chain2 in unique_chains if chain1 != chain2} for chain1 in unique_chains} @@ -494,7 +494,7 @@ def classify_chains(chains, residue_types): atom_plddts=np.array(data['atom_plddts']) plddt=atom_plddts[CA_atom_num] # pull out residue plddts from Calpha atoms cb_plddt=atom_plddts[CB_atom_num] # pull out residue plddts from Cbeta atoms for pDockQ - + # Get pairwise residue PAE matrix by identifying one token per protein residue. # Modified residues have separate tokens for each atom, so need to pull out Calpha atom as token # Skip ligands @@ -503,7 +503,7 @@ def classify_chains(chains, residue_types): else: print("no PAE data in AF3 json file; quitting") sys.exit() - + # Set pae_matrix for AF3 from subset of full PAE matrix from json file token_array=np.array(token_mask) pae_matrix = pae_matrix_af3[np.ix_(token_array.astype(bool), token_array.astype(bool))] @@ -537,7 +537,7 @@ def classify_chains(chains, residue_types): # ipsae_d0chn = calculate ipsae from PAEs with PAE cutoff; d0 = numres in chain pair = len(chain1) + len(chain2) # ipsae_d0dom = calculate ipsae from PAEs with PAE cutoff; d0 from number of residues in chain1 and chain2 that have interchain PAEB is different from B->A) @@ -618,7 +618,7 @@ def classify_chains(chains, residue_types): for residue in chain2residues: pDockQ_unique_residues[chain1][chain2].add(residue) - + if npairs>0: nres=len(list(pDockQ_unique_residues[chain1][chain2])) mean_plddt= cb_plddt[ list(pDockQ_unique_residues[chain1][chain2])].mean() @@ -629,7 +629,7 @@ def classify_chains(chains, residue_types): x=0.0 pDockQ[chain1][chain2]=0.0 nres=0 - + # pDockQ2 for chain1 in unique_chains: @@ -647,7 +647,7 @@ def classify_chains(chains, residue_types): pae_list=pae_matrix[i][valid_pairs] pae_list_ptm=ptm_func_vec(pae_list,10.0) sum += pae_list_ptm.sum() - + if npairs>0: nres=len(list(pDockQ_unique_residues[chain1][chain2])) mean_plddt= cb_plddt[ list(pDockQ_unique_residues[chain1][chain2])].mean() @@ -659,16 +659,16 @@ def classify_chains(chains, residue_types): x=0.0 nres=0 pDockQ2[chain1][chain2]=0.0 - + # LIS for chain1 in unique_chains: for chain2 in unique_chains: if chain1==chain2: continue - + mask = (chains[:, None] == chain1) & (chains[None, :] == chain2) # Select residues for (chain1, chain2) selected_pae = pae_matrix[mask] # Get PAE values for this pair - + if selected_pae.size > 0: # Ensure we have values valid_pae = selected_pae[selected_pae <= 12] # Apply the threshold if valid_pae.size > 0: @@ -715,7 +715,7 @@ def classify_chains(chains, residue_types): for j in np.where(valid_pairs_ipsae)[0]: jresnum=residues[j]['resnum'] unique_residues_chain2[chain1][chain2].add(jresnum) - + # Track unique residues contributing to iptm in interface valid_pairs = (chains == chain2) & (pae_matrix[i] < pae_cutoff) & (distances[i] < dist_cutoff) dist_valid_pair_counts[chain1][chain2] += np.sum(valid_pairs) @@ -749,7 +749,7 @@ def classify_chains(chains, residue_types): n0res_byres[chain1][chain2] = n0res_byres_all d0res_byres[chain1][chain2] = d0res_byres_all - + for i in range(numres): if chains[i] != chain1: continue @@ -778,7 +778,7 @@ def classify_chains(chains, residue_types): f'{ipsae_d0res_byres[chain1][chain2][i]:8.4f}\n' ) OUT2.write(outstring) - + # Compute interchain ipTM and ipSAE for each chain pair for chain1 in unique_chains: for chain2 in unique_chains: @@ -861,7 +861,7 @@ def classify_chains(chains, residue_types): d0res_max[chain1][chain2]=maxd0 d0res_max[chain2][chain1]=maxd0 - + chaincolor={'A':'magenta', 'B':'marine', 'C':'lime', 'D':'orange', 'E':'yellow', 'F':'cyan', 'G':'lightorange', 'H':'pink', 'I':'deepteal', 'J':'forest', 'K':'lightblue', 'L':'slate', @@ -905,7 +905,7 @@ def classify_chains(chains, residue_types): if af2: iptm_af = iptm_af2 # same for all chain pairs in entry if af3: iptm_af = iptm_af3[chain1][chain2] # symmetric value for each chain pair if boltz1: iptm_af=iptm_boltz1[chain1][chain2] - + outstring=f'{chain1} {chain2} {pae_string:3} {dist_string:3} {"asym":5} ' + ( f'{ipsae_d0res_asym[chain1][chain2]:8.6f} ' f'{ipsae_d0chn_asym[chain1][chain2]:8.6f} ' @@ -963,7 +963,7 @@ def classify_chains(chains, residue_types): f'{pdb_stem}\n') OUT.write(outstring) PML.write("# " + outstring) - + chain_pair= f'color_{chain1}_{chain2}' chain1_residues = f'chain {chain1} and resi {contiguous_ranges(unique_residues_chain1[chain1][chain2])}' chain2_residues = f'chain {chain2} and resi {contiguous_ranges(unique_residues_chain2[chain1][chain2])}' diff --git a/bin/latest.py b/bin/latest.py deleted file mode 100644 index d2b4651..0000000 --- a/bin/latest.py +++ /dev/null @@ -1,787 +0,0 @@ -#!/opt/miniforge/bin/python3 -""" -#!/usr/local/bin/python3 - -Functionality for running mmseqs locally. Takes in a fasta file, outputs final.a3m -""" -import logging -import math -import os -import shutil -import subprocess -import json -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter -from pathlib import Path -from typing import List, Optional, Tuple, Union, Dict -import random - -from input import get_queries, msa_to_str, safe_filename -from utils import AF3Utils - - -logger = logging.getLogger(__name__) - -MODULE_OUTPUT_POS = { - "align": 4, - "convertalis": 4, - "expandaln": 5, - "filterresult": 4, - "lndb": 2, - "mergedbs": 2, - "mvdb": 2, - "pairaln": 4, - "result2msa": 4, - "search": 3, -} - -def rename_output(queries_unique, ext, base): - for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): - os.rename( - base.joinpath(f"{job_number}.{ext}"), - base.joinpath(f"{safe_filename(raw_jobname)}.{ext}"), - ) - -def expand_db(db_path, seq_map, overwrite=True): - index_data = [] - with open(f"{db_path}.index", "r") as in_f: - for line in in_f: - index_data.append([int(x) for x in line.strip().split()]) - - new_index = "" - offset = 0 - seq_itr = 0 - with open(f"{db_path}-tmp", "wb") as out_file: - for seqs in seq_map: - for seq_index in seqs: - start_byte = index_data[seq_index][1] - byte_cnt = index_data[seq_index][2] - with open(f"{db_path}", "rb") as f: - f.seek(start_byte) - out_file.write(f.read(byte_cnt)) - new_index += f"{seq_itr}\t{offset}\t{byte_cnt}\n" - offset += byte_cnt - seq_itr += 1 - - with open(f"{db_path}-tmp.index", "w") as out_f: - out_f.write(new_index) - - if overwrite: - os.rename(f"{db_path}-tmp.index", f"{db_path}.index") - os.rename(f"{db_path}-tmp", f"{db_path}") - -def run_mmseqs(mmseqs: Path, params: List[Union[str, Path]]): - module = params[0] - if module in MODULE_OUTPUT_POS: - output_pos = MODULE_OUTPUT_POS[module] - output_path = Path(params[output_pos]).with_suffix('.dbtype') - if output_path.exists(): - logger.info(f"Skipping {module} because {output_path} already exists") - return - - params_log = " ".join(str(i) for i in params) - logger.info(f"Running {mmseqs} {params_log}") - # hide MMseqs2 verbose paramters list that clogs up the log - os.environ["MMSEQS_CALL_DEPTH"] = "1" - os.environ["MMSEQS_FORCE_MERGE"] = "True" - subprocess.check_call([mmseqs] + params) - - -def mmseqs_search_monomer( - dbbase: Path, - base: Path, - uniref_db: Path = Path("uniref30_2302_db"), - template_db: Path = Path(""), # Unused by default - metagenomic_db: Path = Path("colabfold_envdb_202108_db"), - mmseqs: Path = Path("mmseqs"), - use_env: bool = True, - use_templates: bool = False, - filter: bool = True, - expand_eval: float = math.inf, - align_eval: int = 10, - diff: int = 3000, - qsc: float = -20.0, - max_accept: int = 1000000, - prefilter_mode: int = 0, - s: float = 8, - db_load_mode: int = 2, - threads: int = 32, - gpu: int = 0, - gpu_server: int = 0, - unpack: bool = True, -): - """Run mmseqs with a local colabfold database set - - db1: uniprot db (UniRef30) - db2: Template (unused by default) - db3: metagenomic db (colabfold_envdb_202108 or bfd_mgy_colabfold, the former is preferred) - """ - if filter: - # 0.1 was not used in benchmarks due to POSIX shell bug in line above - # EXPAND_EVAL=0.1 - align_eval = 10 - qsc = 0.8 - max_accept = 100000 - - used_dbs = [uniref_db] - if use_templates: - used_dbs.append(template_db) - if use_env: - used_dbs.append(metagenomic_db) - - for db in used_dbs: - if not dbbase.joinpath(f"{db}.dbtype").is_file(): - raise FileNotFoundError(f"Database {db} does not exist") - if ( - ( - not dbbase.joinpath(f"{db}.idx").is_file() - and not dbbase.joinpath(f"{db}.idx.index").is_file() - ) - or os.environ.get("MMSEQS_IGNORE_INDEX", False) - ): - logger.info("Search does not use index") - db_load_mode = 0 - dbSuffix1 = "_seq" - dbSuffix2 = "_aln" - dbSuffix3 = "" - else: - dbSuffix1 = ".idx" - dbSuffix2 = ".idx" - dbSuffix3 = ".idx" - - search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000"] - template_search_param = [] - if gpu: - search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently - template_search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] - else: - search_param += ["--prefilter-mode", str(prefilter_mode)] - template_search_param += ["-s", "7.5", "--prefilter-mode", str(prefilter_mode)] - if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity - search_param += ["-s", "{:.1f}".format(s)] - else: - search_param += ["--k-score", "'seq:96,prof:80'"] - if gpu_server: - search_param += ["--gpu-server", str(gpu_server)] - - filter_param = ["--filter-msa", str(filter), "--filter-min-enable", "1000", "--diff", str(diff), "--qid", "0.0,0.2,0.4,0.6,0.8,1.0", "--qsc", "0", "--max-seq-id", "0.95",] - expand_param = ["--expansion-mode", "0", "-e", str(expand_eval), "--expand-filter-clusters", str(filter), "--max-seq-id", "0.95",] - - if not base.joinpath("uniref.a3m").with_suffix('.a3m.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(uniref_db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads)] + search_param) - os.mkdir(base.joinpath("kept_data")) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_1"), base.joinpath("kept_data/aln_1")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_0"), base.joinpath("kept_data/aln_0")]) - #run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_0"), base.joinpath("kept_data/profile_0")]) - #exit() - run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) - - run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{uniref_db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + expand_param) - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", str(threads), "--alt-ali", "10", "-a"]) - run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), - base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_filter"), "--db-load-mode", - str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", "--threads", - str(threads), "--max-seq-id", "1.0", "--filter-min-enable", "100"]) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), - base.joinpath("res_exp_realign_filter"), base.joinpath("uniref.a3m"), "--msa-format-mode", - "6", "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_filter")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - - else: - logger.info(f"Skipping {uniref_db} search because uniref.a3m already exists") - - if use_env and not base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m").with_suffix('.a3m.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(metagenomic_db), base.joinpath("res_env"), - base.joinpath("tmp3"), "--threads", str(threads)] + search_param) - run_mmseqs(mmseqs, ["expandaln", base.joinpath("prof_res"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), base.joinpath("res_env"), - dbbase.joinpath(f"{metagenomic_db}{dbSuffix2}"), base.joinpath("res_env_exp"), "-e", str(expand_eval), - "--expansion-mode", "0", "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) - run_mmseqs(mmseqs, ["align", base.joinpath("tmp3/latest/profile_1"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp"), base.joinpath("res_env_exp_realign"), "--db-load-mode", - str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", - str(threads), "--alt-ali", "10", "-a"]) - run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp_realign"), base.joinpath("res_env_exp_realign_filter"), - "--db-load-mode", str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", - "--max-seq-id", "1.0", "--threads", str(threads), "--filter-min-enable", "100"]) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp_realign_filter"), - base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m"), "--msa-format-mode", "6", - "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign_filter")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env")]) - elif use_env: - logger.info(f"Skipping {metagenomic_db} search because bfd.mgnify30.metaeuk30.smag30.a3m already exists") - - if use_templates and not base.joinpath(f"{template_db}.m8").with_suffix('.m8.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(template_db), base.joinpath("res_pdb"), - base.joinpath("tmp2"), "--db-load-mode", str(db_load_mode), "--threads", str(threads), "-a", "-e", "0.1"] + template_search_param) - run_mmseqs(mmseqs, ["convertalis", base.joinpath("prof_res"), dbbase.joinpath(f"{template_db}{dbSuffix3}"), base.joinpath("res_pdb"), - base.joinpath(f"{template_db}"), "--format-output", - "query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits,cigar", - "--db-output", "1", - "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_pdb")]) - elif use_templates: - logger.info(f"Skipping {template_db} search because {template_db}.m8 already exists") - - if use_env: - run_mmseqs(mmseqs, ["mergedbs", base.joinpath("qdb"), base.joinpath("final.a3m"), base.joinpath("uniref.a3m"), base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) - else: - run_mmseqs(mmseqs, ["mvdb", base.joinpath("uniref.a3m"), base.joinpath("final.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) - - if unpack: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath("final.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".a3m"]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("final.a3m")]) - - if use_templates: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath(f"{template_db}"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".m8"]) - if base.joinpath(f"{template_db}").exists(): - run_mmseqs(mmseqs, ["rmdb", base.joinpath(f"{template_db}")]) - - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - shutil.rmtree(base.joinpath("tmp")) - if use_templates: - shutil.rmtree(base.joinpath("tmp2")) - if use_env: - shutil.rmtree(base.joinpath("tmp3")) - -def mmseqs_search_pair( - dbbase: Path, - base: Path, - uniref_db: Path = Path("uniref30_2302_db"), - spire_db: Path = Path("spire_ctg10_2401_db"), - mmseqs: Path = Path("mmseqs"), - pair_env: bool = True, - prefilter_mode: int = 0, - s: float = 8, - threads: int = 64, - gpu: bool = False, - gpu_server: bool = False, - db_load_mode: int = 2, - pairing_strategy: int = 0, - unpack: bool = True, - seq_map: list=[], -): - if not dbbase.joinpath(f"{uniref_db}.dbtype").is_file(): - raise FileNotFoundError(f"Database {uniref_db} does not exist") - if ( - ( - not dbbase.joinpath(f"{uniref_db}.idx").is_file() - and not dbbase.joinpath(f"{uniref_db}.idx.index").is_file() - ) - or os.environ.get("MMSEQS_IGNORE_INDEX", False) - ): - logger.info("Search does not use index") - db_load_mode = 0 - dbSuffix1 = "_seq" - dbSuffix2 = "_aln" - else: - dbSuffix1 = ".idx" - dbSuffix2 = ".idx" - - if pair_env: - db = spire_db - output = ".env.paired.a3m" - else: - db = uniref_db - output = ".paired.a3m" - - # fmt: off - # @formatter:off - search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000",] - if gpu: - search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently - else: - search_param += ["--prefilter-mode", str(prefilter_mode)] - if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity - search_param += ["-s", "{:.1f}".format(s)] - else: - search_param += ["--k-score", "'seq:96,prof:80'"] - if gpu_server: - search_param += ["--gpu-server", str(gpu_server)] - expand_param = ["--expansion-mode", "0", "-e", "inf", "--expand-filter-clusters", "0", "--max-seq-id", "0.95",] - - if db != uniref_db: - # cleaning - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - - run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads),] + search_param,) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) - else: - os.makedirs(base.joinpath("tmp/latest")) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_0"), base.joinpath("tmp/latest/aln_0")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_1"), base.joinpath("tmp/latest/aln_1")]) - #run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/profile_0"), base.joinpath("tmp/latest/profile_0")]) - shutil.rmtree(base.joinpath("kept_data")) - - run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads),] + expand_param,) - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", "0.001", "--max-accept", "1000000", "--threads", str(threads),],) - - # Added by Ziad - #shutil.copy(base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign-minimal")) - #shutil.copy(base.joinpath("res_exp_realign.index"), base.joinpath("res_exp_realign-minimal.index")) - #exit() - run_mmseqs(mmseqs, ["cpdb", base.joinpath("qdb"), base.joinpath("qdb-minimal")]) - - for merged_db in [base.joinpath("res_exp_realign"), base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/aln_1")]: - print(f"merging {merged_db}") - expand_db(merged_db, seq_map, True) - - os.rename(base.joinpath("original-query.fas"), base.joinpath("query.fas")) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("qdb")]) - query_file = base.joinpath("query.fas") - run_mmseqs( - mmseqs, - ["createdb", query_file, base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], - ) - shutil.copy(base.joinpath("org-qdb.lookup"), base.joinpath("qdb.lookup")) - - - # create profile - prof_param = f"--sub-mat aa:blosum62.out,nucl:nucleotide.out -e 0.1 --mask-profile 1 --e-profile 0.1 --comp-bias-corr 1 --comp-bias-corr-scale 1 --wg 0 --allow-deletion 0 --filter-msa 1 --filter-min-enable 0 --max-seq-id 0.9 --qid 0.0 --qsc -20 --cov 0 --diff 1000 --pseudo-cnt-mode 0 --pca substitution:1.100,context:1.400 --pcb substitution:4.100,context:5.800 --db-load-mode 0 --gap-open aa:11,nucl:5 --gap-extend aa:1,nucl:2 --threads {threads} --compressed 0 -v 3 --profile-output-mode 0" - run_mmseqs( - mmseqs, - ["result2profile", base.joinpath("qdb"), dbbase.joinpath(db), - base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/profile_0")] + prof_param.split(), - ) - run_mmseqs( - mmseqs, - ["result2profile", base.joinpath("tmp/latest/profile_0"), dbbase.joinpath(db), - base.joinpath("tmp/latest/aln_1"), base.joinpath("prof_res")] + prof_param.split(), - ) - - ### - - run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_pair"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "0", "--threads", str(threads), ],) - - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp_realign_pair"), base.joinpath("res_exp_realign_pair_bt"), "--db-load-mode", str(db_load_mode), "-e", "inf", "-a", "--threads", str(threads), ],) - run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign_pair_bt"), base.joinpath("res_final"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "1", "--threads", str(threads),],) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_final"), base.joinpath("pair.a3m"), "--db-load-mode", str(db_load_mode), "--msa-format-mode", "5", "--threads", str(threads),],) - - if unpack: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath("pair.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", output,],) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("pair.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair_bt")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_final")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - shutil.rmtree(base.joinpath("tmp")) - # @formatter:on - # fmt: on - -def main(): - parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) - parser.add_argument( - "query", - type=Path, - help="fasta files with the queries.", - ) - parser.add_argument( - "dbbase", - type=Path, - help="The path to the database and indices you downloaded and created with setup_databases.sh", - ) - parser.add_argument( - "base", type=Path, help="Directory for the results (and intermediate files)" - ) - parser.add_argument( - "--prefilter-mode", - type=int, - default=0, - choices=[0, 1, 2], - help="Prefiltering algorithm to use: 0: k-mer (high-mem), 1: ungapped (high-cpu), 2: exhaustive (no prefilter, very slow). See wiki for more details: https://github.com/sokrypton/ColabFold/wiki#colabfold_search", - ) - parser.add_argument( - "-s", - type=float, - default=None, - help="MMseqs2 sensitivity. Lowering this will result in a much faster search but possibly sparser MSAs. By default, the k-mer threshold is directly set to the same one of the server, which corresponds to a sensitivity of ~8.", - ) - # dbs are uniref, templates and environmental - # We normally don't use templates - parser.add_argument( - "--db1", type=Path, default=Path("uniref30_2302_db"), help="UniRef database" - ) - parser.add_argument("--db2", type=Path, default=Path(""), help="Templates database") - parser.add_argument( - "--db3", - type=Path, - default=Path("colabfold_envdb_202108_db"), - help="Environmental database", - ) - parser.add_argument("--db4", type=Path, default=Path("spire_ctg10_2401_db"), help="Environmental pairing database") - - # poor man's boolean arguments - parser.add_argument( - "--use-env", type=int, default=1, choices=[0, 1], help="Use --db3" - ) - parser.add_argument( - "--use-env-pairing", type=int, default=0, choices=[0, 1], help="Use --db4" - ) - parser.add_argument( - "--use-templates", type=int, default=0, choices=[0, 1], help="Use --db2" - ) - parser.add_argument( - "--filter", - type=int, - default=1, - choices=[0, 1], - help="Filter the MSA by pre-defined align_eval, qsc, max_accept", - ) - - # mmseqs params - parser.add_argument( - "--mmseqs", - type=Path, - default=Path("mmseqs"), - help="Location of the mmseqs binary.", - ) - parser.add_argument( - "--expand-eval", - type=float, - default=math.inf, - help="e-val threshold for 'expandaln'.", - ) - parser.add_argument( - "--align-eval", type=int, default=10, help="e-val threshold for 'align'." - ) - parser.add_argument( - "--diff", - type=int, - default=3000, - help="filterresult - Keep at least this many seqs in each MSA block.", - ) - parser.add_argument( - "--qsc", - type=float, - default=-20.0, - help="filterresult - reduce diversity of output MSAs using min score thresh.", - ) - parser.add_argument( - "--max-accept", - type=int, - default=1000000, - help="align - Maximum accepted alignments before alignment calculation for a query is stopped.", - ) - parser.add_argument( - "--pairing_strategy", type=int, default=0, help="pairaln - Pairing strategy." - ) - parser.add_argument( - "--db-load-mode", - type=int, - default=0, - help="Database preload mode 0: auto, 1: fread, 2: mmap, 3: mmap+touch", - ) - parser.add_argument( - "--unpack", type=int, default=1, choices=[0, 1], help="Unpack results to loose files or keep MMseqs2 databases." - ) - parser.add_argument( - "--threads", type=int, default=64, help="Number of threads to use." - ) - parser.add_argument( - "--gpu", type=int, default=0, choices=[0, 1], help="Whether to use GPU (1) or not (0). Control number of GPUs with CUDA_VISIBLE_DEVICES env var." - ) - parser.add_argument( - "--gpu-server", type=int, default=0, choices=[0, 1], help="Whether to use GPU server (1) or not (0)" - ) - - # AlphaFold3 relevant params - parser.add_argument( - "--af3-json", action="store_true", help="Generate input JSON for AlphaFold3 from the provided FASTA/A3M file." - ) - parser.add_argument( - "--af3-msa-as-path", action="store_true", help="Save MSA as a file path instead of a string in the JSON." - ) - args = parser.parse_args() - - logging.basicConfig(level = logging.INFO) - - queries, is_complex = get_queries(args.query, None) - - monomor_seqs = set() - multimer_seqs = set() - queries_unique = [] - overall_unique_seqs = [] - seq_map = [] - for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): - # remove duplicates before searching - query_sequences = ( - [query_sequences] if isinstance(query_sequences, str) else query_sequences - ) - if len(query_sequences) == 1: - monomor_seqs.add(query_sequences[0]) - else: - multimer_seqs.update(query_sequences) - - query_seqs_unique = [] - for x in query_sequences: - if x not in query_seqs_unique: - query_seqs_unique.append(x) - - if x not in overall_unique_seqs: - overall_unique_seqs.append(x) - - - query_seqs_cardinality = [0] * len(query_seqs_unique) - for seq in query_sequences: - seq_idx = query_seqs_unique.index(seq) - query_seqs_cardinality[seq_idx] += 1 - - queries_unique.append([raw_jobname, query_seqs_unique, query_seqs_cardinality, other_molecules]) - # Ziad added - - monomor_seqs = monomor_seqs.difference(multimer_seqs) - - for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): - seq_map.append([]) - query_seqs_unique = [] - query_sequences = ( - [query_sequences] if isinstance(query_sequences, str) else query_sequences - ) - for x in query_sequences: - if x not in query_seqs_unique: - query_seqs_unique.append(x) - seq_map[job_number].append(overall_unique_seqs.index(x)) - - args.base.mkdir(exist_ok=True, parents=True) - - query_file = args.base.joinpath("original-query.fas") - with query_file.open("w") as f: - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - _ - ) in enumerate(queries_unique): - for j, seq in enumerate(query_sequences): - # The header of first sequence set as 101 - query_seq_headername = 101 + j - f.write(f">{query_seq_headername}\n{seq}\n") - - query_file = args.base.joinpath("query.fas") - with query_file.open("w") as f: - for j, seq in enumerate(overall_unique_seqs): - # The header of first sequence set as 101 - query_seq_headername = 101 + j - f.write(f">{query_seq_headername}\n{seq}\n") - - run_mmseqs( - args.mmseqs, - ["createdb", query_file, args.base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], - ) - with args.base.joinpath("qdb.lookup").open("w") as f: - id = 0 - file_number = 0 - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - _ - ) in enumerate(queries_unique): - for seq in query_sequences: - raw_jobname_first = raw_jobname.split()[0] - f.write(f"{id}\t{raw_jobname_first}\t{file_number}\n") - id += 1 - file_number += 1 - shutil.copy(args.base.joinpath("qdb.lookup"), args.base.joinpath("org-qdb.lookup")) - - mmseqs_search_monomer( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - template_db=args.db2, - metagenomic_db=args.db3, - use_env=args.use_env, - use_templates=args.use_templates, - filter=args.filter, - expand_eval=args.expand_eval, - align_eval=args.align_eval, - diff=args.diff, - qsc=args.qsc, - max_accept=args.max_accept, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - unpack=args.unpack, - ) - ## - #exit() - for seq_id in range(len(overall_unique_seqs)): - shutil.copy(args.base.joinpath(f"{seq_id}.a3m"), args.base.joinpath(f"u-{seq_id}.a3m")) - seq_itr = 0 - for seqs in seq_map: - for j, seq_index in enumerate(seqs): - #if seq_index == seq_id: - a3m_content = open(args.base.joinpath(f"u-{seq_index}.a3m"), "r").readlines() - header = a3m_content[0] - new_header = f">{101 + j}\n" - with open(args.base.joinpath(f"{seq_itr}.a3m"), "w") as out_f: - for line in a3m_content: - out_f.write(line.replace(header, new_header)) - seq_itr += 1 - - #exit() - for seq_id in range(len(overall_unique_seqs)): - os.remove(args.base.joinpath(f"u-{seq_id}.a3m")) - ## finish monomors and keep going for hybrid batch - ## - if is_complex is True: - mmseqs_search_pair( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - pairing_strategy=args.pairing_strategy, - pair_env=False, - unpack=args.unpack, - seq_map=seq_map - ) - #exit() - if args.use_env_pairing: - mmseqs_search_pair( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - spire_db=args.db4, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - pairing_strategy=args.pairing_strategy, - pair_env=True, - unpack=args.unpack, - ) - #exit() - if args.unpack or args.af3_json: - id = 0 - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - other_molecules, - ) in enumerate(queries_unique): - unpaired_msa = [] - paired_msa = None - if len(query_seqs_cardinality) > 1: - paired_msa = [] - for seq in query_sequences: - with args.base.joinpath(f"{id}.a3m").open("r") as f: - unpaired_msa.append(f.read()) - if args.af3_json: - args.base.joinpath(f"{id}.a3m").unlink() - - if args.use_env_pairing: - with open(args.base.joinpath(f"{id}.paired.a3m"), 'a') as file_pair: - with open(args.base.joinpath(f"{id}.env.paired.a3m"), 'r') as file_pair_env: - while chunk := file_pair_env.read(10 * 1024 * 1024): - file_pair.write(chunk) - if args.unpack: - args.base.joinpath(f"{id}.env.paired.a3m").unlink() - - if len(query_seqs_cardinality) > 1: - with args.base.joinpath(f"{id}.paired.a3m").open("r") as f: - paired_msa.append(f.read()) - if args.unpack: - args.base.joinpath(f"{id}.paired.a3m").unlink() - #os.remove(args.base.joinpath(f"{id}.a3m")) - id += 1 - - if args.af3_json: - af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, paired_msa, other_molecules) - with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: - f.write(json.dumps(af3.content, indent=4)) - - if args.unpack: - msa = msa_to_str( - unpaired_msa, paired_msa, query_sequences, query_seqs_cardinality - ) - args.base.joinpath(f"{job_number}.a3m").write_text(msa) - #exit() - #os.remove(args.base.joinpath("res_exp_realign-minimal.index")) - #os.remove(args.base.joinpath("res_exp_realign-minimal")) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res_exp_realign-minimal")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal_h")]) - - - - else: - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res_h")]) - os.remove(args.base.joinpath("original-query.fas")) - - if args.af3_json: - id = 0 - for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): - unpaired_msa = [] - for seq in query_sequences: - with args.base.joinpath(f"{id}.a3m").open("r") as f: - unpaired_msa.append(f.read()) - os.remove(args.base.joinpath(f"{id}.a3m")) - id += 1 - - # Create AF3Utils object and write JSON - af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, None, other_molecules) - with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: - f.write(json.dumps(af3.content, indent=4)) - - if args.unpack: - # rename a3m files - rename_output(queries_unique, "a3m", args.base) - - # rename m8 files - if args.use_templates: - id = 0 - for raw_jobname, query_sequences, query_seqs_cardinality, _ in queries_unique: - with args.base.joinpath(f"{safe_filename(raw_jobname)}_{args.db2}.m8").open( - "w" - ) as f: - for _ in range(len(query_seqs_cardinality)): - with args.base.joinpath(f"{id}.m8").open("r") as g: - f.write(g.read()) - os.remove(args.base.joinpath(f"{id}.m8")) - id += 1 - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb_h")]) - - if args.af3_json: - # rename json files - rename_output(queries_unique, "json", args.base) - - query_file.unlink() - os.remove(args.base.joinpath("org-qdb.lookup")) - - -if __name__ == "__main__": - main() diff --git a/bin/zt-search.py b/bin/zt-search.py deleted file mode 100755 index 5026066..0000000 --- a/bin/zt-search.py +++ /dev/null @@ -1,802 +0,0 @@ -#!/opt/miniforge/bin/python3 -""" -#!/usr/local/bin/python3 - -Functionality for running mmseqs locally. Takes in a fasta file, outputs final.a3m -""" -import logging -import math -import os -import shutil -import subprocess -import json -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter -from pathlib import Path -from typing import List, Optional, Tuple, Union, Dict -import random - -from input import get_queries, msa_to_str, safe_filename -from utils import AF3Utils - - -logger = logging.getLogger(__name__) - -MODULE_OUTPUT_POS = { - "align": 4, - "convertalis": 4, - "expandaln": 5, - "filterresult": 4, - "lndb": 2, - "mergedbs": 2, - "mvdb": 2, - "pairaln": 4, - "result2msa": 4, - "search": 3, -} - -def rename_output(queries_unique, ext, base): - for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): - os.rename( - base.joinpath(f"{job_number}.{ext}"), - base.joinpath(f"{safe_filename(raw_jobname)}.{ext}"), - ) - -def expand_db(db_path, seq_map, overwrite=True): - index_data = [] - with open(f"{db_path}.index", "r") as in_f: - for line in in_f: - index_data.append([int(x) for x in line.strip().split()]) - - print(index_data) - new_index = "" - offset = 0 - seq_itr = 0 - with open(f"{db_path}-tmp", "wb") as out_file: - for seqs in seq_map: - for seq_index in seqs: - start_byte = index_data[seq_index][1] - byte_cnt = index_data[seq_index][2] - print(start_byte, byte_cnt, index_data[seq_index]) - with open(f"{db_path}", "rb") as f: - f.seek(start_byte) - out_file.write(f.read(byte_cnt)) - new_index += f"{seq_itr}\t{offset}\t{byte_cnt}\n" - offset += index_data[seq_index][2] - seq_itr += 1 - - with open(f"{db_path}-tmp.index", "w") as out_f: - out_f.write(new_index) - - if overwrite: - os.rename(f"{db_path}-tmp.index", f"{db_path}.index") - os.rename(f"{db_path}-tmp", f"{db_path}") - -def run_mmseqs(mmseqs: Path, params: List[Union[str, Path]]): - module = params[0] - if module in MODULE_OUTPUT_POS: - output_pos = MODULE_OUTPUT_POS[module] - output_path = Path(params[output_pos]).with_suffix('.dbtype') - if output_path.exists(): - logger.info(f"Skipping {module} because {output_path} already exists") - return - - params_log = " ".join(str(i) for i in params) - logger.info(f"Running {mmseqs} {params_log}") - # hide MMseqs2 verbose paramters list that clogs up the log - os.environ["MMSEQS_CALL_DEPTH"] = "1" - os.environ["MMSEQS_FORCE_MERGE"] = "True" - subprocess.check_call([mmseqs] + params) - - -def mmseqs_search_monomer( - dbbase: Path, - base: Path, - uniref_db: Path = Path("uniref30_2302_db"), - template_db: Path = Path(""), # Unused by default - metagenomic_db: Path = Path("colabfold_envdb_202108_db"), - mmseqs: Path = Path("mmseqs"), - use_env: bool = True, - use_templates: bool = False, - filter: bool = True, - expand_eval: float = math.inf, - align_eval: int = 10, - diff: int = 3000, - qsc: float = -20.0, - max_accept: int = 1000000, - prefilter_mode: int = 0, - s: float = 8, - db_load_mode: int = 2, - threads: int = 32, - gpu: int = 0, - gpu_server: int = 0, - unpack: bool = True, -): - """Run mmseqs with a local colabfold database set - - db1: uniprot db (UniRef30) - db2: Template (unused by default) - db3: metagenomic db (colabfold_envdb_202108 or bfd_mgy_colabfold, the former is preferred) - """ - if filter: - # 0.1 was not used in benchmarks due to POSIX shell bug in line above - # EXPAND_EVAL=0.1 - align_eval = 10 - qsc = 0.8 - max_accept = 100000 - - used_dbs = [uniref_db] - if use_templates: - used_dbs.append(template_db) - if use_env: - used_dbs.append(metagenomic_db) - - for db in used_dbs: - if not dbbase.joinpath(f"{db}.dbtype").is_file(): - raise FileNotFoundError(f"Database {db} does not exist") - if ( - ( - not dbbase.joinpath(f"{db}.idx").is_file() - and not dbbase.joinpath(f"{db}.idx.index").is_file() - ) - or os.environ.get("MMSEQS_IGNORE_INDEX", False) - ): - logger.info("Search does not use index") - db_load_mode = 0 - dbSuffix1 = "_seq" - dbSuffix2 = "_aln" - dbSuffix3 = "" - else: - dbSuffix1 = ".idx" - dbSuffix2 = ".idx" - dbSuffix3 = ".idx" - - search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000"] - template_search_param = [] - if gpu: - search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently - template_search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] - else: - search_param += ["--prefilter-mode", str(prefilter_mode)] - template_search_param += ["-s", "7.5", "--prefilter-mode", str(prefilter_mode)] - if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity - search_param += ["-s", "{:.1f}".format(s)] - else: - search_param += ["--k-score", "'seq:96,prof:80'"] - if gpu_server: - search_param += ["--gpu-server", str(gpu_server)] - - filter_param = ["--filter-msa", str(filter), "--filter-min-enable", "1000", "--diff", str(diff), "--qid", "0.0,0.2,0.4,0.6,0.8,1.0", "--qsc", "0", "--max-seq-id", "0.95",] - expand_param = ["--expansion-mode", "0", "-e", str(expand_eval), "--expand-filter-clusters", str(filter), "--max-seq-id", "0.95",] - - if not base.joinpath("uniref.a3m").with_suffix('.a3m.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(uniref_db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads)] + search_param) - os.mkdir(base.joinpath("kept_data")) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_1"), base.joinpath("kept_data/aln_1")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/aln_0"), base.joinpath("kept_data/aln_0")]) - #run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_0"), base.joinpath("kept_data/profile_0")]) - #exit() - run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) - - run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{uniref_db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + expand_param) - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", str(threads), "--alt-ali", "10", "-a"]) - run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), - base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_filter"), "--db-load-mode", - str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", "--threads", - str(threads), "--max-seq-id", "1.0", "--filter-min-enable", "100"]) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{uniref_db}{dbSuffix1}"), - base.joinpath("res_exp_realign_filter"), base.joinpath("uniref.a3m"), "--msa-format-mode", - "6", "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_filter")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - - else: - logger.info(f"Skipping {uniref_db} search because uniref.a3m already exists") - - if use_env and not base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m").with_suffix('.a3m.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(metagenomic_db), base.joinpath("res_env"), - base.joinpath("tmp3"), "--threads", str(threads)] + search_param) - run_mmseqs(mmseqs, ["expandaln", base.joinpath("prof_res"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), base.joinpath("res_env"), - dbbase.joinpath(f"{metagenomic_db}{dbSuffix2}"), base.joinpath("res_env_exp"), "-e", str(expand_eval), - "--expansion-mode", "0", "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) - run_mmseqs(mmseqs, ["align", base.joinpath("tmp3/latest/profile_1"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp"), base.joinpath("res_env_exp_realign"), "--db-load-mode", - str(db_load_mode), "-e", str(align_eval), "--max-accept", str(max_accept), "--threads", - str(threads), "--alt-ali", "10", "-a"]) - run_mmseqs(mmseqs, ["filterresult", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp_realign"), base.joinpath("res_env_exp_realign_filter"), - "--db-load-mode", str(db_load_mode), "--qid", "0", "--qsc", str(qsc), "--diff", "0", - "--max-seq-id", "1.0", "--threads", str(threads), "--filter-min-enable", "100"]) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{metagenomic_db}{dbSuffix1}"), - base.joinpath("res_env_exp_realign_filter"), - base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m"), "--msa-format-mode", "6", - "--db-load-mode", str(db_load_mode), "--threads", str(threads)] + filter_param) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign_filter")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env_exp")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_env")]) - elif use_env: - logger.info(f"Skipping {metagenomic_db} search because bfd.mgnify30.metaeuk30.smag30.a3m already exists") - - if use_templates and not base.joinpath(f"{template_db}.m8").with_suffix('.m8.dbtype').exists(): - run_mmseqs(mmseqs, ["search", base.joinpath("prof_res"), dbbase.joinpath(template_db), base.joinpath("res_pdb"), - base.joinpath("tmp2"), "--db-load-mode", str(db_load_mode), "--threads", str(threads), "-a", "-e", "0.1"] + template_search_param) - run_mmseqs(mmseqs, ["convertalis", base.joinpath("prof_res"), dbbase.joinpath(f"{template_db}{dbSuffix3}"), base.joinpath("res_pdb"), - base.joinpath(f"{template_db}"), "--format-output", - "query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits,cigar", - "--db-output", "1", - "--db-load-mode", str(db_load_mode), "--threads", str(threads)]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_pdb")]) - elif use_templates: - logger.info(f"Skipping {template_db} search because {template_db}.m8 already exists") - - if use_env: - run_mmseqs(mmseqs, ["mergedbs", base.joinpath("qdb"), base.joinpath("final.a3m"), base.joinpath("uniref.a3m"), base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("bfd.mgnify30.metaeuk30.smag30.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) - else: - run_mmseqs(mmseqs, ["mvdb", base.joinpath("uniref.a3m"), base.joinpath("final.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("uniref.a3m")]) - - if unpack: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath("final.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".a3m"]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("final.a3m")]) - - if use_templates: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath(f"{template_db}"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", ".m8"]) - if base.joinpath(f"{template_db}").exists(): - run_mmseqs(mmseqs, ["rmdb", base.joinpath(f"{template_db}")]) - - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - shutil.rmtree(base.joinpath("tmp")) - if use_templates: - shutil.rmtree(base.joinpath("tmp2")) - if use_env: - shutil.rmtree(base.joinpath("tmp3")) - -def mmseqs_search_pair( - dbbase: Path, - base: Path, - uniref_db: Path = Path("uniref30_2302_db"), - spire_db: Path = Path("spire_ctg10_2401_db"), - mmseqs: Path = Path("mmseqs"), - pair_env: bool = True, - prefilter_mode: int = 0, - s: float = 8, - threads: int = 64, - gpu: bool = False, - gpu_server: bool = False, - db_load_mode: int = 2, - pairing_strategy: int = 0, - unpack: bool = True, - seq_map: list=[], -): - if not dbbase.joinpath(f"{uniref_db}.dbtype").is_file(): - raise FileNotFoundError(f"Database {uniref_db} does not exist") - if ( - ( - not dbbase.joinpath(f"{uniref_db}.idx").is_file() - and not dbbase.joinpath(f"{uniref_db}.idx.index").is_file() - ) - or os.environ.get("MMSEQS_IGNORE_INDEX", False) - ): - logger.info("Search does not use index") - db_load_mode = 0 - dbSuffix1 = "_seq" - dbSuffix2 = "_aln" - else: - dbSuffix1 = ".idx" - dbSuffix2 = ".idx" - - if pair_env: - db = spire_db - output = ".env.paired.a3m" - else: - db = uniref_db - output = ".paired.a3m" - - # fmt: off - # @formatter:off - search_param = ["--num-iterations", "3", "--db-load-mode", str(db_load_mode), "-a", "-e", "0.1", "--max-seqs", "10000",] - if gpu: - search_param += ["--gpu", str(gpu), "--prefilter-mode", "1"] # gpu version only supports ungapped prefilter currently - else: - search_param += ["--prefilter-mode", str(prefilter_mode)] - if s is not None: # sensitivy can only be set for non-gpu version, gpu version runs at max sensitivity - search_param += ["-s", "{:.1f}".format(s)] - else: - search_param += ["--k-score", "'seq:96,prof:80'"] - if gpu_server: - search_param += ["--gpu-server", str(gpu_server)] - expand_param = ["--expansion-mode", "0", "-e", "inf", "--expand-filter-clusters", "0", "--max-seq-id", "0.95",] - - if db != uniref_db: - # cleaning - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - - run_mmseqs(mmseqs, ["search", base.joinpath("qdb"), dbbase.joinpath(db), base.joinpath("res"), base.joinpath("tmp"), "--threads", str(threads),] + search_param,) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("tmp/latest/profile_1"), base.joinpath("prof_res")]) - run_mmseqs(mmseqs, ["lndb", base.joinpath("qdb_h"), base.joinpath("prof_res_h")]) - else: - os.makedirs(base.joinpath("tmp/latest")) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_0"), base.joinpath("tmp/latest/aln_0")]) - run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/aln_1"), base.joinpath("tmp/latest/aln_1")]) - #run_mmseqs(mmseqs, ["mvdb", base.joinpath("kept_data/profile_0"), base.joinpath("tmp/latest/profile_0")]) - shutil.rmtree(base.joinpath("kept_data")) - - run_mmseqs(mmseqs, ["expandaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res"), dbbase.joinpath(f"{db}{dbSuffix2}"), base.joinpath("res_exp"), "--db-load-mode", str(db_load_mode), "--threads", str(threads),] + expand_param,) - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp"), base.joinpath("res_exp_realign"), "--db-load-mode", str(db_load_mode), "-e", "0.001", "--max-accept", "1000000", "--threads", str(threads),],) - - # Added by Ziad - #shutil.copy(base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign-minimal")) - #shutil.copy(base.joinpath("res_exp_realign.index"), base.joinpath("res_exp_realign-minimal.index")) - #exit() - run_mmseqs(mmseqs, ["cpdb", base.joinpath("qdb"), base.joinpath("qdb-minimal")]) - - for merged_db in [base.joinpath("res_exp_realign"), base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/aln_1")]: - print(f"merging {merged_db}") - expand_db(merged_db, seq_map, True) - - os.rename(base.joinpath("original-query.fas"), base.joinpath("query.fas")) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("qdb")]) - query_file = base.joinpath("query.fas") - run_mmseqs( - mmseqs, - ["createdb", query_file, base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], - ) - shutil.copy(base.joinpath("org-qdb.lookup"), base.joinpath("qdb.lookup")) - - ### fix with res - - #exit() - - - # create profile - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - - prof_param = f"--sub-mat aa:blosum62.out,nucl:nucleotide.out -e 0.1 --mask-profile 1 --e-profile 0.1 --comp-bias-corr 1 --comp-bias-corr-scale 1 --wg 0 --allow-deletion 0 --filter-msa 1 --filter-min-enable 0 --max-seq-id 0.9 --qid 0.0 --qsc -20 --cov 0 --diff 1000 --pseudo-cnt-mode 0 --pca substitution:1.100,context:1.400 --pcb substitution:4.100,context:5.800 --db-load-mode 0 --gap-open aa:11,nucl:5 --gap-extend aa:1,nucl:2 --threads {threads} --compressed 0 -v 3 --profile-output-mode 0" - run_mmseqs( - mmseqs, - ["result2profile", base.joinpath("qdb"), dbbase.joinpath(db), - base.joinpath("tmp/latest/aln_0"), base.joinpath("tmp/latest/profile_0")] + prof_param.split(), - ) - run_mmseqs( - mmseqs, - ["result2profile", base.joinpath("tmp/latest/profile_0"), dbbase.joinpath(db), - base.joinpath("tmp/latest/aln_1"), base.joinpath("prof_res")] + prof_param.split(), - ) - - ### - - #exit() - run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign"), base.joinpath("res_exp_realign_pair"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "0", "--threads", str(threads), ],) - - run_mmseqs(mmseqs, ["align", base.joinpath("prof_res"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_exp_realign_pair"), base.joinpath("res_exp_realign_pair_bt"), "--db-load-mode", str(db_load_mode), "-e", "inf", "-a", "--threads", str(threads), ],) - run_mmseqs(mmseqs, ["pairaln", base.joinpath("qdb"), dbbase.joinpath(f"{db}"), base.joinpath("res_exp_realign_pair_bt"), base.joinpath("res_final"), "--db-load-mode", str(db_load_mode), "--pairing-mode", str(pairing_strategy), "--pairing-dummy-mode", "1", "--threads", str(threads),],) - run_mmseqs(mmseqs, ["result2msa", base.joinpath("qdb"), dbbase.joinpath(f"{db}{dbSuffix1}"), base.joinpath("res_final"), base.joinpath("pair.a3m"), "--db-load-mode", str(db_load_mode), "--msa-format-mode", "5", "--threads", str(threads),],) - - if unpack: - run_mmseqs(mmseqs, ["unpackdb", base.joinpath("pair.a3m"), base.joinpath("."), "--unpack-name-mode", "0", "--unpack-suffix", output,],) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("pair.a3m")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_exp_realign_pair_bt")]) - run_mmseqs(mmseqs, ["rmdb", base.joinpath("res_final")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res")]) - #run_mmseqs(mmseqs, ["rmdb", base.joinpath("prof_res_h")]) - #shutil.rmtree(base.joinpath("tmp")) - # @formatter:on - # fmt: on - -def main(): - parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter) - parser.add_argument( - "query", - type=Path, - help="fasta files with the queries.", - ) - parser.add_argument( - "dbbase", - type=Path, - help="The path to the database and indices you downloaded and created with setup_databases.sh", - ) - parser.add_argument( - "base", type=Path, help="Directory for the results (and intermediate files)" - ) - parser.add_argument( - "--prefilter-mode", - type=int, - default=0, - choices=[0, 1, 2], - help="Prefiltering algorithm to use: 0: k-mer (high-mem), 1: ungapped (high-cpu), 2: exhaustive (no prefilter, very slow). See wiki for more details: https://github.com/sokrypton/ColabFold/wiki#colabfold_search", - ) - parser.add_argument( - "-s", - type=float, - default=None, - help="MMseqs2 sensitivity. Lowering this will result in a much faster search but possibly sparser MSAs. By default, the k-mer threshold is directly set to the same one of the server, which corresponds to a sensitivity of ~8.", - ) - # dbs are uniref, templates and environmental - # We normally don't use templates - parser.add_argument( - "--db1", type=Path, default=Path("uniref30_2302_db"), help="UniRef database" - ) - parser.add_argument("--db2", type=Path, default=Path(""), help="Templates database") - parser.add_argument( - "--db3", - type=Path, - default=Path("colabfold_envdb_202108_db"), - help="Environmental database", - ) - parser.add_argument("--db4", type=Path, default=Path("spire_ctg10_2401_db"), help="Environmental pairing database") - - # poor man's boolean arguments - parser.add_argument( - "--use-env", type=int, default=1, choices=[0, 1], help="Use --db3" - ) - parser.add_argument( - "--use-env-pairing", type=int, default=0, choices=[0, 1], help="Use --db4" - ) - parser.add_argument( - "--use-templates", type=int, default=0, choices=[0, 1], help="Use --db2" - ) - parser.add_argument( - "--filter", - type=int, - default=1, - choices=[0, 1], - help="Filter the MSA by pre-defined align_eval, qsc, max_accept", - ) - - # mmseqs params - parser.add_argument( - "--mmseqs", - type=Path, - default=Path("mmseqs"), - help="Location of the mmseqs binary.", - ) - parser.add_argument( - "--expand-eval", - type=float, - default=math.inf, - help="e-val threshold for 'expandaln'.", - ) - parser.add_argument( - "--align-eval", type=int, default=10, help="e-val threshold for 'align'." - ) - parser.add_argument( - "--diff", - type=int, - default=3000, - help="filterresult - Keep at least this many seqs in each MSA block.", - ) - parser.add_argument( - "--qsc", - type=float, - default=-20.0, - help="filterresult - reduce diversity of output MSAs using min score thresh.", - ) - parser.add_argument( - "--max-accept", - type=int, - default=1000000, - help="align - Maximum accepted alignments before alignment calculation for a query is stopped.", - ) - parser.add_argument( - "--pairing_strategy", type=int, default=0, help="pairaln - Pairing strategy." - ) - parser.add_argument( - "--db-load-mode", - type=int, - default=0, - help="Database preload mode 0: auto, 1: fread, 2: mmap, 3: mmap+touch", - ) - parser.add_argument( - "--unpack", type=int, default=1, choices=[0, 1], help="Unpack results to loose files or keep MMseqs2 databases." - ) - parser.add_argument( - "--threads", type=int, default=64, help="Number of threads to use." - ) - parser.add_argument( - "--gpu", type=int, default=0, choices=[0, 1], help="Whether to use GPU (1) or not (0). Control number of GPUs with CUDA_VISIBLE_DEVICES env var." - ) - parser.add_argument( - "--gpu-server", type=int, default=0, choices=[0, 1], help="Whether to use GPU server (1) or not (0)" - ) - - # AlphaFold3 relevant params - parser.add_argument( - "--af3-json", action="store_true", help="Generate input JSON for AlphaFold3 from the provided FASTA/A3M file." - ) - parser.add_argument( - "--af3-msa-as-path", action="store_true", help="Save MSA as a file path instead of a string in the JSON." - ) - args = parser.parse_args() - - logging.basicConfig(level = logging.INFO) - - queries, is_complex = get_queries(args.query, None) - - monomor_seqs = set() - multimer_seqs = set() - queries_unique = [] - overall_unique_seqs = [] - seq_map = [] - for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): - # remove duplicates before searching - query_sequences = ( - [query_sequences] if isinstance(query_sequences, str) else query_sequences - ) - if len(query_sequences) == 1: - monomor_seqs.add(query_sequences[0]) - else: - multimer_seqs.update(query_sequences) - - query_seqs_unique = [] - for x in query_sequences: - if x not in query_seqs_unique: - query_seqs_unique.append(x) - - if x not in overall_unique_seqs: - overall_unique_seqs.append(x) - - - query_seqs_cardinality = [0] * len(query_seqs_unique) - for seq in query_sequences: - seq_idx = query_seqs_unique.index(seq) - query_seqs_cardinality[seq_idx] += 1 - - queries_unique.append([raw_jobname, query_seqs_unique, query_seqs_cardinality, other_molecules]) - # Ziad added - - monomor_seqs = monomor_seqs.difference(multimer_seqs) - - for job_number, (raw_jobname, query_sequences, a3m_lines, other_molecules) in enumerate(queries): - seq_map.append([]) - query_seqs_unique = [] - query_sequences = ( - [query_sequences] if isinstance(query_sequences, str) else query_sequences - ) - for x in query_sequences: - if x not in query_seqs_unique: - query_seqs_unique.append(x) - seq_map[job_number].append(overall_unique_seqs.index(x)) - - #print(seq_map) - #exit() - args.base.mkdir(exist_ok=True, parents=True) - - # updated by Ziad - query_file = args.base.joinpath("original-query.fas") - with query_file.open("w") as f: - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - _ - ) in enumerate(queries_unique): - for j, seq in enumerate(query_sequences): - # The header of first sequence set as 101 - query_seq_headername = 101 + j - f.write(f">{query_seq_headername}\n{seq}\n") - - query_file = args.base.joinpath("query.fas") - with query_file.open("w") as f: - for j, seq in enumerate(overall_unique_seqs): - # The header of first sequence set as 101 - query_seq_headername = 101 + j - f.write(f">{query_seq_headername}\n{seq}\n") - - run_mmseqs( - args.mmseqs, - ["createdb", query_file, args.base.joinpath("qdb"), "--shuffle", "0", "--dbtype", "1"], - ) - with args.base.joinpath("qdb.lookup").open("w") as f: - id = 0 - file_number = 0 - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - _ - ) in enumerate(queries_unique): - for seq in query_sequences: - raw_jobname_first = raw_jobname.split()[0] - f.write(f"{id}\t{raw_jobname_first}\t{file_number}\n") - id += 1 - file_number += 1 - shutil.copy(args.base.joinpath("qdb.lookup"), args.base.joinpath("org-qdb.lookup")) - #print("DOne") - - #exit() - mmseqs_search_monomer( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - template_db=args.db2, - metagenomic_db=args.db3, - use_env=args.use_env, - use_templates=args.use_templates, - filter=args.filter, - expand_eval=args.expand_eval, - align_eval=args.align_eval, - diff=args.diff, - qsc=args.qsc, - max_accept=args.max_accept, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - unpack=args.unpack, - ) - ## - print(seq_map) - - for seq_id in range(len(overall_unique_seqs)): - a3m_content = open(args.base.joinpath(f"{seq_id}.a3m"), "r").readlines() - shutil.copy(args.base.joinpath(f"{seq_id}.a3m"), args.base.joinpath(f"u-{seq_id}.a3m")) - seq_itr = 0 - header = a3m_content[0] - for seqs in seq_map: - for j, seq_index in enumerate(seqs): - if seq_index == seq_id: - new_header = f">{101 + j}\n" - with open(args.base.joinpath(f"{seq_itr}.a3m"), "w") as out_f: - for line in a3m_content: - out_f.write(line.replace(header, new_header)) - seq_itr += 1 - - - - for seq_id in range(len(overall_unique_seqs)): - os.remove(args.base.joinpath(f"u-{seq_id}.a3m")) - #exit() - ## finish monomors and keep going for hybrid batch - ## - if is_complex is True: - mmseqs_search_pair( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - pairing_strategy=args.pairing_strategy, - pair_env=False, - unpack=args.unpack, - seq_map=seq_map - ) - #exit() - if args.use_env_pairing: - mmseqs_search_pair( - mmseqs=args.mmseqs, - dbbase=args.dbbase, - base=args.base, - uniref_db=args.db1, - spire_db=args.db4, - prefilter_mode=args.prefilter_mode, - s=args.s, - db_load_mode=args.db_load_mode, - threads=args.threads, - gpu=args.gpu, - gpu_server=args.gpu_server, - pairing_strategy=args.pairing_strategy, - pair_env=True, - unpack=args.unpack, - ) - if args.unpack or args.af3_json: - id = 0 - for job_number, ( - raw_jobname, - query_sequences, - query_seqs_cardinality, - other_molecules, - ) in enumerate(queries_unique): - unpaired_msa = [] - paired_msa = None - if len(query_seqs_cardinality) > 1: - paired_msa = [] - for seq in query_sequences: - with args.base.joinpath(f"{id}.a3m").open("r") as f: - unpaired_msa.append(f.read()) - if args.af3_json: - args.base.joinpath(f"{id}.a3m").unlink() - - if args.use_env_pairing: - with open(args.base.joinpath(f"{id}.paired.a3m"), 'a') as file_pair: - with open(args.base.joinpath(f"{id}.env.paired.a3m"), 'r') as file_pair_env: - while chunk := file_pair_env.read(10 * 1024 * 1024): - file_pair.write(chunk) - if args.unpack: - args.base.joinpath(f"{id}.env.paired.a3m").unlink() - - if len(query_seqs_cardinality) > 1: - with args.base.joinpath(f"{id}.paired.a3m").open("r") as f: - paired_msa.append(f.read()) - if args.unpack: - args.base.joinpath(f"{id}.paired.a3m").unlink() - id += 1 - - if args.af3_json: - af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, paired_msa, other_molecules) - with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: - f.write(json.dumps(af3.content, indent=4)) - - if args.unpack: - msa = msa_to_str( - unpaired_msa, paired_msa, query_sequences, query_seqs_cardinality - ) - args.base.joinpath(f"{job_number}.a3m").write_text(msa) - - - #os.remove(args.base.joinpath("res_exp_realign-minimal.index")) - #os.remove(args.base.joinpath("res_exp_realign-minimal")) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res_exp_realign-minimal")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb-minimal_h")]) - - - - else: - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("res")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("prof_res_h")]) - os.remove(args.base.joinpath("original-query.fas")) - - if args.af3_json: - id = 0 - for job_number, (raw_jobname, query_sequences, query_seqs_cardinality, other_molecules) in enumerate(queries_unique): - unpaired_msa = [] - for seq in query_sequences: - with args.base.joinpath(f"{id}.a3m").open("r") as f: - unpaired_msa.append(f.read()) - id += 1 - - # Create AF3Utils object and write JSON - af3 = AF3Utils(raw_jobname, query_sequences, query_seqs_cardinality, unpaired_msa, None, other_molecules) - with open(args.base.joinpath(f"{job_number}.json"), 'w') as f: - f.write(json.dumps(af3.content, indent=4)) - if args.unpack: - # rename a3m files - rename_output(queries_unique, "a3m", args.base) - - # rename m8 files - if args.use_templates: - id = 0 - for raw_jobname, query_sequences, query_seqs_cardinality, _ in queries_unique: - with args.base.joinpath(f"{safe_filename(raw_jobname)}_{args.db2}.m8").open( - "w" - ) as f: - for _ in range(len(query_seqs_cardinality)): - with args.base.joinpath(f"{id}.m8").open("r") as g: - f.write(g.read()) - os.remove(args.base.joinpath(f"{id}.m8")) - id += 1 - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb")]) - run_mmseqs(args.mmseqs, ["rmdb", args.base.joinpath("qdb_h")]) - - if args.af3_json: - # rename json files - rename_output(queries_unique, "json", args.base) - - query_file.unlink() - os.remove(args.base.joinpath("org-qdb.lookup")) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/conf/gadi.config b/conf/gadi.config index f90850f..8bcc1f2 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -24,12 +24,12 @@ params { outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" samplesheet2 = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - + boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" - + uniref30 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/uniref30_2302/" use_gpu = true project = "ll61" @@ -42,8 +42,8 @@ process { storage = "gdata/if89+scratch/${params.project}+gdata/${params.project}" withName: 'MMSEQS_COLABFOLDSEARCH' { - memory = 300.GB - time = 16.h + memory = 300.GB + time = 16.h } withName: 'RUN_BOLTZ' { cpus = 12 @@ -65,4 +65,3 @@ process { ] } - diff --git a/conf/modules.config b/conf/modules.config index c424f6d..c9549f9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -28,7 +28,7 @@ process { } withName: 'MMSEQS_COLABFOLDSEARCH' { - memory = 300.GB + memory = 300.GB time = 16.h def args = "" if (params.mmseqs_gpu){ @@ -38,7 +38,7 @@ process { if ("${params.tools}".split(",").contains("alphafold3")){ args += "--af3-json " } - + ext.args = args } diff --git a/conf/test.config b/conf/test.config index 19aea1f..e895b00 100644 --- a/conf/test.config +++ b/conf/test.config @@ -27,5 +27,5 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' - + } diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 8892cd8..046fbe1 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -21,7 +21,7 @@ params { // Input data outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - + boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" @@ -30,9 +30,9 @@ params { colabfold_db = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" uniref30 = "/g/data/za08/tom/colabfold_uniref30" colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" - + alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - + use_gpu = true project = "ll61" use_dgxa100 = false @@ -46,7 +46,7 @@ process { cache = 'lenient' stageInMode = 'symlink' queue = { task.memory < 128.GB ? 'normalbw' : (task.memory >= 128.GB && task.memory <= 190.GB ? 'normal' : (task.memory > 190.GB && task.memory <= 1020.GB ? 'hugemembw' : '')) } - + withName: 'RUN_BOLTZ' { cpus = 12 queue = "gpuvolta" @@ -64,10 +64,10 @@ process { gpus = 1 } } - + withName: 'COLABFOLD_BATCH' { queue = "gpuvolta" - time = 10.h + time = 10.h memory = 64.GB cpus = 12 gpus = 1 @@ -90,4 +90,3 @@ process { ] } - diff --git a/docs/output.md b/docs/output.md index bdce1cb..aa34f33 100644 --- a/docs/output.md +++ b/docs/output.md @@ -12,12 +12,9 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution - - ### MultiQC
diff --git a/docs/usage.md b/docs/usage.md index d4d02ac..36a8573 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -27,12 +27,12 @@ S2,Sample2.fasta,B,protein S3,S3.yaml,A,rna ``` -| Column | Description | -| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore (`_`). | -| `sequence` | Full path to Fasta/YAML file for sample seqeuence. File has to have the extension ".fasta", ".fa" or "yaml". | -| `type` | The sequence type, can be either protein, rna . It is an optional column, by default it will be consdred as protein. | -| `group` | it is a way to group samnples to create custom interactions. It is an optional column, if not provided, the inteactions will be `aa-all' which means all sample against all samples. | +| Column | Description | +| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore (`_`). | +| `sequence` | Full path to Fasta/YAML file for sample seqeuence. File has to have the extension ".fasta", ".fa" or "yaml". | +| `type` | The sequence type, can be either protein, rna . It is an optional column, by default it will be consdred as protein. | +| `group` | it is a way to group samnples to create custom interactions. It is an optional column, if not provided, the inteactions will be `aa-all' which means all sample against all samples. | An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. diff --git a/main.nf b/main.nf index 86ff548..f1c1fc9 100644 --- a/main.nf +++ b/main.nf @@ -39,7 +39,7 @@ workflow NFCORE_WISPS { // // WORKFLOW: Run pipeline // - + WISPS ( ch_samplesheet, params.mode, @@ -65,7 +65,7 @@ workflow NFCORE_WISPS { params.analysis_batch_size ) ch_versions = ch_versions.mix(WISPS.out.versions) - + emit: multiqc_report //= WISPS.out.multiqc_report // channel: /path/to/multiqc_report.html } diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 82f9513..0e17128 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -40,7 +40,7 @@ process COLABFOLD_BATCH { --model-type ${colabfold_model_preset} \\ alignment \\ \$PWD - + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') @@ -54,7 +54,7 @@ process COLABFOLD_BATCH { touch ./${meta.id}_relaxed_rank_model_3_00.pdb touch ./${meta.id}_coverage.png touch ./${meta.id}_scores_rank_001_00.json - + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index bf9b5ad..2d8998c 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -22,7 +22,7 @@ process COLLECT_CONFIDENCE { """ #!/usr/bin/env python3 - + import os, sys import json import csv @@ -63,7 +63,7 @@ process COLLECT_CONFIDENCE { writer.writeheader() for row in rows: writer.writerow({key: row.get(key, "") for key in writing_keys}) - + def extract_colabfold_results(json_files, samples, output_csv): def parse_colabfold_metrics(json_file): with open(json_file, "r") as f: @@ -83,7 +83,7 @@ process COLLECT_CONFIDENCE { result[key] = data[key] return result - + rows = [] all_keys = ["id", "plddt", "ptm", "iptm", "max_pae"] writing_keys = all_keys @@ -101,19 +101,19 @@ process COLLECT_CONFIDENCE { for row in rows: writer.writerow({key: row.get(key, "") for key in writing_keys}) - - + + if "${meta.model}".lower() == "boltz": extract_boltz_results(json_files, samples, output_csv) elif "${meta.model}".lower() == "colabfold": extract_colabfold_results(json_files, samples, output_csv) elif "${meta.model}".lower() == "alphafold3": extract_alphafold3_results(json_files, samples, output_csv) - + print(f"CSV file created at: {output_csv}") with open ("versions.yml", "w") as version_file: - version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ stub: diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 232f42a..0e6a450 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -64,7 +64,7 @@ process MMSEQS_COLABFOLDSEARCH { else touch results/${meta.id}.a3m fi - + cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') @@ -72,4 +72,4 @@ process MMSEQS_COLABFOLDSEARCH { mmseqs: \$(mmseqs version) END_VERSIONS """ -} \ No newline at end of file +} diff --git a/modules/local/msa_manager/split_msa.nf b/modules/local/msa_manager/split_msa.nf index dad42e5..075b28d 100644 --- a/modules/local/msa_manager/split_msa.nf +++ b/modules/local/msa_manager/split_msa.nf @@ -24,9 +24,9 @@ process SPLIT_MSA { for f in "\${files[@]}"; do meta_id=\$(basename "\$f" ".a3m") - msa_manager.py \$f -o output_msa --meta_id "\${meta_id}" + msa_manager.py \$f -o output_msa --meta_id "\${meta_id}" done - + cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index da41840..6be245e 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -13,7 +13,7 @@ process PREPARE_INTERACTIONS { val(a3m) val(types) path(files) - + output: tuple val(meta), path ("*_boltz_interaction_input.fasta"), emit: fasta path "versions.yml" , emit: versions @@ -32,14 +32,14 @@ process PREPARE_INTERACTIONS { fasta_files_batch = ${fasta.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} a3m_files_batch = ${a3m.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} seq_types_batch = ${types.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} - + all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] batch_itr = 0 for batch_itr in range(len(fasta_files_batch)): a3m_files = a3m_files_batch[batch_itr] seq_types = seq_types_batch[batch_itr] fasta_files = fasta_files_batch[batch_itr] - + for seq_type in seq_types: if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') @@ -67,12 +67,12 @@ process PREPARE_INTERACTIONS { header += f"|{os.path.basename(a3m)}\\n" else: header += "\\n" - + outfile.write(header) outfile.writelines(body) with open ("versions.yml", "w") as version_file: - version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ stub: diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index becd1be..fdce44c 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -30,13 +30,13 @@ process RUN_ALPHAFOLD3 { --norun_data_pipeline \\ --output_dir=out/ \\ $args - + cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') END_VERSIONS """ - + stub: def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 9c24533..5bb3a76 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -25,7 +25,7 @@ process RUN_BOLTZ { tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , optional: true, emit: cif tuple val(meta), path ("boltz_results_*/predictions/*/plddt_*model_0.npz") , emit: plddt tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , optional: true, emit: pae - + path "versions.yml", emit: versions when: @@ -43,7 +43,7 @@ process RUN_BOLTZ { export HOME=/tmp boltz predict fasta ${args} --cache ./ - + cat <<-END_VERSIONS > versions.yml "${task.process}": boltz: $version diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 2fcbb5f..261dc0f 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -38,4 +38,4 @@ }, "timestamp": "2024-10-02T17:52:09.185842" } -} \ No newline at end of file +} diff --git a/nextflow.config b/nextflow.config index f8367ed..01f21a6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -16,14 +16,14 @@ params { mmseqs_batch_size = 10000 mmseqs_gpu = false analysis_batch_size = 10000 - + colabfold_model_preset = "alphafold2_multimer_v3" colabfold_num_recycles = 3 tools = "boltz,colabfold" - + ipsae_pae_cutoff = 10 ipsae_dist_cutoff = 10 - + boltz_ccd = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl' boltz_model = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt' boltz2_aff = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt' diff --git a/nextflow_schema.json b/nextflow_schema.json index 7625b99..7ceec30 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -116,31 +116,26 @@ "description": "Dictionary with Alphafold2 parameters tags", "fa_icon": "fas fa-stream" }, - "boltz_db": { - "type": "string", - "description": "Path to boltz databases", - "icon": "fas folder-open" - }, "boltz_ccd": { "type": "string", "description": "Path to CCD file", "icon": "fas folder-open", - "default": "null/params/ccd.pkl" + "default": "https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl" }, "boltz_model": { "type": "string", "description": "Path to boltz Model file", "icon": "fas folder-open", - "default": "null/params/boltz1_conf.ckpt" + "default": "https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt" }, "boltz2_aff": { "type": "string", - "default": "null/params/boltz2_aff.ckpt", + "default": "https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt", "description": "Path to boltz affinity file" }, "boltz2_conf": { "type": "string", - "default": "null/params/boltz2_conf.ckpt", + "default": "https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt", "description": "Path to boltz-2 conf file" }, "boltz2_mols": { @@ -189,15 +184,14 @@ "description": "The pae cutoff for ipsae.", "fa_icon": "fas fa-recycle", "errorMessage": "The pae cutoff for ipsae." - },"ipsae_dist_cutoff": { + }, + "ipsae_dist_cutoff": { "type": "integer", "default": 10, "description": "The dist cutoff for ipsae.", "fa_icon": "fas fa-recycle", "errorMessage": "" } - - } }, "institutional_config_options": { diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf index b32acc0..5759134 100644 --- a/subworkflows/local/msa.nf +++ b/subworkflows/local/msa.nf @@ -12,14 +12,14 @@ workflow MSA { take: ch_samplesheet ch_colabfold_db // channel: path(colabfold_db) - ch_uniref30 // channel: path(uniref30) + ch_uniref30 // channel: path(uniref30) batch_size - + main: ch_versions = Channel.empty() ch_a3m = Channel.empty() ch_json = Channel.empty() - + ch_samplesheet .branch { fasta: it[1].extension == "fasta" || it[1].extension == "fa" @@ -33,10 +33,10 @@ workflow MSA { [it[0], "${it[0].id},${getYamlSequences(it[1].text).collect { it.sequence }.join(':')}"] } .set{ch_yaml_seqs} - + if (batch_size > 1){ def batch_itr = 0 - + ch_input.fasta .map{ "${it[0].id},${getFastaSequences(it[1].text).collect { it.sequence }.join(':')}" @@ -73,7 +73,7 @@ workflow MSA { ch_uniref30 ) ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) - + ch_a3m = ch_a3m.mix( ch_input.fasta.mix(ch_input.yaml) .map{[it[1].baseName, it[0]]} @@ -99,8 +99,8 @@ workflow MSA { .map{[it[1], it[2]]} ) //MMSEQS_COLABFOLDSEARCH.out.a3m.view() - //ch_a3m.view() - + //ch_a3m.view() + emit: formated_input = ch_input.fasta.mix(ch_input.yaml) a3m = ch_a3m @@ -167,4 +167,4 @@ def getFastaSequences(fastaData) { } return fastaEntries -} \ No newline at end of file +} diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index 9a5b9c4..dc63ab9 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -68,7 +68,7 @@ workflow PIPELINE_INITIALISATION { // ch_samplesheet = Channel.fromList(samplesheetToList(params.input, "assets/schema_input.json")) - + emit: samplesheet = ch_samplesheet versions = ch_versions @@ -150,7 +150,7 @@ def toolCitationText() { // Uncomment function in methodsDescriptionText to render in MultiQC report def citation_text = [ "Tools used in the workflow included:", - + "MultiQC (Ewels et al. 2016)", "." ].join(' ').trim() @@ -163,7 +163,7 @@ def toolBibliographyText() { // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "
  • Author (2023) Pub name, Journal, DOI
  • " : "", // Uncomment function in methodsDescriptionText to render in MultiQC report def reference_text = [ - + "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354
  • " ].join(' ').trim() diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap index e3f0baf..846287c 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -17,4 +17,4 @@ }, "timestamp": "2024-02-28T12:02:12.425833" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index 1037232..facbdcf 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -163,4 +163,4 @@ }, "timestamp": "2024-02-28T12:03:21.714424" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap index 859d103..84ee1e1 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -16,4 +16,4 @@ }, "timestamp": "2024-02-28T12:03:25.726491" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index 4994303..93de2a5 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -43,4 +43,3 @@ workflow UTILS_NFSCHEMA_PLUGIN { emit: dummy_emit = true } - diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 0907ac5..478fb8a 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -5,4 +5,4 @@ plugins { validation { parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" monochromeLogs = true -} \ No newline at end of file +} diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 75b4d1a..eece1a9 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -54,7 +54,7 @@ include { getYamlSequences } from '../subworkflows/local/msa' */ workflow WISPS { - + take: ch_samplesheet mode @@ -82,7 +82,7 @@ workflow WISPS { main: ch_multiqc_files = Channel.empty() ch_confidence_scores = Channel.empty() - + interaction_mode = mode.split(",").collect { pair -> pair.split('-').sort().join('-') @@ -99,7 +99,7 @@ workflow WISPS { emitted -> { if (required - emitted){ log.error "The groups ${required - emitted} is not in the sample sheet!" - exit 1 + exit 1 } } } @@ -118,14 +118,14 @@ workflow WISPS { ch_samplesheet .combine(ch_samplesheet) .map{[ - [ + [ "id": [it[0]["id"], it[2]["id"]].min() + "-" + [it[0]["id"], it[2]["id"]].max(), "group": [it[0]["group"], it[2]["group"]].min() + "-" + [it[0]["group"], it[2]["group"]].max(), ], [it[0], it[2]], [it[1], it[3]], ]}.set{ch_pairs} - + ch_pairs .join(ch_unique_pairs) .set{ch_interaction_in} @@ -150,13 +150,13 @@ workflow WISPS { ch_interaction_in .map{ if (it[1][0].type != "protein" && it[1][1].type == "protein"){ - [it[1][1], it[2][1]] + [it[1][1], it[2][1]] }else if (it[1][1].type != "protein" && it[1][0].type == "protein"){ - [it[1][0], it[2][0]] + [it[1][0], it[2][0]] } }.unique() .set{ch_single_protein} - + //ch_protein_pairs.view() MSA ( ch_protein_pairs @@ -168,7 +168,7 @@ workflow WISPS { mmseqs_batch_size ) ch_versions = ch_versions.mix(MSA.out.versions) - + // Prepare interactions for boltz ch_boltz_data = Channel.empty() ch_split_msa_in = Channel.empty() @@ -176,7 +176,7 @@ workflow WISPS { if ("boltz" in tools.split(",")){ ch_split_msa_in = MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) - ch_boltz_interactions_in = ch_interaction_in + ch_boltz_interactions_in = ch_interaction_in } // Adding non protein for boltz @@ -214,7 +214,7 @@ workflow WISPS { ) ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) - + SPLIT_MSA.out.msa_csv .map{it[1]} .flatten() @@ -230,15 +230,15 @@ workflow WISPS { ch_split_msa_out .map{ if (it[1].size() == 1){ - it[1] = [it[1][0], it[1][0]] + it[1] = [it[1][0], it[1][0]] } it } - + ) .map{[it[1], it[2]]} ) - + batch_id = 0 PREPARE_INTERACTIONS( @@ -259,7 +259,7 @@ workflow WISPS { .map{[it[0][2][0], it[0][2][1], it[1][0], it[1][1]]} .buffer( size: analysis_batch_size, remainder: true ) .map{it.flatten()findAll{it}.unique{it.toUriString()}} - + ) PREPARE_INTERACTIONS.out.fasta @@ -274,7 +274,7 @@ workflow WISPS { .set{ch_boltz_in} boltz_batch = 0 - + RUN_BOLTZ( ch_boltz_in.map{boltz_batch += 1; [["id": "batch-${boltz_batch}-${it.size()}"], it.collect{it[1]}]}, ch_boltz_in.map{it.collect{it[2]}.flatten().findAll{it}.unique{it.toUriString()}}, @@ -284,20 +284,20 @@ workflow WISPS { ch_boltz2_conf, ch_mols ) - + RUN_BOLTZ.out.confidence .map{it[1]} .flatten() .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} .set{ch_boltz_confidence} - + RUN_BOLTZ.out.pae .map{it[1]} .flatten() .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} .set{ch_boltz_pae} - + RUN_BOLTZ.out.cif .map{it[1]} .flatten() @@ -309,7 +309,7 @@ workflow WISPS { ids: json_list.collect{it[0].id} json: json_list.collect{it[1]} }.set{ch_boltz_confidence_scores} - + //prepare interactions for colabfold ch_colabfold_interaction_in = Channel.empty() if ("colabfold" in tools.split(",")){ @@ -325,7 +325,7 @@ workflow WISPS { ch_colabfold_interaction_in } } - + COLABFOLD_BATCH( ch_colabfold_interaction_in, colabfold_model_preset, @@ -335,13 +335,13 @@ workflow WISPS { num_recycles ) ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) - + COLABFOLD_BATCH.out.top_ranked_scores .map{it[1]} .flatten() .map{[["id": it.baseName.split("_")[0], "model": "colabfold"], it]} .set{ch_colabfold_scores} - + COLABFOLD_BATCH.out.pdb .map{it[1]} .flatten() @@ -355,7 +355,7 @@ workflow WISPS { json: json_list.collect{it[1]} }.set{ch_colabfold_confidence_scores} - + af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ @@ -382,13 +382,13 @@ workflow WISPS { .flatten() .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} .set{ch_alphafold3_cif} - + RUN_ALPHAFOLD3.out.confidence .map{it[1]} .flatten() .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} .set{ch_alphafold3_confidence} - + RUN_ALPHAFOLD3.out.summary_confidences .map{it[1]} .flatten() @@ -401,7 +401,7 @@ workflow WISPS { json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} - + ch_colabfold_scores .join(ch_colabfold_pdb) .map{[["id": it[0].id], it, []]} @@ -428,7 +428,7 @@ workflow WISPS { ) ) .set{ch_ipsae_in} - + IPSAE( ch_ipsae_in.map{it[1]}, ch_ipsae_in.map{it[2]} @@ -451,8 +451,8 @@ workflow WISPS { ) ch_versions = ch_versions.mix(COLLECT_CONFIDENCE.out.versions) - - + + // // Collate and save software versions // @@ -495,5 +495,5 @@ workflow WISPS { emit: versions = ch_versions - -} + +} From 46d0b3609215af7a8c4a1d08c38ff9839fa76870 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 11:56:53 +1100 Subject: [PATCH 20/70] cleaning --- .pre-commit-config.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 13f7acf..25f0509 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,9 +12,7 @@ repos: - id: editorconfig-checker alias: ec - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - - id: check-yaml - - id: check-json From 2811c4edc51d600d868bf0cd08c66348f4d9b52d Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 12:02:18 +1100 Subject: [PATCH 21/70] fix config formats --- nextflow_schema.json | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7ceec30..5b5b7f2 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -97,25 +97,18 @@ "uniref30": { "type": "string", "description": "Link to the UniRef30 database", - "fa_icon": "fas fa-folder-open", - "default": "null/colabfold_uniref30/*" + "fa_icon": "fas fa-folder-open" }, "colabfold_envdb": { "type": "string", "description": "Link to the ColabFold database", - "fa_icon": "fas fa-folder-open", - "default": "null/colabfold_envdb/*" + "fa_icon": "fas fa-folder-open" }, "colabfold_alphafold2_params": { "type": "string", "description": "Link to the Alphafold2 parameters for Colabfold", "fa_icon": "fas fa-folder-open" }, - "colabfold_alphafold2_params_tags": { - "type": "object", - "description": "Dictionary with Alphafold2 parameters tags", - "fa_icon": "fas fa-stream" - }, "boltz_ccd": { "type": "string", "description": "Path to CCD file", @@ -140,12 +133,10 @@ }, "boltz2_mols": { "type": "string", - "default": "null/params/mols/", "description": "Path to boltz-2 mols" }, "alphafold3_params": { "type": "string", - "default": "null/params//", "description": "Path to Alphafold3 params" } } From 43d7b7c81eff452b868e43e6a7456f20ce0be1d6 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 13:01:59 +1100 Subject: [PATCH 22/70] cleaning + formatting --- modules.json | 6 +- nextflow.config | 2 + .../nf-core/utils_nextflow_pipeline/main.nf | 2 + .../tests/main.workflow.nf.test | 10 ++- .../utils_nextflow_pipeline/tests/tags.yml | 2 - .../nf-core/utils_nfcore_pipeline/main.nf | 89 +++++-------------- .../tests/main.function.nf.test | 46 ++++------ .../tests/main.function.nf.test.snap | 30 ------- .../utils_nfcore_pipeline/tests/tags.yml | 2 - .../nf-core/utils_nfschema_plugin/main.nf | 40 +++++++-- .../utils_nfschema_plugin/tests/main.nf.test | 60 ++++++++++++- .../tests/nextflow.config | 2 +- 12 files changed, 148 insertions(+), 143 deletions(-) delete mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml diff --git a/modules.json b/modules.json index d6c6736..b75bd10 100644 --- a/modules.json +++ b/modules.json @@ -16,17 +16,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "3aa0aec1d52d492fe241919f0c6100ebf0074082", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", + "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", "installed_by": ["subworkflows"] } } diff --git a/nextflow.config b/nextflow.config index 01f21a6..eb26971 100644 --- a/nextflow.config +++ b/nextflow.config @@ -15,6 +15,7 @@ params { mode = "all-all" mmseqs_batch_size = 10000 mmseqs_gpu = false + use_gpu = true analysis_batch_size = 10000 colabfold_model_preset = "alphafold2_multimer_v3" @@ -33,6 +34,7 @@ params { colabfold_db = null uniref30 = null colabfold_alphafold2_params = null + colabfold_envdb = null alphafold3_params = null // MultiQC options diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index 0fcbf7b..d6e593e 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -92,10 +92,12 @@ def checkCondaChannels() { channels = config.channels } catch (NullPointerException e) { + log.debug(e) log.warn("Could not verify conda channel configuration.") return null } catch (IOException e) { + log.debug(e) log.warn("Could not verify conda channel configuration.") return null } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test index ca964ce..02dbf09 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test +++ b/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -52,10 +52,12 @@ nextflow_workflow { } then { - assertAll( - { assert workflow.success }, - { assert workflow.stdout.contains("nextflow_workflow v9.9.9") } - ) + expect { + with(workflow) { + assert success + assert "nextflow_workflow v9.9.9" in stdout + } + } } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml deleted file mode 100644 index f847611..0000000 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nextflow_pipeline: - - subworkflows/nf-core/utils_nextflow_pipeline/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 5cb7baf..bfd2587 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -56,21 +56,6 @@ def checkProfileProvided(nextflow_cli_args) { } } -// -// Citation string for pipeline -// -def workflowCitation() { - def temp_doi_ref = "" - def manifest_doi = workflow.manifest.doi.tokenize(",") - // Handling multiple DOIs - // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers - // Removing ` ` since the manifest.doi is a string and not a proper list - manifest_doi.each { doi_ref -> - temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" - } - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" -} - // // Generate workflow version string // @@ -150,33 +135,6 @@ def paramsSummaryMultiqc(summary_params) { return yaml_file_text } -// -// nf-core logo -// -def nfCoreLogo(monochrome_logs=true) { - def colors = logColours(monochrome_logs) as Map - String.format( - """\n - ${dashedLine(monochrome_logs)} - ${colors.green},--.${colors.black}/${colors.green},-.${colors.reset} - ${colors.blue} ___ __ __ __ ___ ${colors.green}/,-._.--~\'${colors.reset} - ${colors.blue} |\\ | |__ __ / ` / \\ |__) |__ ${colors.yellow}} {${colors.reset} - ${colors.blue} | \\| | \\__, \\__/ | \\ |___ ${colors.green}\\`-._,-`-,${colors.reset} - ${colors.green}`._,._,\'${colors.reset} - ${colors.purple} ${workflow.manifest.name} ${getWorkflowVersion()}${colors.reset} - ${dashedLine(monochrome_logs)} - """.stripIndent() - ) -} - -// -// Return dashed line -// -def dashedLine(monochrome_logs=true) { - def colors = logColours(monochrome_logs) as Map - return "-${colors.dim}----------------------------------------------------${colors.reset}-" -} - // // ANSII colours used for terminal logging // @@ -245,28 +203,24 @@ def logColours(monochrome_logs=true) { return colorcodes } -// -// Attach the multiqc report to email -// -def attachMultiqcReport(multiqc_report) { - def mqc_report = null - try { - if (workflow.success) { - mqc_report = multiqc_report.getVal() - if (mqc_report.getClass() == ArrayList && mqc_report.size() >= 1) { - if (mqc_report.size() > 1) { - log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") - } - mqc_report = mqc_report[0] - } +// Return a single report from an object that may be a Path or List +// +def getSingleReport(multiqc_reports) { + if (multiqc_reports instanceof Path) { + return multiqc_reports + } else if (multiqc_reports instanceof List) { + if (multiqc_reports.size() == 0) { + log.warn("[${workflow.manifest.name}] No reports found from process 'MULTIQC'") + return null + } else if (multiqc_reports.size() == 1) { + return multiqc_reports.first() + } else { + log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") + return multiqc_reports.first() } + } else { + return null } - catch (Exception all) { - if (multiqc_report) { - log.warn("[${workflow.manifest.name}] Could not attach MultiQC report to summary email") - } - } - return mqc_report } // @@ -320,7 +274,7 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi email_fields['summary'] = summary << misc_fields // On success try attach the multiqc report - def mqc_report = attachMultiqcReport(multiqc_report) + def mqc_report = getSingleReport(multiqc_report) // Check if we are only sending emails on failure def email_address = email @@ -340,7 +294,7 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi def email_html = html_template.toString() // Render the sendmail template - def max_multiqc_email_size = (params.containsKey('max_multiqc_email_size') ? params.max_multiqc_email_size : 0) as nextflow.util.MemoryUnit + def max_multiqc_email_size = (params.containsKey('max_multiqc_email_size') ? params.max_multiqc_email_size : 0) as MemoryUnit def smail_fields = [email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes()] def sf = new File("${workflow.projectDir}/assets/sendmail_template.txt") def sendmail_template = engine.createTemplate(sf).make(smail_fields) @@ -351,14 +305,17 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi if (email_address) { try { if (plaintext_email) { -new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } + new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') + } // Try to send HTML e-mail using sendmail def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") sendmail_tf.withWriter { w -> w << sendmail_html } ['sendmail', '-t'].execute() << sendmail_html log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (sendmail)-") } - catch (Exception all) { + catch (Exception msg) { + log.debug(msg.toString()) + log.debug("Trying with mail instead of sendmail") // Catch failures and try with plaintext def mail_cmd = ['mail', '-s', subject, '--content-type=text/html', email_address] mail_cmd.execute() << email_html diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test index 1dc317f..f117040 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test @@ -41,26 +41,14 @@ nextflow_function { } } - test("Test Function workflowCitation") { - - function "workflowCitation" - - then { - assertAll( - { assert function.success }, - { assert snapshot(function.result).match() } - ) - } - } - - test("Test Function nfCoreLogo") { + test("Test Function without logColours") { - function "nfCoreLogo" + function "logColours" when { function { """ - input[0] = false + input[0] = true """ } } @@ -73,9 +61,8 @@ nextflow_function { } } - test("Test Function dashedLine") { - - function "dashedLine" + test("Test Function with logColours") { + function "logColours" when { function { @@ -93,14 +80,13 @@ nextflow_function { } } - test("Test Function without logColours") { - - function "logColours" + test("Test Function getSingleReport with a single file") { + function "getSingleReport" when { function { """ - input[0] = true + input[0] = file(params.modules_testdata_base_path + '/generic/tsv/test.tsv', checkIfExists: true) """ } } @@ -108,18 +94,22 @@ nextflow_function { then { assertAll( { assert function.success }, - { assert snapshot(function.result).match() } + { assert function.result.contains("test.tsv") } ) } } - test("Test Function with logColours") { - function "logColours" + test("Test Function getSingleReport with multiple files") { + function "getSingleReport" when { function { """ - input[0] = false + input[0] = [ + file(params.modules_testdata_base_path + '/generic/tsv/test.tsv', checkIfExists: true), + file(params.modules_testdata_base_path + '/generic/tsv/network.tsv', checkIfExists: true), + file(params.modules_testdata_base_path + '/generic/tsv/expression.tsv', checkIfExists: true) + ] """ } } @@ -127,7 +117,9 @@ nextflow_function { then { assertAll( { assert function.success }, - { assert snapshot(function.result).match() } + { assert function.result.contains("test.tsv") }, + { assert !function.result.contains("network.tsv") }, + { assert !function.result.contains("expression.tsv") } ) } } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index facbdcf..b13b311 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -17,26 +17,6 @@ }, "timestamp": "2024-02-28T12:02:59.729647" }, - "Test Function nfCoreLogo": { - "content": [ - "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-28T12:03:10.562934" - }, - "Test Function workflowCitation": { - "content": [ - "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-28T12:03:07.019761" - }, "Test Function without logColours": { "content": [ { @@ -95,16 +75,6 @@ }, "timestamp": "2024-02-28T12:03:17.969323" }, - "Test Function dashedLine": { - "content": [ - "-\u001b[2m----------------------------------------------------\u001b[0m-" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-02-28T12:03:14.366181" - }, "Test Function with logColours": { "content": [ { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml deleted file mode 100644 index ac8523c..0000000 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfcore_pipeline: - - subworkflows/nf-core/utils_nfcore_pipeline/** diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index 93de2a5..acb3972 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -4,6 +4,7 @@ include { paramsSummaryLog } from 'plugin/nf-schema' include { validateParameters } from 'plugin/nf-schema' +include { paramsHelp } from 'plugin/nf-schema' workflow UTILS_NFSCHEMA_PLUGIN { @@ -15,29 +16,56 @@ workflow UTILS_NFSCHEMA_PLUGIN { // when this input is empty it will automatically use the configured schema or // "${projectDir}/nextflow_schema.json" as default. This input should not be empty // for meta pipelines + help // boolean: show help message + help_full // boolean: show full help message + show_hidden // boolean: show hidden parameters in help message + before_text // string: text to show before the help message and parameters summary + after_text // string: text to show after the help message and parameters summary + command // string: an example command of the pipeline main: + if(help || help_full) { + help_options = [ + beforeText: before_text, + afterText: after_text, + command: command, + showHidden: show_hidden, + fullHelp: help_full, + ] + if(parameters_schema) { + help_options << [parametersSchema: parameters_schema] + } + log.info paramsHelp( + help_options, + params.help instanceof String ? params.help : "", + ) + exit 0 + } + // // Print parameter summary to stdout. This will display the parameters // that differ from the default given in the JSON schema // + + summary_options = [:] if(parameters_schema) { - log.info paramsSummaryLog(input_workflow, parameters_schema:parameters_schema) - } else { - log.info paramsSummaryLog(input_workflow) + summary_options << [parametersSchema: parameters_schema] } + log.info before_text + log.info paramsSummaryLog(summary_options, input_workflow) + log.info after_text // // Validate the parameters using nextflow_schema.json or the schema // given via the validation.parametersSchema configuration option // if(validate_params) { + validateOptions = [:] if(parameters_schema) { - validateParameters(parameters_schema:parameters_schema) - } else { - validateParameters() + validateOptions << [parametersSchema: parameters_schema] } + validateParameters(validateOptions) } emit: diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test index 842dc43..c977917 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -25,6 +25,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -42,7 +48,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { @@ -51,6 +57,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -77,6 +89,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -94,7 +112,7 @@ nextflow_workflow { params { test_data = '' - outdir = 1 + outdir = null } workflow { @@ -103,6 +121,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -114,4 +138,36 @@ nextflow_workflow { ) } } + + test("Should create a help message") { + + when { + + params { + test_data = '' + outdir = null + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = true + input[4] = false + input[5] = false + input[6] = "Before" + input[7] = "After" + input[8] = "nextflow run test/test" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 478fb8a..8d8c737 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -1,5 +1,5 @@ plugins { - id "nf-schema@2.1.0" + id "nf-schema@2.5.1" } validation { From 11c554e639a202e3fd157cd518b8099d3169a903 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 16:44:05 +1100 Subject: [PATCH 23/70] minor updates --- assets/samplesheet.csv | 2 +- assets/schema_input.json | 4 ++-- conf/test_gadi.config | 2 +- subworkflows/local/utils_nfcore_wisps_pipeline/main.nf | 8 +++++++- workflows/wisps.nf | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 8e79bde..6d87802 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,3 +1,3 @@ -id,fasta,type,group +id,sequence,type,group T1024,https://raw.githubusercontent.com/nf-core/test-datasets/proteinfold/testdata/sequences/T1024.fasta,protein,G1 T1026,https://raw.githubusercontent.com/nf-core/test-datasets/proteinfold/testdata/sequences/T1026.fasta,protein,G1 diff --git a/assets/schema_input.json b/assets/schema_input.json index c57b0e9..236decb 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -17,8 +17,8 @@ "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.fa(sta)?$", - "errorMessage": "Fasta/YAML file must be provided, cannot contain spaces and must have extension '.fa' or '.fasta'" + "pattern": "^\\S+\\.(fa(sta)?|yaml|yml|json)$", + "errorMessage": "Fasta, yaml or json file must be provided, cannot contain spaces and must have extension '.fa', '.fasta', '.yaml', '.yml', or '.json'" }, "type": { "type": "string", diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 046fbe1..dfcd195 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -83,7 +83,7 @@ process { memory: '2000.GB', time: '24.h' ] - resourceLimits1 = [ + resourceLimits = [ cpus: 16, memory: '24.GB', time: '3.h' diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index dc63ab9..68813d6 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -53,7 +53,13 @@ workflow PIPELINE_INITIALISATION { UTILS_NFSCHEMA_PLUGIN ( workflow, validate_params, - null + null, + false, + false, // boolean: show full help message + false, // boolean: show hidden parameters in help message + "", // string: text to show before the help message and parameters summary + "", // string: text to show after the help message and parameters summary + "" // string: an example command of the pipeline ) // diff --git a/workflows/wisps.nf b/workflows/wisps.nf index eece1a9..104217c 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -114,7 +114,7 @@ workflow WISPS { .filter{ it["group"] in interaction_mode || interaction_mode[0] == "all-all"} .unique() .set{ch_unique_pairs} - + ch_unique_pairs.view() ch_samplesheet .combine(ch_samplesheet) .map{[ From 1452b6a109e3c1f805e1f2d4eb56fd5cd7d173a9 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 7 Oct 2025 17:09:39 +1100 Subject: [PATCH 24/70] update docs --- docs/usage.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 36a8573..45faa49 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -27,15 +27,23 @@ S2,Sample2.fasta,B,protein S3,S3.yaml,A,rna ``` -| Column | Description | -| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore (`_`). | -| `sequence` | Full path to Fasta/YAML file for sample seqeuence. File has to have the extension ".fasta", ".fa" or "yaml". | -| `type` | The sequence type, can be either protein, rna . It is an optional column, by default it will be consdred as protein. | -| `group` | it is a way to group samnples to create custom interactions. It is an optional column, if not provided, the inteactions will be `aa-all' which means all sample against all samples. | +| Column | Description | +| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | +| `sequence` | Full path to Fasta/YAML file for sample sequence. File has to have the extension ".fasta", ".fa", or "yaml". | +| `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | +| `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. +## Creating Interactions from sample sheet + +The created interactions generated from the sample sheet are customised through the parameter `--mode`. Two different ways to customise what interactions are generated from the sample sheet: + +1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. + +2. A custom combination can be achieved through the column group in the sample sheet. You can use a combination of the group values. You can use multiple combinations by separating them with a comma (`,`). For example, there are group `A` and group `B1` in the example sample sheet above, running the pipeline with `--mode A-A,A-B` will generate the followiong pairs `S1-S1`, `S3-S3`, and `S1-S3` from the combination `A-A` and add to it the pait `S1-S2` and `S2-S3` from teh combination `A-B`. + ## Running the pipeline The typical command for running the pipeline is as follows: From 8d0218b1b2bb9f9b1743f2f94cbff52bc6563ca4 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Thu, 9 Oct 2025 17:10:59 +1100 Subject: [PATCH 25/70] adding ipsea to multiqc --- assets/multiqc_config.yml | 55 ++++++++++ bin/ipsae.py | 5 + conf/modules.config | 29 ++++-- conf/test_gadi.config | 8 +- modules/local/colabfold_batch/main.nf | 15 ++- modules/local/ipsae/main.nf | 37 +++++-- modules/local/mmseqs_colabfoldsearch/main.nf | 3 +- modules/local/prepare_interactions.nf | 14 +-- modules/local/run_alphafold3/main.nf | 14 ++- modules/local/run_boltz/main.nf | 26 +++-- nextflow.config | 6 ++ nextflow_schema.json | 28 +++++ workflows/wisps.nf | 101 ++++++++++++++----- 13 files changed, 271 insertions(+), 70 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 95d111e..6bfa4b5 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -13,3 +13,58 @@ report_section_order: export_plots: true disable_version_detection: true + +strict: true + +custom_data: + colabfold_confidence: + section_name: "ColabFold Confidence" + description: "Confidence scores for models generated by ColabFold" + file_format: "csv" + plot_type: "table" + pconfig: + id: "colabfold_confidence_table" + title: "ColabFold Confidence Scores" + + boltz_confidence: + section_name: "Boltz Confidence" + description: "Confidence scores for models generated by Boltz" + file_format: "csv" + plot_type: "table" + pconfig: + id: "boltz_confidence_table" + title: "Boltz Confidence Scores" + + alphafold3_confidence: + section_name: "AlphaFold3 Confidence" + description: "Confidence scores for models generated by AlphaFold3" + file_format: "csv" + plot_type: "table" + pconfig: + id: "alphafold3_confidence_table" + title: "AlphaFold3 Confidence Scores" + + ipsae_scores: + section_name: "IPSAE scores" + description: "Confidence scores for all used models generated by IPSAE" + file_format: "csv" + plot_type: "table" + pconfig: + id: "ipsae_scores_table" + title: "IPSAE Confidence Scores" + +sp: + colabfold_confidence: + fn: "*colabfold_confidence_scores_full.csv" + boltz_confidence: + fn: "*boltz_confidence_scores_full.csv" + alphafold3_confidence: + fn: "*alphafold3_confidence_scores_full.csv" + ipsae_scores: + fn: "*ipsae_scores.csv" + +custom_table_header_config: + ipsae_scores_table: + colabfold_ipsae: { format: "{:,.5f}" } + boltz_ipsae: { format: "{:,.5f}" } + alphafold3_ipsae: { format: "{:,.5f}" } diff --git a/bin/ipsae.py b/bin/ipsae.py index dd8ad42..1f41a3f 100755 --- a/bin/ipsae.py +++ b/bin/ipsae.py @@ -86,6 +86,7 @@ print("Wrong PDB or PAE file type ", pdb_path) sys.exit() +print(f"Output file name: {path_stem}") file_path = path_stem + ".txt" file2_path = path_stem + "_byres.txt" pml_path = path_stem + ".pml" @@ -969,3 +970,7 @@ def classify_chains(chains, residue_types): chain2_residues = f'chain {chain2} and resi {contiguous_ranges(unique_residues_chain2[chain1][chain2])}' PML.write(f'alias {chain_pair}, color gray80, all; color {color1}, {chain1_residues}; color {color2}, {chain2_residues}\n\n') OUT.write("\n") + +OUT.close() +PML.close() +OUT2.close() diff --git a/conf/modules.config b/conf/modules.config index c9549f9..3451468 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -31,15 +31,30 @@ process { memory = 300.GB time = 16.h def args = "" - if (params.mmseqs_gpu){ - args += "--gpu 1 " - } + if (params.colabfold_search_args){ + ext.args = "${params.colabfold_search_args}" + }else{ + if (params.mmseqs_gpu){ + args += "--gpu 1 " + } - if ("${params.tools}".split(",").contains("alphafold3")){ - args += "--af3-json " - } + if ("${params.tools}".split(",").contains("alphafold3")){ + args += "--af3-json " + } + + if (params.colabfold_uniref30_prefix){ + args += "--db1 ${params.colabfold_uniref30_prefix} " + } + if (params.colabfold_envdb_prefix){ + args += "--db3 ${params.colabfold_envdb_prefix} " + } - ext.args = args + if (params.use_spire_db){ + args += "--use-env-pairing --db4 ${params.spire_db_prefix} " + } + + ext.args = args + } } withName: 'RUN_BOLTZ' { diff --git a/conf/test_gadi.config b/conf/test_gadi.config index dfcd195..aa73729 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -36,11 +36,13 @@ params { use_gpu = true project = "ll61" use_dgxa100 = false + + colabfold_search_args = " --use-env 0 --af3-json --db1 colabfold_uniref30/uniref30_2302_db --db3 colabfold_envdb_202108/colabfold_envdb_202108_db" } process { executor = "pbspro" - //executor = "local" + executor = "local" storage = "gdata/za08+gdata/if89+scratch/${params.project}+gdata/${params.project}" module = 'singularity' cache = 'lenient' @@ -78,12 +80,12 @@ process { memory: '4.GB', time: '1.h' ] - resourceLimits = [ + resourceLimits1 = [ cpus: 1000, memory: '2000.GB', time: '24.h' ] - resourceLimits = [ + resourceLimits1 = [ cpus: 16, memory: '24.GB', time: '3.h' diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 0e17128..1d6d21c 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -49,11 +49,16 @@ process COLABFOLD_BATCH { stub: """ - touch ./${meta.id}_relaxed_rank_model_1_00.pdb - touch ./${meta.id}_relaxed_rank_model_2_00.pdb - touch ./${meta.id}_relaxed_rank_model_3_00.pdb - touch ./${meta.id}_coverage.png - touch ./${meta.id}_scores_rank_001_00.json + for f in alignment/*; do + [[ -f "\$f" ]] || continue + fname=\${f##*/} + id=\${fname%%.*} + touch \${id}_relaxed_rank_model_1_00.pdb + touch \${id}_relaxed_rank_model_2_00.pdb + touch \${id}_relaxed_rank_model_3_00.pdb + touch \${id}_coverage.png + touch \${id}_scores_rank_001_00.json + done cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/ipsae/main.nf b/modules/local/ipsae/main.nf index ed4551c..8973233 100644 --- a/modules/local/ipsae/main.nf +++ b/modules/local/ipsae/main.nf @@ -8,13 +8,13 @@ process IPSAE { 'quay.io/biocontainers/numpy:2.2.2' }" input: - tuple val(meta), path(pae), path(pdb) - path (extra_files) + tuple val(meta), val(files_names) + path ("data/") output: - tuple val(meta), path ("*.pml"), emit: pml - tuple val(meta), path ("*_byres.txt"), emit: byres - tuple val(meta), path ("*.txt"), emit: txt + tuple val(meta), path ("data/*.pml"), emit: pml + tuple val(meta), path ("data/*_byres.txt"), emit: byres + tuple val(meta), path ("data/*[0-9].txt"), emit: txt path "versions.yml" , emit: versions when: @@ -24,9 +24,16 @@ process IPSAE { def args = task.ext.args ?: '' """ - ipsae.py ${pae} \\ - ${pdb} \\ - ${args} + pae_files=(${files_names.collect { "\"${it[0]}\"" }.join(" ")}) + pdb_files=(${files_names.collect { "\"${it[1]}\"" }.join(" ")}) + + [[ \${#pae_files[@]} -eq \${#pdb_files[@]} ]] || { echo "lengths differ"; exit 1; } + + for i in "\${!pae_files[@]}"; do + ipsae.py data/\${pae_files[i]} \\ + data/\${pdb_files[i]} \\ + ${args} + done cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -36,9 +43,17 @@ process IPSAE { stub: """ - touch "${meta.id}.pml" - touch "${meta.id}.txt" - touch "${meta.id}.byres.txt" + pae_files=(${files_names.collect { "\"${it[0]}\"" }.join(" ")}) + pdb_files=(${files_names.collect { "\"${it[1]}\"" }.join(" ")}) + + [[ \${#pae_files[@]} -eq \${#pdb_files[@]} ]] || { echo "lengths differ"; exit 1; } + + for i in "\${!pae_files[@]}"; do + s="\${pdb_files[i]}" + touch "data/\${s%%_*}_10.pml" + touch "data/\${s%%_*}_10.txt" + touch "data/\${s%%_*}_10_byres.txt" + done cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 0e6a450..959d8fe 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -28,7 +28,6 @@ process MMSEQS_COLABFOLDSEARCH { mamba run --name colab colabfold_search \\ $args \\ --threads $task.cpus \\ - --use-env 0 --db1 colabfold_uniref30/uniref30_2302_db --db3 colabfold_envdb_202108/colabfold_envdb_202108_db \\ ${fasta} \\ ./db \\ "result/" @@ -60,9 +59,11 @@ process MMSEQS_COLABFOLDSEARCH { safe_name=\$(echo "\$firstcol" | tr -cd '[:alnum:]_-') touch "results/\${safe_name}.a3m" + touch "results/\${safe_name}.json" done < "$fasta" else touch results/${meta.id}.a3m + touch results/${meta.id}.json fi cat <<-END_VERSIONS > versions.yml diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index 6be245e..3c17291 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -77,12 +77,14 @@ process PREPARE_INTERACTIONS { stub: """ - touch "${meta.id}_boltz_interaction_input.fasta" + #!/usr/bin/env python3 + from pathlib import Path + import sys, os + ids_batch = ${ids.collect { "\"${it}\"" }.toString()} + for batch_itr in range(len(ids_batch)): + Path(ids_batch[batch_itr] + "_boltz_interaction_input.fasta").touch() - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python3 --version | sed 's/Python //g') - generate_comparison_report.py: \$(python3 --version) - END_VERSIONS + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ } diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index fdce44c..444fe04 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -41,9 +41,17 @@ process RUN_ALPHAFOLD3 { def prefix = task.ext.prefix ?: "${meta.id}" """ mkdir out - touch out/${prefix}_model.cif - touch out/${prefix}_confidences.json - touch out/${prefix}_summary_confidences.json + + for f in data/*; do + [[ -f "\$f" ]] || continue + fname=\${f##*/} + id=\${fname%%.*} + mkdir -p out/\$id + touch out/\$id/\${id}_model.cif + touch out/\$id/\${id}_confidences.json + touch out/\$id/\${id}_summary_confidences.json + done + cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 5bb3a76..4b78501 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -53,17 +53,23 @@ process RUN_BOLTZ { stub: def version = "2.0.3" """ - mkdir -p boltz_results_${meta.id}/processed/msa/ - mkdir -p boltz_results_${meta.id}/processed/structures/ - mkdir -p boltz_results_${meta.id}/predictions/${meta.id}/ + mkdir -p boltz_results_fasta/processed/msa/ + mkdir -p boltz_results_fasta/processed/structures/ + mkdir -p boltz_results_fasta/predictions/ - touch boltz_results_${meta.id}/processed/msa/${meta.id}.npz - touch boltz_results_${meta.id}/processed/structures/${meta.id}.npz - touch boltz_results_${meta.id}/predictions/${meta.id}/confidence_${meta.id}.json - touch boltz_results_${meta.id}/predictions/${meta.id}/${meta.id}.pdb - touch boltz_results_${meta.id}/predictions/${meta.id}/${meta.id}.cif - touch boltz_results_${meta.id}/predictions/${meta.id}/plddt_${meta.id}_model_0.npz - touch boltz_results_${meta.id}/predictions/${meta.id}/pae_${meta.id}_model_0.npz + for f in fasta/*; do + [[ -f "\$f" ]] || continue + fname=\${f##*/} + id=\${fname%%_*} + mkdir -p boltz_results_fasta/predictions/\${id}_boltz_interaction_input + touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/\${id}_boltz_interaction_input_model_0.pdb + touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/\${id}_boltz_interaction_input_model_0.cif + touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/confidence_\${id}_boltz_interaction_input_model_0.json + touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/pae_\${id}_boltz_interaction_input_model_0.npz + touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/plddt_\${id}_boltz_interaction_input_model_0.npz + touch boltz_results_fasta/processed/msa/\${id}_boltz_interaction_input_0.npz + touch boltz_results_fasta/processed/structures/\${id}_boltz_interaction_input.npz + done cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/nextflow.config b/nextflow.config index eb26971..84de3cf 100644 --- a/nextflow.config +++ b/nextflow.config @@ -36,6 +36,12 @@ params { colabfold_alphafold2_params = null colabfold_envdb = null alphafold3_params = null + spire_db = null + + colabfold_uniref30_prefix = "colabfold_uniref30/uniref30_2302_db" + colabfold_envdb_prefix = "colabfold_envdb_202108/colabfold_envdb_202108_db" + use_spire_db = false + colabfold_search_args = null // MultiQC options multiqc_config = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 5b5b7f2..fed197d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -65,6 +65,11 @@ "description": "Run mmseqs on CPUs (default) or GPUs", "fa_icon": "fas fa-microchip" }, + "use_spire_db": { + "type": "boolean", + "description": "Use spire DB for search", + "fa_icon": "fas fa-folder-open" + }, "email": { "type": "string", "description": "Email address for completion summary.", @@ -104,6 +109,23 @@ "description": "Link to the ColabFold database", "fa_icon": "fas fa-folder-open" }, + "colabfold_uniref30_prefix": { + "type": "string", + "description": "Link to the ColabFold database", + "fa_icon": "fas fa-folder-open", + "default": "colabfold_uniref30/uniref30_2302_db" + }, + "colabfold_envdb_prefix": { + "type": "string", + "description": "Link to the ColabFold database", + "fa_icon": "fas fa-folder-open", + "default": "colabfold_uniref30/uniref30_2302_db" + }, + "spire_db": { + "type": "string", + "description": "Link to the ColabFold database", + "fa_icon": "fas fa-folder-open" + }, "colabfold_alphafold2_params": { "type": "string", "description": "Link to the Alphafold2 parameters for Colabfold", @@ -169,6 +191,12 @@ ], "fa_icon": "fas fa-stream" }, + "colabfold_search_args": { + "type": "string", + "default": null, + "description": "Arguments to be passed to colabfold_search", + "fa_icon": "fas fa-stream" + }, "ipsae_pae_cutoff": { "type": "integer", "default": 10, diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 104217c..1c093c9 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -114,7 +114,7 @@ workflow WISPS { .filter{ it["group"] in interaction_mode || interaction_mode[0] == "all-all"} .unique() .set{ch_unique_pairs} - ch_unique_pairs.view() + ch_samplesheet .combine(ch_samplesheet) .map{[ @@ -304,12 +304,6 @@ workflow WISPS { .map{[["id": it.baseName.split("_")[0], "model": "boltz"], it]} .set{ch_boltz_cif} - ch_boltz_confidence - .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} - json: json_list.collect{it[1]} - }.set{ch_boltz_confidence_scores} - //prepare interactions for colabfold ch_colabfold_interaction_in = Channel.empty() if ("colabfold" in tools.split(",")){ @@ -319,7 +313,7 @@ workflow WISPS { .buffer( size: analysis_batch_size, remainder: true ) .map{ colabfold_batch += 1; - [["id": "batch-${colabfold_batch}"], it] + [["id": "batch-${colabfold_batch}-${it.size()}"], it] } .set{ ch_colabfold_interaction_in @@ -349,13 +343,6 @@ workflow WISPS { .set{ch_colabfold_pdb} - ch_colabfold_scores - .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} - json: json_list.collect{it[1]} - }.set{ch_colabfold_confidence_scores} - - af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ @@ -396,19 +383,21 @@ workflow WISPS { .set{ch_alphafold3_summary_confidences} - ch_alphafold3_summary_confidences.collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} - json: json_list.collect{it[1]} - }.set{ch_alphafold3_confidence_scores} - + ipsae_batch = 0 ch_colabfold_scores .join(ch_colabfold_pdb) - .map{[["id": it[0].id], it, []]} + .map{[["id": it[0].id], it]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) + .map{[it[1][1], it[1][2], []]} + .buffer( size: analysis_batch_size, remainder: true ) + .map{ + ipsae_batch += 1; + [["id": "batch-${ipsae_batch}-${it.size()}", "model": "colabfold"], it] + } .mix( ch_boltz_pae .join(ch_boltz_cif) @@ -418,24 +407,87 @@ workflow WISPS { .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) + .map{[it[1][1], it[1][2], it[2]]} + .buffer( size: analysis_batch_size, remainder: true ) + .map{ + ipsae_batch += 1; + [["id": "batch-${ipsae_batch}-${it.size()}", "model": "boltz"], it] + } ) .mix( ch_alphafold3_confidence.join(ch_alphafold3_cif) - .map{[["id": it[0].id], it, []]} + .map{[["id": it[0].id], it]} .join(ch_interaction_in .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} .map{["id": it[0].id]} ) + .map{[it[1][1], it[1][2], []]} + .buffer( size: analysis_batch_size, remainder: true ) + .map{ + ipsae_batch += 1; + [["id": "batch-${ipsae_batch}-${it.size()}", "model": "alphafold3"], it] + } ) .set{ch_ipsae_in} IPSAE( - ch_ipsae_in.map{it[1]}, - ch_ipsae_in.map{it[2]} + ch_ipsae_in + .map{[it[0], it[1].collect{[it[0].name, it[1].name]}]}, + ch_ipsae_in + .map{it[1].flatten()} ) ch_versions = ch_versions.mix(IPSAE.out.versions) + IPSAE.out.txt + .transpose() + .branch { + boltz: it[0].model == "boltz" + lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } + max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} + return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + + alphafold3: it[0].model == "alphafold3" + lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } + max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} + return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + + colabfold: it[0].model == "colabfold" + lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } + max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} + return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + } + .set{ch_ipsae_out} + + ch_interaction_in.map{it[0].id} + .join(ch_ipsae_out.boltz, remainder: true) + .join(ch_ipsae_out.colabfold, remainder: true) + .join(ch_ipsae_out.alphafold3, remainder: true) + .map{"${it[0]},${it[1] != null ? it[1] : ""},${ it[2] != null ? it[2] : ""},${ it[3] != null ? it[3] : ""}\n"} + .toSortedList() + .flatten() + .collectFile(name: 'ipsae_scores.csv', seed: "Sample,boltz_ipsae,colabfold_ipsae,alphafold3_ipsae\n") + .set{ch_ipsae_scores} + + ch_boltz_confidence + .collect(flat: false, sort: true).multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_boltz_confidence_scores} + + ch_alphafold3_summary_confidences + .collect(flat: false, sort: true).multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_alphafold3_confidence_scores} + + ch_colabfold_scores + .collect(flat: false, sort: true).multiMap{json_list -> + ids: json_list.collect{it[0].id} + json: json_list.collect{it[1]} + }.set{ch_colabfold_confidence_scores} + + COLLECT_CONFIDENCE( ch_boltz_confidence_scores.ids .map{[["id": "all-boltz", "model": "boltz"], it]} @@ -477,6 +529,7 @@ workflow WISPS { ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files .mix(COLLECT_CONFIDENCE.out.confidence.map{it[1]}) + .mix(ch_ipsae_scores) MULTIQC ( ch_multiqc_files.collect(sort: true), ch_multiqc_config.collect() From 51aeeb509ca4f1c8160cb096a4516d4f887e8a8f Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Thu, 9 Oct 2025 18:20:52 +1100 Subject: [PATCH 26/70] fix collect confidence output --- modules/local/collect_confidence.nf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 2d8998c..00420d1 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -39,6 +39,7 @@ process COLLECT_CONFIDENCE { rows = [] all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + writing_keys_extra = set() # First pass: read and collect keys cntr = 0 for file in json_files: @@ -52,14 +53,15 @@ process COLLECT_CONFIDENCE { if isinstance(value, dict): for sub_key, sub_value in value.items(): flat_data[f"{key}_{sub_key}"] = sub_value - writing_keys.append(f"{key}_{sub_key}") + writing_keys_extra.add(f"{key}_{sub_key}") else: flat_data[key] = value rows.append(flat_data) # Write to CSV + with open(output_csv, "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=writing_keys) + writer = csv.DictWriter(f, fieldnames=writing_keys + sorted(writing_keys_extra)) writer.writeheader() for row in rows: writer.writerow({key: row.get(key, "") for key in writing_keys}) From a27f192983b49c7323d7e5e8f5fbc10196f05fb6 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Sat, 11 Oct 2025 18:28:46 +1100 Subject: [PATCH 27/70] new split msa --- bin/msakit | Bin 0 -> 935504 bytes conf/test_gadi.config | 4 ++-- modules/local/collect_confidence.nf | 2 ++ modules/local/msa_manager/split_msa.nf | 17 ++++++----------- 4 files changed, 10 insertions(+), 13 deletions(-) create mode 100755 bin/msakit diff --git a/bin/msakit b/bin/msakit new file mode 100755 index 0000000000000000000000000000000000000000..c1ee5da8cec479238b0e0c3fdfac8d0972b7de19 GIT binary patch literal 935504 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

    =^8&nNQ?K^3c0)bjw;4Jdy z*+mC9@Mj$TISAV{v0>Vb1+h=z_fv)&duA6EI)cXpqDzWAmC>n1v#mZ1elTwyys*+b zu80SXz`~|AG(8Qj4#R})d$4&?Y}D^xjhSWYk!!F4fe6jVm|JGC1d!onU40lg)3eJN zFrcyKy=*u}jm#&k;Y=ps&)~?$8cd8~3p}gj1Gwm2fqKHM!6zw-)C14v znkSIgT!<(|`zdMN>L~!%BN5uBP&A<=Gkvtr_46%`Olt2#*!(8eKL+Hxc6TvSjsp(n z6YxNvFpUmq3q#Y5^dxpCqD8>JF7i+}8*Aj>R%1~i-9ySw@|C+egor=Z^h0`pLa8@n zOYp~9QdDi?fKW9t53Hl9<`DM0xOPip5v_dI&VG4Qau9Os^SQ-x&d3y6uLhX*==*rj{ocQ^u_k*L*(?!>~E2E)8 za*w3IJq3!iunRAd+;&He50MYFI}F_NAD_+JotvdUn-e#?qD*@zM0{}hKWlgUe=~Ty zBmH3@aH=V7h=3xqw>wnPLEGIazu@i8L-j8VkEzyk(deijqLU@wz~m&3G`emc11(4$ zSF!Ds$$gmLp|Lw`Dmcco-nJvD5U7b^udeF_2!n0JI#4v7YjJ^@Yovv#F4jh<{IH+@ zC2Am$IO#GkzzO6Tp!9!9k|cMCgln*Wsj4F}GX_z1RHsxWN7Z>yC5K82&4|v?gnA6q z4W@;bCx+nr<0r{iYS;6~Z}e8C>d?n`d$3&}LrpmNr1wUwpx71HBXDb1T=(H#Ra`E- zc7!Xgd|WZb^$)jQaVfK;npe^k}~P*wezdNv5W8G2|- zn)w_`J6ci4n$i!Ty8O{frg}Wo>tMXj`%6^Qv$sh;X;BE{$B050gNwnHZ7n+C9A&$SJpa4MtRFp6@AK%uvmMFiZ6a@{j23w-!NuTt zyXAQ$Z@uLC-z9ICQrVgOpIV-iTK^Sw-n$$tE%pN6vxN#AGg%)$Np@=LJ$BCqB2K!08TYhd z7H86FID&x)8<2E4UvM>@jIheX(~B?=IgVYPKFrm0B(B1xxHtqCek^7Otb2?4U~~km zeSCOwYf(RLWs|A%M{aatl`nt$cs7;rBz?JNb$3E#z)=s@A!s~>#S3C3?N>S5mx7A4v9{QBv101icp+yBpvMoK^ndOSXqYGYT_$9AwQW{Up5J3gWW zcu;OU0bX`R3Gm^HdLUe4j==DU0a{hoX-(E?J+7dt$Z3PkX*lb&CF`^eS0dDQ=9G^R zJF-sWS*HnHQLRU)J+ile!5lB z`+q0T|1Ns}-k)((ER2j(DKz8zUmif@+5siVU+)!o4UAp0{Cb0sm>UHbF2xSN;kdx` zN&#LN$^1WdBBI9NA@vjLb+F>ZEVn~hIQuZz@LM1It-qPki`>`_H8c>Lip2!X;n7$c z6C4{b#g~8OPi&cq<@cBJc1L-#Yl{|kpTBPl*A}g~C0n(PDhZxB&sfQp7 zll2gLk#+yS&_i^%Sr74R`uf&AME+)d5AoJ7 zTWdPHGf97BO`Q?E!5_m&n>B9qE*_iJ^8)KnvV-db{|dj*Uu?h%{V>?zn$(>e`XhI6 zJ#9-9a>B>hw=w^zNvGjx>0PkhXx^2`=z09*432_t<9 zZjaAKmp&G^73{W%o*sr<$8d_Mgl@;+HpHF=aLXjX-@Y@spUphh(WD_}7v0zzg$^oH z@Vx|0J7Q-QR-Ah4oKz8Ly0PtX(f92_Fw9zbmBLd7Mts&_VV7bpY#`77F4n@H7*+Mg zqA;a@5Nn|~AC*ehX4K;|J8bnB()<*^-dO%P6-@7bH1I&|URKR;N+Pum`@D1Pri zBpzM&ZzPE&x9TKuZ&90&4p|VqqZJL786FTDSsci|Y-?ivWFPi%^&SYGBZj$H2c+^Z zCdw25O+r5exBoV^!rQEqMea)5zaWbbaqNjkp=7nBYH(wlfgbLpj{iKo&keRAEXH_h zCmi(l!7Zwok5w_IUW76!97UCmsTZM4b~8fig(;KY;y16#A7{FSl*t3^mgyE!CVu9a z=@wEZm$9c=W%3rgrNEgo>1VfDW%B1C6mnLX6tkdg%47*%@-c_pbS91YlCjqK@k8yyCe3;}k7I*`@iF$uT^(C^w$?HnYHpcxUDQ~Hy*z^o3Dd!_!Q&QB4R?~agu&uI@ zS3p?YWTKF0$t2+w=Rk@IPiW?!IvNkY>4VE+TzYbL1>^>L0(pVgQhZaOK73Pa7>M}R zB9pmkESgE*a8reE{7=DG<68z_gKO1m9T=tk3Vc)W^@F%+5N=k`H{68rO&?q~jDl*UGTC=V~0sY&dM+*_>B0lFs>%NoMkAG)YHglKU)HaJ?ZSe3Zh)NpsS*D-o^l zFAkio`H*6ymB7?ff8sIDx5u~#_RrTs^)-GNIzmLdez0f}Gv?r z^L_VVabVXHlri2;;-UUMTJ5IYC|v)(g}IFB{)&=!a`tPY`TQbG^@E#*Q;JCkGb=#s z!odx-v3H7)C|u*M0kVSot+R*u@j@s&7>{Fz(5yBmcxT2L(5W_Z28b_*)PmIHkX0b{ z|M#^ZwV&L^GaZNis2PUw#BPb2vE0T(&%Ui4Hf>7-X+E*r;JYRH#+lLJQO>iYOO9f) z!}y2#V(PFrtuAJrwdp`-{Q=HTZp8L2$A`2>pwJ)LSXf#1zN@Je6Da8u*x|48PRarw zTVekZz4q3$Xy1S8#0O||oj??R`aapJseO@&lbVO=O0?*K{aV3G!=-tl3u)Cd5Unqy zBEm*(+UI6<1tw!=9S4_w_{cD-Y8al>&fJoB`pA)3k{QB=CIK;ip>wZt=n~v8Fm%E0 zXotV7qAG+pWiNzT65V*Ncz zf_ZRskiS!}*dRIjIx&xiUZ z@nTTT3J>hl!3-Qp3cN-pKGBrJ{T%0Pw2o>)&#vt_;IH|NgD-XXrA^!Hz zCyXIO4eQk%AC`x|9346{nt$pubTSE+-LaM6!|)&`6EuyZ z;OIPP>e^?-8Dar58bMgpNQVRw-{hOyX$JhtL#t~};|P{}mb!heoTrcp>u zr;|9X2_D=)CX>i@Y}$eNk}{#FaQr4UmdoT;+&V)OC>P?1kjaxlCX>+Iw2zEI4@rW| z7X&vKUa6*ggc#eR1(hwu?IO?maM$H7>w%OBWX{`s3+&at~pev``yc9)a! zWXUmZp>Hzv-@Eif?$l#*${T)a8{Cn?@%BE4)0czh1};;-70wEK zU9{~xHe-7?&JsQG80`Otu(uwd7dyC94-)9Ws9?~5NPri!bO`~D`=-o#?Jh6Nx#D0<)2OTvGBu^)~j*HgGp z&A-dziq2khxBv0($2-a%E!=zuc1L;qSAUM4Jnsa&!texoOER4`3!DJ6=)4o$X&C>e z4>oS_fcn^>Ls9x&vtPl#X98t!p##EGxO6rB1Q&?D)QtLk z*jA9DSq&uAH*kK321IA!#d&zSK|F<@4Jd|Mc_G+qMrR`V_}_bTc!e5 zO<}-l@T7O3ylehWqnv^RZh-Du07t36qU-?@7`DUqOGQz6q`YkBBi8Pw`9r_;nV*RV zy)&vJ-Xa}6-i)qtmPhf!95^I5y%NWpAl=z83ei^C2S;>Y#t~f{Rz9z&0f()ymjWB} zM;Ec`MH5Xh#+DS-`K|RB=~Y^<;&@!ZdJ`Lw{gd~s_N33Uo$o3S-{3yV)$}&BGJn2m z3Y{lv!X8cZEuY{#JEnhk{1O>lFzzR&V_Rky4Q~d@!;jQ?&>W|up`iX0HK0CrLf2C_ z*K|4psWn~8aQ16uzq8hLJ~o+&5v^+?hAR` zSVGxGP2%;E4{^*N$GR#?wxbu=h4j0S{-cn7I#=kW-!(y(#rF9^dXDXw$!~M}by!kC2%%{_;2|vBV3|8EvJ&%ksf|%9XiML|mUHU(h@#0=BUo zM;9v{pHjWTxwD>tYi3WtDk{RsIaD+FuY^^GWvS0$<*>Skoml9+d;f&^nPq@ql@Pru zFTAPn`bp~dcaSQf(xeV^j@z{Iih5TDHxP;wNo6zUS>LQ6n{UA(oG075WC6| zz={3HM#>@2i;44akAOmr2`%0RM^`zbhT*rEj0(c?-ZaIzw84& z)$K>4L@v;B(Su%JR2_&Ohje}rn7lvWz^jM2xs9}@F8Agedm4+vh|Ceh@$mdH*cVTE zcg;@m^r9JysOq4E`>@FYHYMp%yTXpm$j1(nl$VUJSi!y)riQ75{_3twMk}`uQp;~2 zL~g?%w}JXSpuejEdV|2MrXfuH5a zZ%oapEceE~LStvwbS@aJxTxqcgK3y)6)}flXbHZec80J{Y#(SA0;RGcT~p=8xQf1Ae1G zNt8QCjG1nF+wTqvCiH09B4?0mse#j+NK38-f#1LBpe`}Ts>qH9k&cljrDIY9T-jvH z>JN!yt{FYT>Jg_Khq0G>Z3skHBE{Ds#lu-YMkY?e%sfr|F4CmSgoDRLuS&U zxWoGrvhuB>!L7bWsKF9)TWf)oJaK}El=8v8`?iVN$r^uf9M4wGcC zPoEDSNynd46orhk;Od>*K(Z7Vw#A{6r2MbL4OP_8G^AGp~(v-drV-jV>21iKe;Kj zISsuxd?;q-a?pkrI)7?LZ}!19VIg27u#Rq03l1j7>pZyT=`Y4rrr^bgkoRbWmYpC+ zSNIorypnQV#UB5K9!J*IWPQ~!d>6+JSsZ5gW{z94xQ*d@j^kO}&G1DW_hfOB;h7xw zXEALl%@iCCr1fMt8ZXmDJ274oTFvxh2gwKjf zyrO(JvVmk5Q|ZaKmUHB@p<$H9Xr$VP4&tcZhFIRCk!Bm3!dKUbY z9kdy#24AM&%?GGhudCvqI#cj02iVU50oS7bb-*PG*&(p%EHw+5)S-}H&s)> zQH+gZhdD5{?HEW-=qLm_kd)AISZS|9ADkbWmadcbGD^G;8NhEq+T8{*SYPKv$i%s) z;55AAZ-tk1C3I$uAIIKld_jl8F}|SwV;o(-r06S16+*-!4}^%{nPkcX$`Zj-_8HVrIzNyzSNtdD~xNL{>T$yJY$u1dJ*i``|)n8 z$P-+^WBk!4+VC(_(AN$tEBY4_tv`Ba9AEUp*F%s18n0zirD)3jwOhKWW@VlZ?M4uy zKq$U~hq-qu26*og-p|AjBH&#(lYWM$=>xO&6!KGpK!V4jAac%XNWq@pvz!}{Ad>FH7v=m|61{kzAIYE6`*ryrxRm6NK>Jys2P18{ zCQoM49SA;`kwz^AU69C?}sWi$pqvE=ylFa!QS7I3}$(_mSqb9(OJcGSIl%S4V~~V zn&^b*;4pnK+1q6Jdg;|ir^1n|@eaxX+`_?$&jpVe%pP5im9O+0q=B>Z6*S6r!r0r*jQ5|Air$gF#r~WU zir+CYNSD7)slTBL39qJH;ulAea*L&$tkc=ZJf#<^Cb-I$;IpE$KW5_?Bo*oYn5BD~ z35z)pYjCE=+0ujdRY>VS7#aX=z7K643F^)23(R3i*?tnbMUTNM|q;RoL(f< zcr4u5Rt8qA(9|KS81-xu)EZ+Uq;Pm6A_URS1Ewim{kzGe%>+8ji$lIrvhxhGV zH5GwgJf!RGVdX?dybjp6VhTLu;lY_hBfExo?K-fWJ%8);iV?4tk9Z+njK@Rp<1`~) zE4N-qABwx7UAsn?kJwRRy_!@1F#Zip-j2!5irBe(%Om^qT{m5X35W8?K98&M9J*S& zFN_MdqPD`?R^Ii26K;;U@jDfmc0UQ1<3neY103I{cjxwwU|#pb>!&DjJon;-%4_!- zUh%vaG%KRs*KvoR0NCC;4f0?D#P4vBd?stH&g2<0xS6@cncG-%6UG9RkUz5?eZu&ts^H(yt?Pqek zpu*Zw-j#;jzF=~Do#gh#_|R$PYxfJet?w;jUcZ3c#_}s~=x{t2a$Db<2bz^b?;dJR zlRpVKw$X2FJGw7nFDq??5YYakrMIZf6 zO7w8N7YQpX?A=Dw?)rb&d-uR7t84!|fea=}e1a0iiZ#@zL=l6Ek^+)Q&>5X5tsbTQ zSp@}ziWMOdyay)1OvkZkX^S4(LtER@)>dp0(IO^t7quu=(O!&NbjElIUNCrJ-p_aK z=Se2qdV1dW{Qh{~QSv;`zVEfyT6^ua*Is)`LC&Kx6@d~^2w_Bp=WH*|M#q{;DY)!f zn5rFTA5vd;D#ec+PVo$epPajb{zT}TBMF7=i;7Z<3PL%AuS|bi$&y2V`yn+b($zrJ zkMXYL;W=4~Mz}A{=3CsY1U852P&P>f*&CJ~q4#G(`-Eb(H1uYw(x%x!D>8MmRpvFG z2e^o>pf1H0x!7FRBb>OmYbA)yjOo_+_}X+|vKf3Xlx||qu6mj|6Tj#)i=x9%tvigm zU${thzk(JMXSLV8$c-CpI*iUgtLe1z2wwZRPAa{IOz6H@GZEX4gXVk+`C?0|SMTN~ zf-CFa7*$#SOnqfjZ7H{-2oh~m<;FQTXXc45souR?l`7s&hSE{J>-h*}XX#aC&NSLi zZ%G}}yFEzSJ4l+HuUB@y1KdR{$YU%Ja9yT@2eZnM`pq3Hemn9^H@qC*D|YbUCVa9o z=s5bfA_}J&ikV~y~Rcox2ZmqxU-JUcK>=FRdu?5byc}b zWwPo5f!Lm+I^1!lzN+ftZ^(^o+w#u&s7s#&Mo-aBlnE7$&v^|$2DUY*YT_TFNO@l4 zA+<|5IVBa2r^7Ajo{?3*{+0W2Eqy!g4!4Kn+jn0dv4|=QC$F>pzGzRbS&DC;`4*dQ zf8S!8ZWF)CrrS`;PMwv+ubnJvUWFpey=3i~nACiLj88u@#W(&4++m+|uy07SBh`N{ zXe#etq+dTe-w0{F^8l8{y(!M>iP3i2cy|y8qz`LfWvp_ThD&r?R8zqP%$Jsq^KKtT z2G*qL#}S%vU%}?=-_1Y6D>b>FM`dF6LA0z5X{dC3kGctZmcveePHE)w^`)^-G5Puf zLFXlE2bG+cxM$c@lR4O-zvO=&VjyGabweq#D9|`=a4%!tv*{jKY7003_J_|%av;J_30nxp@{Aj z_IB65fT|xLmyr5ewAYStCx=#@;WH-ojB&oDP5MQ&dugtGgo=&s7!ChD45ZSQ#Z9|H zbpP|*+8ff%#6=Us@j;wV=RUc>FNOiB%3M@RSt_FLJoxPaxOz0xnu+c_$N`R_CPvd} z0}b3)Z0PhJCoWA$8w&dRG@1n=ILl1()`P z04C)P{lUBbY(Q776U(qY=*gBj*Icjda1LUUC*{zBXmTQg`G5y=ccV|Gjc-tDui<+5 z_k+1ha_inQ2%YA)$4xiPOG6LLp`Hhs)9N<(&>Q)AD5q^gmV9Qw@rrtSWdZ^7&TgO) z+yDX^9!ij%%cq|S7+&KQnsYk)7Sy@?9Soc_jOh!B-(&pcKHGfbUd8x-(I#$#w41$$ z(coZuwQeIjiGvSU z=-+7$sH_H(Lyx4MES%nWUgGAVFss_3Fh0NYr_j!}rTgz-RyKDA9L`>N*VWMVhex_$ zy_{k5>wS-U-)O`0^NPbc%&74s;CTYXI!Y{2>W7NL^EN~6_+7X82?y^VMH6Re)i{kc z2pSUfJd+qRta>PG&|IiNf&+7G=6S)?YkY&xsvTn>_$x^9)Q~LjKCgH!Tcv(7e116^ ze>HXEAhrBKe7OFKxb)qY;1&{%38cd2IYB)!-O&;_n3SXbp$F5S0L~d|s2kb|!9B$@ zI9Iapif=m15J99qN5cwh$a^ri?PN-O_^oad*lmZorqvxv+-)PW`{E-?R&!X|ii74>uF$?qky_QBw;Ti;e!;ja@Q-bx1V6f$Vmbs6a6 zvxI(H?*pYX^bdqiIhC}&EKA{}{TT~|1I#R_aPv>-U81jm@Dc87!im!~43^AmywTyu z&op8xAT5;{CH^=~J=wK;jap_Ilr_1*fejl1A($-VX_}K`g&e7hVuzajTn%gKPL`B= zq#vsb-nyE4Y*$my^_yyWQg8Qlg>AAqZD=oAmsQv^e(Y~t?3$D5j1x-K&G_oHuBhxH z-tPQu&fEP+EB~O0&^9^slR5A_2{i$un7bFK=FJ?LA+(dOc|J+10T_lmAgcN4OGEm)B2us+UoJUJIFeKS-tlC-0=KkAf zsBIS^n6Ynrx0^F%Z4l6ZIR2hy>F=>)BI|r>CFKA0aAJXTiWysJ=L&Lahoas|J@%pQ zF?GlB_+IrnTsAf31H0UGS^639X1Dpzx|TZqGwWF6Z%81Sh&#=FUx-Y!<>7ck>0(-c zUcCCfqS0QTy!W(N8D3jD-fR5KMz(O%V24DNRh+ofQ0y}E51Ag`OOqt`3~OVn?|i6k za#8v_8bp9nNm_f6Cd6J$Hm!PGf|llyN?(eQD8byqNQKVj{tLYi)RBs2(g~>v|M7`5 zftDJb5Ve`$UKUk&h5;GZf%+sW#nUQGV(XzZTJ3&>RKKnz?(_zqmO)_GPvtMvlR_5r zwDNgh!n=MnW5qpC0Lhl>lc*IuN9f(8ah;e_>{dPT%P;AggOud^>9xFi)uF592qigk z$?^2Ys~&lgeY%0?suzjGmA(QjoGI>wnTR$QMn;k{Z5g^_z7`AHvh?%F-st0=s^vbU zo1~9Jrm4!j(3X;3t$01jBk{Klf4dHKpr4xoiX0($MR$}gChb{XpXiB2{LMSjR_vx-U0b3> z3&PwgS?p9eW>R~iNF=}RF=yT@a8#`*;ji^orYg<2SC&?@sO=sj5Q$I*n#OISD!%#w zA6um4S9yKL=-y!UscXvBg-Xj;i{%z>IaNY#XysW#AM6-cok3NpYi`B7S5>d7*XLUp zQ90Uzr~H+VY<>Eiw^NWmOA2W+vEbxxL?)AErBf_)LFsg!AapAQWoQN73IEP3$K+O8 zn366bNve$d^E6V8?ZX8AP}#j|8CL-q1D~rNa9Zc=e4W;T53V%F!%)Coe-U9fxI;-) zR766`qdTFsq6VUrS4369)2Hni{T2zA`%%Mq@;|xma0L@r>Bou7SR6%+)r->kU9xwo zNcmx62?2R`D3Tv7dFgwOyj6~}YHip>-W!yNLd5my`SEfc>&SZzLZQg}j_+uEMs7UD zk$0VaE^|PIygAXals=R919?!>j5k+Rgp&>aH~=%6G3n2Ol@86(hAcoWI&PnU`sOJV zxEDZa1pb8pTCre%0NU6cK)qZijsHmu6#u)EC;abAKL4}NP5{*;24ez?zLC3t=45UI zGMrdHT_o(1AU`o(n&#q!UTfz*oab#JYp;2bmj)QOTe6%%`{BU<);ZTXNL-S|US{_h3(->-Wsl00WS8msGj zwOyds$RmO6>3k;fzO71`SlL&oRukV4DQm~dGs;z?WxK)!yTXrm8m|uMhzw|tRCLr8 zgkw)&<@v<*&DJt{Fo+(6%bu+bhm#}vhUctTnKW&F{fINP3*!3mep^{M_l0Q1t~%CM zj!HRqk`U8hgGFBNps-i4{C=9`ZenEmKVN-@QTbTv%TVP0c0!lHcb?!sx!SRw$d+T zipz;@k7V*ny*s~32@Iqr!AhDR@y4w48h#1ENd3nKCa3GguM`(eR$^u zsRb&fcPWrq)g%_~NUV-U%A2W+4k*xtqhZ8PWtQ!O;8;gOnAhoY0EW2Qtg;e|N;l{! zMyNT0)ZV-s7)fp0<=3BiGPeNhibO@W5-BDqWMG0ZCfw9e`UO(!v~NG2IUF8E6S*VR z=c8UZ^-L=Tb(nC%3at!8@$q7eW9?9ZTtVch?qulqI`l$U^Yz)CXpvBs#Je zrulE0U2gi${+Q=e2As~>W#iqnO+W?SLZxKk<&$`D@fJ5P^>-l?juIOkgWtLxk{%fn zf!`?cSD!fFH17WKKOp)tCnVsN)L1I&WU18#_7DP-(S& z>nm&w54LMv*^isfuB*n=m$?6%<5~5=KQo@Mzq`-z{K3)t9M7ju{9hf8~@xn2>JdX7$N<0fZwp)2fUHdDq5wPxZP`f zPjB#u@fg_ms5@x#oMD3pyVY+v{-Uq%$A4<>`f$a^UPFsgvvFE~bAD!U-5a`(+HPsJ zO-7wXNsY=i^Y~U0GRfFsDezB3&N<(?$_@gG^u6Wz$*(+K|H&7;yPs%&EtLOc{U;OZ zCVI=mxw{9ST36#Ouk4Xz*4#6*3eY>@P76p3eQf!`#}l z0$D(wk>z*xojp!ekZdiao4me~<)fRo znR^t(HixDfDO<$pG%dER?UlnKd@LJZ534vxkV$4C^>KTpj}bmr9oU5<$O;$zvv@M( z-A=OPeB9&IFS6X}HC~D%Cy^>-iQG^$c}~UP!F2_uB}5-Slndd)Tm;JQK8F|4a9#{W z4uK-y3S)HP$!%WluD0G>r9I2|(XgTghUxJkz?ScO}uF z7AYHdw@WurSwwgaBQ;QElCU1k&`220_>H}jtFr`g&Wjc znUjN(p<%~_fKk?B(X=F7e;^_QcAD~4TM18pRb6RBJY^6gRTxZac5UCTlgr{Bz(wEGH(f&pGoziQ%foG=nRxJe|j)AqrK5$Vq4(G)`el zb7^?gY)Dk=1Xruq^urTXGAoU~rL_Z~yXgXa{6*|5Z{a1;m*Y&UX+qtB=_JiFq0d$y zTp0V1QUr~Gq9@&~1F4j*=2*@J4j#ya)*N`WdQES=hTeVDSscq96RcLf#*3j_n6Px< z&$fcbvOQo@9(O!>B=mFY3B~8^BAsdCTnrs5!d!s=o*S}J=lbk2zMaC@_~r-kCiC9R zBdQ+CO(zJk^_m#NLxBp^ z8vA3;hgR^>86Qoadq9Nqp|-By9H2U(JvjpPC_W)s+3Irr=MJ zM+1dIbikJAfY+m(N-d1UnmG&KQlx5s9j#dJHAo!e-cV^W%hm&jAvmZe{1 zFrw`6#Hn|er8-Zk1`tfPwl}k*)fP)KkR*|0?_O+A<@E~3cIDQc80+97*Qr8^_!ir; ziFKS*H#>a^A%75+n>&I``cOC@DM(%SAG)Yo)tQqGGL8Qa}qGDI=HIK^A zSoq`Df*V&Ws$#*7t07AKox5)Jv*RdN*R8IP<~GkPz6U^9jmI2zttW7GKg$^6AFyRn|}v= zeC+7sR?770gHiq5yIlb_@tu*f?KR1~(<8dF75YHxKaYqZUFRzq`C$;qPBkgBK2ou> z?wz!>p#lBWa9?YL`&w(_FLPsR?GUnd#|M}Hks$vkb=Xw5VM+;sd;)~H7uYBHMyJVbWPc_^m_=qSf`b8P3oTQ6+u{Ex3`Uo=DrwC4mv}2 z)Og^n$at|wKv%$WCIst|FEE6vF<9i2#GQo5E;AOE4;bHM)$_`iO}d9a)z z>Uewbz-Sz3|7cg8xsPjWsfs!!6u6yb~NAN_OG@bKI`MYju1hchO=)3jX)!o6@@D zKL*Nqhjo$9j$=pz2~;CLCiAL{241Yg;zAeE4PRthkx7A=P!b*JuV`QA{NH9+k+V(3=w-%4+st}#$#&mq8Z5yKF zLjQ++@!LA4El!55v|U6QdM|VPiZnrjpmdTF0@ZG&Aa+7!lQB4&yeWUT`;G&9_(QVn z;fpVz__l4D%Q%td6lWs{iYD%}Qc>73b)Kt`K&Weww0Lf^|28U>DEwFCU$-?at=j?e z>g7|oagH9xs%_QCBA6eVwR}mY_@!FS-l2OXDcM$fn|c5b(f&c6-jjuw;-Xq&(w-t= z=*BO)O3F#CT*G+szr9N&H0b-RieO6f*Yc9UE61x;0X$$@CTNm8Yj5S2oA)OTUaib@ zQrv`YY?1=pts;l1`^mxym{R)E;1^xUm3YCGG#F^VLO*hu^1Qh=gVVwdR;t@nSuB4< z@XXFl6$g~iIfeU_lYjFC0p;H=Ctr#0FZEpj7XYOP@7i^m)*UhrNrYWr{0ot3tTv3-~`zNmm@&H@1@xLB#< zd8M@{z!5efdE4I1S7)f+wG2<);pxlYz`llG=YF<1sG~HFTdb9B3B^fQVmoFX06?6r z)ylo!@kf6*CX&oMIh@(RA&u(%bZr5yHyo^;4-m_TC9or0v+ zUP>51_^fr+BXdqx?ONe=?jf0>`t`+aw*~SC&GD_*r$uv-J5lc-9N~`e)9JqHItz@> zO{6l7H?5sdjjTEz02x_~WQy;^SR?&oz5x7JS>kA>aLxV`#RSa;h1n5HkLFL7VQ{dv zVFs74lY`hb3!~psr__9*LwbTtvp`#fIUj-eDA9){V>VJUnv#0zWm2x-L%;fP1r7EZ z>c1cW2_?y~mKYh5I|-H09TRgj{#Zuf`84#P5m>)we&bT zytLG7xSCX&Qd?R>Oh^N(>TeElsc+-^R1@Z?0~(~-8xXfS*qp-dw(TULUl;zd4onPm z&O|=XtD8ouCrG7?k%}EN&macDpCd)@dvj;PiiqHZ!45TnL&CThc|340a!iDkhs!o& z`i zP6psc(HrPSSEH=-qQxZAjD(8Cd`oq~Nd&{Al_-)eVotL4d`}QqWO&tWydjVwH?XuRBu}PzIUO)mn|%aDteSLP z-K1|_IqAS~e0nJS_|=nc7&MchaGcROG@LlENIM6yPY#|zvoC}cY7fNS)d-XwE!^Zm zY<#`63bEBXFj@Eg^fl}VnIR|22v&4xFjAMDPqT1E3(>>huU6&Qz?X5{tgR*1ac14+ z&YsF^)M z`;biWG%9O*T_m>D^0F7IC(2j65#4^7-PplSgTgorh?}GMmQ3+1jHIJ@Q)1e&)C?A& zaF@Pee;UOB0HeYouio&8?;PryyqPkD9G`qM3#q8r<`w8)ZSG=d*v0XU{PbOkNF28A zh9trCCsmC%_b@0uob+=r-kSPuepV3OQ${*QPQj^dPr=hjQz<-HvuHI z&zByP5`&zK^oh_SS$IsChtnmtx{zb#c0AA}`sykMW4_=Q`y_Xk$4ThJ{k7GQ=h}wW z-<12fcjrw6;l9snx&*EQ_MZxz*_Ai_*~1Kxp?|y3Ul*&tZ;Knaz6uo<^aXdOlWd1m zI_B0MDij^&EB3_bePR@Xh?5Nv+HNJBK?OOY3FLuef^|cB6C!Nz(HWm^Il!8>5FnT} zSf==>pk?nu8)i_@wJ6d8!YzbEZb&K{s0`E~om&klOf66tJ+4x*bRK$NH`O{Ew7_dP zRnS3u2v%haRK1=KuqqjP?O^f55sj0chb*j%{4UC<*R8N$Y zN$FgMAYjRi%CC{ieJ)%+#Ye;U#X|m@T)5Di_ZdulKb)9K&Q>M)RFA)|tNcn9^;Hj6 zDY%+Y_h@Ve%Y%!7)^B{zx|{ejO4|^nV7-ZL=j?qnt_~4 zhaLJNbc3EFb4tMcyPweNvy!R4(p#{uvf+KN;U1{d?ajauHmgl=0I@77hHMhn76WHL z%_C;&_!dq3t~ybZMp<-hy!&FSQ8OToV9VDh<)y@TO4hJ9YY_S7D_=6SjB6%U%tH71 zQN%&5Ri6y0IEgrj-t9&2lw!Hb*6zo31nJ-tW5wBEGaLU)HM?&S{5XZv&+$AtwWA|K zoS<#hRbjF5Xts4KE1LTz(~T{BdQ8;9=fj%#B#u%bvyOc53JDU9pKz19%0Loh$4t)r zIk8PZP5!#P+(Fo=$v#;;N4WH|&19u~ zu*cTe7itaFQ1O8m`-H)qb-vHEiq1ED*7oxwoMGLY$k@JfpSh%!fcqQ4zvsM!HiD1D zT>`tG*~>I&@TAKrTB9tOdkssu_=VH5G)9ExF9qBk(O%;`q&acCawDWSAyAQEiH&8f zxx<*&vlf~Y?&)Kgf0J}Ht`)|}%qXyZ-Z8JDtf-(cPGOgXGcZOUvs5R#A5}jeo`Q-X zT5+GX#B2BqEi;NgH_^XU9BVhex3Y%@zmxBMUj47*d(YmhsvC?Cs)}ZsDZc0UA99q> z|00QNpk6LZS?|S0g0(w3?U%6Ffgr+lsO5N8z%+dUFQ}P#C-(6&`+R=|J=(jM1?A5&a&&?VxlKabDwr z{FOxiMPryV`&bHNmbV;~euqNYs8i8wdku4Zy$-(4f^w}F6Ek&u-7O|@ZhOLIEIe}A zUam8qq?BN<)BuK4bAMo2#^iI2O8J4DWwC^rH5z>NMS~wOFt70-R2u0^@n81*ae1&s+naQFT4YV5etgVcJj{2IlaeH4?Cl|4cB(^v5nn|FIX_#DY28 z@@CI)Pt>V&OrRa8+#N=eekl-xmbe8uLRp*O(FN)ab*_IsJTk&`h0NAO-6e+=mWuHA zE~b9FCoQ9@Y%!HK!$4FW5tV8%#f5oV1n*;c*H7WC_QpHqOHNQ&JI}rBpbWoqe+=zE zm6-~Ch8CB+;lJFrJoBJiD!K9{NcsQ=-XC8zrZxPo) z1bdAki`=M4wiOk5up-}uFM5qB2{kR-LU_60yo94IlbMXRUSTXcWhMyg*{_SR-j={5 zJOUOQq80e+&zhh`WnS!OV!EhFBgqly0ekbW`hYG;>c<-P#08S1kO!K>@pJ4lu2u#K zS{U>-hQdlu&JHA^tBi@uQYlkS&k-IZ@%X9%p|x8Eru$*)zMH~%sRl|Hr@fFmcZ6G6 z268l=aEd6|@%l31yVM@-iKbH@mP@J8Kw9gDa0atxhnNvLF_BUN(gh@Yos?0M)6%P z#mHh5=dnqb`W6{F8O2K~@*br!s=}ZtIrN|jR2mM7ZB~=#I;B2-rc);e5icm>Xc(4N zK)!dl%`;Wxq64nTD9yVB3*p8WmHGlw%i`2YOspLO5o(Gd{UWD5MPS1D;9=3^tdi7q z_o=sd0&A{)E1gRl_gEVvGmIy9>K8gzh-5E`O=Q=~({w+!;fxB>`CRL^$J}}x7X$Ec0?iWcrJH>hjNkT)+CWKu z-p#yaim&q{>aAWYRMKsxc$^<$Hkz(BF}zIiC?Y^YnPz5+4+N%aqVz+4x%C!tgr9w( zBCw!)jw$J8t}MzFAFY@xx!CT{UgH{K?bwPtr*i+F@@YA86T#*p&)T!Z3f%A?WSg@l z#YeXzmBqJ@0V-I;c~u%y-S`Wo$x)_~+yQSj+hm

    u!HCr7XZY9stU{8^NxjUcsKdmHV7!wfpSBBO3KzQ)=g^Ms5Imd` zf0x_TiB&&z>6g0nEuZb4{!Qq}(rdVB$~7*1y-R^!@E8%s)MLGJD+7w%!`F!3bB@=V-FylXGj!wp{4s3cw`2;d z5&8O7wY<}_YReJIU(bV5_-(U`zc*l5Ho6yk99kNqp7S>n2u}t*@H8 zUIkWr54ThPL0n;FWo9KFPvSATJ4Pq-mRAj2UseCda+-`Av!JvF>CDn!CY4sVebtN- z`gYa!Ji5Y?douQ0(|gE^L_G;}w9w{VyiPw}wTdapDM^#*xl=Uy(od18k|M24TYY1o zht@p^Dp4xu*w6)CB&{qkcqaAkBhIhQ66J>PmgCpdlJ_IQs*?x}z%Y+@669Csay!RJ ziLNG7#r}po=J&2{QapuQ&1BOK($4u@X}B9G)*YaAmEB9OE03o(r%I2;erb7gvUh!T z^0atW?mFO`zbAanu`hbQIctR3Su$x$M`5xlC+9OR(|q%=occLCd*pCG+1wjhy2M-1 z%w4%TJoUMw8{57TiEoayq(+5XJ~_TR_lc>`%?BbMznuGQW+U|Q$LOs~JI`7{I7z3>*(TD@{cAi`wKCq+)P#@D)=10S$5vha)QGaDwfQ5ap1ddL^hs-Q zGyLSe!()HVxEJrNm#S8+{rykwB2Rmy<=qq6h?-Vazw1ix_ODYqc)zZCYKQ2hs^vXs zrNgH`bhdsYP9@ox+ziC>c-6plRrSw^Sg?!gO3{ZD_Py%MU2Xpi5J#r2p}Ab7m>O_( z^N6alHC0pB?2R0*}>Z-DfnwRpFK0a28+c!B{ka#OXmVB%*?Gi zQoVW=)cyIRZ{>uO=|k7 zGfR0QWZ3%#1@cq)W}aDtwABwz@kBdDYrD3VRjwr^ET4B}msvp&R^o@1XNBnufYM2I z9i$uUhmFq)o8pJf&I+sd!!#2pugY1-yME?kg?Bwy*b_AtPb~(w+V`^3RzE)FKXZ)4 z?#2se{_w+58vE?rfnctgk@0WT|biD z>L+VeE|R5qvYV!;pZHPIttqO5XD~*l=vOkrix3s{(|bwQyH=q=c%}dD4Gf)doUja- z6QnFlHIV%DzJhnaVeidBI7F#5kDf|Icgh-dBGV@nrEC({l?A-Kk%nU>U)@Ux`;Fj3 z7+dK+@_JRRukLm7gexaunR&mJj`2_A0*rr(s3cSTj4WSdQk?uICClC`H0mV56BDY@ z&Pm%p)AB3#XnEraYB_pqTCA;8zvai!J{%NQA3v7H_6j~kj~oJXF(SyPf)91@f#5?O zyxV=`9Y1<~_3@W~Yx1>&#d-z4@Uz=+rL3#<@F~6{Q=F)hf^CPa!xZh6K}qbLqBLDh zYuT&4luI;@ltsuAz9Y#owtcI2W4^jaI1*cfJ;S2XevG7sp@g9mJcSU^;md4)scwK2 z$wgw1MT+L+MZeU?2kS0#1v78-)5!HBE;99*aYD8D2*jaj`4|XP=W95?hU)x*!OJjG zl4e?dB~8qi*qlGsVP$pxlpxXceBO+)SLbW1E5C_v3+vO6KVJn9wm2(ni617pHAvU& zhjsEG^7;%YKb4iP-A^aX4f6U7C|~^w!VEmrTb>oB-l#2NK#YP2BY&(PHr`LCcrhUT z^gf+;eTEYkVdM~BkUyI*Mbrloyf-O@67fEt_n;9A{j^K6!j}4B%~@d^{IIQln96D8 z-O7wF%TMvnDTVxYd)}Ad!844b1^d;*=kmqRWbr4gQn&Iow#njOnB~xd{C@hR&=Q`7 z(iD4N!c#wM7teqZZ?I4o9w4gHqzD&6 z>0O1``0FHF!yc2Pl9c;N^d8Q7A0K2T-xS^zKRYXae%AX!-u2TYw^(U;uCV6|r4zE~X;{J2O@50?HO2}b?>}ezPfd0TU!rF+wCkKbCp#Z=-1d>0MbleJ zuAkmDtp)G@)9Fmmg4yNd^pUr(i}b3ZqZS5oEf0N&S++l^+#qusO)A4CDw#%wK2$@) zo!6iLW1JiEXR%V74~LPz`+RtEY1e$H*(I1&fR1LBGc{fG3O+Plq|dgPyfecqN+w@B zJPNkxSFfqb=sH<^m6=U-XZqNYi|J4BqXuf!nGZzyK6A?tn11-tsa7P8a41te zfrMju=(nyR{~}%sIO!#EyF?ttCz0Kzf~}Z`K#~*K9ra1_4H=AxB!4!ZTxR5LRGCGP z*$jCh)wy`boK?M!icy`CJ*qBsr^p|cXdZA!9z~IhNdet09c^nr(cP)nluVvFZPMU# zp}RupPBfca`vt9@b?quPpGJ3jcWx*lyyDK~6@)g7`BfrhB~TOLmFs)>eWhIGol`fY zQ~J^;%QLB(khu^6Q`d!jDGV_%>I5+f6wF$>6Erf_2r(Kz4fMMC|0l%p47?^$;izUp z{q#PacYQJ&{a>R&(SJLQkU-YKGrTt%99pG0vO5ieDx$$JpXs8qY0#g`vS@IEy39=X zk7-b-7!ZYM(59;m5NW3PqSK8A|H|sar@<=-F&Z534M9-{EexJnG^qUgX>Q${Am-Dc zRr3YXb*I52j&jPV-PT%{RXY94@dtk3T^l-^uMf`hZp%BqbME_sj@@YPizF*M=e~dj z*Fd4Z)J6vvlS<_6Cc*o6TM024(xbWxXHw(OghqxU$fBC~y41GZT-=ke{ef~-^C9Mh zS{eC8cdd|~*5oLf#PW5&G-)d&E^FEEW;u$29>155nC^6bE2eqflV5W*@N>j#eaQ>xPc zx8!LBFZ2su;umazOZ~v+?7$6v;8s6SO=#s^Kha7`@w+dT_C}!(jNFq#{iV^5{itjT z#cInS*ELICYjyqu3SFy1`vS0*?3%U$-J~dXG4(yV!YK7ur=VJ8C!57hE~|KGL1uJYPI+1N;P(i%AHR>{5|C69CSzN z9lT@sw2~C21k;n8^Wkc#d!E%HX7?d=h3v7+e4VF>yLwi9R9otHW|EWev{2{!T?Ab9 z9HXea7N0$Kb*b*VDoceQ32suu^+dSh-CE||E#a27JT7KplXd79%h632+I_9Dwf$s5 zhpqN4?mmNC*z|d!?M-v@B%jq>5R6IK+b17{XpzAeSh^QIghh?XpA2ETg<`y&12Jp> z^vtT*dq7U%^8P^UF?k)$2(5O`FtBfwKaB9#2?sv*t7qNm{9z0sSeH8KI8yD2xWYIK zs}b{_ww~L1GR3QDx~~7i9YbF;NRYkP6@7iL7VPuK%O`u+x^_V$l}HPV99p4#l)wZz zlrH8eir{E`xa=*Qfp2z>6dxN%U|V_C`FeCptPd_7*p75R5YI@b4fF?JMUat$-D~?r zDn9fY<`57`^e@foQ^ls*Z`QDHhJSU|6~aW}cipeWW?5nA54(in6`h0SJ+K)UKITHN zYDGWQASBUK9zxX9zx2`MVc7{0nyF9e|6s4sHPuEUd-$UjZ`88Fx8Wy=hX3fn4FAF2 z(bcqA{bT(5WFNN{0=(f{Pnx%zftljAlYl$enN6Xh-0`qJfp`i}5yf<#Oj(bC;rVsN zLpJjMIPZC0gAUH5-{ud;qG}NtxtUC7(z&N)q`Y1%c%tnLn<%?-tR%4@5U5ccp)IgF zQ+F5l$Vsmzg&aWnTPl#4z`@#gF^^tYR6WU4o~}3W%)u|dTdRs%)sfUu_x1vIre`OJCT`mB~TUJrH!qf&QLv|{JXW5db55i9_BHoVxs0-vlW& z^hwNKDReOsDtjS|{8RyAD%T^hc;Nb4>WJyuM8D6NyO@pmx#Ac%rSIW2evdAzsayFp zQ8O}D12>%mgWOlS`Vw{LNpge}nwe3A}%E)v^S+qk~dlZblsO@;iUWYul0&2=>8yCe19M^zyLvx{}0SR;QS^J3?@ z4Vl@atCQzEURB@mg(~mv=Bnn_P*r|MbyKf!1|t|@8NMGgPt`pq^Lk@Y43!uG;*JqR z`YkO&caOwAWuOfzDI>X0Ndhi8FWL7DwZg1q!bE@##qT|@ZQBK*CKtzN^|Xp6Tzx1o9VS0iQ5kUo<8jIwag zo|<5yc7Afq<3l#aI^=@8<<(F@I{vhFFx0oYI|6QiAk#?8QnSZHyIejad#?D}*tVm+ z<=5rL-WWCFmFrLTmVc#3%NxC7uZ=2re?Y^6ak=25HcT?BdbVuqUGNqjJvB{ovoY>mFDfmX^Z8FDk)SE;S9hFFH4O9` zY8h7@vnugoSMoZVYcn{KdKs_joc}QE9$N0r9Y7=JeEuAMhgLj|6k)SJZesCWS3Ihz zAgAK~Cz#!Vc++HZ;#PJ;#r;n%w8h(;-wXCQnkCIwW@>*EIGdKX$1SCc}qW z?6fDx5p|G7O?#r8@Lqm6i9}H@yF68d3ym~U|RCxsi8Srr6lUeWJcz66y>atcE}r@s# zSYbbgPQ+S?-duU!ghK@D$#`nc=i+o;Y#b@w9mOv84|JJ28%iI9)1-G2>oxx3LKtWK zbM6PmdsMOS4{B-doKLkV_8Nagj>?B(HFCPTmiH=e)#X@}%r3;cO54{1dk1V;T-Jbv5Jgw6U4wa#a;Hx3AJrwtlkzbp3Y(QO_tpT}PFggdW}DtNZ#RlA^j zldHG(8#;uk2?Ikz4|f^5-%a;#vlr7RXGpW(x`r!UikheL=)-$>u^Nay0k8fOicP)SV93~guj`$y4#%{ ze9aQgZf$lTc2XH_|?bilodzR0f#uDf#Y&nzBK-UDWWEK7g*%Y@4}xo)LHq^ zTv7EfuVEgT3SNA%;m@;sv&qG!uFt3INfCbuoFL+QF`W8OU%7rH9~XDBocd4OXN)4` zvYxS54`_MS7!J3&Zz=H6#cMc;f*JZeN{qD)5fXq<1>57BmgLrcDSZuSLRin1S9=#c z8Q&t@`Z_^f^8;A+OLURKGOX2i$1;v)2@l`gm9>?Ox6hL3FI;hLtppVGK$N8`)FV z6QoqjmBO~I(yxL_Vyq=y!JGya0R$`qv7p@lRt1{;hw-hmUv8Nj8lY9qG7D8M%grjb z_97q?s=MZqNi$|#TXpKeLh`)W`!iNBA>V~ zpQDsA09Tg~oJ~ZmE+G}et}q2_X{IhJOr5c?MBz5XL#rJx6r8_?BU*}Po^C)xKY7G$ zVQ%oFHuE$MPqJ|OlM;vgLmHHuB8ui(3GFt2jTTiZGS2gN}etHkO(XHt$D@%fY3M_ip+On0WEjnM*Q`yz?Af*sZ zP-lVj@sfVn*lg9yOVpXwFim(REjT%9~L) zfZ*L4S7k>->UVkJNnx~M(+Kf!DKrHk4F23LBGce_l~JOdetH)#&-dS(gK!|! zp#-(l(0cUj($*$M0Lk2TYqTC47I*V9;fV!HczKNfcZ(Q9K&cLfzTxW{g^`i5OyfRv9egPQnN{l+w1 zTT<0@?SQJL%fB?HX%;tq6z2;12}%?lEkW5JgRcklWX`_8s>4i3Wo6k~YA1r^D|oQ5 zpCSoxCGV5@m`3<`Mc+|+rJ@-UJ?<#o!b9yc{o6n{Le`~x!Wpq5p0@5my(i5Zh0*f zPWJvX3Z)X9Kn!`#*T0YcL#ZG1_%VsqWwZPL$J72)`&fHkKSuxgmG&+q4h zwJ&z@IJB><|0uW8TfR1&%xl!pMFMO8WZ`r8zlcbagSDQlcT0<^xD>v`peg7HcLYtP z84!`;s*71EtlaPq5LxD7=!XVYH8JQaC6dGElqyo4>pdJToiM?}<@|`s!l1LQfKKb!Ulp_IAm0jdFI(F;k~pU${A{a+wk?tv zRh9V@?p@(nDM|~pz_Z9ABo+p1@10(nEJ~yZC-ZY7SfKxVj_+I=n0UyZFe=knv&crmCCR0`~Wep_+ zeyZzV_LKayCjLy@k7%83U_uhn_<(SHD%5rZdzbgSZ9L`;+xB2$w5@#FXlzcSj8IK?9V+c&o_o1<5^*2w04!tvE#>=TY}uJ~Vt z;{x+L;KU1oTeC}-K1Z7+h6)ajqb2w{IJUMqI4*9}}0I1x=Tho?Z9F@S`(z^x-6qKAc+QEyqD;Y{xa>f)~7o zKHxzoo(8-s5qc<)8#{ft3y(n|jf?Pkx>i4K9i}ce(;0`Ep|AaXpX2cG!+VZ{q$%OE z6-)!#^-YQY0(|b>&$VQ!Uu5@jn5R&Yq@Ib;9}e#vhjDMYaVQaTCP#kbCvF@H?6Y$m zY!#g9{cE>TE^=hY)L0EHNBiahxcJomc>pb+xkwkFOaZdHjqTJODi5A1vK8-IXwTwf zt#zOD@a8QCU|J#Qx>dVw(lG)A8aFbD2Xqv=`^fm5=JEUXIWmpQ_dYTry?^0|+<4gj zMnvWuStC+*Sm%hW!+uR1=1%#fPLABP*p0|6`|KPMM)7k=&?e;km-u<(J1A`cSo*L0 zA^LAY^xXBPtoPO9fXj#8W8ZT8#n%5mUi;9SBXT6A1WqC7W}e1GlZ8K6ws+|LoACOy z;{8GKo86)Ky5wEQU+VGgDkz2zGAK6wmxJOE`|N~bHals2PzTAAp%;Fy4*Kc^`Yx@eR2?tj1Et9ClqV3Iw|yW{Aat2)419iq_AcP>Pp$68-@m~M*-$|2raSy| zMTUEa|C`plz08wr2K)=Lcjck`gS$~I?eqD`)mk+;xaYs&;J&%Q;9mG62lq$pvlH$T z*(*fyCTt|f$#8A*0Z2f_-Q}Ov*snd^{l1kK+EVp5m!6$dXU^%AKT~`nS-Un%EMk~N z9HI!uWjtT0cg6$nIcvrhb#oWO4kYFRPEdLTPG%B#@~D}IsQ)jg21YeVi@F*7D3vc- zVeoU`i6S>&+>va*V6XzlVg1HE&(EEzNo#h#*YFX!P*_|bSZUe!g4!lI|5YN=%rQB- z{?o@h*sJgkwbEi9y_)X$N5*dDGr0iU2^|Gqg5JUO#KlZXOVoK9QlhPZKQmX`t7-*8rlp`5_!nfN~yXa zf5HiBQ5NKnJ4pdJNM&vI8V7)d{8Q>ck|# z)U6ZO3<^4de#&}qCwG|Z?%vuGdf-_PFx}4-F9`X~FQWMXwk>4yv^0)rN$s2s>oZ)g zpQnT@wg^RIpceCNwH|OqxxVF%9H-Y8FjR-T)I96JyX7G}s0i96#TK8HKw9U|-6cd;4~v>50}k zY(MquydTc&KkerD3TOWr+#K&UoTv<}`f_)rkJT#-Mwk;u+86v&4`R}l{`n5^7Os|0 z%MjJ=BQa0d6|}EqioYjk$bfG;9VZ@hUhXNK>>D$?0JNDmK)eXWVxg4X-_xro3eLpTKp;_Yh##0GPT%eQNnzDzj}@CX4cA&X6fSjFdI; zH{`Mxu3Ya^OOr-X^8ruFokO{g=ah(<^dh~%`z|${EGDcnev*@wq*G`xr3Ml0ir^Q& zzqEr_jrDB!gnoLj=Uv0B_omKp6vi$AdSQtoI3*~Z9fXW?FHYAVyf4hUz9OO-I(d_6dUYQ?k-e55g0nZ<=@&Egffa={#I7011D+lMMakr+bR);5Mig zD!ON%0?%)84ZSbLfbo%k?Lw;bfIS7DuIocDRCBuopBV=-=1%bO{^|su7g_!yw)g#> z6MUNOvs3V?S}7=_<=l!#+-TyY>*U*&5gg_Ki^AHyF#3AoCxvShPwYQQH_-)MTH3Ge z;Q5-Ka{!|x_?G`K*jeD;Etyz^& zgI}ZHScNUkg~?1bvjH{W0KWlE9mlI=w1DWlCYBb}Vr&pPMDVuDn|vBRBz*>p8(*KF zMZ!oSknn|qZqO*8-4i1c|DJ;9MZ|)UCUXM<-vWY7g^K}N6}K^$#yXB+1Gzw;Txt7i za4d<1*G)htK*{5Tzh1-VC4yo@=~x>LHnS6zMe4WkQ$L}MO*i0bv(oUrK~K_b&PuaY zVJqN{Ir^tmt%NXhrg-FPE^XI~wMJ#9b{=E{+kiz0$+rNa_wpH`5^@J4bP587T{qiL zwTa5fXl3W~t}yN88Ka>GDqr<(CXH$PR1Gh#-MlQY2J?ceS)xz`E-Gy%F)y4^bT4jC z)^vp8)OLoyt!REE-uG{I4ay>`G7v0Mr}>@Grlc;mRvYV{LqBT%XZ;g1gju&0DL0`H z{B0Lg+WW#`^`q@4ljm2hQX)<=;kW?p=oJ4-#_1rTHif2W_h-6rf41g~v9w;fHH6yd z8Db8?`)1AW>}Q$&_3*Cys41!~71-Ab0m9@CZUA~-r?h4>18P4=TNxkVGums=7DU!{ z)aN56cU?z4TW+O+w+6)s>cdiAXnjAw^+h6~M5sujsuuh6whIu9S~E{ojw1KD?}}&L zv6tm~sQss|{8ptTSBj^NHSg`b3t|e_IO(TJDvVCIgLjSqSg{LvSDM8<_o7ODKX-o| z^J-cjt%&;qTu*=D%Uq=Yp zlT3svSNN$3~5yU3iwW{XG`h!PqgZo_Xqms};=ps~r@a=u6n$Ay^7`{@@$G9}mXP3-!vz-OgCeH`^= zzFRKwFE};;xRg5O*l-s)YLef|-+liU>w4g8*B#sWYc9rNop|f}2j;Z>-Ol4NhAXVF zWu+VRL}8$#0QVk3-SE<8h2`QhS|TU=haW(+?#5%KmegOaqiJKg<7{HC@iwpF*xoSZ zp7c|F*-SFV>ZF6H5^-cA1q350{8>z_@JC%XSx*#WQkya|L;t6YuI--9AyBTkmqn1p zA$929aak-9X4Xsr;4?`J&rIxd*3Db^zdGxFb*J05TB?T8NReOHtb3C}>Csj_6QRYr zV8O{Jg@B8Woc>21PCoenI1)09!(qG0CnAV?1Dab!ct=-LT*5~SI z|IMZ4zNk1B>Q#DShtaN0-pfk+F(kDoDCO*&+QA^g|B^t?oKeA4H}e?UE? zky~n=1~V+OYhvOM78WJZ_^YYhd%+f@-8koyEG2(>747;+fL1s17i`m|Q9?H{o7RHwLvKCr5Z=Zap{{n|U ztyHBkO7S$j;Jux9H6a)~UjHX+p*KF#IcOg&B z-GkS_rFxLlBo>((LxQ>rd2g$tPsU~u5WQ@sS3ZCKQR6=0l=t0zz$r_76}$wi4xRxF z|A(uh-+iz@nBA_5y7+SrlB*B1Yh;R(Ed2h)PMBTjLKe>117@5^_qU-;klu~;HN3Cc z9@>$*v)j$cXEF@AKa8$O3 zWOvOadke40nk4>SP42cRSA^Oebkdz^qz+lYig5mQ>Fa5eBLy(L{-@{_ZC@I((uo{P<7xiMX*`|5?JpbV+0B>B^wHlKW}6 z{EL!@d9iZ{kMyj5%D*F-^WK)bYdG)k98L!_&WCF-tIpP7A}P8XlAj5wRChzNN#VL7 z`Fd-lzhJW)l7C4u?))?^en2!aOO~Vty7Q$`G|<`2GGlQqktzNefC|UcHMws@xra2I z$dx=8<7#BFYj57UmZz%o4$^4+I%a<-9iZC1PAHu55r$w*F#dIi(mWdHbeiN&`B#`A z5kNmdaJFjm=B))}TFs2JJDlBFXtoPU7^&Fd#adv_qLr-#oR{oP+upz`&GOfyKCF@FJ^a-4sh)@9tf<2 zV`6uX?P2LIq)%`l;8sYtBcj`b&k-6UIYo0(A3&*Ga{Bf*X;a>>$$hUTeyh=>!_`FS z?!UwP5Fp>oY}WR60_DhAKI`LT?vWyy#JR!!@ZmUdfJl(@8h&JpKx26mQ~5RVZJKn# zk+P4xxr=}vTco-knX53|^~htnC|;Me))VJ7-pF70q^?JXN4o2g9e=##p!7E^$t5ZT z2Ond@i5}6!jh+4bHAC6iKRV}G=eGNuGhSq@sYA%j+VX+dVc&BX8Uh$|8pZ|5*m&Ha zy=21=x>Qdztp0Vt;Wd6F4c}KVwqj0jAWXfs)|C0ezQ*gA3DOT^GG!_w(qLaT>Q>!< znw97#CHfLY%ZokpXZr8=6GH+Xadhm<1ftTc|Ug{ZL{{|c{b7N*5vz~wyEMxFSfQw zD74ZEM*F-q`CJp^_IYdaxM*@Zb`5WMu||puM%AXZc^0ss)CLbu=|+}YlOyq`BW2Hf zb5kBUxH9<&U71`yvv>W?#W|w5&4hc6Pg?9o#d17Mv4s}NOCyuPgN$UjA5X%9RETB#88reA~LCOH;Z6 zgu=8$n$rHOr73l~tn~2U5@byKc)Ms3LZc4d!)5hJydMo`gmmnh*I^&eo%a-Cj zBh9I7HKiXxt!R8el4Ek{88MbX|#dMFbGI{9wfnr74w-bdpg+E13sGXGm zimAXR0JrpyvAfACbmRgG9dCuEE$7WD)Dju7*k#DO-ptQQ4G+q$MHWl{+G&u*d%hGz zd|MHbfO*m4R<`C+JzX>$@KtMuXCkQH~)ms%Riy7y!6lZovU&Q6S7%1>Up}e75@))?*blGbv1s^ zz`TqV^}Y_;mh!&c?Re6h#> zy4hS_O{(Z@5@U}OrEICxqTp2U7%hp4MyxW`d#n7)_fYkF^k2E*b8oSOON-G&_s^s5 zc;8dx|6=+I{P9}0Mm+Jz9izjp;0U>{`JuQ(voJHxq5}&y`V|&j1u}HS%pp6#f>8Et zwIn3*nGHr*0w|E$lveXA(v_46lpH`=9oI=2@I_jR{;`32U?RIu?C^+lY>oewaCm}`}5NQ!uF&9vW8#zC%g1F9nMw0 z(2(y)6-oGngu&ru?Hb%q-Pa`H?C&XKe5)hCTtJtExv&{sU~cjoL*_^s>J;W6TCVEM z9`(Pd=U{q0N4In&qH_*)h=FCX^Z-r7CXhRnZQ85%j*yLBO zcY8MukO2;SmGR0%n2%SV&nLJuitQpgMAlho_yh@;n&F!zd_G~zD)V^s@GD7p6-agO z@|ia1Jxdgf{;*uZXbZjT3Zsi;6lqJ@q9ngCi+Rmrzdo&4oF1_GeL;f7{9{@Eo>&Fj zx2cqO(o)o;)G?rIPOG4L^x9Ofi{$fC>2+E+)Jh8t?_+l36Alryw$bW_B%0J>mH?%5 ztBw0i`e$a}bXu=Xc$$|ClwptRyJfbd`jNRo`tgkNqbp3@LYAJ0v1(m!auk}uA1r6p zzDa`OuSBj}pz48fN~=oT1pjsY>9r-TbH|0UzGUP~NAF6P*x4%s-IsSWL4mKitRS)$ zB<|bamtE>Z??r?+5>8p^8a*h>VVuhgVT}CgnI6R52C8r+qROBmIo*|;qt$ADii8WR zV6@;o)~VW>NEXux(5tewVok8bjft@+Dv|iRlXk|22?e#G$F`AC&7v4~EfQdbhM!mm zNOllb&$v+{Ex8=cuNF|)Vbud;7HE&D>UdyG#l3+CDp zyKsqT+6SkZN{0qxDh;D#0^>{kb9xM}Q9s1-e2yG<#hJNHFOPaJ(nDF5cuM6lx0InZ zZpVRwg3;v|^3a%Y;Jn7AE;MlE*$cappH{B{L%wmn;{-3!woe~_`MGZ;RRGxYly@&sRfhONDd?(5A z0?VF6U6qmhI3}-fMDYr{<2aTx(Sc*odC!5+{rHo{Km1{lnyH7DDbP2v_`4E|FY9H( zvl}EKIbr`M|L{vynZ-ZcD>Pk!lv-q)5NizC5yf&uc0;hLpV^m;S5;po*PDHj%;wUc zOJ8F5GXW-1DF&?30|+BbQYzCMZQ+xee!dc%e1|Y@I&nTA(wSnJUX}uP?M){f(Q#l^ z>@uno5bt41+)Rl{49%%gevdgJB?^BFqzObD`wQ^)Mc;_g4DwiC|4w;rFx&nfJ(gJQ z^Hm5cj=gJsdgYbs=<`3oU52pX=e5YVhQEG?0{oMIP=g)wyhI91G)#uEk~4`pDh6+h zo?I)VD$M&msyOk4x>5c_Uxk3i?-jo@tQ%otm4FW#^edsPp~9wzEGbc3yZqVn07NJI^6ucM)d`u+QI1MX3X^p@X~T0Gon}; zG#aBl%+FFjqX|Vl&9!;zo+KN|yuZ+CYwfGEq0CxnF;_eu)TPT@?Wo=f!N*&V?*c{5 zWz(t|CHEv{S4b4TfNezVYQ9~e`Sw^ryPz(99+KLJ%J|vw;`jyezVSX?;?b*{Zl~f! zaeA#v$f~eTQcn>|6iyYp3l_p}{@jsZ2{_SV+~k<*xY03XvR-}o2zhklbN9?c0`_9Q z<^0F384|vHJ|7S!X*9hY8E6ck- z(0aD^$mIZGy{)Lyrac?c0_XEpmQdTHJOM2A$P>VqB?@=HPHQhm)n8Z_6KkaS6kNhz~}AEi~Wv1* zg^oa!81NVLbrS}NOy8a4#+Oj;J8A;#{0Mhm>MW_0KZE2?u}s}0a+7_4WS2<;i4%p7 zza}~(Z+Cn>m4%h-d&ycLStTG$6}d6~lp+OgLOfF6o+ungPvBniMgB9Gz6j;O{RbHn zh3}bZMUr+2X*jOZYHB1CFI?nB@$gdY?M@hn>Llm26nsi0s_Yz!~oZ@z1S1QvH!MUmVC2R&KgMl zf^&JMKD!q&2+P?ie65cJPCg|dinMx-{K)QmvQpc%9N7!0EJl?PlnyWiV`tud?Jz?@t(_F zia76!yr&1Yi(Wwqx@cWUuMjqgkp;7$fj^W zgr{;u$tQ={K6hR#zKxEEgk4gf0sNxO(i^Lqgaqp$PdFAL;0ey>;g&fZY!E#kjP8*r zc;Yc`V?}dKc-^ghJ2qX#U#C{pI`+Ed{S)32&#+5;XCbtjjU+-Chj*=d#?~$GFZOwI z2yh2iG{-Zm%08qA@@x)<$~P!$2%0f(J#PX$F8e${dC?As4mgi9XF`lp5K$c}5HIrdq7H-CSVf=-ymuH=BR5e*PH&tOh zw4zxL-MCKJjzanzSkY|v!Y^0taT#McK8;|6LvIoMn!cHrQcxz`NG?ny_UJ+1e)+EA zyA!n)KcGey9LsI1n+m3Ho}>CJKE`kYCsE+U^jO`Xtdu=+GQV5wPl9Lbs-tjK4bx-y zjnA^B#;bUYNqV529j(8@ueVS$a_-gYE>fSoZXv!0YZS|#K)%duDSXpZG6y>0)zq?R zZe$`u&XOEGu)h_I@D3>3mb5>1_$%@el>G`k5-~2fRzGotCSU{Hv?Movy#&FH4SwsN zzEK=a%D-fJSFj?>6Le;QB1c`NZLYjF9mFVYbmuj?F5Kz5u+3Gz)0c-@AGLDRlAWS~ zF0J<#x$Ik{50zZ3rhRXJ)%JGZ(a{agAwt@4jb`8)E$vvD89!6EN8H9RGZBrmF}^6d zz!lw{&PjLpt&5;wyM?I?4Ie7umw#{Z;WF(%;Uj$lD{V>qGI_ed;k#VMn@VWmdrmiQ zTm#P3=^@{9(Je!fs|KgniBx|m7D%gDCaZ1Uk;0AE$>lQaW!8DeF(b!dR}~SuzrmW3 z=hTce#IJTWj>#pA7sxS+kBG~{0`t(YrAF#9y2bjDDR~upc9@!*ARf&Ww0X)u(jJi+ zhAQHmeFO_kssBIO%4y!t0$OgMmJ`S_-qr`Pw+*(qFF1b zdQR(AyNo??l{vt_N;tazTd6T(T}x~3;Ote5bv0`wtZWaqEUiqnie6x;YW0w66>l1U zvGT!(Wh@!=jZMcNqd`X0A!@Q2zvGk>^ff7h_1g__bPz|C8m&rC`YZJ|>p@x04vbu@ zc-0wVwdJlfY9!^#lxMXbs^p4h`p!n;Yl>lo4>GI>tNH~AV$XFp8{4Z=hrhc3R9QuW zVwHs)FW|#E7zjPYYGOrGqOeNsu=}D<{+c~f&I2j@;Y1KPT+H^yx^xHU_Klcn9LPG)rDi3DoCC4rG-bKSjUd&aAi^A8xF^qrT5o!`{AJ;@6f! z43;5esVECWJzd(wM%^CfZoKTfbw8zNN-lQ^95H)hqVSJ0ZZ`Wu3qBpuiNEbgDAG!o zK>#+8suY$oTDvzB2(VLKKA)0mR*ywB2qD~KUp1e`XlpJrnag5pXIE?ZcXz2H`p$c4 zJe2)QRl$w>HuBb#E$ZeZrjF-QZ}h$2u+Zh~mNrGdjL;z4^RZ`ze=+Ip2ptz)dax4j z0Yi4o$g^!guwa{>*l(o=Mk*_{mATUs{by1fLY|~=>GLZLLkAm>8>Z8Qww)Xl4Pr zlkAK$G(mGnkJi{X2&OvxZFtlhLMP%sOTp{LQ+V{xS#qvTlAV8kX8IO^q;Y5iNN$U6 z9Kr|34=g(L6K~%K!VcM$p8hk^-NAt+%GdJJt{qGno{Xe}j(`PL#JauZdkCHX^L+QEnHc=RU1;UuB8kcJcNec}b zo?i8{|DVP4GNKGAQma@5 zaR$l|IW8@y3+sPtj!uX{v{-c^tHfR2>Z_0%Zz9KUl>Ou(<<%zIagB_>ZwYXmP6@RH zmDK|Mdq*U+q@mhay0AZRk@=r3fWLr6%vo=+q>h<_rI+>I*c#EA7}a7v%Nf+))HvX z_r4Tp*L*L>hfwIv$or7Sddl@O%lQ5l-HG26T?Ga^W zR!R@#1$mc!tJByo&&CytT;RK6*%-#H7+!uiF4N{2+x_orzBA(& z5%Xv_8|Jzy#(Sot?k2|jrqS$g*R&e^`z6A$EPq?J_`cc}XtUx1ZTX1DXe`hHKyM{i z>=M49b;a5v;)a{M;+_LK1iFcjPf)H)V-VH({n}p&uzi+1`8UmC*aE zegVqP?EPci-kx|LLb>&YZtF3|w5`dBZ-88`wLV_RiT@!qwV%Ho`dDwAsPrG|sPrd3 zDH6>I?C(aRt5KbY5ZG+V19sD4W-70dK+Uy`8ypja}NKuK~4o5s1rFB-{9~!5#ywzR?I;A zwotw?V7q_&Ak}}Ojc#WDMIwP!XpUm8csOGk2kOGn$<8BCh?dcR;?7BrJKv0p&$I?9 z`SN6(CjXVbpX-YILI9Z1URsdPgGFakkzCWqPl9zH+QnG_N9H`@&|_(_Q+xK4#hzGH^kOtPg$7f3Wo1Xjt%S4&4^C@v zR~m99J3APC4~G?GWKBCcFE^7@_1?;YVah>DuBBx3MRGVj43 z(`cR4if(NH;-%hNKwcD=t_(8aYed%AVFPM^q&BvdSwQ$Uh=C)xAnThzyzrC}dq#f) zh|i|Qt{`swW)QEK3%r8)JlHwpm;`6`{;qC6mW1HH0Q85WP6hNY*#o-(`Uf)XP~jt+ zzX8xb(I=(=eJ44;0ni>wM#q!$6hIF(E53x}u7K_*wRQq}GGP1$Kwlxy^{>p$^yQ#v zQnH`m0=Cc;I_D+P`MOhJ{nvUKiiL@SU9$K89u24oYff6APDku1g`S@|BA=a#p37AQ zr>uv$sS2$15WPvp5i0Z~b0_f+yo?SbcM9vA_{_YF%&JpXF3!83Qn-M^(KE=bfM<0L zEd7col4Fssz&jXypV$9Vz+2oW4REJ#UDw``B0jKk_0jMCG)aGiqN$6&4YB*^*eb_V zOOpImrzAPsJiH=FJ}PqGh#rXz^W80?N|CLs=g2MpR-(UHdN+Hh5;32{+u}Ubu|G?! zq>5$R9F%eugGe1lQV)@!R3*`+KStV2loB_KVUsZ$`Q|l@L*&guWrssOqX(aax{6X; z6!x6`3on(}W@0<{%l}3H!OnlL|H8D(NYeYS82Oie^gs3gkKduEmz>)FA4_b(|7rjK z&*6W9F8piwpD#U~^Ta9e&ymvNlpy1F`EZYZ|b8#~DsY0tKAzh`?zX_L_yN%S+?0tYJWyY-p7^||e4*3XLVyB$WW zBNFWwNn|_ijm~=-E1aeE4x`x-Y3)~KL>!cH*mpYYtxnp>cQQ`}_6Wh=I--3XWL_uK zg;*V)Y)&bXT*7c43f<)TMkssLWHWY#pk}@x?p=~;p?vn1&t+oS;%7kOle@V-v6Chv%RjDeX|!YoPFm=|oQnR*J4qzeDgJ+4F#lRt**1@Tmn%}=(_?S) zl)dAML<&4*5m#h$vB%!*vF{+Mm#3_r_(E4CTzHY(HJLY-k-aA`RTqN)Mx~pb;XI?dL!Ayw}3`SWm z=SbYpJj6vg0&-J;=jfYwsvd^q{J9vy^A2!rH=v;MgjJpy+vaF@@V~c7n-r1sgS3YU z`W8}=^6%jbhL?z~X2e{ImxU$c?E+3=1IMwltN@~FfK*j^Rm?%8!50+ujPHGiXMJ__S zOJ>BX_!R9!*aF_-KD?QBty6ocBsY|=y6)Qbp(pQ<9%#xa-?R8E%uqP_556|CKa(AE z*Fjg_3AW3j?!0za+0OrbI(NCMkBAtHk|2S?1rrez7L-Lm1ce3m9Tp-85(qB*pXLYA zthxog+(uZZR(DymyR6AAYVn-LvAMSGKN+SBgi&ny&J?Fdxv^i;S>`qN69Ft>TqakW z{qj-WCiyqWA8i!xB%Sa71++;UwWqpW;(Qa!645F>S3PZ=$tl<8z<9vGYtCZi-S^-U zrAo=cvV|RQ#ygKoz363{%5Hs5$Q%OeR|ps%yN&(vOuPfTj2wq?Q*L}fqHr?_!6H5K zL9rg#kwH`M(0?o4*u%qjA~ipgWiE?3O#omv{~*n$J#ML5Ux}K?Y<;ZR`e}u+#~|g@ z^IrAgbu{5Jz81}YcR|8pa4gP#HDri7lb8`3up+iar(7oL#urr<%$xKRd$j6zNpQ(p zm4E(Z1=00o0J+P07Rgc9^(-y1p0DJ`T&oh1zMgAPLgMn6WUY2QX=*{sHZw;%Z9$6# z23;%`f5F`4U|$=cTY#lTAn%KekhI7}5RhIgDu@G4ONCJmp_%wH=a4WR0=+ zr8w7r>WC2|EfIdm_cH4{Y<=Hlean8U9Arr+2|QXN8=+S4M2W6`pDCH9az0bCT1u9h zSEpG2CRQqPuuz^1l!ovSRCSkpgsqQh@*zz~ijE^UMPF#dPns&Ig~x(C+2QkfMZ?gj}RYQ(mA`#1bep(L;lGYsvs-#C6O3Q z75-wFd74YXa(z#-M*Drt6Ldh>?&~gY7njBU1cEsUc`1{lj@l+pp(0yvE1<-yxET=B zb!pTjrlLzo5!2N~0~t)^k^z4*urL{zkqk^q1}c+*LCHWdf#kG1MPJ(Uw-%M{Eh$h2 zDID|DwivsrUu!*JgCvT_w4359L3H3$NQ3Jp>Q z`Q(ON9}p^HY5`(uYYTkEvHn*`Hu3&-#-bNuUrCTo$e4uf(WNR0NUv02n#3skT;;Ju zM61XYT}lsl2_IVB5LLEw-Yisq!UQeWUB>ItO?8UTUWnkXn`BpH5nc=3=G)@DL02uf zj8Ef>6NP;k6%HOE`yo_K8OdSzDx65+i}lbnh~W(WUzSFZaAA;oZWj~tbn9|h~3sM!KO)Ks0o{FVvwbT99|4dge|em3#AA)3)~a~fn=OD0P_TarY zgj(M*noa8Lnj<96WdYgL!LF_7zX}ZekmY% zM~v|bpC;@PwR2qNUg|>!gFPBcDb>J#yfQE1&Sw`Yr{vwy+JniJInbPSpd$2%mM}CG z3;ICSNY;VsW^T{C;zDNt`IWN}w&K)TO*{!6x5{&T_^4!kAtj^S&PY z9dJm=H?da0xYu}>>-;YJn}|7?y51$IV9R%zn@L$q7ycOgsNUUqV1YXHM7^v0@4ioB z0>vbM?h3iZuIoT6PyAupOJu9@nj56zr=NXEVH?6JmHg8tMB~8L*_z2ZBut zmCK^7OULMJrpsKRiYtM>GJ86{TC51T3WZB|s&LyyCp!#%qQRSy%ycJmXth^DIb-k3 zIAxPom;FDE_Iz5549wE;)#$ezFWFTqxbIFr)eANi#OEm+8?nY)g=w@q^nl%6{;?K# zOzx^#U6eN<1J7`(>TI=ZhcOPXQXR&A1FfhX3zE(7g`3@Wx!xxI)!8j!!jnWuy~1%U zy6(Iz+i`ObgUr7}3&{aj)o_8}6CzLq$y&;kPT5ZFrAb-U$L8K?v*m5~I`bd`+9*b~D}DA`7Iefof#RhLo&mO@(1=iNF7 zovYP;ECSE<4=k8Jd;T398Osr`*aSZ7>lJB%S6kYH7mSCYT}-^orvUfvM>J zYkn+SIcO#@O--)sMNxNp-)gT>1&(WVJ-DZ()y(4)(zp6|NH+;G?I)u5w9qx7k6%zH z)++ewvOqkfvpdH*2Fru;vTX_RHz#+S_C$S6GY421EU%gbpC~Dk3|iIB=j>`H;C?}~ z+?rF-ICFX;4Dw^H#hmR%PHPSJDQZvRqZmWJXblv>09r-{Y9dc+piJ}Zv?6HI#d6oG zY6KrX8>LJ1+C_0RwpW4Wj^tD9GS%4=1-Ehd-DsXHk56A52aWQi&Ac@YR)E+ z%&C_g{In+jWP>s{SGtBUnH{$Cm?SO29I|Oz13$g@e&NoAkG6Sl(4iX3;#G1|OFwIg zNWjetu^e_S*FDmTfI^83hf1H=(WMU6mOS>%2!t``1FuW)u zprDL|6@Q0NZ`O|hAT~jLOzC7wrKMXg7SJ3Kyp`1rhlCK!$D!I}QltNMk}yBAN{yTij1h=#P9AT@BJIeXESs*L=Z*iFiewaQF9z05;0OQxs~y6w6qM_<2S z{_MH)=PbC&bpTimPnZWp$ENGZOPVa?;>rZ@P)CfsPo?umlXY2 z&=z5hCV?b0xS%YY$Wkg1=ANgWg14YS+rsN=NfsX$wepI3;%_E*Z=%!oA6aWFLIA$L zbMd@O|6?1WUmzQo%=piOgy*)!dEmPUaDMY#n{ zV31ZjMrE)KvN9AApB!?GcViM5#+B{G-COc(C&Jw;L6=xiaE5w0N_@Vg2fX&TaJqef z+Vs-TQ6uh+Yi>KH@DMGGOrKU0%>4;*r^{)%Qb~*svS~qQhvHVqq8^Z85|bpvSN89q zV(1AA6>A85Ixv5LRyHVGNf&ij#SgYbSfKk}BTrZ@2qOfl|&U z1xfAuuTv9QIWz&?U{;9$_V3(uj9m@&FcV@mQcY-h;68M9|6Qx>Q_gxE|sHlVFsPqh;-8yT}WT(=@a-zNX857qSK_00?duJVm`lIn*5w3sR#L_)ICcW z->1nW8jilk2c9`hiO6|s+x-oKiFg5#vNh}KDl=P;qCr8DO#1Nc9}09%M0a{S607_V zU6J9-)s3aO4LJpy)3iN-!vl~g=*CXHI^zH3=tj-Io2k?{+*Eq~>#LipisVW86FBN> z=F;j&J<{G&4oGwB{nzs{6n=FhZ6kI2PJP2C-)U`nrQ1E_r)Jm8?0>!v#bRm19jaEL z+HG#l)meDk&1cx!tDnaVA*}OaedJ>ei6{oVvo4y?p(a)-m_f> zN&@N4$HkHM9H+fL&|c(NR|FKDn!DaLv)Mhjemv_*)J$`m{@nKHUtEz`ag{w%Wo&mu zKJMp;wB=TzV-2)rI@EQMD$TvqGjqFV?#>^AWgbR&Pk5F-ciSpvtEw#Qs&2oUkVE@v zn7c`ODC-AqY7PyyxvCrFQBK!P%r1{;wLhZ=uF!X>VkOYZz=dfdF;WXWOSEoOl(=V( z&_iPsBZvNYOo5B*Q#0paHa@0UxSj&yie05!^bnT_5n^EE^QF^7yxVA`p|UFm@Ae#60ZxRS7a5tR3&cKLO-Pk%6Jmy=>_hsuRo87h8)y& z+-Nf<7R27PzC+nJtbxOk=*F=HLebQn1HC-H;wG!|VyortB+}^eesNAoh@RM!mfzw? zG+4=hP|15%_D}E7kIYD&B`$1l?n9H~Q>EkZ+rs-29Uns#=|yImMIIuHRmijxPIhCo z*^N}{ifpqk?D86HNF}xmNFz%O{~ymYd^NC>%u`BU(`7~6#d6Tr=D26Rj&bp56e(Km zUYbEkHa5dGH`1>*e!aXQ8Tl9#Y`xUpJU1+eVtg)Ex?hly%@J#=M~TDG=jZ&Wl7dIA zYf0X~xl9yA&3fp8OuDq^Pnh?VJDZDi&C~8-({zV!N9^Ei&2?*@eG|%^dvaZ&$#$3K z*;R$OE8#Bh-OMvPn=7?v8eR6U#)T^S==crAU{MS75OlQfnsB*uPwT(#DvUzyXY?(0 z0o`E_zTN)M^E-_lrJKE%nB!UveZZK{6&fv0L-H409Fw=x*HM)%_5y#*>$AyZE$|en z)W0%=KX=M_n;GwfpqCB?zRK_o7LKKkJZ9}aSj8$tXLDosQlnnI_1c^-+1UTgxU|O} zCR^+ga!8pSsWKgA8IM`U)wN7S%JgJwnEO`gt&i1L*H2n^L3U(2rm@xSL}X|`48vj! z<5t$q?$D%V?$A>|W)SYsn!l=_b+Rr$W!EQ$$atab}m14N;xe3i?UF zK*=r(m}QFbom;#a3%4~?9)_z_FI>qYhFs5sJ9jx;C+% zt_dn^;ePRlv>(>H=AK?cd+a2@cZI6mY=*AT z4<^c<$W!)9xc zvW;<#H&h)K>$XTVOW$yxjD{hR#Qvp6KFiQczZR9WJsOiIZyYb!zY&4I&rX}(Bv%0b z_f5K_$*98*$Q}rb8VRwmqKw74R;akg*ulx}xb*UP-SO}4@nY47G@(@mRnRl@%91m@jU9hUl(%04=h zI&xk1Fn~iK>^TMmsyFnU z-b7FB{6E83w>_-DuP_#h$g+k0WWV`4Xkw-i?NBAi(%Sg){*_&I6FJ-`?XEYb6fhm*p7BbKEoodm%Tkyp~{rDQ(oIt50Us< z>Ts8`(e%!lQ`_PWIdgJ6nu|Is+kxrla5HXgg3ydwIS_)H-?;X_pT%Jm9OzsPoBug# zzNJS#&2UvmWJSP^rL73Ju$b?2RMPG5sMVZAO&KL?Je0lmxg>Pvh85>&Z_=~<{|&=@ z>h<8lz;)Jgj?P;o40Yknsfb&MNa`cRTz#^CWH%ok&Th|59{A62{d@D(scqu^V!Ay%$2_^;21~(-{IUfwSjj7b?%*(Ya3<~{=7}Nbkoly=2b~hR z`S-cD4RWnO?TDu&x+$UV$i*hHhEGW>m6D=SkBPwflthmtszd(Srzf5xi8yJt#o7c@ zy7qECxN24_2mVtM&%2LA_7K)~0(VE1e-)#N+AtAf$aQ@5nSQPImu$(5_N`)W=+d^8 zRq{QhzL1u@7ad0>iZGtifG({Iy^h~;O3E}zL7;Ank3A*jIQSF4;*`iD$u47z^H^h- zX{eNxUaBjpF?f5at7jPUTJB$_ZWQTYL_A zYu~1B#-AFr@3#$3M0~;=U@SZfHW*Q5vG4^&sY*gU-<$@vVZF!uh14XVx|cnQ`UX;; zoKbVln|5DhnW+;cH8@Nz5R)l>nFZ;@q#|Q$>}nEE8FC*Wl-4b4+VW%{OikNF=8DSt z^*e3a4nR?rod3P(#aX$w*aN3G@Fq6~)#P-+3ohTMHE@I3z{U$sYrx;xz?p&<=bqlc zb@OOIII%7bjFkow4JO{*ZPtI=>Gc0buC%{L-_5v z@zk-2?=Y!suC&X^ldD(?yhAQXHVC4}z92P4@6~+(*m5DndPt7FQbNpP$H)r#TW@d< zO&bpYlc{e>9b7%#6ba6d^`vph?rDLg@xcaE!9w`)y%_CgLrD=D@~oL5`d%hq9As5R zWQiV3WFm#*psTH=E~EZ%MoZc}`S9?U8^UI_^))PqBDS|Ht+a6a7->JW!) zBqRIxwblcDD-n+v_~*GT&G(Yhw^kpnqgZfE!SDFV@LeE3S-v~;;7Hv#rnHJk=_E_6 z8pn!Uir7@m2gg`beybzZjC`DBG;)JcbB4waa)u_}gt)dlS4>)~w6zhZHmZ>eX8GOJ z3rB%g>=~MuZi`PyuPM#m;G63E*8f}|RsZm_ zf!!>?mAn@5LW&u+$O13#qkLR!iq%S$p&@_VWuba1_pcP1i-eZ~^Gv#~$OLqKtRfSG zgiI(*EQU-Ry}?BD0ahzQ?u(|ULS-95KSVQBF!_@8BLr{ec~f$6FET_v4>7)mEPOXp~7=|s=72D1i(y^*^093(-L zb5bMV_GQq;YHdgyNawez5ATs48($$r%=7x>v7*}V5ra5<1S;2barhkZ@+so*fgDEk zMyQJXjLwy9gkL2M=T}L?xy(~cSV_bARnl;Nl{B2+N-5hg+LsyIENb_47@R9Zbp4uc z+FE)VI67M?p>AcM+S)U?c~|#0X(cqq?hXw;JJ5EWRx6?+S80RHZ!yE-W>R$4V9CyA zQo*}da)AL(u|x?Dy2u>_dLrQ#8K}+pEINHp4&wW_%Ccg)+^>YLN+^f3Q4d>vs>iWmcCd+G#N?`=!jZ*j*@gjW$AX2O-k2Ij=XP@&;%q82mdQ})S_Wz+XWkn|XJ_tEOaY@sFdN-*wK*}< zDhhn}Gby(+DN_WHf;(z13QnDrrngR=6s_iRxQ){%#&{F(NS|~i1iwUT#E(vAf2E(? z^08HP^No_R&2Sp6mQ~@^p5UDcS8xH>d#ePwy%?B_L8XX=R+uK<*i_DXK&eg=g|`ss zyn|mBMw#L95?Q3^nSu9nBJVS=?~{Ij^qr2po$*UZ&LGN3c4KG!96mE6@8>)6TB?kl zohK;#5xPt3Iq@Q-$5X(?%vKeaZ^}{X*)nyg0E||5`3bG|dPrPZxU7ZKqHZ@APuaF; zkMm`I=9PFV{ar*iT>XYECp|h#Wm(apjre1<#vUv9q5~R3NU}r3Z|3{*Lpos z5|W~&kE$w==z2>gXr(nJt0fkzYQOyQy+(cuYRufdYD!+^Tkv8UzbY`pq%N3PNDNfz zxmsLX_`lBZJ-A6IPNMKqnG+#PPcl-ed$nZjWx8vRiFi`RQnmPpujarDJXhOmfXf0kcTXEcA=F|>{za8Z>!Q0S7e-&QAGcglR!s*OE8TcqC z@)7t7is!}SXA<85a`%g$MF=(Y2dJSt(OqG-=&PHh0qqe{5>y#s6H7&>=`mh+m%qV# zgrI2bR{Hfn5ZfiF`o!1<)p`dL^UcI|iaJKXxd{jQ=B^yub9OAuD3)uI3}bRvLV>3P z2wy?`eDx!k!=9-yNA?r5pmp(M0?J3R@3~+pSa2#DZPrWM-S%U#Ct$17RIOLulGMBw zQ(d$lpJHDr@)g;Gxn^==&%$dK?OHMP7 zFX4yM_{HkOMc}&h6-%$xV3AnHJtw~)>l%LLpX?_y#70OmC}t&kKYWuI-{le`3gj6A z-@DvwObaVAz1L#uJ-th*vXFXjhS$ZxCIlhhwIF?xf5fEj$OLh zxvG^XYw4yh~4%<_GAzOnvk2AHVDk>MD}k z$j7yYQatfS0SVsg*nBSMZ2{Je+xWZ3co+J=SUx{KNwC zzJ9U8RHa;CpE&MFPts~yNZ|?lNjC3n+{a>yJA=K>@v5|q`E>m9PJRK8sk-*sIAdOE z>o}utsW7JlP?r~Aj;95J`0hy54hwgX|jAOsYA?Kb$*4&P2yMn>FfXS zd-I==0fk#94(K~S)&uV&Gs(IEb#J%Dcd46AQiJq+Iz7YCl?Mm2+{0Mq#A}b}s=J`U zKKWdmE$?tZf)j-k=&FfMVmz#nl;4Gtt9CnoEfhN*eR~S_`k^OE&LR?|Z`bKZ&53V)u6StWIRH%qdYf2BQqmYnAx5T&iWG0(`Vf*$10Tk+EQ zx`v6wqb9Ahw_)62%0GC}*^X0W6s7L+uRc zbzfTFrAU1AlXGRDsB$X`yv4DDaORHcHa~R$13qA0W^t;%%jT@Rwd6iI_0Q4@;11fk zU6-Q|dtS|mxPg2{g`yp=qEv$e#`sgs5u#^YP&l*#^sv3M5W!Tb=XPb@#Nt^m$IZ-E zt#+TBmZr-o1w_kjaHtL8$&hRa4mJcw(S`J=lc*?P&}NIk-^J33-N2t@VNumLr4<%| zc$dPlQgWMwVDG8(DT^NlRZQIAeJd#nc}BK?2V~roW@$BkW>1_#S;V1`up$n6>2AIJ z#G-RzVy!80Cytv@THqXF+_GXkwX_Gnqt(b#af7Qu&fM%)Gx$X{=w^oRA}AZzG=5$7 zHdkT?9-~>zHPRPbW%1Fu;qtuC>!F))du^Be@t+@$*uCeAXD`{5 z-wDbMw6O)Q#<4};qV?FH>C|5`b>>$nw7P3=7bXOvG(&dXb;L%Wi;18Pt8*d43y*_c z@P%TBDb;E&VqU2)!ig8iACUvR&y=Sfy!6$Y3y90|4wqsndocE$(d+{oQd|!$ACvmj>vB* ztficZX4E~Sj+b+w<=>Z%aV~;*JfT{bqtPHa8qHu^kA8tLDi-F^(uPsFvY<~GLJfHQ zxp7p{sS6taYBDCRb^v=*>`MM5NrB+-d{xqGRK(OQ(J4+Qa6=-)vQA|rXry<3)f98svDDQOz7J= zjd(;$&6!rK3-!F7KjIO{c&}`mETs$1+tmO)75q zs&g@Y{oE}z4u4U?hsM2<8uYtvKDven63O-#=Y*~weH~5 z0#C?s5-0arx^ae^M*v)*aRet6a4Ac6>Jd|Jo;$}kO!oAxp3t|y@`T19G(#YW)ArCP zf@2EcJH})oPw-Z8)W61C!QZR3+C4%o*4R_Y7?cnBElYyCoragQkON{moyF$0&m*)a$&lS3v;B5tDfNl;pGepS%mz~T&Fqz>j zGE@a`>+K4C`$JFYAy{l&#Y?XrASmy{OD!Tqbp+=Zk!e4fiaRqAOlI0frmEmWeaZ9> z9?gY>Ut-qu9fEVLn(%l`ruoHW+CwIUsmV+PlbNt`#&`9+l4f$2xB`(k>HR>}dzqg4 zfo>LMRdCLLs@hMmT*F>;R!LJ;?T3W7RONmFB+soCND9T(YULih-00mS48@VE+P%2# zZLBJfYfo-=)a=u0SCKAmZ8uAcVQ0Bi+33jKr`2G|CFH4D+vYG{H+K4uW_pY-T=+IA zJpg~mdJ*Dw#BD#IaAHEP$Ns+b%u|XJ(l2NmMkB24F!oLe4J;F8AL#=3Q6=9o$tV43 z)$M!rP~Tf59CnrBh(^4UQm{!13X2k!+Z$La@od|?l4z=i_GArBs#L96Y7ZN*vCn@D zexyYY^_JZnoSs+GB#e91ZI4?(^w@C-GPS@Rx;snGIeR?XpFZ=H#ul-W8lOxERa`Ey z`iNSj`OwN*Ksw$R1n1G^|Q3B}5os7sBJ5)Dr zuXGy=beV_!6r7|R3#Pe^+h@3qmFxmHE#!BZZv4ql(~<`ic&tu9V!Wgz7DTlY^^_zV zkF4e=whGad$P^ENwn(SFKjt7#(MQg;iOqQOw|g&gl{;D&-^&g1#RojW z`;T~rl`r4p*d%+c$9OOH8nj5>!&}X_Vkl)3b!-yDA)0!2CHr%r90w1rL^y-4+^X7b z^nKX?1nhS2*x2`llx@1q%-xgRvE?e}d}3nv5yWJ)%GlvJ!3uo3-ccCM%fCD~DW*r`>1u;QGu zy-wq!6Yq8=ocM<%xT?QS#7b<-yE|x&E6S8%z_DKg7MHQp#VZO-%fyf~7h5-HJ;a|> zt>!C|aRT!s!^VdD6UiK$mWz?P7Lfa3u3&*AMll;my#yG<3D8hQ) z?GBB?Hm$?1d3QuE>X3R@t!}M%lMeKPg z%n~RNY6y=it@`()DbpC6XH4Yk!%~RL z$}VzI#fKMLd^m2A9=#pL1U7c46;;VSIV%b&lH%5GbVDfxBL#Zc3d$AWK$B{)>kYBWM*Qc~`o$8CcmiPdYMH?r| zxR!VyzD#A@t}5f5F8Jz3-B7w6kGPINd-2l#=<3jNys@}1Hzhnq#3i?1zRd!YX9#r3 z*L2JD&BS_-S?k}aZJdBUX4|r}-Jz-IW7>+B+!4ROb3GsxzYVnvx|j<@DWO@;aM&^TlD)co9nY00`plBN3mIjvgsWP}{L@#@}jki4I&06gex){5aKT5ZF zEGDW$%l;+Mq49b};&pkh$O#Fk&^Y6BAQTCM9=hJHm%q+feTQPdRS^?SXB?$%-iyk@ z=sUQ~hOFmNNfU?h5#Oii+iTmALsr}Z_yd5s<07(bor zs_&4^OWfhh8#b~v4RiQMRQN{VX2uJFZa}oUYP7#%#0c(X2>p{snA?4yG-O)pXyLU{ zG33TtNEMMaV%_*q?2*rA`j4Ca0W&ME#g=GarN8ml*!>(_)LrLdPx&$5NAaF|=`nI& z3p}w+k}bDbBt-+1e||PkQ&J!{3)gCE2L(DV_htt=uJD!WiERShRDSU!0_hl37RLMg z6+9^C43$(dqnsZgGeYKyqc7&Neuct`{e(fsh2E^m=E9iv$WP@H(zITVvw@Cb+9SIp zW_d~PK%znmyuruZ`U3dSdyZGw8|)np?N49Gp3Ws(o==FAtnLkRk+GygtIZdhn;_v$ z7*CO#2p@m|8AuKUlJ_Y{ZgrQ(@a!T^D};vjsB@Q$5R-?NiOOBp zDXPE%F(HXv1TF;HF86ldD61sUc7^ZKe>SGFFv$?W&|tNqfQPfQ`RHxgX^l5hwe;Is zRiXs%x~jgE7`3WcVn_K%g2OvnmQyjb-!9+~0LTMzz}f@}cmf#SWI*>cRLtEjGhvU| z+q6G188RWUhZ#^q<{6B2(9+Ja4xowHwVYMVB{m*xS1W8hE`O8<-0}H>Utp7b=hxv` zaeP)RJ5|74GAgwuD^FRI70ESONrUk#P5T@ni1F@bSZE29GPbu}t-FDeP1fB|0_M7_ zOs>08u>j{44tQ$HnPDa8J$0cy&hS$ctzPF)i>(xXL>MLrKA1O;q%$M%K6Y+_+`D!XV?pTND3p$j2 z?vh;FCOHr|s@qpymxre3=jx-){CHe)MLuHgqIzaciJwn|>3EnY;FKnuMnm;M@!^Gh zIDThpKM|0{{=l`6)8T6Poy79f{7?aO57Wa;o zk(r&SDetJ!gSup%)q>zPs#qauvPVo-wuDRY#lUM>#)HLFs zvZ1ysyqs#<$S)RrkIs6}xe>3^NQu*6e{&w=uB|kFxOkZ)?HhJ-Q zFV_fTo9Q9r*v-|A_1DN`$Z3XJzn$p_-O?R{B4J5!kwk?>>uqX=~$wuch$U6y8I7bSN9A_|l>Hb+mh5 zwj(s(EPS!k__9lBY5UX8;v&tbcsJi26vsUUipW89j#JD4ci!j3>~-NH6&ti7Pu@E& z*xbm0g2?_{XI_&#ui2d!HkM|gOtEvofI;Vm(xA$^rJAU#=NMyq)=ey^yQvo!<}n_b zzL{C+7Mg2z>j~qvF1@PJ*2ZKwHOqvsetm^jvw#3FU5h|=eF>d3;8mmn9u^C8d3~s} zZmhI3K-w{u=7CAPrz7GM)s`jSOn+=pt@G%tbbdzk+Cn~D*szN`G1*|A5r72G@Rwsx zstz(jSkaf9A&;NB5(q(rUWnb;xt&${oK6H5svauw-ey+do2sbtHx~X!=N9M7Q67lm zc<&RACXL(*b(OWsS!i^wY~NY&UU+jb?#Xgu=HfIS%x}n)E84}vXQ*f4Qv7h5{00vN z29I_qW>t*!m35k+T<{DIMS=ElTFq2G1MMEIwikha-s#=RZ3`S*UXmv)p-47d>b-d( z;sQujzZl+8zqLub3|tPF&~v?l&eJ9o%U^z_R(m)3QUG0+te%&b%-ZFl_EepYe^#fe zsaR5tFH)6Vt|~)~E3`k)-$q}>EYT5~nDDpt&>p#2eYi{bg2u>KMUM9HJ^Zdi7fq*n z&SE*oJVd1Gl$+D3twh$iuz}qjMx!HgsKAkE94_}#7ENx*#O?fp88P3#1m<<=m5Bio zCXvgjEi{%_U&6!hmFfdm@mDGrAZ#e^OJ8L6o+4JE*i}4wMwq+Ttd;xhF5_C4A@`<4 zxH$@!nPUog=0&R!_U2Xor*y(QSX+B->P&Dc#sM9iiZUz&=Xp$mQ+aF9Iue8icAf|X z>3_wJn*sqUf5o|kz9)yeHQCi|a-&;&MD7W(0Tir1hiG*$@JdYbU?4lPbuf6V!d`E0 z*Z%bP*cP(N0zf4-rKG#;Mr=T8?~XvL_}FIb!Ob#*T>qrt4V#EHTNk z?Bk=$SeW@N4gxGp<$v;{Mc*dE(KL36>oOD;;WOR{^WA7SoGX1OGlrR0<>cfuSE znh%wfMHR2)>!Q@xc)m*cikA{7mO#0jkANNLf)wm})Qz^sN06hC943zi`8Lls7sYuY zv+(4-$%K+*!X;e~Jy4-^M-l5p#K#)?l7jL4b<#DyzUE7&$KXj2Ozh&@*^A!b|2GlH zMGoXf-Y>}89@$^y3{@03I9qf<`dWDqDE2cLRwZAs?qeKLCX)C=oWyxG|7@Y*E#AIZ zrHqmH*WeHu;1G^4Iz!o|)ca!bUL3W1BE7(AJEHpCh-KsA*==mxh2U-$F(p=`h$#ERoV;Kc?xSWk<5ZUaFeF-y@N@B-%UWV` zZuXa7?$d=k4~-GYCXF{N8o}w#u}+?XU&Z6`-l=mOC-ytERrQe9{BlPif>~@^-ct7q z8Az^tV>vF(aoU>}zZtKfg6zfhoDLD4)KIygQbn&oV{;&px3sT49Ln^OjyzsjW@e6QPPtl{Nt?W)Hk7 z{2q%Y1y#BWSSukx7F<{TUxeq*27xDBfub$x@Z_ipQB1;fn|B;HBkaEM2!X)Q4)C)Q zB8VtRtN9iIq43^sF}Sw^?U(!J%h5b^J)msM(*mXlcPFdKcS|e^biiVHRFJBqm~Wez zO&s=!1R$|ptEpGH)MO#g10M%j_*iLg3H5%wv|Y)sj`}__p8^Q9oEIzgSLb?GmX(1-C2q4l#zBnufCAg%6>WKN z4!7pOrR~+~vZ=v)BhhCQ?Fp7}Wi0!aDN5X)D12WhAlyb=iW*xn_rcw#^1$|6Nm5+IPC}pI{-E;-8mm#q{Z=tA<8kFbZw;0O%SnSekjIofZJ@u_!?Xq2Zp zji_~9Xof4e0&^}8*M;nW%X^+o2|8K%gN$W{xFF}pj0oHhR}##=l&ZZw6NUZw<+F$% zSK>8PHi>5S#Gg|!7*i63Z%KyQz2y0#3gf1lOW6LzfoOBAFClt2MJlf}99a$a0y26p zRqjO_$sETWErx>)wr+Z3WiGrX5*8v#jL{Z)cYPLq_%)>%iLAZMa;YYkC{OaC9t~#) zv{XL@iNbrR8+Ay;1DL zgw)y*Hw)$9L8w*rx%IxQMO@8O!ueD$Pr@??*t>Q(I0uLR!S; zRcNERBZ#M|nwA$JkG0|0c78k8L)!YRKAa0$ap!?YKR%Lo4-n%FMT}UfP?he9qhy7t zDGV7Zmu3p0k9;T(RUq$if&(+4ypw28U5a0yboYiZUq2BOt)}wFlkV<~n~82NkVd{5 zi7oJ1diJok?tX5L@sFc!LN9O99zK(f;l!i5o-|u^y*dNNU2bMPIbg?JDI3%%doX37L7I9#M@i;m|Jq$4+iE$4)jDD zi;@A^%a#IX-bY5Xe``ORZTJDW#l`2&(t}z3_X~zIk6wfl8NQLxCp^lW$#Xo<79CI~ zkHX`vTWnRPVdV76Y?f1~XZV=9U*3y6GEb8>iij;b?&=QSj{%2g>4A#=QR>AUCX;Sc zcu@5R$_>h^0)77ZXW_+M<&mii!%LfkwQ3<{n1%i1Hfb3`CD$Nr z(c3l%V({rI|4eKMju5FE&nQ3s;;mcE3*ozqO@uNABOAlOG@7$1Q{L&AWcT%R?K~ui z&ZVA;l0;#*QJ}Zw?$~8~7RM*sttGkO>yQI-1#+wLch$H%Sc0rgXmWJ*q5~|^>5jMwZsM1pW`4T1_ajGln*u*6jBA~#^Z?Quo+2VqxR(CN`0$ks6hvRH zMi?|lNWXr%KgUL=j4Vc0qn!65ceep6RqI^Ar0Q^tt`J-EnsWjBuYc|rz})!)w`gy;@ej})D6zGCFNPz_Y1 zS7Kp1)YmKaDUdT0wc2Tx6k(F8S86-?V`>w`6j1Xp1;s1+w-Qbi=FugUl*?B#seo{z z@Y9i2QgK?6SeqsacabE@_b|=QVj}v_AXdy_*GL3b@BJrP5v!9Cl~%;6WW*p9A?hNm zEivQ4fK)4Zro?Zi_w6sOQdRH%(i;N#{cUEzS}eh=64kVtZ)2dEZ`q@Vs`eFd*n)J^ zNw`9#)GO<~>Au_kxg&D2rz3<^=Ko>tUEt#`s{a3kCT$9Z4VOSb9#}Ail$$BEn9za= zwD8@sfmACNDHsuID@6nBLVYNbx*MAH%WA>u(??ONq89N|6iR^>l3vo5i8DDYx$b{Wzchu+@|#5*3U1bcjUbm<$jH{OmGsQaB= zQh)9KYuWsla{8<%wRy~+aIIGQ$MmRU=Xb9g{#MR??i?encH=V4u-KnGB&hTof%`k6jFA@3F&4I&if5C6ZW!!t&vn3!5jLzHMHp`AfS+ zN*^Y&GLpM5o{dg8v;V5GVt4Uxu&Viu@Z3Ie^o4vlEPkSlkUDyaV*&o+Uq^CUXzbR^ z6SXk3LZ1DZWN{RWWx13R69}YM%6_^XL73esYvQw&ET@Hc~|x|wsAswWo$Rx z=$RL}Cn&EJkH+nSfRodlxk|LCI`9U$B>&++*tgDvdJl3^?KSUHdZxz7j3LEZ+0v}D_w z0S-ib7wkOr8rb#~WT!!%^-`~nwc0_D1Fg=w?U>dA{Zx~=@s#{}YdS|qz z1<)%=-kXA_k~B?Q!J6P+ir55qZ`LNb4M624xG>daW;@`wC>GU?qzv9p1%km9lEj9-rL;QK1^Cx-Ih!^~M{N+3Ur~W(+2}#mqXLpc4k2fE8 z9yukY`Z^LiWqm}~mm}aLxWn{>ji5GgwO zHEwgGy8EiusMfg}S;&Vm9e_OWRkxy9U7C zbj2me_JF-H`!UbQM56mS4pNMY1UvUE#Ow%^T2gC0sRJ19LSR@@<}*jxk?wzTC-B#| zGm;DE@a&|E(XL{xL53==4A4!}{RAHIqGZz>q#jD0U^WL+C&7;N=fA zBF}=hF^FebBk=IDrR~DOgLqbc5bwwKQiXTX##tJ`AfI7d7{G&hkB09eWRVZU|Gok2 zMf5MYcS`>S);Y4t_?w6yh0@%!%oNXYNAnn1MBi@Cf=3py7sW~A^mpcGN8*R>jKpEd z>8gsiLFFa;4?*x7T9TeatnEh>kIwf~**c*ub zm*~SWd83cngXv>Vo<2Ti^ijm*Ka@t=kX$~DM&8(O=osxKW`ITt{NkKF4Ozh1pb--S>v+jj{0T&vh~i4F9<|9kZRp$+)ro1*`!Aq_ZPu{RJK(0>vB|H=G1AwR#C zeaQT3q5

    le~gtR?L4SL}sq|_=h3?Ma`sJ_Zb5FLyGMswut`!H{ibmgUEj_A3XRs zuzdVb`0r3`_q^vHVbmskd^Kh1po@vO9W9|a)mC7{zX{YhbC{Z)zYd!-tD{7qdK!relFDhl*%_nI+5+H z$54rE2rXDcw6=-DKx8W17#3E$U)i8lrFOG&RXJ6U`#x4x`T-&)+iCvp6&X2#gyM zpe1$Wn+iGyw3l834USLI=0Z5Qzc!CU4oNAxHn=e?d!+Pyl*LL88;-IXsu{imYS*|+ zB%1COo^+#SU3Si(^C&8!?ex^7iPkE1($Hv1;fLyPMosG}G-hHQf2U0h^EW!NlD}mW zapIzLn5+X{r>|%LyNuqDMzFU`k3}aORTJm*&dQoD0g!qoCs~nG<@U68NUfo*lxa-AJ}MW1r-FwWOI`)jPr{M0*;$Q`SN3m+6UXHd?Af z|92oOnK99d>eU~=spIIA|1R?tZ^bwMrfF z#CFWhF9=%|gzmMFN3iNPf@cS)(I=Tts;YvBzmP0XZW-xrL6JXN+eh5Pn{Y-2TK)7? zI$~drm1--qg0FcRzbP8^DGx`4jdeYZjU1_=`ZdLAylGz&ea(@3pkQHg4skz^^|DMx z*I+NgrZn1l?OdWG*$^3{8SNw*+Pa#X`xJ3}Bxlz;CAJJ}x?AkEIW+kx4pBCz?vrjeQu;1O zEx}J>J@BkCcsLjRM3n88Q>7vEQYTSDwBf$^tBO0;OSAQx+9Oms;$P{k;`t}>>fB~A zXbxCCX1Bh-2ky(_d(6M8Bz9^1!uX+mKEsnMq08g@t(f`6IhP$bneD~qGCaiUmO|NJ zLY&_{4&tmc;;gPU;tVCvU`oZ)6RB~fsKrKbJ$$S@KHyDoI<;|wEj%jJA%iHhiV&lGb63sk%$S-s z;oOufYlud>OIMSUCY@HE7MLZbrkFOxtO%Es^xAYQJBe0>7^memPipXrYdR~Gmowkw zGd#O=yv9eW0xun!ur+@uV_o(tx}q$!Naj!_eVQx_*TdSq%&+9Ct~g9BnWM{lw82KG zMZ0YHA$ozmF?c+!eSR$1g%g6^S!7pZlTYy4)40nqGuM|KbBrJlD}!pS)mxpt0cWFm zvNR8x=8El&%!%}iICjsl(n#VYoF(cifLzsYYrtgU8}gn=L^xOVBO=VwU=acM_uQh5 z1ty+j&o=%0jhjvXUe81N_wYUPL6qrZnsU5eWR{sZGJhSN=q2;H!mFqt{*KV zy#AbLvFBUt1&WxZKXWV=vLk#cOm(Gmkq9bxu};fuuVe)HIEPfr5V=IVa0evAn_n3y?0jdw$B92TRASg`J}VDy$6l)~f!H(hR3m}S?0c{+ z`RSo%TOvD@`D=yJLe~%Rhd%$+T82O~HwdQi?gZLDh-ifB*KXeLH45_X5!}9z(roOx z$qF=B40lPRGc&uO+EDWMMx%^)*)%YOXViqJq{}W=&S+@{53{SCr#`M&Pd#oIU}aCF zu}Nhpc>}R;6pqwPY0r?CfLf_n?yq99n;}PY>WhvH81AM2%_l+9`*y?UP<6xc8xtyy|oV8WXO1fVtZ!UdR7HVVO2wk(0J=+Lb!)W&LN%K;!>P#SYpY;8jMB59E zr2fcuXL)2r-jyFZm&n__l1E#ksTXBrb(~yyv5)b5xvbV+H2H2OqBuC6SI6Xc6&LjG zIT?1ct{Pu$VeT}I_co_qW`P%*pi2U%e^@kq)TfDSZuo2LaP*g<SaLsNf4j=fhBcdqL4aKQ18gCnZVft}d; z#xU(=C^c#bLL8sN-5^pP5shwWHG0aR4&n5}X)P>7ZK&abZ0<1r%;V33c5)1x*|dIv z8#=^XqZppD_1E*;`5ZFzV*=}0ut+gH#WD1}K~I&jgn;GvDG#M+M%MFJdMd|n30Mv> z6{Xx3JT*634%aQD$N`>mtPY+%`5gBVureM{3^_Ih&&TvsEt?5g4jpM!j%R}B7Cn{Y zB?6Ws!=sFdt$N>O7Y$@BbobwdRC#m3Lg-0SFt>+zlQn&WA?IOW+L`irb}LJg6_t!P zUkfGgAcv;%I{1~u0(dj)$mQh+vkI^t{>4E-f8N9=*bp|^t+Lti12U{L*fgeXOk)~f zoROM$Tt6;IkK1-eYT|L+n^TQdWbBg?HM}$YiFL-9j;6#j{0r)~#a2?|Z?Ial8pq{p z+}~g{t?HlC6OQ*qt=`+1X4;7;=h?~A za_a1@a*Ak$9NG1U_Po}n74j|RwT!3ryX>vh;W7j3;+eO7p8EupYQ*_M5PgoqDL^HD*Qo>O%4#L42L& z>QmJfjl=-MR9u5it2sz9FvF%(iHRzPU4MF!7>seJeqJ%hD5jQ}^NFF=(`wFB%=FOm zrnZS?F}|L9iRWK(xg2Jvt!C#CDRM6_`n7xhp4`nb+)G_sBOW0TjhK8#Y|^B-rd(Si zo}qMc3VCLAO~^Ot+8S{TrHfCPwXiG^Y1g$i;uK18y@$nsQfMFE5`z?R41GiEteuPS zQ=@OLt=S%=&`N9Xq8hVZCB^(W$f`&wwENnc1MHhc=B*C^)zc||gB1{DPx*qLG}@>tQadc%H`eHa+)D2xoeAPuw}%`yw-l zl;Tb;5AFHGrS|ylVte?V_Bds3XF|ymM-?LgTwf)`Ae;Q(t`z^=?YCV#yp;b}B2$^} z%z-tfZ?7X9=1h|bw`L(4nzX6&yKfV%w6bt$(uPi7FzU6UBt8ajNPj*HKVd6j3RHDU zi)Y{R(k@+QT4(tCp5aeq{o17%HZ>3Xg@B68zGfj0?f01aV1U2c`pJBqhL&Gj^J@l0 zd-r>h`D<-!s9Z&GwET)EBebqo4bXC{T_w`YI%|Bn|QoUc~PNxP(=G1{;#)FHGr0gy-i zCzh1#SrWT|B2YdT0dU)OSa$~ig#V`id@THbWTQ+t)mqR>phX$l2()U_Ygb|ZsVx58Ld?zr z*V=sUe5W+E=SFb#2HBW1qUkR&5+I|fe^Fg@!bRaYR<7`N+S>2G%Wt2>j>enXvS5WJdZYcY7>qySco;H9>`34R{j>B6VSAUYg10Cr70>aW$n*5 zW7NOa45_W>a{3>{>fS&vk&D#!z$Y2jcK=bBRQMg6NO^Xf32lD;yWIggrMw;ffe z(Z7;zyHf22blQGxcc|EVlq({(Iz-A>SJ~vArO$0{P@d zkEVda>wvz&)H@ObrTpXw+1u8Nq?LQTnT%Rz61$hU$zM>I4MIts zKm^?Ipypf;N87PE*ZOXr_dxah zH-2Ez_)5HYb$q6sXnr`991RrQ7E#ForK9%7N6DLbIf#cQr#L?FJpN@LRs6@AQd!)% zgc`eEE1R5rTAoZMhbBD(4=s=F1qNSBd@w3@bK-+g{O0WLGZ(hM7rtUiB=ob*m;HdP zoXgpBD*xL^P{5p|z8Dy972qha^hPonKW(jbPUePpKFG=DeN!a0v1j?3ve zT}5_uStO;$zi=##+Q;cD@kDd))iKwg*k@?>K5~(K;IV)j`*>4VR(CX%$Bq)%P53&F zJTaZ~QTe3}5lf=FrbJUHZ%HjnUM7+5Lee>bAPn zwK^}JJ%Fv6E7+zRRSAsjgGEzkav1ax4;P;3zhxAB?iw2Z_ll3u_^+*TjlXf*2Ss~% zHlK2D=GIfW2ohJ~!#x=crh59SKc^X=L#Ahzg_eJ=V%#u%3RiTuzcH-hK0Ia3Ok6!m zqF1;(wP9RoX!)k@Ei8Xe3~d{MQ%t953{67M1yAhhJNNS9!+q=*4qC5vLLWMRi_^~Z z$;cH+juO!g@R;d5^;5W&uwE6O6~xmK-+DgbzG@oT%0e9#yHPwt-KrNUrOTg}qLCq9A?7JY z>Nw&G3kj4Bg!CgQJ{k^~rx>Zrnz4|wZX={0LA4}co*P#?ZsTr_01yK~RjFPlty^rW zR}o%cW!LzPia`R0u3R|J~;-?UId-%k|Yx}IZNWl&<2 zrQ{O6kZZA;h|hH#9b4s;x@l{Na<|71N!`!ZEXq!~gs&PsNpkG?xxeHQn)C)I`LoBQ z?$7-u28kVnOfn!)! zB*|{Ya@tqj99R8s!adC&z`dIe#VA}iRa;1?tW`djwT@uWO-BSRaNU%j6b5&b#RlCZ zHY7X>Y2Ub)E@lQ0Icr|1&;0p{VI`?2i+d`GYk7uS-#-=`%){^s0jExkaUIyX)v_>T zyfhLU@jEmuSfc1iV>?0VusojlV)k!uRT_w$g$0cq@Jjz@OBilP{Kc+t4=pLnAT7=- z;y|}yZEQbDeF&$rjG0u9e!PqGl568H=*ZtJ{NJ8LiOqhT|5sIHCsN)+RcMGSfiG7z zEnlKP(n|FFq=6FkmsNw5sJ|l2qdCRbsjD~%{2rbGpY#$B1ERa;s^c2_@BxA9t-x8D zepgd}C^3f=QP3=^oI#a#{QG%ve>I`WQaR?qojKp^F#Lap_10zEQ%@vb9--}t#P$)F zvd6Jy8!!3&nP>{9=U=agrY=EC^>xsCNtkCX&pMvaP5#cG=Z1Nx<3-*Y!>G^xOduFP8ZYT`E(5pTWmJ`Kxw;*%gAhm zNO%Kb{ep4kR4pRoPw(8&3w*5b1+Y(az4sF{sb>I$d+g_e;TbvW2`A%HaUFg9@t39MX zjaCVFv!p=1zAK4{^cjnCeA`1H6fH=FrQzFtr=};k_9?uuwV(Vl&%WdN6G^P?&+cLS zb2_8QTdY%?i70N2w>tc_SOXmX*53VZ!{3ulTE4PrX|y3KVF7tmjry~W6}BYc@fY8P zlB4oO5fM}9$vtJY;et_`kGMM~<29_i0w+hLs=Gx$47%-J3NwU$uo)?R&FIJW-1dV7 z*zUpi;ZuDhc`K4-&mWA{%Z~DbnmMr^x`rvnNU-kYo=LTs zE}Xo+toE2=xI1f@qgx8r53|tr5H6a-Jb2-^g8ntZpW=U|cXY2BtD5ar@MIlF%3VQ9m!3rMTxWm76ssHZn6h5bstA7-19R@KD~8Uwv)Wi=!g<;P z?-+A)Rn5C_?nL{nTR7s4-xt8VM*I%IEANSATO7m*|WR3Mx z&_4h^&_A{q|8F%MiW`t82au&{U;tBUHG{Nw`A|%q^ffR=t4*FrO=dyqL~+|D$5k>P z7PKMwJr@^Z@mH*0@dADnN**Z3usiT1U5+In#nZzE@V{lgnry6Q@O(9tCp~#PJZWD2 zKjBGCX*=Ob=FVnD=^(z3uf9A_+65#3zVe;%BrW)7WCnOr>gBscv_-s2dw(a8V}SGL z`JwT#zH{WeHT80n34df(iMv{U_Ig~F&m$rY&GPcgDzcE}91eLp1E@->&s_Kdsp%76 z`K09fsv{wSd%mRjrq@4k*<_&8=rUbMYQ`g+mzOY-^f;5|qcNQd=U(4;<*ecr-ai&bCa+We0Uc4NyAkg0NzWgK3KB&Qx0m)@ak#Dmj+TP#SWTHx(Z1~CHkZDQ0#)9>^4ilPf^fD_ z>gJEXB*M9}GJDs6@>1t}WnX6gdmeQsl+p02KCfZ*6{BT5r}|P)<*IJsTy3QE*=8<2 z!j#b}Gj-6KqT0}P;)>Iz-KR3Ye~}7PFEw+-I=j5EAKa3e!t!Kn*V)1O=$-WMe=nnd z%kapl{w?T#G5c<5MrYJ1PS5?&&8$9BSP8us8;$t>Bcyh-=c^HzSdn6?w0E%Uy*0Du zxes#AFy5Jq8Sb9?0OLLwG%~qaC?b+dW@Xl8T}2x*W9jU?)#i>C<(Es=u>G+*ZD%=m zR6w#fklb5KpXaI;Qv-m+W(+YfcQ;_{*;uJDRmY9sVb9FXYws7e>QeO$E0;CgS>5wr zQo?yFzWC#C$e(o8Pk5uk%^<&}z%>KYYE_u|bFU4=FFwl{dx7x3fWLDQu?>GOyuTCt zB`9nM{QZEO{}g|+n)ui8_b38!fWPU~@UP%6v+@57e>Xg9_&eko@OKkolZOZT;;wu@ z6x+kY@y>?H7(*S<=LZIx626==Kk6UBc^X*k`N(qebH)x?YD;E2>a4BEccrl^w-VB7 zu~*95YF2ewL`N2UM~Wuc8LaF(35vuHByw-w7{gmNV2sh3p*Bs0Y}&V*nG96%Lk-CvzX}?<9irxv|zX~t!AcH zQmx#gb6{vWcT6pBt3jz~D#gb3t-~5C{)Dn=W@0Xm{TFqGH|R_P9>4Cg;zE-imY%Vz zyLT6rWD+*wgS78RQHxb$y8MMxH4Qp-n9|4<2o~w`ZRbdx7J&!-A=Ic7MmC%>C1_xpwqCOeob3|dgHX3Z`OBrQS;!mgA(Y%e zVG;k^i+S&J;pLk}c>eNU9$xVr8d~t8t{}AdL3-I2$(- zV{{8?Kty*la2O9n?NCbJnTM5>+zfh3;{VY^w-ZR+*Zs=K#Fo;VOTsMV7Ih^z#VfN1 z*js$>AkW*~mS~q2S&hZjMNLQYZ00cvqgO8O&LbjS-u*e(Lt4$RgM!3D+SOt@tdl3C zVc{h_^;7qP0>>JaNvz2-rN_r_7K#?tv@0K2di;yS;3tlIzzyWFd#@wa@LcAEM)&+C zPtSMiF&j1;DJ!qkh|bQ4M$wX>bC29pm|yNG%rEoTDMN7G-hc?{r8^WKZFo&LX(#3S zeCy<`?eUklPJXvN{+wJoUIc*5f*D){3MHTKawrig|Mo105=goH_fHBXd780yieb_~ z!$c98SQ_U_@wc=zpp?vGtlyXQwZ0&aO1`*k=zMsr z=EFAX?%r0=_ zes$3LA1~ptn(g==?z-x5!t-iA;8Luvt48aa_t^}cRP%mQqIX17ckl4T%b%Jwa(xzG zPSKj}iI)z}Rx0#C;^k2H%fk~deQMt3H(c7GKH5>(0&X zZJT>XWBVdOLYHV^tGND@S=3(AbIROdJ*UhY){|)GjWa)qq@qiD64&UxCn198;jHb~ zC!Dc;Phyda7F#3LS=z5pEa6q({*=E&|H3_fr3WQDBm17jG8cWDduWDMsxz?fN!;V2 zSGz|~ka{0amHdF-dlH-6Lq@0ib~8_?9a$-Tv-Q zO^KjU)w| z9H~1SrJkq{b(B$9#9yVNBC~H_$YZ)bDTSxY)Rfr+@%gqI3BH5$r>x?VnxS=Yc>a3( z#_tqxI+k>Z=P#7}iCf1J=s)nLA3te+gUO=DXV+@|JAZ{ox*6r(#^k@y-?M4O7X?0aVa5nA4SGB~1KWaHH@ zt)XTD_NT}(cqiBMrEvC_YH)h#vIxft%DvKz1cR^)2rVvER^x${itIiMl^>C-{lA-?N+iB zfZABg=tW%mubH-U2{LRoTj-~77te|yyn&~FsE8}gJB3(Tt1B#&996CqZZJugwez3r z_H4z98#FI{cCF_heQV#ylI*9AyawpY^PTSt9p8~YCUxL04A@K!)iLu>J>D7_cK`K%mC&cT#ZG{@CI7RSNxPoxL8nIjbFbz@dR`zPXVJr(Wtx+p+)oa{E zBXx!HyHl)rGnDM1fqmG~sSMDu5HW7p(Irx^4keEh2x$)R)UqIYsuQxqz9i>Zx&hEM}l2}{O-0)KD@YDTCqZy6UE8?$4e9n$B&pnlU94h!r z_WGjnt`cMHN@}(Sq{lyfBNEjazt&dtuM1|B9IRc3AKNZ3C641(U=jb|X8&p! zzyVHc96a9q zHG(JhpLtkb&cg!s5iqd|ed8tLc7Mzti-?`!`8T*uns9?rOZ*Vw%LaUU{2B&p<{PfTML1&I+_}{*$yQKrKmLM!c%EH+1giWib;=8tF#udZ>1>?D<0i6&RL=g zFSQRK&a0@%mqvQuW^f|@OYK&MkTLMFEMQl<>M)-W$R)9s5%WS*)He0b6OtVJs*1+rsxje6}I9GhsO7WtIm0ha3YO|I%>5_DoQIiJ^vJRSQ- z)kI2Pm-qAyL~$8ar2ECPEGFcWXeaP@5qm~zT>CSzdnbwZzL2lQS3dqCfl&dC05DF0!fnp+$K|MI_hUPDiOz@N?~4Q*jz zNmWHBxU!7d!pmNy5uuJx*;S8)TDGAe%-jNk`VJ!jL^$mSykZkY=qJ9hnP){1?&YbU z;*BQ+;VybGpJxMM{e-GW=@UXoJFnuFVht_PQYbx$qZ8^#gF4WfdZ|Yx_EZm|ce7)A zGJ9ZQ{J7TIL6l%S7yHDGvBRScTtUs{X%vI|?gt|N_XN17d*~mDADewTuP=vJw384@ zKCY3Qo?AJVb=6v=sX<@FZZX+LMv38Of0ghN@eizN*66Zh=N$V+_}Bw~D(hM!4V!Ei7yC*l{H-g#YN3HpCEl) z$2|FKo2+7UG;TMLMfAQ&S;0XaQvAxu7%- zE1FoN^CZ)v{=^zltxvC$qP1yIK z-Wi-3eZo)Se!}^|xveNZgk6eM0j~Vf>$^`qN&eymdpIcyEWy z27MCyg_uBPv;Xr>niTbq_59CQL}&k10zvkGV7$4bn34JGoP01tD~E;~Y}pv!(hPBG z{&Z>~+jl>QZh~ewIqe2Hy&9XO3tvMIO2hUPE`bj2>}cq@ z?ARjjQwVG}14E}G5lk&?K}&g=-%jVf@EIFHtcOC0+xAc_gr?l-QRjH+12=en*#>t% zgb7x5I1vvaGXhO(g8pf^zk)crJ_zCfKg#QN6y_Wm&t; zL|$AEzk5ISxicDKC&BMP*GUC__xfK{8=r&lKWQWhKa^lwY_7IY@*d7{r-#Qjr`BIWOUYh+cBV2#2GLpif89BfloDUOYKCwWX z#iZTpQ}fa+Kwx3~s}oc~vZhV1RCt3bWQO{wo@jb@(K9t=xR=^xhvd|heZADlFtH(@ zrKTKDJWIG8;!h>M@&DQ)|J%Q0K+qQPGffQ(c{0(`j=a>p6Kgxt3>AF0IQVV}Ps3Y! z9@>xe_~qZGTyUXsGy9*0$_uvLDp9A+8?!mmur9RV0qXI5**2H5c;|>2T9m_|LML9D z)pE8?{x#H>+6u=tnS&?7DYJ)rS)Ru5^K~`+<8~bt2W!fSpO{Ly+Yls386(UTcps`U zyMLdYeZy7hN9%1vNxFPxJzvmLVMZ0{n2dURnV#xxQNciO4@xfT?IH1n-X0P^(AyLn zXhJQd&d~_gkD&NLIIjsUWNj>DZ5hZa4icz0H~rl8wh*KOD|i-qn`~-lI7qAIsX{~v zh6>VbXz^V&Y5XJ2_4bBq)!R1&gYv0N?PNNf{kwtjX?st$Nu(u;=poKdJT|hUqYTx#fqcSbrO#<$cEUVJB+W- zs)!Z9t6#f#CH=)Zd{m9s&~4LksN>UElxC+CZ$}zkXcBoPbL}d28a3|wLPPc}3z^=? ze7TTm7=nv|7D~1lgK!hA7&=>*SGVx<&e*@N(J znLZ_hI<^`^lxpdaSrsEggp#^|n`8c&fyQybAe8(g&Gh`s`Z;co)@2gbDn2WVxrmS( z%t&+H6`#|@t3n!W@ppQ9;z{|d#Bx>+;tIlOII z`m)4+cpnVx?`-t-aelIRJ68fpBT5KoYbh+Ay3+P^|bUj5bE! z-W+PbmeQU5B{}tL_ZrZL3mA@=_BZ<%=Eon$cH0<#o1$a-In}4p$HhbF4j7kgAw>MI zRYcMg@yrD7Y@dA#?QAZ6sX288Ll9X%+ORbi=g`jh5(Z(9MdRzw?g^~MAKxZn1$Ktc zh`T8PHqo6a0(Aa40G@qrP?zh3n_R7NV$G~Pm#%=vrT!}B2{%HjyrQ!23w*ZY@XTfA zkykKVCYdFeRep9@B=tc7p=me4W!l;2am=veCh$_=f3_Bi9UDzwR>87!@c3c9h`&D= zBzImVzJbFFz&a^cmBy<~_IWLNv{Jza!B#j|5St&hnvge;hSU@r9Zg>utVgt-GJX(A zTrK~B5&u)Us!ypj_yL;3qSD5wG~zZ?&6#LAY0ygtPw2Qs?NHAI;x-=2c*%~+TQDveAqz(4XO%%& z;wSR*B)h$vODgHmaFfu&YijlUEhS-|Tw^P1nvs7BB_ALj0~R5>^Jy)j%Mba1aIX!Z zqc5*3gTJ7eBl{kbJYg6{ zrVcsb_~<-x!tnzFD_lUp_zK70nYL$8eNUtuXD8td4t8!R;lz@inMsTq74gg12Xqpm z5L8WxLaZSha9KQ;UwD+Dmrz53L`l8CRZwWk*)Kx79tekpwjwvS)8ud<^>-3>3xvfM zl3clz5JhQ$u#87I$hv~C%euir%DS15egu1Ygq?eq-z|1Mph_!PBhv@yyY*HJA<+l{ z51`Hxnhqpt{C(~ENain@Pc$H(lBq?R)XZ;SqgZIBBb5IKn%S5rYNi_YQJVSu)rDqy z^)z$-+Az2-FqSnV@qIwcF&+gkp$^$G<*_jLh@D{p^nB-NXCC>#+2=?87gEj5MbO?i z<{v=&+)@Ag(00rp(se>QLmlz6ZvtzFVt@182VSnGyak&Xa2o3Q*VNHN8kkx|^I9Lg zhTUsp@LKI&z2H^rLQKW^%a^ic)6th}G;}XHNE>=uOh+4ju61)frU(tiK1o!bpBAZT zebRaIKAPTc7fXoMu&KZ9F|`K~`Jr4@M8{jqn2Jp7TCqi%EqAt;n0+ng6XXps7FC5w zYp&{T{C@^@#;&EB`g}D{<1U+OB&Jz4=M`16g^#S7)nwYCnuP<^r~y{ZLVe*@ib7k3 zA*KT!MKTLu_u3k~ZqrwIm!xDxzpG-TTO<)AQqb3;I&gP4JTaq#?rK(x^sv2BXt@)}}vbe}s z)tIj;ytAs>2dZ)$6+-wcj;Qh&NBNp&^(>ioXqEaPs7j<^RsDu9K%mh`5`$<}wIN?s z+Evw+ud1@Bszv##Vmqsb7;Ze zFeOF)m1d(NcD|e*`RC%@s(caa6|+zHSia&%$w?bAfRg6F4z`r~TakXhp(l1APM<@| zKZC8o8tzgl8__v!1Yz_cxsCB>rJSjN&r|@7%u6?`)qZm;8V|2Kb0UYmC?A`g2T3=7 z-0!224=uRfYQ5HMGCe-)x5ls^trq)NaRtQI*m&T50omW+y=bjS0biL;tPZh*i*XDKYMWaCNZP(t7`!T=FU zE>RKwxorURxjZn>n1d^XMx&DJ$f}ibSWQQQKMEYOa%|K3l*SIl-|)_9!-wDx(ow^? z=n2-cf(nVq5E1H7?TTFHBE>929kMP~F@UQ$*{^WOVRO(X26@PXbyOSVn-|_>s!Pm*nOW(fYQ0RX^F?s_M^I zRZ~>eQaPYfRm!wORV@Qmsj*hoS*|K;b#hl%l_pZ-OUJvaG@V$h?tE~dRVU`FQl=fM z@&>9B3azSaw^0Qh+02sv=Qewb#?&z8%oRN2yJTCU{?BWvP&brx-p=L|XblU1gCLK3 z05FyEy(&u$T}KXTFG6UetJ*XTbFIpbg@ABpem1ODeWJxWKF!l&4Povh=+M$gI%f$W z(5BIa!8b=1a{r~K_&@680Wh~b5Dc7SRSNi@PaPu&7`k)L5X;S%Z^99T8IVS1U9;6I#$9_=3fc4L=ht{U0rHt$O_apj9)1Q$nrQ zs*ts6ky{CI+fkdi*ppGi{`=q_Q9H%ai3TE_h;GcZ=wsEvdzb)Pzf1Il&}XwcZQ^YI>_!a{)xx`{ zum%-j3UkZo&Zg;|Q_sc>gqbyzJYAiPA&?hJ+Bou?Ih7B$(l5kDM`*$M6?rl*i-^oW z&Aas4R5aPsTxON|lUez?%4~Sks@PYVdn%xdrzNY)u<-m(#9^cJv$e&bt-k!oz8*{p3i>g3!=dL7$rf6$M1}{c zC(H`3;n~mvIm-$ypFF+OA%rfI_MtZRRWq)Mr2Z`PJOAP^poa}~F8KK6$^i5^Rv4<` zr{tL|`7+qmh=7qS&I7Y4UI`xiG3G|Tpf z`>{D_PQ6}$x7TbUreS`EY1V9zS`TE`NW|9FBfIAzdqkgUkL70wabq{Kc`{hv7HN1W zlw3esfMdBRcFx!Ci$CA@RT2j0w{g^Wj^aZHPtrhfEd(_~Aim}dsHLw#V2YV$2bc+y z&Z>3|UJQpsY5wF&jTg}l>i#_KbSzX_Kt8aa#r7&air=v$NNN`u`yESzq*~Ar#(`aV zESz|+?9z{U{#8UxuFJL5tDt(DTNXKOz5knjeOw@Gw+UY^B>$C*amu0-(3OW4+(nEi zz?11Eo!_yRx;iJ->_@fB0w|VHE=|f%9%OF*IX;m5Eb30;$P4>P>9UuoKI}*K>#L*C zfH0Bk6tADR$_7|2H^Ol>Gmos{doecl=~h%wPo&}X(1I5b37b>fb$?F)<|B%s?kg=X z=SfP)3qi#5aJ;XhJQ`)USx(gK&d4NomWblr!g%4lqBh6kCH-D*c<9?p$gRsL@KgxR zBIT_Md#Q2o8?2M%gPfS|uq;T|XLmQ!$d@bmaWgQ;BBj>wbe(2-y@uUueehcCULB)h z%5$$C5AsT}kh*R~kW~oqQrA^lxwn}Lz)Rg~B1Y=Ea8R3CPNv!*(?WZ_wa&#F2~ci@ ztED9#q%&oy|zk8h(yk^{MTkzWJUgze&RZpg_Yg804XaC`Bp$M(snc`s`4U?7O||=` zUDYyG&jO-O2ZEdX0_iPv-QpleD>;_990se8-yMp##t}wqcb#E_@La-O_Sqs6H+Z$~ zp&n+`TZ8_zz9)B>qOW_|=j!g&~jJayz>9JHw20kv`m)|3436qpD5ckhmQSnMuk$)FMMW=hI9Zl|bp`hFh^Bs$vB%B*_PBE!4=**p zgfF70J1g|z{Iyb07F5XQt7GkKHls%TH_PA(`)+IIrNxDp?U^Te3GK$F)lIGBdsa!5 zM8VHw?%{=mQ_$yTdh!W6y!!KjmzOe&c^R0UnSamv3>bdz9+i?gxJk`Qbg4wdRMrr8 zTMy0NynzljuCkAs?_Gu zC1Jd5yjW7l<`QNc%ZMJhbcgI96Cchn_f-luef&3qAwE8m?x>@{NZM4Vk@WZKiEeIK zCBP%;+cg5XqxxZ)`i3TB6ml3g{s(oxwp);egMpe|{GY23T<3~nv?S4)@iAeTGKa$FU?Uew!VEQ@>1mW=kB~e0W3vDMHrBZipR92H zJM3EgE;~Z5esHgLRE^{q=L7`!*!z(jpL)r5*4&=jtELge3zsJ9M(f)$tt1dnY(%8X z8Y5}!y?Ga;k@Tt6?EhW=I91%6cO@T9-&E61@jA)o#?Rlf#~0QQ5Qf}^+EpA}reVf; z21^qLKY_BGGk2lnB=x3$2@LS;N{bz7iSF)PAsoe89cym)CXZFp(7 zm-45+L{IYCsaHwADFU~S!Ug+2tS9BieWp&7$(lh%M)*e;G| zqu0^WK4N!Gz0>|&sIlwyvgF3l@{LVgAcX&e@>q3aXn8J?8x{LqA{UDPF1vUByo-Fn z%b)!d@@J2lD-Jn(W7fp?>RSyMGZ!L;kD=z<1zc&**hc~bfx`NE;=NbTG4J$`#-@dq zm+cE^qiU0!m+9&&Yk#La28Y|2cqbHlI`Ph^_#=sJSH~aDPAFP`lmFUU`KNdJK&l&5QrUM(Y#o3)QCEr6(p$yEI-SFmfYAQ}gq9>=b0fkic&@yX z>|w+1d%q>tK4W<|D^EyVNd(gpwa#J#^KW!$X3r2oBk{@| z7+3N%j$<|6UYh4R9pAF!SzFz;JjO(9vl}B?Y$dnQWQ~+fA_0tOHw&A*_wr=?ck!@c z_#Sf)JWCujI=fd)-AiM@#cR+7*-z4+k+kh`X_4BBCp!%E84aO5De>)0CEi6i5U5W% z52<;8+gVgMe#cv+L~+*7NUNh<8(`v*7HCvVv;SK$*@*vRab69lj$D`nNtjf)EQt_BQjJuu-V>Vs>xeGLe z%Ld;75f(gNIvD2^<#xFZT;pr$@y~ui-)+g9c7U#)&G$WrwE;PjdL5@lD*)p}8R$b7 zBIEd&KHcnDoRa^H4}whYP?G^agxCD|Fm{^rye3_~-dNAS4)@^!+~3(>aECg+&vYZU zR;RMtfe)^JT&4UE2W%}}o-D44Mp>7IdHzEbtqklKUdm)%rYMY*AZ|0Ws%L$Ei^gG~ zs;8xmGQq7Bk&FS1NczVj7$M(LElo_9|0Lu*B4Y%C4|i!>D%Hc7lbKgVj{NDhmYjFs z`>oIvR+wVVOftY+wAz%dNWjsFUYyTD*S2`++iKd0$Q&cc{b7NP`R<&d?FX)0)fw_w z1q*7$ElPd}prRSn#3RhBl^a2ffLb-KLs!GWlCg^FCFESWVrF#Cso2hhCf}z^icyw! zktE8yNj-)!in{!tT1^MPJXuK--MF`;EW77 zwWkO#l6Z1e$KTALOuMw990D9z2X{OSw}SELh5KA$N9%I7xNG?z&0rhcCKtxyEl z*Ut&&cSN&lq7co(_PAYqB9dMuu0cT{5&yBndAx(0+3X$&OqSj6PX|G^2iu^n616PQsa`&fqb11KHM#nox{$bDkn~?vb7YzBrokM;o z`4w?p4w@6i`G;R(y)m7bA=6gfSj~!=Jr-)#!fe-UCHsCuM$KLtWKHeqd%H-QBVb2Q2E-uWcDrzS;)|D^)DG8||?5MJWa*8g}+3j3qdO7o%>uq^*s3QJqCmN4uycMNucXD2;)Dq&iMhRN_jEyLD$_W3KAFpM!_Ql`SrUOAMP`1XQ6M z5XD4A_=!zLr5xl6&J;x*>7q&?w0vFlE~>gHYO;&!gb0kBwC7FP3+-L=u=IFG@&Vf> zoL%p}3F)aS&mXuB5YetOl-!jJk=brb%g3NMeIO?qlcfXT#6M1<1E9q5?~jkG#J2MI z`0T8_e9e-#p9bU}ACx!t81WTUpm_IDYQ9lKwy54h zR3;y_tq@h>T9vq4)aQyf79t=-eJ-jlpG(x|qP%>RsLw^U=A+sQQFHTAorS1{`6yAJ z`*3MKO4R3~x-2T{|6wzMsQf6RU6TP zBpmU7)I}VEXl#D~(ETjAOg$%8BJ>&H)Rxfvd>`3gXHRQ$7wMjTf457YUX=ctOK-LGAG&l=XukYjmp<3h zuXO31Md^>abfep-;L=wVrQhk&yDa@8Zt5>$o_}0#@Z2J{{8V2}V(R?@m)onB;ij2-u%-vX`i=@$rDt#bi(vON+y-( znUbm7wkh$v=$0A=4&lWF@?b7eBtO)HJ**i_(VMF}U0te)?iDm<=7Hn}s|76sVuSh5 z72$%qWKFxCgBI1UY}QqzFq9W8R1TrQ?H+`Z+CtO5UNwGGJC%sw+8XiCpzKi`DEn%- z$i35a5p_x6Axo<+s!|2;G3Y6;`2y50*gDc<-FU52hp`4=<1W^{O(G=BXKKVhkExu` zIoQ2UMaY*%v3@9$kbkF_W88hfOh3gh3!9H8j^G?$+lPz=-N29njVQXv*XB0ip zZ)25wo7-aY8(Y=LrD`O*yV<5Z{t_oJS3bhGTtfz~?~A|IS4+7A@=sBf43CwZfC(js zt0k$&xOFk?*4$RgVoDkN+SsSF`wonMb9<6o6Tyt-w&sR8pQwnx#*Mq5u)~l#;ys7* z7}}fVB}#}1C1%Nz@S^)^rvtZrUd0!w()tQuJ|TC1rA=bkqi;ji9`xdP>nK zCmLzD-;)^$8%lP?KTA`qy@ok8;rLxz;9H$)gaZZ&4S-n^024}@Kfj{l^hxF}jC`d7 z{U$i(ysCe6BV(5*0CIAsaT1p4Xedu&+iNerB}%vLvFrgn2b{ zaJ1I_7;pJvFtd!8F|?W7C6)l^}l0?MwQk~(mk-2ffAf>qt z1N=Ozpt0B@_Pt7TircI4QRk&tWV(UEkhZm~7|h&~ShLQPtLE$p!G1_OxFnaWB&Sm7 zi~u?@VAyEEEDEMpRzsZphMLStk`%(zRzBCii5BUND){g$Z zCgLp5)M}Nvs^x6xZ#eo5+7aqFP}l!}qoAS-RnZD?)HjR- zn6qu&1Xyz8QR8VdVCkoDFHg+|3TJrgr*OXuT6i1be4dhk{B=QNq?Cn}JDp^+tAB$N z2TC_<)Gf1;pc<7VQDFs7_6sy`)n<=!`&~A%SewMPYqdKN);_^3hm_V_)la@J1^C}M zX_~EKJQ+V@d=!0yu@(Noo?}14yaTcO^dNj%jWpjtL;ZsZu26D08bvSNX8wV=^_`QD zMPE4oV6b1#OEvrVs<-nU?A(LZd|J*)_rO2Ry4L1~SDk+_e6Gkp7(TfM{DYlNmooUw zKUk%8t1hl#S7W-atlM285GZH?pgk=$8JI1@L4;}fE@Gsxbz(DvbIL7=rCN#ITgtrB z`@GaXHk`<$S)&E8r)iSZl)-MA<_i-KFahTXz5NROM}^}wi+iJ!&hD``>d(?O50(11 z5(*kTAHb+EUt1#=j%&|sm~%Mu0WMe%=eVqS{5Y4sqP0(oCsc$Imtj2UU9@JFdabQ} zUg;N0V&B%F6e1Wc^s;#cqRZ*sfeyw0FwC>>ed8!A?U0~M6lfb}2ATb<9L}mK;ny}J z%6{yInpqSoZCINyL$gq#4tAk7O8Xy)f8syw#_t*Q=0B}fAO`-^4qgNYM}s*jUoi5D zhKKW?rVwL%3!4y`bK!Y{N&`mF3I_9^CZG!b(^R&0yO)w{kpDEKH(U!F{K-K5ZsJZd zu-1^qn!XP!ha{4F;I3xakEc@GR@1G zqBlYQac5F))aPohFCoC-c0e|IpH=@d&sX?&S4J^qWn5fmTHhn6G=z zz?~NIqMyQxdFHv(5=HWpj62r_oP3?n&}qqJfN%9GBV-PJ28v}O>ka*l6-rG{$E?Daj#wh!{eFA0QYjHt;_hO3nb^k%nIv{GI(e z@OS3+X%PS~y59QO{GDk;qH2zfhiB{=%-^CZTvk-ZkZ}=KZViwzidi;(i3}1WGPrzw1=MMbEp-9A}Eaz=a@0muK zj=-?=S)^fWC^6kYa`cMX^yTP0H+Tg{Yk41Q*L}wc37sm__OFr#C_dKuegn(Y=r_PA zx}7`{sVpyY4#w-KTp`9-D|GsrK%|mJIT72#_?!F#2$@Z1G+fZ&{H-;>15Ajlx_Y5% z=4%G^p9<(Q^V}0vu?$Av{5GnJ!+7&1IKRB1j#n7&!lqFr_oaS;K|Ssq;uv)ryL}s# z;UBMm#oYC+n7i`J#lrL{1@QN26a*dDLAK5)mDZe&p*n6PSmSTaRV@Kw&87Hbn1iqi zJvkNH6aY031y-Wl?$4V7Q21L!gPVOCMKyI?SZl|m&Y=<#ZGcBhGp-8GUz})FFbCr4 zC8z=`=9kl|0!E}RX;*o)*oY*(4{MX79w(|KTKbx2o+Svki~k#~@La0CW0vR&o*S&c z*+8@>-ZAymEbtqZoUUqMha?J()p0f10KZSqs`h;5l_$NopS)yGlJI64@5^!+s-4eD ziYT?={@52h-(v{0Rmv>4E?$eaREv<*IGD?yj0I+{gd1!1CpusazC}`7J?OqXk~)wZ z{-SF+v=Lj&n8cn4WXN}F$3C9U%&2=Z~N@*}iOD zXwOm!44Vb3+t=zPl&iY-T2M*3 zr`+ik%Hr-HC?zrWf_7w4gP+!=a^>7_gL5s;8L47_xV6!SE%Jvu=diH(!#xaw7blmy zVWxol=oR)(VOft#MykzTQ#{|nUhyvu{F3D)rKHD?HPk(tnTi`HK9rbBiQ0iGOGVa~ z^{8!;^^8_;z)PA+V7ad%nL( z-%FceM{72yxsBOFj2}n+qim?vVW{3}7JB$WZA62^m+fDlPRlT!h&_o79Mk*PnKC7F zN~hrbSzGf8VsK46GpBr!Ru%f2amo^=mL*JV+8GV=jtFc1oOc8a;~6jYxH%e6eM<;@ z1q41~#i=t;ZP}7Tl0+?YN~mKVZ4hBr^flASLiq#u<$hO(--pkJ|Ns57!i0bgFbi3% zHaxDMwAwHWRjqcIP0d)%p`dxFx6)0eLJob)0?-(9P=72L_3^ikKTO=Q3)fN)|1gT{ z`LJ;7YpcJkU7xi`{Ho1T3<|8Hz3Akrh{P<==x4FdNN!@rFL{o zv(lL6+UdniFJ1L5eNQXkDVc^#+3yxm_h>|CJ~Kym5w#N>yuS@eaSi7AD0E*8CC`KP zF{a!-MeSF&(i78I<8@3S-WCbjWAOia4V66nJX2t(V|NlJCxMjSFfl*WAzxuunAWcAy8yB z#_PG$hx18a4K0tBm!zlO+y3qWq3c(7Z7Hv~53|S-=}YeAVyXigL)Z5-cD+>ISn)^n z$Bp%G#O_04aMa|SQBLVQ7Q{MvXu?^v(c{&ewQ(<9Pp;~U1(GU59b<{kPHwsb;ZIsE zx9!!j6>=G%e}|0Zo02F~uji^B?HD-(E6G<#TUMH#hRJCQzTnvAL=ov9y(hKoV1Ed0 zA)h@T`wu9zx#6m9aeSs;$*Svk4OMCRo}r{&Fi~Q9hOqZ%yUr`3gM|bBj#9c1tWLAv zS6JuOb5(}NQZhQG*Sl-LpWGIyRZd{eigdqT#=xK>kKU6O6#LIMd&qq?IJP+y#JKNZ zVog)-@$7T#m^J42ET2q@0Eb2FQf9iiJ=)MeF9aXV3$`mP!zr|{e_lE9@m&j$GizTN zF1+PNr^#ylGibhI`v!mXUtr<%mN(`vp=(xBOSAt;rV!&8Od(fSY6A^_Y{*0MT6(JJ zFnv@6PrAdR!@h>%(z&$-q@0@@eMN#2SU14;Ho(c~tkD+`HP}CJj{u6@ z%Ka<(?#kj)OdHeBi;ST>HN2F)m5m+)F5H}o(`|4*+GTCBsqIYG^Tm~~DH3w0E#8-pYDnOdHTBey2>H#r%Kly$gI?RrU9s zq)9u4mJ^_Xa33K^s$5cOC80nk(3UeWfuKdp)u>QgL5MI@0tii+3C%bRRw-H)wEw@T zRZ)sUE%&69HlSbug(?bxN}VAE3rZ;kn& zE-fnPM0=mq zle}6TXn)M#N}m+g8WwiYxom}n-bv~b%i{<0A6`x6XhE-6VEx5AiXn zObqeqm7o*4-T_bZQ}{#Y4evko7cxND>sn^G%oL%usB`%J9)(@=6203jTpRrmX67N?a~4d7tZCr za>4fVXZ}VXlret&uAjvZJ;W+^i?w0CPs)JBTInqxbI zN&9fHYPgSR{W=9tTQoi0S>mD)9ceR(dTnx-*lm-r!B0EwpDfqI-gu`iF=E{OfRo4{&OF>XFpvJo}x*so^67&0MXMNuXI9a#MiR$JxIYR-B&F z)e?yZofk;;xm(hyFTkSLa$lSUr31062fn2T5)G0f9d??H93AHRDxix;%Z!0lCp5a} z8aROZ+}TG#pC6BVL;e{>nse}JO~4KtNEP26ctuQ-SxAPlpY0+=uzwm!Y zzjQ~C&<}v6OywdeRiK)5M!7Y-%zwkqsuQ^lRB31WS;JmwYqM3y=_XWS?OJ7x+duV` zSJp3g?CKbobc=(84*c)c5_U=JEu^H4g!CgAAsBZ4_kK8$u>oB>`Jzn6<}lqz(S zW<*Fw@*!iQIu0S~x&P&AGIJ+0kPQ(U5tR$}HS68a!Hu!rtrxgK@y>+zXP-A4*{On;D>^e#=23DRs)m^Nt$W)9R3<8Pcw#R&)rnpSGY zv}qd7^iu1rZk97wv35AoiJW!dchYv5oU3fuI5&? z7SVAJtG-qF!uda_shN~**|B9AQe(UKC3P&*=%p6(m1Zt6IT>B?VOOb{tE`#V@vUfr zz4AN|YQ-ncv|p7pugMp!!mhg>7suR>9%*Iaoiup&@r$MS&5U?kL&)Y;2=J0`Wnt?#-n1eJZ4dfQ) zvWf9hZj4%jG9vjfoMO_~uK+n6gEgNc`M~MT zX77&TPvz?7xP=`;GxZLAA7=F>FaFn|l)Hu6t zgC_)tr3yw>w0}5>`NmH~JH}Rim^!mnw|+<@W=37LGs!;FwT{jdJdNdt=CwzdkZS57k%C-+2dIEV)Nk6)%}8F3ygKN{7*4C zuHVoy9u2_^u#gQeZ^33N1+Tw;K8^Y8n1z!4z&L;K#b|O6`t&iNn80@J5nrGbCl6$1 z98ez}|BQFt`Fvxodq5Zs)!r=bg?Z9UvANfnSeM_M&#sWMg+l5n1iClEyZ+!pUO=I^ zq?E0n*@ z%J+U*HY=!M2`PdaDyX4i`x<_k|3tBdSfPf`QG<#9L-d0BD!l7Iwtao?i6KCXnk%|b zuJC?YUZ__0CvrAu zFyE~f+$;^Q*}jhZ^H=j-b*NMPc)PYwGY5Q`TJTS#p-uArluWEXtoa1J`u!=Hi|bj$ zaJWTVIO%5xpNx)w?Xpj?&k#dx#39bCOaRT9!z*a2rcl)2?+Su5CUj_%s0rn{pB_lu z(lY+%bej2h15(CH4VoT@`FaRk?$L8tSKRn>+F1ZR-K2tzL%CMp6M%snnf zL1<>lc`0{PYCV%p6}E|_&dxt$dyvOx$(if;q?Ssqe@p1e{EbU-xtCd>GrK>c!id-P z`-3?>iyNz0_Kx8vd41fwXMSjYBGxR>LqA*Qo0n4fWgA_581^rLn=cfHuMIx!ubE~k zc?Lr5v|2^*uERchHU{seuCO*w^NH5ha2X5)sxYnHx?}fgaHXzpqTOqk2~KOemJG!# zB}f_x1VNe}7qfOKW}S=44aID7G2&&)MFB>t2*%P62y7np?h$d1neNf<9^LL?GcNsr zCN3G)x<}4E#7Bv=<@}m1o&6(THMIs^Nw94w*gh2O911QR3N9H6E(?O*?p=)pX}v}4 zUe>&NS_pdU20)9%?hyilh2CaXSXvv09}B#)@glE!PiM@-pVaiNyLRq--OfqBwFy41Zs4Opjif@qhy$@$9#`je{fe@Nx36HY-Sn)Nx|6TX znFYd;rIm@7e^l0>n!iEp(Cv27rmvLo-RtTkdTDjyq5Fix&6`iIE+10i#>cU`4wogy zu110>r%&@gAW<}Xa%*#PUMt$Zv3LIf2C18!Ga+N&XkO-i(s<^VG5a2T5gz&!q-3zQ zK`cHxfP2pl+7PJ@VvZTOjU-3a7n6K&;3gu@ABw2qDwk~4`5y+uZol< z{t|2YOl|x{EG6QxSoXs3zy|~UqG{@%iBds-Sv-XKRvjmncwgm5QA31F)cT31U8=+% z2KtNg824FJvw%5Ds;<(ZOr1o`&$SitRQJuR7?Dg?6f|?UO`}bt`=GEPGQNZxl62qb zO}sK7<3J%zc7Io!{$AHlF_B649crjNweGmYIAo&Z)cm*DhE>HMF<-AXO$_gZBTOyB z<~co@GIk%W)C3tLmj0ZZg`~nr&BKUazLHA}G*zJU+R|zmIH06I1AhpzhhPzTBBgWR zvIt9MVqdf<4TL5F-EpH|k3Ys4>P{+A1qf}_5=&348)(vg_ndcB zb#%moni}TAQ<^r+T(@2fQ^V3e{T;yvbFG)$)}ZX@W!HMCFKQEt)l!uT(7gwm2o>@5 zs-+rOg1M*rWTj0uZ%&0pY?Q@pnB>7iTJ}DuaHoo9*m($<{7gKx>Gl(pDDldvnfp(u zCB%xs%&4vhHt_r@K^4nPtjm8ISe$$a^KFxqzP?T!KaovRgFia?JL&urUj zPy_+SA2@PoJ}_GKBnDId+w!=qljW|;n~DnJvIGa=F_cEDHUTdq|vvx66Nkf2)^bSD}24e(r4 z=iBp^x|x>f+z{3-GeTi+_gIK6+)A#t#fIkYbri3C%@=SkpgWe!wq?TNIeBe$dE#>RWWtfVE9_X-=-&8+6J9N# zW8$pl`49T!vCBVW9Q_=Oc#9qxII$$!>uSNor+M>qUDSCZK^BXWyMPUfg1)>VIQ|sL z*YVZS^9ipucROIb<$r>a{kBzHtMZ$EdEa0^V6|2y#!Yy1#d^x|zPIl3NtD^DGNB){ zdD0Y=aLFy@-u2fJyScXO#W;9S%JSGWxwpBEO?(n$bBeG#9+-QXG6lo z{c|;Z4@NRl%{TfsQai{~KD$_@pVkWe%;c(#`%48hy>0vYuSmJ}ltPf$XF?BsT;YAK zN9$$-J3SrM!}M^9y-EfQui41?9M=vr;mZj&cit!}S)KnoXHlD-U-Ims51)a$Ir*SO zgtGW4R%GhOgp==#@VcI5RGS}yEU=_H^wtVw#^i&`l+x?EpHKN)2o}Fz|pNwV3-KJ{R=Huekpqnr1GCW9bf%3QLmYL+w^MM|U6UAT(HW--UF2=+y4wC%?lzSmXLzWink+n10KJNYXHhz=e zgpUp+2XDdSIsl;?#$F>(6c|^Ez(eVbGPB)yMp53N#3d?&{d>smn#z#o5DJkH8j^U3 ztrJe1-l|%ptEvyU8@HaxKm=ZDIFh6)1igAJSh&&;IO-FP&`~~HPJi;P0y?os>Qpp> zlRA!oV5~n}t&-Ifk@-Y{|21d6t7$y{9Zh82(`!wHVptLT7K&(55lc#o2pZyury4?) zW$AN6mDUbN`qhqT=DT8GT0hKb$^1|Phvq+Mw9J}0dD-xq-a&7h`{?kRu+#A~*Day6 zq3Sf6D3wCc>4 znqxfkRT)>gpSY%S8KJW2=`Ss-JS81pMkT0Ve`J*;u~2CGTm0~oGsjJgO+G4tk%#N> z)76H{K3vk_13xV69}5!poEi;0NXk6{Y| zY5l6JuK4z-vJ;Unjz*1Ab+&t{JQ~=KKIr21!^WdrJ49`7)7-JG(>5z!%EX;ih}5=S zg+Im+Rc)DVD-Y@zA5?ghDjXA3coY>L6+U9NDtv@VaWQu?KR@bUXd%ne?J8`dLhWc$ zpS}&V(Nu0P-)0HQn9~>KO>fCDdW%8|^l$RI-g;5}P z-jV9}K+yk{iHX6~qN79ABvFrt>I;F!LZDRyU!P_dVw{#mOl)dM`u|WjUl>CKl2phl zCvHhe+)~0yx1uDjCx}~H61Ogh%az1!3gSd$3w4ADtGwEhxNs0BOfRIfsX#hSPH|Vk zXS0{Mwvu!jew8P_QpnpG#4Rj|TO7nKEs0we#PyWK^#yV3f;g4kPgp;$LI~vuBbbFY z+4KI;7M}jS?z>sKhss3EvNeBPjEs_A6q2x}LL_m5N)~6dk2ujiizD1fSU-ZIz1%@= z*|om9+Ip2;UdNW)GMdRsEbXAQ$!5E#|3?RCtLM zY8$(?h=!u_(c*2I5=E-*YyNR3rMGILOT6atol+ij5Emk>xZ0Aqa1hrJ#OZq@Vf_^Dr%o4!ASzxEb+{N#+ZDf3 zQwda^B+$%VovN!-v`VTj`5q~$!4GOyx3v;h+O{B0;n_jj7=|OQ?9$k}oUNQ($22G+ z9b8QX)n)$ZRNa`-e0B_Gp?cnh=XCcF?o;QLKPe4kKiUh^FmA~GmdyVKj%irb3wm}3 zu>N1nO1YzUjMe{lF{@UnBaM$R>%f!1ESl2+qUfh^cM$Hpq3#)i^*)Hy4N9YtW<%IS z*xWPt7|7ox>Q$Jw3K#+_&~9a!K!JK~J9hh6bE!a4;IFeU#3KFZSrQ{c7q=rs;1{eY zL_DDK_;rf+VnyqYaQkoZmi+{-@=Wxen-S#WGopf6tLvG97|5$?ig|U{!oY^LZ=d{)=*_@rkuDVV>ZS} zQS~;Ojxh(!a(l)+8{|+Ew`0szc6YkNA>Ak|y>N5pF5{N5^vgwUFl)j*%gOingQDOU z&4L9h3s>(yW77V8RIXpAsIEwi2r|pNvqg~pm;H9 zy$@s3iunIGlP*w2Bc-`#j%P>L2}BZf#Njsu&k)0bW?0E(@Oh z!E;OS)Ra&zxaybS9HBWOJ`ADOD_lC)k8=NdwiNpyX z4vx0$=EMC$ybsol{urt?zP6D*nqFXtg2rFjF~VGsQ||@5+s`7*!}xOt@KG;f=-Rf; z0<#UZaDkt~TY@lG`+Q^YkW}4N@~~>I*G07ocivWa3Xg{hJIj-A6*47urwOl(7D#Bi za^nsG|K_~Yr}9U*&E23{Ge{V$$q0H|A@z{EbcIy1-^Nl}U!_3o`oW(e#vj`-7#Mz5 z6QA4nqk)~)gJHey%4={AMDK#6I(K%HI#IfjKqrW{uWOHufam-*61`N3dtYMXb>iM! znl)^{K)S)SzGqKI_p-7-Ii-So5)=40YQ}N=>+yDf{1bk1TR2h4p4O=`e7O0&uT=TT zm$psNd6Jfl-yd!2jd|1inv)&tDq`NWzGwzl!+lY2dM{C1D!BWgS0+IiRYv@#t%+Yp zHm?rjfuZ*=RWQz`kd&3)^tH+3nkszuj9gd6++KH!wB0`dyj`#si)$1pGc1S^2AS1X`1RaBz~ZbXOOXC;M)@AS~J`VY5`0b z%E}^XGuLDHw8UJG{wlGDNp8e~=Wm-A=)6`W{s|o2wh;ms;s@bLN@1?*@H1bTt=M$Z zKBhDFmRZnVl2l=r)TVkmX&=)Wz5UI*HYovMmUqcldhFT$XzMI*pl_D~nA`2#X&G}F-P#3apLPJaD{0%e?f zF8g1T4v_MbP)u7xE$O#on&Gm$F1FA$jg4;rv0Xu&F}Oy%M#LunLWALTU1=Izj8Gw9 z=XtnlNdLMe{kxX*3%N^c1RduTDZ3^8N=y1ht08}~a$uoQg1T5}PB;L?>+Q!P32>oK z&8ciG<<2;!)EHgReeYb8sy4dEMu?D+hUljhlrnwr3Kb$;PT}+TbiDdEZR> zo4peJshd2)V!K zlic9LS}Hk@4a5n4uzQ^tGqhV6-w%J7wVOwlCwBGMj8sK_dOFH3P@L%Ljpd0wz3ODA zrpg-L`0njKJ%U5tg@SVOFFJW7_VBa!DGxvB{K@qx6VX0(nY%9uF*iy z!8J*mBk5IcU!LysuZ@2l-tN~g1rCXXVV)L{bY_9ZLQF)=U1??(V%q35i|HuHU>Ybz zQfh+)0u}2Lp;9afuPX_Qnz%g94uou?S%qxjl5o9%;%BQ2!X}ypPocIgE`q1TM7=K! zo;|^HUGS7RsP7^54bO1!w7$acjX0NlniysQlbD3nP1x9i;2%X1aX>F{HnG#>wYH1J5YyR>j9BV(H4UV+hI088X1e`aT*pGUBE7BLVxr zW}*G3p-C_>vcxhUM-^}T%(W-~B41mhkqrlHmY%GVZnp}h2vmi7Z`4yWNN!~ec%axs zBZ66i?@F*tvt^4KnK|OSlq~z)_bTFTZk}Mbonf91{tmmZhH^AGQ0~U&&5xAFys0pW z9%H1F_8%6ek<~-l z-GK&j{qw((?bQz>K+-+5>$Tjkc`4H8;?Z9-rPyCIuX*z*h+cHfC}pq%2af2$OnX$s zClS0nmVSE(gp%v6 zMIs=2BE=jkcx#-L5W?~b zBdAu(P7-+wzD*jYdJ*aj@6DNPE1kj+9BvI@(W(Y~hI{6^3DAbGv<7Y1D`-Qtwc%_s zs|`x7HXQ5PP+ht{QhN@jJ(bv$tQyv!mrHJ}#XPWUsY)pVO_RI@ud=Kxh4xRp3vrbc zP~)cq;u6AuxbgG=#LK4!n0LP=UMT>rXaKB}o!aX70q+A(l{q5?#d|2z4fJHMYqkNQ zfv&QFp2@rQQ{n2!8|nl@{5*isXadZq3czeQDFEiEAz+kPz4eg^J;*15r{3V<4=3*F zrLcw_BfAO&Y%Ue&F6KWBIM9mSgByQmPp4j5gSC_EB?sUyc@F?wqPa?kEf#?10-$CD z06utH&|A|A0NzL@^X2JWo(aGSh5MoZW%z(n37`i3qwdvN6LWUq+j2me-8`h6L+U-J|P8H zj_RHiX66+D}g zuu`^zjbEjJXy#@`m162jZ^55{TK5?ic+TT`&*04^)54PG2J-}N$bcYA?)are%+)JE zu0ACIvPD3O4}F~?u;&L|tyA}A&7n?xa#*L9+M91rKX-<|8q`wIxzPS#1AT~H?qT)f ztOWR>{w>@Sa7}nxrb~M<)&wWFiUqqdN(HwDW1Xzh=`$h9RIsbg@LfYf3;&EzYr}BS z2|){O8&Z@*o>4S0ktE|sLEB7T(tP~q_}&PIp6XW(db=r7#gwU7;ev|_U*;| z4CI@sRVbpIfb((*k<4WKwrfbQcl{F-ny;Xu2f!Uo-kqfRvC=#b*&T+zJ0+>t>vppI zmv@rZAsp^la>wJ(8pGWD4LeD-Ba&ag9}Bd+E}R-_3LUUhNEb9IS^C$-ULVi9=uDeX zK1}N&l8ph8taY!E;I-Obr`3y`hFqBA0nWsQ>C~w37VDyE5rxH*iT4%G5oREJ$i~>l z4`a&QiDYb}**LjKxqw1v4xn6n=C6ZV8NHNRKobBsgC&=3`485-a4cG}%me)tT1384 zcslbIe3-l~>33-*mU4w92sq#^*j-|gKlm8L1V#SyP7+^a2)n4~lLlv5PT^mWz+H*In$wpi>9HeE=h#gY=Ob&0fI zAy&&6yuQ_W-5D)FRG&@N^r@{1_gUgoIRoSt|9<+^HicKX_}R8J@Y5e}=R*h39G=cd zWVd20Nv2Z|w~c;Nw~Jb6QGxWE&Mdaqg3x-?5|?OckSKUvX0L^d#&2@tx>~%&R zczaW=Rh7}ap!xObj3f)C?RFnbx=>d4YSIO-9l=*U0Jz;=Z)$L{jTXzXXzGes_y*&{ zy!yc>7JvxB@=eEL*W4h8mgDtc&C zcb56oFm0+!XT>ksS$=pV70N?= zzZ<(Ado^m7=_8Exd99V2T<6~U^@eVhM^T4i7t$X+fJ$WUzQMj7x`Eu8ym-4B1=2yT z>Aa$z`4#(>xzk*D)JxXgb)`|&y_{GXOnjX zySslIAtFjCD>lqMspp2fzFx&!wZG!Ii*EbS4ISsUNDIzo0&EY|o^#&A)~W|pcJ7jW z(6ley4!$G)75FwGAqVg!CjB$`KK`G=_e8DWD{0ofg(j6~+@1f%86StL9i$@xRmpeC z6O}k}WP@oQ)OfHWzDqMF{bQNW)eeZ}PZaE7+CNxx&qN3N!Q7h?OShw7?_hhV4L>I} zv+{T$Nv;YBRixr~-KK20V+2<5czzf|Udtq1^YE6xOc z%pA4h?jYH-Db{pwg00}Q*&mCRIH&r$mc^OtZL-<^*cc|+)JBL(Yc(v49pX*6G1y&t zAdCP8TX8$t?{z(>l_qzbcinBPR9PN<o+oFjnje?#`IJg0f^vreVtrz>%DTlM>Sgn`&sa%CjgKSb=MtOyH)#2@offu4NZyJGT$&C2~g`E4v*=Ippn2DzWl z@2cGCCoStj3iMKM1E_z|Q@b>K3wwqDxZ>l#sF;SwuhXcUn#;F-@u`6m3lJCRujSVX zlAYw=^A{tOe>azZyz*E4qMUVU{JerwZjHGSTm`CWZ^1*9@WJ6l1nl_%3_)Y-%ls-L zLzYU;`N}iYsUa8yC)_lCOf@uaxLRIb^;1OO=7)r4_Ghr>@CGABToTFpe|4nd$XRR3 zjyzHh#o;g73#RmX$?FY5GLQz>MK9$JoU?6^b&q!6zj&;+g}E&aU#h>fN-sdkax8T< zQuxtkHLqqOWGH+0CRHd&MB#0=PiG0cBe5Q^2Lexzf*X&Yi(tyX=KT9(53K zHP%Y=SLJvs;n4U;XLk1y8FdtXtSJ0$(WXy^z7!hRSI>FlaA+$HaXg;fQV~x?Cx5c` zOP88@VSs%9=1@M@zx_})jdnxXsWoTj@RFg--y^uFZr)e@`CA8hnLEeo?a<;XxPa?l zM4`{_P;W2Z(S<@Gs~3ynA`0cFtNftrx?9Uvvk1lWvyM8>!0+Y*C3yAQBZ5J>gHnd$ zmDb$L)IluMR@gIG43r?)1G9z@>;zdmgJ6I5x<5f-Iu7N>r%`8rBR-&*VvOQnazFXB zsI4K{kf*1L-HS-(Jp2WC=IHUj;RWBp4y^}kwjC~1yDgyBx0^m$?@Op;$ZbXPor?J9 zK?kqv`-;z;Y`gviW$--TYwr6u2jThWHTb{r-+ICK{I_jJ<2|SA(fn7a;NL9kYgU%g z1Y;3@;XvRF1M+OP&wC zt```0?R@BfcUag`trj3w^QzI(tsSxSdUu@pJrZj`>t~&`rtH)m?ykChcTt5t_u_s!I>Q5}` z2Y+KtH>}Go{bta9F%E3(MF^4qE~fozy05!R@NL~pi=*WmK~lK0IpqBY-q&>9h?*_w zk&93ulg;CqGGv5Xr|LRsvd+WfS#>JXPBs;+ohv0-OnCyHPZwjBp^t*o*$GRm zcwoJwCJ|8qts$-d+IW(Yp;i<5GSj}W^=>RxJS3OAka>iZ*dDm8>|p=99zR&itG^JGoPxJ8`rR01yAZz z4~tyqX0>fY2?BDQw0i2{700917$K^U^~Jw6WM6qst$)EG!8>ZLq3&}-sQcVeHh~RHXY~A!@ z%GsU>o-6jWGv?Y0B`Yx3j}9@{vnfM;3fBEB?oL}c5u&bI)BP&=l_TGA|QPvg5aWP-#%OO33d8uzjbw_W5nvnmqx7a>?CT$tTmk}B`RCpdA;6OcYfJD zq@&kY`HRrkMS5S|DJXf!iGsc^;i<3x&0nH_;2zR4>+8>W>Z|54U+;2{6?*XXexCX& zA)c=*-D9;Le0_|kzW!S8t2;#;c>GomzOLh`uYb_{>dxog<0U=#x`C&@N;a!p)45r1 z6%~~%mS-clv895K4EWLqP=R6wHnnbduX==@upV?!;$y3s`sMs-tq|wmMITwx#Om;> zE~O2j4=6O7B<)rF>9BO;mF`M?MJ*Mqj(CaaMKny(HtYa_^5NXyG>+&w=C4wh4qv!y z$aB|*Oy6M!H8Z4@iQo#{&m0)b%;E?aw`)KF7oE-W5=#k6dZBsn*~s1Hsh+sUH73bb zk)X))9>xR79-WD!Nj~<$!fMo#vzFir;Yq*jAy)XLmEFZRm{;Qa^FjkYUVBCG(bYhf z|Dw4bt{2V?Jd28#;8q5fV=n9oG%AXI6p_kSt=uf4s?N<$icyv3alO@-8_YOrdMdlk zd>u_)`daP2K8eR4i3vxzufORV27LOF{5XAB@!A{T`QfO#uifq6`}+}hj;;UQiwjEi zEdX$PoQy}&oQJU|n9x)5mG@z9Q)zN?N}2Anm=_v6H1~ngJAPj==AvIc|3v4ZH~IID zsXOQ+lLj|kTvEoue^&l5`|J)ZkA#BNr@;U}5%#LjZ!l*!UiEbI%-iaXKUY3_G12wL z$DsSL-q{){Y2Iq_CNe64oWrsoe6gO3qjhP|I{h)w=%nCop> z-q&t~Te2QP47j?nC422?jI-*ecOM=$D=JcEF7jiOFKWbAEB$WnvDcLvd;OClv2=QTYY3=f0ZCuMQ{1aj}G%apt~0pfdle zia4q`!PQ^aXy%|wOx;zvGpKmSTG{8TK5fTZoyxGp5C6k%|56ht3_+DeD=Os^e0*1f zYOC%AC&toE=#7NRAxxgCL2QX1liGJ3C06xh(5a-y5cb|mUULt8r-IIBRqQP%aeC$E zr$UcyURfUBCDd2PMQ5wR=Qzg|nEFBP>d!Yv%YLx16u-RXqhO{Re#cD7jO!&h;u(UUt(@HNK{w7&69ZY^O9v$%$&OL&{Eu zP|D-YuZosPd3uO|{N z+LNP?eV_K-Es0z0I}R9kXy0?(nY}~%-Z;?OcQrYK_Lcq1?c3{r)V>(t(7q?jXx|LN zcK`KIPu*MSrBZxCmWe(aD%19a(Z`aW-D&z^^lPT|T9~|?E@(+}1J@HKzBt^t5@FvK zC}s3Wu*BY@sK@zk`Fn%ImeDx2{v{^>M3^F4;rI%*iXYenj5z$soeKSPQf}yrJMKx$ zl>`gw!fwR4L$2oGuFhuhzCU*A9M z&+#U9v*26C(TE-T^K?qyzCS-l!hhDEI6nFh`t#Pqiv4-8p!qlYbB|a4hy8is;JZTe zSKgyPzd(3cf8yt%FiQ6pMrb>H|K@K?@ZFu)NN#NPlUG)k#i7p4NG>PCk6~(~@|9o+ zyCQN?p8gfe==d!0+eZ2fyg`fU5C~yWF-0{1qM4*1un^R(YQhXjVbT zVAMvY1!^ruFvI{aY=wLSmc_M7VxHpJb3>B0 z`BRCXf_}AE%8D|?M}@<)XfG-W{?0BdJJ=fAp~mW90*`Q6XP)Hy*hDULmBc6w(@d3s zZUR!Hs{XzK4L1M z^pRCRg|(as@vr32v!Zi_XioZW3X-ZuC!OErHl;~tgiF~;XZzMDOBAOw14^%ZUDI#p zzKhQ|P0iDqH(#%_c;$&*2=yow_q^rZZ0Etw1Zr2VPq03&N09T|jFGg|v|-{=M9Xj9q8 zytuA$;0}|jf|IP(0!eEQZFOh2K|5d((09gpV8udZ2rEX&X0ai9%uDr=i`~Z_W!C!& z1*i=@-5iq6scy+Ex404~wGP|les+i?75&fNRo6)o@ynx=f7VFb5__}PDKiYjU{esS z-%HLr<0r9*@-=3wqnYy~v~dKRoDp5JwVShlORlPIY5Gh2ho?-w_z>>vIwdplkU|kl ztcb)P{Upsn*rjFp8_-wCITu<1&>0A9oP3Rw;hyw8d}%8T+-yq%I&~{4f^S5}4=|hw z=U$vcjP`*84WB<)vw9p1hP7y$c{oEQXN`Kv?-N;ZXts$arP0JXZ~0o*<+&ef zAzVy(^qP}2nq}nYU-g*67sH?J>tFhAY5jmr{SEJ1|7k(}8)p2c^&4St%ujoCBrbSa zZ?_t+K)t7MXO&P_=tYn|@kBAb>!TaqCw;4*`D8uvVdnIPX`E&l-xpoeOYa~H zJ2e-Me(BV=2jd4vv(fSs8{@l_N7IjDe~`JtXYcj$v0C8zBTkQC^?VjrEYF`6AeLMl}>Mf9%yoz0^`m^fU}DG9*}3{We~- z4Ja5ZNnrq$t0(1wPdO2!X!&4b1B^ryPQO576U;t5jj<72=XCalkg^+#(l?7>_A4v8z zr*V?XfW%zGxos8RT4+P3n}M zSA0>^K1+g@KK zy9%APrn2Giu%BGbrq|`wCm}T+&pDXwJN>otoppL{7s^nli=tH+7sG?^NQrr+5qlv8 zviK=U@=;v>HIANh-n{wD<{2MHF?8%muS+5wHzQ@o zzOcE3utOBtH~T~_+oQtc%v{EKUiDzjCA%5bUDT6**y6Rjc0Q?o!5cv^cc|>CvAW+zcim1bmVMwqDEoK1Hn}*{9_AWldh%p^ zyG{?OvX`AcFi@wr+D+KpGBiqdcd_wXa1wIGAyF=G=5`$Jy&0_eFx5xPUua3w1IAjN zWnIZu5_%!7$u)}jhup-!zbg$F*FRSetQZ=jg^qu@g-j$o*guT^F9uEU;$SOpM_nM7V)Qc+YYSJHkS;UK9auSzQN>XM3$1xdxp0z&%{tq%dW zbRq_PW{0_Gi?LFIJLz2%DLN~SB5-T&Q*aEo3Rd#4+4})munBtdS7^ zD`|vh(6ys}6<~si@KtNqhDMjakQ;eLMOmJ$ zZD#Q$bXd@Z$@j_==c^<--#W5t!(*y&M=3!d7H}$tKqE|3+!CGwoBEEn`W6Myy^y+{qX0evcCA0t|u;L_Jg`9xv9D4zS&^U{_B_qXttWDQ5;L&ks_5OU)F#4d|f=Yr(JuHnz zQf=QF6tC&7A1x`F?js&`IO(RlP_GmxhqK-tr~BCZ9abV)zmRK>)1^YfJ+wf@J5@LHAgx=xYQ^$s%A&ZMpfHU?7H z@uaf#)yIvepUlmrJ@I`{$&La2YS!rf+lR_daKtE@?j1N1)f^jK6P`Nfy!@44s3^lM z@G1U{+oO5yE6r@^d0mr)6HSkLDbZU#?LIB_RL2LRgZLcV8uqT2IYeG#xt%;TE&X(J za{WPYsX67zm!~v$Zhc{H6K`i#^u9bYxqiy%0irftb{r+1F(R7mtt9oR=HB&t^sXP- zoP23Y^Jx4a{6Tfhoj5R=1QmQ7**tn+TH3`PIB+PjBZwU{b@X%1F7}GzeeTpB^S<}O zWmh)O-`WXy-gU>Y`V~~Y1EJ>RI|t1>Vj7lXF@k$x&d)a`+>4c_w`gUa<%7F0y||tw zUD!+giQXmD;C1B{n!mNIA;|F?-iw`QMx9&`%uT@XR*Ys>)4d;Bz$~`jj-^-fzRSg> zLhLYkNSEYAIS`2E6bso{W}$dW3tD%s9PVC1IGWsAb@`qXUY)Sn?lF;C@i+N9_%Jp7 zOmf2rcW&65hPB)?{`hUt?3Hb^yuWgi_0pQZzdW*x=K=5XjOwz`zdma6Gk(iHM}kW( zT{6qNcq4(s_;*D=FMprq&3$E-_uRlN@3)T-euMDe2;;5pubt6k&$|h>n173(v-aNC z2=vbKy=&1w{w6y94If_!(el@Yj}taGCz~p`8)mg%{w4#*9{Xbn?p*9PE#Lu=ekn5`&ho%rloQQDE1<<8xVfJ>k={<3Wq^#2+ms=5 zqJ8fn?7Y;Vcz3@}&RnpFWHC(M7@9tTpxG>l^qcS;>PFGYi1`W=dzh_i$RgoEUIx%n zH2Uc+{^XQ-ef5$@w(7&Pf<9Xr5&M#z0(!$>iDoz#M3!)-Q_5>Xtv@P@s2*+Q#}IOL>$LPnnLEH%9IVi?$<`@|X34Ecu5wW% z@Y`q2Z#?3N;9Um7sdefh?1iOIjri%UUe{CgN-LdC$ral(&(H$mEw0Yc;Kk-_60!^& zRHE3{;$T>9o{lZpg~q z<_4VdmyjHtu=R(R`n%p_$p3l6HtsJ8fbvogoUV!)mssW=4MK23+rYlT`FVFg8^hrG z|3;EWo4(=tpL=^s`v1jk$UcSsAGl|N6dIT3_>KyO%Ls zKxWLY=)vaAtIOk86h|g^{xPz%z1)sRt zn^GTPKZ>2rHVh^?ZD#c1SL`pck*oWF?B+wStA<4RZfh&1uCdI0DjfHB8d(&eTIIEB zO123>Qx6NdA-5>`jh>^d39}gN_fkLNOLKBcd17Nr)1}pk4N+{m3;}RqGQ&RCbY>uR5g1q3d46`I)rC_czp2IB%^( z;T~&xByo8uKKcRv;{qzxPdYz&f0HRw6EDxdzsV;?4uKQvIA-2di(Aenc2;igjY7ej zy_2P>?;>Vp|YGTXfE6UVBmGN)NGO6rA{eiNU$1jei z*G7~5G}G88N3#$PJN3CG`&CWE=J{7{QpGWE8h2%0xz+;B^Y1ADga8rsroJ9c-ebUW zeDDo(F+0C^nPilvEs5ol65UC!InSyGXxZ+T*z3~mZ1eBmy-*m$n+Q3pOFxnSwSomQ zcr(&d{)|I7v~5mQVK9A^l)i(xCyOHBw$^!;qNK~JtWKeJ3N@bNcuh%))Hrls1WysX9!Auw@{ z-&(|}_@^xi5E-pSX!(XP+lLM|sEur0`q};2y4*al_mD!2xrs9MZ(iziaQ@SqE5DE@=ES6EHqUT85z@MBxosr)6Z~%pBS;AB|PN_ zp;j!Slb8H=C|>=|ZhhjM$7yqnid4Q+^ownf65LMuDB(r+{>aje8IFNK9e*|Ks9OpIm4 zVz^gV-IJ?K^)OA|1i$T$MopDB^YCWd&ypAc-L|c<-5tLLh7tgs0PVhm7 zrk@q~^@Ell)M>N>IY+(~V%IY97*-VldBx5kmI(xv!}50lj4cq0@Z&Gl8di`8_O$(bSC2s+A2n;CrezqUUqbER&{7_nCQuWcU!RNQE`hjIzLjyt z(P0g$&XhB!dis-BF{d`fnl7tP^!u4Bhs~+)OsC2Mj@gwa&6(5~4c?EW--_?L8I>?| zA$*iTdn;Q0>mQZz5$tX7mOr|JBxQIY2Z0)zlh<&2@9ELZnGMm&xTGOf0#7UM)+fvg z>IZ8)PKhvXAGU1Glw4hI`v>t|bS*P*iFhZslwWZWj^Gmen!P4tQ?FAk>$_+ZjqBPC zNK|Yi6^P=5qmyr`i>Nl%*_^ks-HPx3T{UqXE&$5om6kw>WB%6cU79k4D%_jSvzjJw zCFHc)kb8#pPRe=H>bYXQkxdlqg7~T+#P$Qqf}0b|>@@cgDRRb?L))9Jy@=j{K81iVQRU zDOcDKNB(bd3B=5jJQth7--3QBX-DYxFZo$-c=Lzd0x>2lRNU*u!^`UN@8FXW$L#mit ztq=XoS?v;O@PCI$GdM6VkSDb{EVq}b%jv(Z3RDi%NSI$_?a|e z8VoPBie$yYGj1%urs>|P{Fy6lI13W$j`QJy!hA>|pB{&N%IO6J;N!NdC-KC<`Rwkh zBfS(CYBQgAUPG}z1Npad=jH$Lwc+hZfUiLZIlMt`5#HqQlt(>@s5Ti9QF%_A@M<8X zN=hzYE4fFeEfRiZDJ<=vO(>rA_AdJzI<`SCC`!yILfwP*uT8G1Bl-XUg-Pe@z3Vx* zs!!P&wm{B6sk5G(!q#x8Yhd{LHn{P(sIPkF1aM~O z`jR_eEl$})9}B+iRT%LP<=>=Jwv)foYl}Gj$YsF42sbyvU zxt%rfBd!2VqoF36Dy~J!>=yi@5zn-w0$-Iuzi8b?>AKO{_VS{ zq?VQRqEi$^;`?gJCFIH7!;uR^E19f+uh0SD;SvikUdp2-i>TGRzKUa5T*a}ye0H#K zbbI+slB@K2zT`CM$Cb4K?hGw}UO!F<)oD!I-9NXPt5F%Gh?jaol@~zVs|3W9gzh0d zjh{UUs9@h@6DAuu;eA=~?&7hT42`RS1bYfr}ygFaw*2K(td^sAyHNK=d$ z+K1Inp1o4?tR}nbuQTW`OjUO5uinXOV`+b7Tz}mYrlUX5m)sKey1pS6Lq`}PfZS^R zRoCXF<`R#09d@}!;fW{xfU%dCNP>lYg0_eXI}T@Tj8qFC&v1ri|XEU93a# zf;0k&yE6IWsNNU%=-n`q9jwuBjDB)poHiMHUmQ95?Sat*NA$ipX7uYwge)kA&qq{* zUP>lYK9+^aHMEy2f=(z){H5u%%EU|gbD)wYMVh|w1r#Xe0`^AyT`{+$H7sh}T!*IL zC@AKr7CWkVU2T4Y6bS!Jg{Osu-@JKRb$LOoi{pdyns8aXL*}H8sIz*P*qI(zhiHL0 zfzv*;r1NI*6$^Sbck;(nAyuoNO>IGbBh>J`u%A73^v@9$gIxq%RHy!QjL-%FDgQZO zjiw*Zo5l#z+6nTMd8uQBUsNa7Zc8LtWv8FcjXhT!=OkDrjuLxctTY)3B)187LtqJW ziydtcGnlFPY$~|PD`f{qRjktI=AX$&q2B?jEd4NDE#&|PQqp1%jl-7p3R|Fz`6 zyJwh3p?WVhmZs(R=a0%XiHG5B;~t6vdO8-`{p=)?2#s{jjrU z1-VQ9(?@W=h~ns6j*oM-!7Gf=U`-c(y@t;MJ_z$1HflehN#cr9M%32~YjB zN5^)3Wu3hU9IA5NN2{1>Ij#uGwSyq}I<%+Cs*beOgwfV=Q6jK)%A zIz(2V1&DMg*}L2n`_4n|;Md+0Nd_b;&(9Wonl^K|!4>80UhdVW3~q0{8$Kl$z$$i$ zbwq*tG;dKhjfb~;bIy2}##-H|p^ee^>&2+cwz=`%?&9~_xT{l*2kocR(fI5^d zXRAoVvykDD=_3RF99t`XO_U=tb-w+=+-5%D znW*^T%!-1{Bv3xYSBPNoYs-ja|ES*nJ$hdnnS61|=qE?_4UFmSA31u{Kvi%5n9(fn zdSm1Be)+EofRc41u({p3JD1Q^Y}zf=1I*S1jgl{sw|23{y+tfIkGwT6T$b3-baGwd zMc>5AJB@y53*u7n6@!BkRF83hW;1@G%OxINiFlOIWqPgg@h#~`=m<8iOr3CL#c};Y zs7`8+j$h|p_jS~meztO-f&EFSFSQJviJqLakzAG1wLoANhFei@DngM=**hDL_p_1m zdkL2L-n5m`Z0lhDWnL&mggQ(f{S>YzT;M_tg?N^u5oywP;BK+>^An!BMtyO|N^}~LTX(X9#YW9s zFw&|{-7V7fb!Mvsq?gmf)sr&<3Be|kkh+Vzn;@ZaRE|1iG?KZZKGphPKR14Jb-lOey5DQkSVneiB73H`$ixopeH1 zO9$Ux%kapm=CFO7tRRk2dXK9(5dP2pNKN;VO}|dod!qz~ShxnLUr&ZtY}`*bSKA<| z;JZ~Aq=>6yeb^?;_VAhyMax!D8sMrD>*3{+;J3$TQB0VgbqeYO*^6E(&9mEzy#Q)aLq9mc3D4qovv zgN0>j?()5dbMdGC#Ms?PIRyb9@g_I7i*hl8Q?rIA|DKY6O3Cj*g{_|mRf0}-B%+9A z#aUR2Zv&q(noBOFi%^WCxkNac>jKbR7l7sxu-<4OvC&-DQLHsx*Rj?t6F9~ChIVoC zGo_aRuue^rphD|@4V-m5xz7<*n3q#(e^JV#04x_@NtX4oL z2k8)eLonxm#^ech+pr%JJ%gwWusNSGsq_48gdw zur21c$xH?-!Cp6`RCNCDzjK|`pXp_IGV|-glMMAuvFM&IAY_R zzwl{?c4ZPbn421DlZc+nZRs@X6X3okaJv$L_OfGk**{2jtYaRag383%gtU)YnP}zO z;+Xz_E%%vOY*{_&wsUK&ob+x zKrlgi6iwI9WDQ|V5cUZh0+B{E+u}>y`+tx)(Y!Fvf5W~1AMPKybNButP{PU%J+p3| zVpytr@MCt6rYIcGUL8Ny`x5tg)Fd6|M;3Okv%j;W2nZruBbT|hSS1UUT%`oxmhx18 zU}16h^*RjYv`~H)k$`A=IX89+!Y0_IbmkBU6vije4}LHId~fBheE~R`KkBkV$;NRV z0}S-EJ_V~l5uc6y@+Pzuj&S323wIl-Dm@y8&*IY)+qIi5^0S2-#W># z2P$G%!?(U5lQnp4kfA?_ROXy=^3%DlO$uY7>7-B_LSk}bZa3PsI`U~4^2~@od1gam zbToTyL+&#etJ080KRf0eRKjTkU+ z=S!}_pUiK(lsiNCC5}VK2cntd>bR76;H9B<;K<6!Mu>sTT{LFfIR1jH$MKgFd!1#; zaS=aTIhTKr6j`*V%;!^lEZ%xxj*VX$thxLN=?QNe zrUulzn(IV_fSGVp0n1|DN!^m(l&kv*Ps812$0$c8p!hM|Ly&?M%oILP?lYPuXb~V;MW*8 z?Mor`b^V!dHb+sU=8m}Y-9b2rF6V{-?fPqmcX`!s*RiwJ3P^)BXOU64QnypC&uIjj zh7sBbb$+*+svE7itH@RWg3nd}4vp9)78)`0PO9b4srCH%IFc~uqlhLKOKTR?Or-YQ z9G0cbk#@|8Xt;*8@-keYT0aT^xu506OX3IDy69v_NQ&}8Y|ZJM`$iZyyu8m&6tIky z;IP?FN|h%dSSl9*;8FYhC4Hv;-0>`Ptc`an9+~Di=2ZSRUgUPku_GsIQOS|3|XNu=%Ir{x$hy_XE_1e^>svLtP{J;|Bzs{4u5S|26W**?0YC^2c0L-Mz2; zvEcAw@<;AwF>Ob2#YQA#GO~_Q@zl@HI?}3iOY}}UQDn__tc4;T%L zplTTuWLVKg$G_)YcgsFP-8X&0UA0i2<`p5egzs4A;sfaqB5YU!KAPM5DOcB}yB zmpHV^ye)Qfd6S+d2v{-YbFmaaHgt@+ zU)_(F2MTv@Mei>N>n*r*`JddsZ8;@(w4Cek9d+!1sS5@`@Cv8#!w4M}*L@hc%kQ54}LM1~fOlc`+ zU_v8QjB*PCCA?fLFp(mc1~Mrfr-Ma7tD;s#t)fz1u@*!~dP!TZ1q2ET6y$P-P^eW) zxz7LdUHi->rRAmm-rw_kp8w-KZO%FS?6ddUd#}Cry6v^^ee}c48ACwk%m(2eoPhCD z@cehS89s}7PyO^w9SFvv`t)*W{f&Cc9PqI2kK*28s$}KQexVFcbM=h8LJR?aM5`Yw zk5nN+B(H-S+`+_l?$cAd>FrHsxxr-uTEU8Z6uf?D7R?7E-g=h_yqr1f^~l>Ww{V1; zZ97uGBxl?_yq+6)Gj{dW%^hc-KZD(4a4)S_KVMN%Te0K4TD;pS*v-S9s|=oLY#6>~ zDXFzyk45yzTvTgQU;F>AeTd!g@Pn{0RkQd{knP=I%65BLIaucUgJ!g{lJ9#68x!w) z5$WA=clAJ@S_AYV6`1{lsc#bbR~$t@MbZo$iB>K(o^Pd&KVsozkA}K`^qX*jtKyY- zH@$}!_Y%G2han^9@7d>f=ilS~69999v1UNC6vG|t1iOnlskw|F^=gk==Z!ojfOk4- zGfc=aShjnIkh#e$+|jH|R2m@@3F}Di2}jPZ9BFE^!?E7(7USE=57$WI*S3JF zssgoZNw158Xgi*4%{RPQu@qE?Nr=ECeDw_>OP=_JB<4DJvO)gWE`{Dt5yqAg9?||# zX@udkg2v5sliXU?a-c3DtmwX6@6OQNyBMu?`2=G&LO?1^C;72oMa0Mc15n+q0iXq*V~|vYp73f zt<{yKUghdp3o#`A(`J5glC)kIvbVa|hc-C+*ybMRXFnW$w8E)mLD=Xre&WSWM<3NE zez@?9_)R#_(Z?C2hx!a1Z20&pM;m|ppreiIGJ&s>i#|7_OZDSdv?rvElr-i7 zLw@lMM%x}2W?FJefyWSou6afr)O-Cqs9C=*PW`$U zQH=c$-qeTv=o%*a8Y%rc@OY???@z4zd~ZBGDI&sYSix0TA-Xw-t0~vLqH^84W)>5V za~ni`)e8{m;N|l)Cthwz|08#Xy?sUm-<76t*R%!Zg=xZdsjOJ*jm(yRM_Aa(bhhJ0->;tBSW9)=EgsB+uQT!BT5g^zv=DP&(@*{eGugV>$bsIY`X zh7Qo9e?vU@=*3$X4=&uV#O{=-CwExk#Diz={V=SKJTv4nczQZf9KgO-X5&>?*o+_J(Mvjt%X zlr0r^e#PO|;HBb?V3$URTk6L$+`0t@O{(v1mJCtu4_Yc>-r@&@R3ezR3Q<&HxsVu| z$Ako<_&ySyc#YK}q|d>zWXc^zic==*$mO?)2$`?@B~VccGG+R0vyMqzWLY?_cGK0e zTSY7ojsp8}hnB5#$4ytuiWNy7xykKxtW1tG9sD#9$V(CLgaNL8euWjw`KKyh-05Yg z8v#>%dVTIxa^dw2!>&EunX7x%qssL(9GN)AX3VHdlz48iioBdhI8cifRrm4edM~Ae zm$BJ3^QdR{MW zPZ@t3N8hUW=h@@NpYmzqpA$Ra(`F+0X{pH0rwY{}e9x56HM{oPsotB@L0xum&0i5> zVA1n+XX-ms7lyV7$umQK@J`ub8j2B+ulqO|Ic*oHn>StSqUm##&X0Pnov+DLekS>X z%fF{Fm-_|?@Dtr~CMrt(vKls}1AR}GR=}i5bmZ37d-kJ^LC?R@IC`m<$OJOo2=`qS*4kf{u%`G`UXKb1HLvdlzxzH>+S2d2KvXga$fk4e zAJp+T85^a&2}Z|w79Atff9oBHkwCf5f8#l?>xW1VWjs@N9|2oedDmV`avY1S@PCFH zaWLXVrC?I;3KkTNs|OG}6;{fjBSxnPOqwBM@G&5BnjJ$`ypo!DLwjHFQU?MEI@-bb zr$I%pTZ;cPj9%fa1>1Z9b2lTA8M70*-kmVyGFSY;E(dk<{4M+qR)QUg=)7Z_6k5J1B?z7&CGZ}u#)u&Bi+--}UYR@J?n*~NTh^B*#6{GNh# zs&q2EI*gtVZJa#tt&?wLmFUv!aa}qm5NMgM4Y~}nHcQJ9Df(;oCNJ31-h5c${P?h_ zMKyw5{;M3nt}@kK{)aR=Z}xiR%WQ|p-^Ptwd5?W9TzN63H~(*1p8w6|xBZ9Px%?VF zWUH^J9L(AkR%;vOY;~5%J{q5e>ac9}YqK2Ih+r7zaYgd8`$b&!D@V2kdIm!ma%E(B zH*P$Lw>8VNLXc?_+1MA#>+6F@2%g61Sn!%u?=Viqw_Z*ZbBVvVJ< z`0nyeqW}YYs}>~&^T2Uu(U1)Y+P}kp1DlX5{_qP-d0UaZ)Nfxx^-?!*8-mo>RvS-`QiskhRioIJLwF}0^*JW&EUozkha8xp@ zlbuCD>qe6ViQf39qJ`^H+AHdux|cpb~&Jq~b28;As}D3RrnU=c>mAWBc$+VV{BMuVjB z&?Kw@doOt5XNCw1O#?#tP@@=y{#lv4M~miv-fDfxuOPq7jJ zkMmD%1xbhs%d+=$IiHc9kC@F#NmIUs8`bI?*k_hG;CtjX>p*C^>zVQbo__B@HqASa zX^=aF6uxSB0gG>T#Pw%t=2Y*;#m^F`*`2TSmmjj0X6r^>!%I#A`SthS36H#O1+*Ye zU6gPGOb40nVeZ|%m(ut7k)LgD-7>I5x2r{)pA+n zRSdPW0A0ca!d`H&V$~%gjzz&}lcNw=DDleN-rP(RZ!TH9Dyw zTlaMV-3TDT605B4V*mg{8T`_+VQJ-^R~uU^!%z(9foF1yJ{|FuF6+q(gZKt}dH4P* z={op4vi*o1qSVj^^sZYrx%6vYdPlLlo^k0%IEb2y5PjM;{|hev9Hd!S&Tn1*BVGEc zVmaS->HE6$+G4#|S$f^A?8OZ}Ki^;*>hj!N{Ps)k+kqDi=2wg9N4fMzUHbi(6kyoT zl{o+@53ZujP|SEd*yEe3pl-h_c@ccaD*Lwk_=)1j>lw?CjoTEwdVPp%Vv(Qafv)@Y z7y0^Sci%XV`@blY;ZFL&;LgGqcgNJ-xA0hUoiKf?#pBoc1&BO;_pF#Zb&R8h&SR5c zB6CSQN0)Z!M4#R9btE38lzffQaeNgzILAll30>Y+IDO|(zAcl#c}VNE(I3Uqx|9!x^q9 zdSO#?PZ~2L&H)in#A-mx6XuSA)k*Mte<(TG4czM6z7~31zSUQF%B-^5@^y8}fhMF| z#|qhr2Kjv|Nh|tu42s7qE`amQ6s0R7VG{))N1@pkqJB*(;ZVyu$jd^1Y zi};nR#B#GrkPmMnZdyB31ZzmFU9VzNIAC+ zAXr8dnRd?c>1CDR{n+(HzR-}yST9!)DriMK`dV^%B6`;THJ$7I%;C7ECKbgV|Cq~Z zEz8Rj2@Vo#_PTF{?#9piSBF1T?ioZKrn9`%&*?k0y1pgz6*Gh&2T;RDrq5&C@N->vp#~Sgqvr(MJ3+7PqE&=F&!=-3}Irk(wg@d5?8) zmTc`AU2hKUB#;f&4K!I+caL8h{vV`zi%&YE`C;EXW<%FoLw%yNhMmmL*V(!rTw_7>*9|6BfT0)N*Yohd{64 z-m9Hd@6{gH=+&Os?2W`@RcRyLMpBQ{=N9nnubd=VP1lH43OiVA5JR`3IMlh+yE(7J_(=-RR1`DgKg2b zBPSV)BH-B-PeYt5nEBwOv01(m%;A{$cxEa?&8{P}eLc)kCwt zda0H^Vzc3x9*l8x{L7@l)f!nZ5!tf&-2H03BeM05v_$aB{)JH~1e#McLm8)ZRfEXI z1)5O9p>I0WdHk4$eq=y5{E}VB>FQ zhYfzdrt`IU=15S#CfIo1d-;KN@od#Iem4~F=Vm|b`8l-s`(h)R&6hV72-$@sLp@so z308rDuvytd^}xlkZpZ7hkJxw!zVjJ|^U44uy4o|4iK+%hTfo+80m0S2sv(h`QM1K) zaQ${392=Fd+HB{+9RahKE7C*o6_6pAfcz~eNds>)Zpw7e^ed9Pi{)euDUDTrpG7}o zBnGAFFzS?gZ}9nF3rUc_l-Mm|rZ;LQWM44B>vg54h~nMPLFuhU1esu}^M51TQrc7Ea>%}6oCpZa>Z zm}_b_t9U`8*#J+43KIE&0u-k%W||lcgKxT+X#(z!0&u2>nJAz#!#SMOxyng|VF2bf zbWxrjpwkH?f86O&#MFAJ381$&c{QW2`5bZzW?*2=*FC1Lqb3#^$Z)l4Vp5?RM6tLl z-}u=o!$Q9@U|3M^Om3)`ny|UhzfPHxe}FlvEemIHq`8q8AKP{!J(?YWh&$&BalO=S zYV3FsSR?rEn2>-G81MCb1zOsYemyRwL2)2#06wobuoE}p<61+9e^bJYI{agTU0}1k zWBR57$q8duqZKU8$9NQ9QG#|r{SIb+4D+trBqD)DFmrhg#FoQ`mPLF5A+X-o=vcKH zQu-pSxt+^%h&2ccbl|{FuAS;B4N+Thh+;NGx2ep*L&U-54!Ret>#q>@jCdTGq|o(W zx;X^@8|0MgOha$&S)z_-%XhXa){-5wQc?GDRA8&9l%8z^r8QrXPhZCPunAS`T1)hGqMvX>lxC1-cHd;_LL0)@b=3 zq-2`aS#TZVO7PNr!ROd|mcs?44;*XkNohQb$A6nY!p3~vKYl`?Xa$t}`1B!>~nc2bw2GM zw7$Veu!<8Km~EmOd$>fM984*k$q4pH6QK#ZyN&lLJoWvp%CUAV?p;7Cxx(>xZ+oc? zJj3H1QPY_t1l$p(_kn|q{@6Ik$237Gc!uNZuCX#>aCHxW>+s56?G9e;aHen-|2?l( zXG$k(YHdn;Bd79oOhhRWrSNAePscPVrAaCLnaa~KF{Q+m!k?);9n-3mR;BP~Dr@Al z8V2~%b{fh}`U^a0#Z0%hTjr55KA@P9F+K())%=BsS9>}&wDG@{y8T*jWJPWf?bWQM zQS?oG{HNebv*Rv4!{}SE*Yx-DEiB}6(?LDkk{&axC4JT~1#5|?PsaoC^v3x3)9Z;D znkAlkcH9Yk7p(7)*Z(o}%6&!wK%$d?5s1CoDS)pw)J_STS3AtBJs#*z0=m=bpv zH1&=3TUA(9qif$vr(x_~-Z%)o>UOzMbNuz7E)A;8E6Qh?Pf3Y(Rr$fzH9sV0_vIya z=neL)GY7G7of#9$us8g}7V};5=R!hNfG0)yv&gpmf$xz&{b05T{1#%?_w=&6D0hh^ zm^_Fd=zg`4v(2D4<{M&C4uO1kbcd<1glbphdaw+nW(pot>*7DZ(N__{cCdTuk>n@t z)a~B$dLiImkLK1uP3jSMd??v??%c=iWU1^Nmj*9baIP z4Xit4+@Ue&8f-pc&S95Fgz{%SVe^yUX^AEesJVCp2O%C%0FKh$Wj8<4=aYVBRD+`* zG_u}zhe-RCYt^UBkpmth-#`>xzyKzD@L()2lmD!sQgdp&)D>z@=8tB!i@w*%qVm(S z7FjnxMx|%^X@P*G#{=yd-jK+gQEZObe`}A9#Y(6>Q^zOAID6}uaKtv|DW~%pKLcBx zS)e*{$AkCG8Q{)Ma<{qhTuT&tUKzc<`c=6*6J;zei{N{H_NIn)z|Oo0`py3v*_i?M zQm-2lxwivRn~=rvG~*+m5C)_2N`1V{DE!56jv{3>iSZma&6W;|h$G8uNv}buhdiqF z-My+%OG2~i2+z${SKMI;UpU-*v&N+z!C@Zp8-+S5w%tn&v0{Iuz6L2fKiQJ`gY|Wq zBh8)FcsLtrRsKqA*(tK$A7fpPrTfyd?k+#yI}!bx`uqHneVgL2K=*#nkms*qEovW1 zAvnoVEb2GYmtJZ;3qLHwd$6L$llJh5weNcCYNEAqDwAXHkJT&N>I#Ad%P%i<1R3c? zvyHzzU-Yopi#>Nz`oLMR#bK?NU6(sR*%9dJP>hzZ1cyKRZXP#RW`FHPXNeC)FoB^N zMmCjHpFA7zPB-vSSiSUJaWr!8?L4u_3-nxxzC3H{6!7913quyX@C^23+!%lj_xO!L z>SfUF9Qs|eD5BwEA)!)lG+gUIgL554#6;9F!g2~ViD!*T0D(mze$dvfmB_!DZJQ$J z0c!I653oP#^OE_o(E!|D^JAZIG5VC(BgUKVLz#Zx!v*srXd7BK#FJ{tmcdQfs-J|p z8HF2>ZhPCM6n=i0hv;>B4#l+*Sg$amCb`Obw|j7JJzr!u9Ov)$?J%kt3D=m+#|;^!k`U%=1leV zM$lB{OpIbd@2ueusE-ThYP4SP)4`8#b|%IyeXr7lKr@6uxUPdKR*tCADuOYJuw?IQ zSV!Jq$?LMAt`&0&XoI+q3HP4@*Yk3>akC#`&`{Pyr=p7AOCSEoak)*Gk>__`3-#m@ z#=pq}Ie&CEFHY?$XK@G7%gq$hl75ibNAS3kN?_}o7-Zs|i+-`_|AN0uy7)73@7b+% zjF-Am51Xdc;@B|>Xi;<2lX@Q6KNwd+hXUyhFxbpc2Q@NK=lgDCn$$(`+iwK-&Tt+C z!zo>Yk80QlwZ5mG z`+VJfH-?n!XO?%pH|HU4B>o_pMZDA}X#rpC#urAbzOVe|cjNUal2k}e*qdqk6k2W`)CnT9J`Jeie3nyXJTtpqHDs>CGR?_Bhc^uA{7gKIi5LgbYRN?4e3*XW zl5QfFqMnJv8Z{j~2kR>g3aiDb>H_$nmfD=cV3bwPWYrwdPZM_yR~4swA-{gc`W2!v zaxkIjD?#ar3eL+gWYvb?dG&V`>#5fx)=qS=$yIu4MQ#cyf8u|6&03UL{#i(--k|-1 z2gTE0scA{G7E<>*@+!Yv=L3C5+J-Pqqbf8DXJl0a=_X2!Dnho76zu}-T!WT5UIL&yq$d_L2DJxgJ=1L3UHULyOqh{41FuE z4uw>URvIk*su6&b`;~3Ps-s1js?Xpen(_%}$lZlc5PA2;_!s<~{9BO+d_Uva8P=d! zlhhlbk>!|rHxv@Ac*WD_6<}i#I$~dG)lIY6Vz`M7e6*k+kYxyqVpvwkqOvKK2@fHk=8Jb*ityy z?xW(rRdN#wx2p5ra z@qTAPPr%7b??2SfR&^2HLR}Xr@W1_yiRgyp=&8{w#zo|Bc*QuhILsq7qz4sBH#F>g zG_P*10(O3qmtf+c}4$E7cqM|_!7%OsE-&-|LMO(`hi4x z*~Ih%6U8|HliiJ)cQM!O;5U2H!?b8xJbg?V;f<$vh^N=bGpEA)cAAPQb==1&i&&i; z>t68$i5#Y^`Rk zTBPac9o^?=YHT&2hd)1)q(Wp$vOI7M4jk3`RzV4GwnJ8IiyDPf)nq82+Lt_dV&>`u zX%n<%!RwjIK#-zCM#io_d`F`5d5h7Hj@ZeH4+Cc<2+h#N$MMW}7YXrYUVGD?e`$u* z@uxDFG|s#Bm!FhjgMHHY-Qo#bgW~$+M0U(7O*RagH3LU5c~g8!t+pqsjIr&$PPDvp zLrePX&0Oi?Q4MiaGRSSRh00av@I3fmOxq91z-i_D0EqQhjs3iW8+O;O$>9F zzeN$x%XsEk{F;RlvCcic#c5$fZ*CY|0^>b7&52bH#!`=aJw1{^JWKAIn0m@l zohJyAOFn{4q*lB$9yNp)P4`XE5{s?3s-mJVH>_)Q?;L1L!;!}i2l60HcZV!Xo;vl(6)l-JC5ZmyOM8APY!ZH?#XDuwx2CwHT zKJ&GWty4FglbNkzT59(hbWL9|6Y+3%Z@ zE}jjBU`CR*3WX?3yf8t~F=zMuHcYa{D_{3>!pJb#Ug}Yz6Ub&0Dn(buA`}V~u}1Pa zgM6%s#~2eq$%eV{y9zTo4%%*xr>C^WS5E2BmlOM^%pA&}EBG_Ji-e)mC$5|wlA!+C zvz5Xdf}q+}tFYz3=aL_9Zcqx>`Qh~@T~)>cZY;-7xG0BwEp+{ruFCOSZY;+lrSRtV z@M^uT9Cs;$YPmanvoyT+>#7|0a$`B}R|+{bO1l18SLImCjpcYsDZF_mygsk1a=gTi zh}mhqxJy z&%_-(X{|a&D77kln5qXsNp``uLr#`n)|*NwS97%}*YK{@>qNQIeWGH|9oek2etlJFuqFL^c;i;-*MDUl{W|Jf+n`@( zz%_^T>!qHMe(h=-DRC#{h9?2@_&nd)j-GA(Hv@X8U@^hNYc7BjBAaq zz6nPuJ6E#69Z9A13+Sqrq&L_*hTjhQP7zQ+YD*v_w3lZ}(F##jSX24(ZjXdu$%Vo^ z3@N$EY*y~e?b5Y+LxFA%FVW4xWOSF1jP7dZ^@td2=`8T@$O6WzCl5I`TlF-RFdat4 zSd4El_WK#JMs@YwV#WW#g3MO38s))a{fFt{4x>ccc8-{qLhMF?e}v&T-Xfqn_A;xdpQyL0C2o&tlI-W3IL*{MkjDbh6C9d%1e)ee8S}=n=iu>@n>c{5_4CxvJ zD?c!8kUTHxGe(uOWa*!;Z_~RWFe&I{dRkwN^a5yAPU%DF$8vB5oKfDDofywPGV*(= z=Y|NN4f41_((=d8H5k0qg`^8?m6|XOg>U7d2WqS3SgiQy*DoH`d1PX!94}--klUiv zQ){m_BVb1&b9jRcEzMrf=cOhf56Z}KqtUtqe;z)pB6lRIQc>(uGBBZ=XoAk#p*&!XMVYy{*TxREq&I5vHLC=j09dyFg3K-t~VK55>GEj=)UaZ zxfCFW`Ur(>dsd?OoUf25^q7f%4lQIZ%*jZ7fhUwlBMQ3M2=8*|kk=h2qiHd535zz+ zF`R%FyvYpF=)|;)b>v2SEHTA#%r#pplwcjU7Z(WMcuj{&^;jAGXIyJFt zv(7rL>FcbD=Z``y@>omeHfg(B()YJy?ughVlw~hSudd`21~v_$f!So|iq~|G*+di= zG|ipFqjb(a5+LW%!%$6GApVSvgY(@|=d$V3TYO5xS#jJ;qT!8^T` z8e^wPPCqGpdJ<186GASB^%P>G0Fo8EsP>Pis~U0x!&H}RCEGjYl4<%5{H^FqM+7G~ z%#`{=c+eDgt&3-_SJOf@d`tSFmh_9ciPl&;pu8B4A5bw!sh~DRPV{Pzw!N?mcnH7G zy|J|~r$bQ-U#=p33(DJA?71i0=dbaAABCYbhUT<;l9eFyH=Q*LT`Qqx)!~zJ7L%(Hvg!Rxo(6zuh z7}{vV??MV)R0+~8Vf?5Rv~poGCACriE3!nlX)BnzTe9{^Y-jKmqr=oztS&whizGwy zTZ(stkAY_SOv5ad$OFrx6YI1oyH|;!WbfvabMn52eRc-sXw~ENy!ba3Cx)M{%)JSW zAOqwxKD*ey2fr4!ZxL!KGd+%b=q!W-#)HR|!AWYi^eTMp+Q?=%Zj>h6SDN*J4{28; zIlik%E*=<6F21zF$i<=M zFIv9c4ZR!ECaQS*|IpBvF!HIP0@JADYmPMD4XiXTiObCSP(+yo%Lf1GicD350(i5m zc|E5Qg(1gSfGEma%$FJ7fZg;>KIY(}Fz+d3%Y9dQyH~s^>X6laQ8BAjAt^OB<}S7( z=d^4;MH#|YGhVff4=ut%MQ3L);w#(u;cMXRCVIxloBZI*mtF zT1fsWn++{~_FSI^F6p`~M(^iz-rA`fWFMLHad8Qm&LA0uAU4CF7yP?|p}$ga3B}du z+}l}m5U#%T#dq>l-cdQx>Z=`g8H zb%tdJv!%^!;cA+rv<}gX0FlOcx?T&9OFS zvJDRzS%R!lcr646{*p1bMTutZlskpo#WkzLe6D2S!NxFNCUSPx&QJ(?T~odOkqqU zICHhUD6oE@!6Wf$H&G2qv*iYlpK!`+s@K?guP4vs4J{m41VpQBsz=n-hFMmj>wZ_c zo7M(VSZsp%j?9R?{>k9?Q_&bOkhu8n(~@P+Ugm)P*oCWu2v-#N`77Q2o+~TZ!V|z& zcT{w;Z4z;%f}CPUMTh+io1KpLv!_Ow_Ag&V5g#2aFLy8V*|({~E+%bu+uCu_?Y?|n zMW?5D-{X-M>@kUd_~n6Qhx@6EAj&-pp+y#UU>?QhzNaVV**uygDQFo;4USAkC<)ib z)qrJKdJ9<%OOe1|3cg21jfF@oU&^_iCy`&MLZ@woR}aF61YR!;rW3Q^*f#~Q^DJ&j zbr!svh+PuwzErbr8;pDZa}vEBpt$~N@9*vo*7=A(A*_28V9f(Z0oM0|*Tgz~I9Si5 z%yL*KZ3EWx`qa*?uBL)=0rdx$!p`LuutRAJxK9Th`gq+HMYzvqD6EflDoY9O&whBg zZy{?r+!+neR{HpNy&niSt*r>|VfoJm7CPYaO03mSOw?q0CRq6;Nyy>C#sas1@hk3$ z938Hsw#bRM-V|JlR>9V{L}99c3`4d6^m(Uw1(ZK)@e(iYiicQ773lf)}5Hg zV8;Jgu;0_t?<|j$@j6kMyiN}5#(iU8xC&?u4*3|a6}@m#>XR}q3XiG3-)zIa(;)?H z@=sA;rpSnh%=k^Tcmh|yDl&)qGoJo4BNtD<%SgUBlc_I!%GdqZ1>w~HIPI6{v0b*) zve2^mUiKEZvfH^s0Q66qIkbP$6+`>GyLcKpePy=;tiOA(`y0Y6@O#8dd zVA|iU=8{Rnpl=s&rOfW1@R#JDyUVY1;jOcj_IHck^VaO7{oPu6_4Y2V`qqr3{oPBI z+~3`=3vch$OWvA+w7+|elKZ=zd30s>+VHIzNBg_YHrn6)yfX3aOX1sqYt_o`&@NhS zlKpGJXsyMJC5Sh<;at=(oRoxd^ow}Dn{q~YNa_wsoY`O1PzeWDW7g3Vl!VLFhVl*;TO>=x?lC(&ILlPf>+tE z7V&DA^Fq9meEJ`}qBH*w@oK2y)l0#{iT8-A>+lBkppc1yAA~@oiwJ}u7$Q(icaab! zCNK*=G)l~v=1`*B`Rs{&mtn&*3GFW%M8EwZT6!RT+K1RC3f(G|Gdvpg;~Z-Uaf4G} zU=>@Z=gg%L)9V%pbu+UU>e9E4!@?RWwapfHD{-G?{+BE|$tx1siz3KR>$;n!5AQl2p0cXa>cJ3RP2_~sLCi;bVcXsCU#B3PG%z43L?MI-TAsiM{%#| zzQr|e;5ZYvcBr&nr|Q@CoMNvR*FBg+Tl!u*N5wqdVl?+6%Dkr?NQnEWbO~OyRA|23 zxR4hFFXT8Ub;-9Erg0`Ehfd65?08W8Cl(d@q`3bl5nV?xLcPn*h;%p89~(;j5&U+6 z`r#(~SfaD~SN$P^S>6xJI;WbrmLQ6i{Jmnyy_wWYU}|A;SVoDjWi7(aXAm!-O^_pvLRRBNRFah z-DGk#3k0I|6tX1J|G+nLqdd=Rlb?%szgO8=HMV!)KxWq1-g(lJJ^YHFJ!FWFN*D(@ z8dO_#Bp~$p-jsfSv<^S7ymYPh$M-$w-g;yIqW9jnm+7n~?4%3mr_N6lXXpI=-^;uD zBztQp;_1J}`(CJSseFgcO8)4lyxGg;5(y_1(Xri#efhebfYp7K`votB&MH?Y2~%%mR~bN*?BCC)E&arc zMqvowGx48B;}#$Nw3k{&#(3ZQp)KC6ugCKb9G9JZ0m!P24w=JO!eg$i5&aYkz+^F` zar_M1NC?oMJsl2t+%aF?ntTpsJ&+uW5H5M&B=W}xf+EGTqt@ntVEV<2We%JwV=6+w zAu3?xWa%iS<(BbSDnw1_nIKCgx>1!@DoH+jIPQnD2F;mfQR3V;S23y3jUA>hVkG$p za=xxii-;atE%7F&VkMCUB=jcZf%Pnfo{Q`~tCNRGu2c5u^Ag!#so(-`N%|YT0KqOC zezp>JevCbf&Dclb;5*mgg<);X{ms@Yta}E6qYmolCMo;eqztuR>im-Q39u49SJ8Xk z=+KoC-mB1}d0}zZGC-csv+^6XUM+`l2yAaOb?6Nx04?DD+8J&sNniL;s3W8Ar7VQb zXa(gM>fdqdx*@wS>8(BxdoDZt)d~6-EW!tb(5nN7PM;?ykr`ph5w7TmrYlYNR2u?( zwF_6Af51z9T_s?gW3F|W#_*LO_#q-a!5L;GZ<98aA!s*O9Dg_+buq3e&g7GNp=*@5xR4z~+s;t~2W*+A^j2^5m30gFjjMv-)BJR_ zMZqU`p)U4<*yaPTM{5{Qz2s(l{U3OWOJ35ii_OQKp8CtzD75D86RKo>Ac8HfDRnFA z5h6`5&~xA4s@X~LNjlyXhDH7aUjtaRW$TisPwYOTvJ-lw^)EW5w)4e!<|@`i3r>N6 z&JGLo32R8K=jhydDpLV$KPdy)xlfpkKJ>;pN~W9FY0UYw)x_)IoFAj_DS~Yf1G@q3 zrRvBlAFP;tV@OdVJdoCq@GwA@gJ;92Z1rt@C~0_X)Q8#Xoj$2`HAI?_h2V{`6TMvZ z(=glDE^$&Pe+D&ztmMJo@V*XM+Ti8uie*Se)|C1ndJo+1rMDhIV zLgg`6`TeDxRG%a_EY~++j_-+4biQskjgS`llK?G|W_W3A$b35P-Z7s_6Nb?L43soV z>`9B*9QRVV$@3+horm+ky~s zO%}S-TG7i@Kb3B!lFue4E!2WZ#k?E$-cB%5;DtKF9BD|FVeh16vfbQeoe0w^dN(1@$Th~@~7N-JZ&w%7V{A+?AQ1flCC(7 zT3EAf6gc5*6}VfOz6V|kd+q~CuUx*vKNBc-sOU6r(e`}Zfr8V5g=>}M7Hzv>BDl9Yg?83=s!@!weB$98s`8-7_gPIYF_5 zyPM6%HR({SJ^glHchBAe%ffcn2c1WR1}RiV!S!Tty2W;?3a)Yazd`<>rI1g2%DKgS zG3EP`%QtHj`Su~-^m!-x1P7M$uYO(rSk4K2YsWim<@Jub7hS~;m!6F&u4e+E7xuv} zG4gJ4ggFTC@EuOh@3Z~{4MuO0u(Zb@h`)`_1ix%0ilv@K$Sl2y6yDtJ-YjXRQeHPz zbpGLFq9acp6yNIVS34Mt^aHkQ`Q6f<$M`*kWBvThHyru8c7qBk9ReXA5>BdQtP&uy zP4kdn5|FI-585X7{7U$$4T0Y>XR-p<#fB21#7xR@J!gMY- zpgPn4$hq{LcQmFvf10R{CaWlzU3nH#1IHB2Ih!ENDZ7GBZE#CxAb=G1zqoGpQt#C8 zO?p{r>D)eRR6IMS@;^o>ZO)?`P(HmD+V?-=lp^eH&S9s z(TxbY-LzT?<7Q*YIEqX#^hYd`MZhrvTEtda@`!71m!uTxOEG<-xtZ&frsQ2mp6L|c zj(;1JZMZnIT|{xdEEPwGUd`C@)x~->Q_EeKAmPXD94-;|8c*kb9`}PkN;SxmsEX%v zRh|X!%QM%MjcUM8l$Sh7TMndQ#mR#Q1bDa>& zr+e{E#cNUAviN4w1j1)@B~Oei{{+1-qfmS+_gjA2Mw&i7fvbvd-%6g2Fwd8DCC?1Y zW5v(pR-FTi-B;_lhB;xbd0Y{tz&;ZhXKL$g=OZ)QD`) z7}O`u$os=)u|(lY68(&q8bdE7q8Hb99^m5;uMXk!A;r&!NUvz0<8WOOoX+RDHw94k zC^XZ@^1)oEwBVc3AtRXaEjgwZxx=`OyZRtH6Y6@GX!NqxPu@}@G8$a_oE})^UVnU% zQ_HNe$GIW*xlMZWag9`DtMsPyYCGsn;iC_tH-$X^2E8eLx{4mxz%S)GnBJ7~Y>nQ~ z?;S+c{6g+X}lv9a}TE`MQm4uhWa# z(hJE!`MM|dLIK|e5B3O~D=^N**+R^faJI;;Iv6{SfbRs3fP@&2k4f&^D#DyB#0r-2 z<&O8QpqGN#2N>V{a5r35w(gzE0(1Rk$Ln5>tQ|xT-b%crt6yzqHnYWGq6Gks%l-H5 zqos@L2ONn@t&}fuDg8?DPc{RH*0`jxct7cMel->>C&|cD3JqcP}*o=xqLOnjM}%i3|vA zUXR**bc&6Kx>-^YAr9^AUbQGCz4TUkW7n&<=#4Y?R&U%K_Qohsh~5}?q9i7I8`KW@h*1^rK>qT zN1+fZRKswp<7KVcOw+<)J=UsnLZWSq{N7$_$nD05X?IXe9h8co$fwG)tV+b)fhn2_ zaw7D4cH~{?I{02Ndq2F4*f>MGN@}QLSeU|oF=ENGG0b3DV=&!pQ6mZ#rSODiFDQe6gk;!ZB`TaO$zd@iF zw%vL?2lJJkcfKDtU_F|%{8hs$TD-|@uwq+=6kX1N85kj-EQN&|%{NQwPzoMgqvDz4 z_tK2~C~rh@Yq>HLr;Osy@e%%<)NshquD=hh>Fe4!wB}y#hTiEDyRT~0j@=01nX324 zc_7@?GI>qc-zy2))VB`9zSPE$Gq$0)GF7%sv21nXn@-m=U$DS}kulWhWUJc=W2nc4 z_O7}wChV0IlQwg?^f}S z>9fz&qU`*uNm`D2z0`04#wok^sDt@+Z9{gR&bc%gYqt^yCwolge}dmw5S-`fzYh$4 zgFS)ZH-|I?llB4an66Fga@{mDVs;a=6vj?tRyLI?f9&{LHqsaFb``VEvpdbU1>EsZJlsOAg{+IX zccu2)owBasPCstfaw~RE0IahNy4zrP%F4I;r>r$xBOw6dpMj3F(0FIc*vd#>W1J-44iB zYxu@P1pAJ@h2>eND;@d^r7x~l+}v;%#}{JZlv?!(WlbP7ra2k_36Vhjink$n6wgSc z&Ez)GGU(3Sh99XgD)}OBm}GN}s*zK}@e!_FT&vZJIo$BiAehIE(&iV^LXHX?3mzS% z6Efa*;XhQLtRc0!QcFA65F8}D0;vqcf84R32%^(CxE(rP>fm}7_0_2GKGe#3(2*ao zvI-CN>nfr)2T*>{Iq`%1C!ko;SAK}~_VkZy47$}>+tOEVWxZX7-@MV=JGpVDmv3Ae z#*Wr{D{LCP-fn9Gm)Tbi6b!7pBF5WcU%6}F(sKLoA*{B&w%Xoc!>Hb?SGh$ZFXYcw z|K;miaG3*oq4CxOegoATf27qGZ0G)@9W`4VJ_><^AMamkRUny!EXvfuRTGbO_UC`s zIx9z*67mFeO`R1p2P=#<1C`@kY{c0{#9!^Z6y}Bn_b& zYJQ-EwV;QOP%cD2H8Y-mfJ)?Lr9Q*sa;|CrlI`>auAa$pgZgjl{-Mnu=pU-cy2>!o z`}T@><%&YZikzcS?8Ix>$*RGHoYq`~ppZ|X3E>mzAl~;P&Y=#{7D|Gyj9%)^-WMBw zJbPut`HsGpuY2$?^Br|9DU_3|Ae;Qm3`LzAssG0^H&XwNzsXrzb+PeJIsx@hMRLD* z_GrAAUswM_{OP%wIFHUU=g}SPXs7Pp2)MJZ^Eo+>0;h$JI0XfWU-TS3Bu087`gboi zS?M~m>9gEm9s~E;vV*=MDk}WENk|c1nT~*$!C8ACA^pjQ5*wseKl=(N38bP+>?=19 zC4H?0;-XX}uPvVsh3hqTjTuD*`AhyX`|3sdNuB7PsAS*0y!bPFOrqSDEYA9<2|k_M zOsNhZAqs`BIr$>Y;iaA+LrZ2~J3o?zl=*Ro&7pIHHn3`7RAK($o2dkjg z+7i7rLYn+dDF{d7N{tMvr;3zW!jNd)$zK&V7U^?{ykptIEr zUx82H(IF9*OoswN#jY---**sxC5hW-qB#0>#iPr;o;?&)5HH16uV)C7vAB;~z10nh z8Fv#=O8l-uOw)4vUZLCBXr0Lf%D+|Vv_zk_vR)>ld&$1{HSBxk^65c9yoQSXD7Mk6VAu2$67v#?p{F2!m^1Uq|bt2c&at?cvN0nSu@W@0py2@ zv)lAU5R0!EBZ(d%r#Ge)_h&nA)@?YYr|8@ zoleVCb$pPtfKTe%eBI**D>sL;dRLYt&FjL~7iAr~?xP^V_~o+2Bh zm?tW-i3Bh8Pl|*0K1mF>w%a@n7zOo~HrwUCrteCMz8UXR^z9P*^OW>^iEZikoU*R6 zbN@}V`)E*Q=U#$XofBO76{$fvbr3E>v|h017QHI>1{k682Az3vu73VySDfozxg8XLK{Jwtb@Zx!AJxJ0V5O0C728J%r8^MX|Xcs-}#J+VfWKb#sL;q9zCyPJPY7)S~9^!t`p^pXJ&8E zn{qFQ>GMSIu*Q_j2S)Gw=*8yGu-KL@>En*1C6rM?L$)O!_*(>ShTi>j1lgAq9WJ6v zy`FhWl4rvKXP<}8-JATh)=MMKKyNTI{Wk-veji8zCvmLUaj57L4IdS&Uh6HMG|F3i zT*O;^;`=mn-ItdXbKm?#iSlh-F-KvV$@2t3wtDeZqb=!jJ?LkKl^gv|KT_PRK2mVVjyc|Br>i z3Hjak$%`RAe97>kq@O!zxbUItgYaRnyy(_HMUv84Ltp2H^^b+`H9|?6ey&zbGVFt0 z>HHc!cdx*)<<||7@SR%6bc|kd+Q3%3)1t7S<`I%-ldkk&oAo4)B)USb+PP{p#DH-d2^EVoxOZgkVrAsR znOxO(UEv#qS$mUexJFmr%(FLE)O>D3#pAN|qK|N6!hm-1QJV5bElHiJ54%XjC}uB= z0Q15r9+ApO9ruNGlmWvKDjt{27gMnmh;nas@ut3xNNb^*#UCC%XEhST*%`Ss>2D%#c!r~6brpqpeYy@}{STF_9H zsB0UaT8sfSo=%&ooJT6B7+^hE*!CGbkbNeXow#;!9qO1`_K}_=1?W7IRL0dV=K?NL zgf8S-E%rq{SyY{x%5+Ki#V@%Qgfgi@=OdT3L|;sf6IUSs)!=p36^@&xSasL?RiVGd zBS3Qd8tMue*|pr|>qd-*IMY+&lAMk-kr{(ZW}*5N&bo>8+>Jbha`qp$!Tg*hRh1LG z-=fF@;~+pcP?4U+IH)QyE{RM#><>;mq{T^7o-zgqE0@41*H4Kb+Tth+Kl<^l9%XT0 zwJWqjZTgTF%C%n4^-@3RD2qAVI0^97FNe)Se z22ePt(etw`$!a6d^X$3$=bh#JP>HZEaIgRH^+7CAz3c>hES%B&7D|a+>3#x2bW1_Ejo+cS<5kSe0VhLCDfy|Tanes+&B-6m|QrDIA3Gwdb><@lu z8~*4*|3VbMSN0J;Zy+Fu+)B!PRc@=4!-UuK$}^m7>YOHep5Z>%&mX}tpF$)|E#L}I zbP=LKA^rgn8BcVbKu$*z>6vIsJBT_50XAYvchBK7QLlETs?S4>OA42j!Zvm^m^`RM z3(6-e77@H+aC=*_S2?GYM<^$rIj|)&oi9uwb(<d=wsvdnxFnW}u)X`lcP{C(+sPaR~tFhd!#mbF{*P zw|c2xkx#sRo{qKC66OwBy*i5I?H6-xJoHhA@_`dz+c&PLDieS96RS)~56kmpq{vSUsGJ%zaHRXx5*0DeNOq z7{9_s9~5lvTBvZ|F~qc4?!;W{Hf~tkzX{#Ka5h`;fftL3=`fo#IHM{nBMBrpL6NY zzfj2E?1t^!4I(SA2g7$ZXTcQMy2XAJ5rla9Aq(WhNqPzpwtP%cfQ|1N5^M26J^{j( zSP76Gf8|h;ST83}SP;Iupuy$-O zL3fg)SWPQCKf%dUwaSK%SIwd!vELIfV z6EiH%x<-yf!$r7$*T}r}y&gHA%)GdNpco zqjt&>esAs`@FqKRo~7|44-7LmZa4R~%hW4jAhwhm6+w6giSv$d&TN}6}j9`#p5#B$6OE^D>w4X<6g z!W*h@^ll)c~WMH7j8^8tzJC$E04B2rPYBd3+Zzd-}2U%Y-VUs_eY z$dVIxzR7a;4eZ?gx5^e4V|6Y&(7WzZ@IOn=Mk^xGW1f`4H7#laYuZOI3W4D&ro$s zCGifia>X+}F;$=*S`2^2_GRBHv}HTNqMo(8A|u{1%W>KoDD;$9Jt`8U1~0*79YTCBOy@cogUJPZW}fr$H94N3qjuV3w%T;W_rZqPH=}%9tuFYn*~+r_`ss_ z@B^i+^(B6orfn%-C8Bmzpwlnj?(C#eI0rzWfi$*hoAT8dJU~}qIe5KrRN!OWNtm#7jXEIWy2Vdc6e}?eKumCRDG9p_omk+lCXBYGn6YvpT2ytSHfCUg{u<^cL?n>?m*X;h&j| zH)|}F?;J6igN>f6NmTxw)Sc3Ac0K3CdS97Ot8o*!N7UAvU|=8s<1xl3*-Fif9^6U1n0{=J~C>>vBc zz{dykGl$wG`I)Q>)zoaQaA`Y50cZ%VCB?%SKI>Uy&}NkG%p-EVryzjVJjyz`On z&9gcm9vELHpOJrVQw7AxkZ5pMLzn7=1PZ|hu92i8oQ!8rgVh#>i=aua6q>u^n9Jrb z`=OC%z0`Q&pT)d-m6%ugy8Q*9z8v`LAhMCFq->@fR?ESpYw7h!?**jGRu4S5{iJK^ zy@N>CqLd?Dv0;ElZ7~&Z(=J;*?Q+^)s_kckYNILtGoif8srgu;YlC4YqW@q4jfI9? zpZ0%L?N6B|OC$ynB4uA_uUpK&gDUjvif3;y(yOSDP9JvBzCw*yNN~=#RUn|#3ciGw zbD#S>e?t00AB!zvIE|>=l?t(BS3fuul;9pIM|j3vgw!^Uch-HQpG~M!h~1(`SoZ2G zkB9dy^b$+1){%m0W|83Kr?QO1EYJg)7IL*r;15(e3b zn7jS?x}T`9A{+xlNwgqj1H6H zS=pmIb?%x-zi4x8>}o<=szz^4Sb#428CMQrBQZ2-uQJ7Q(AR)`2y4z1^wU z7|(S)!`k(T!;l`gFupE7L%^zX+NBBtq8$vZ=4-70hFB?#ZTJZz+oTi??+=Mu_&*J= zHaW6>-rTT2_S?ZP z`pL(mf2t*;*E3&VXL|II`b*OHqnm|AYN$LI)$l}i#Pi1utLVI30O<1gLp@C{=?B^b5$0KD69G$svh_# z5L$7WusBzfy3-Ab8$w{fm+VF$sk`Af!yH^xac?~P1GP^h?FPy@Lcec>87X>SLrQQL zHVIE5Bm)bp-hXUqX`v~I5Wra zL+*?(z?$P%I7c(VMKy}t0P+cYi5 zLms?Tlf6|rnT7Ldofw|;4T3~wW~=Br8h62CA-62wqIy2ZHCZa+I04cS+jlQ@8U6x< zyL;VBT|#LDRouU(6aM7z{qdW@w=-Y&s%OfrwFUmuft2a$vaVI%h}%C=zJ_7FQnBH4 zr6*uAkpO7Rp>WDJvHS1V5>nYEHs}GoKjq&vIc=vK-`;|2V z&F0VH+*Zx&2^Z;n-SUqhZK6=#pqRLuIoPFv4+y@x5{>hHgiD2cY{?wNFnDv8)4?s7 zOE)L~NTs8!Qnu9olmf!2#0zu3A zpDun{tPsDBeg2Bg*5Rev=_Wsomah+tRdNPorIjc+acO?R6gJje#jkr=@zaufyZCi` zo5=w0+;`cmjBIZ4>tbH_PQWV&8+G)i%5uZ~TQIc{Rtl~O%=DFx>eZ6Imd5R{Nr zC?Tts>a+HNg8f48Tm9~(NN4Ot_ELxI8`{-s`}+}gpON;bHIX@^MmNBY|9aoLp?-Eu zObw{F?knN1Lg6N&>yy8jIzBn3R``<~!PlXoh5BkpM-{ zxyOPZ zxzHhgrh>h}y<1ywLaCe#&p9E7$T z|L|so3Mw+K318>~u?qV6nbW|!DXl(4*_av4AMV>#Lw5L3j_PQal5MldLuN{c`r7x; z>*Xe8J{@70?2fUI=p?LW+xu#qKkGFpSBw|xN163|suTz^bMDc@x$RyCv)R$nHS-Lb z9|&)ol8+}cmv8Vh=fSGo6>iJuN0E(ONto=G^zz`ExH@a2#L0G*mjzm`UTv(#8;ur6 zkgE^$lQGR%(JL<$_jnfEaoA6+B24MH3%4R%E3B+_{M z%i42z4PnG(?O85%s8?CW6ZD>I=dLP9cSz~M*eCEPRnW4~UY#9&LLz<0s_EWW9CQrI zyRHk;0yST7TqpUlzoxxKcKrmGqp zGs7T1CW)(dV4u?XGFdA7jl6fS=!i!j(#)(y{i*^`CotmA9maTENhHrdn~QNg^C^hF zwu}taI(?{WNknlxK6q;M_Ay#^J9Ecn?i!B-MVyZR1GIj*JX6u0~{vDm|TgwxM{WmM8>?-1vFT6p;i6LPxo!y z>rwZbVfrnJR8*|f-0$T<{F*+HGq9UQ)%)B52g++r90@*3hPVe;KKHJfyf;k-#;xq2 zFr-&mhT`i~Ci5ToEZc9PiIOQf zojw4Z+Zi8no!3*rSGMWmjY+~QwzgNlBK<6zE`%i!xeb{_OPiXkjZ(G47dKl29kXoB zp=tBEA=#R_K#BbPvdtKuW#sg&$?=PQ{E=HD-r^Yz#0jt{0kN)4Lt{0M<10SBd!}5H zdn2n5UGlG07h?qsa>eNt3;?!DSBR=fvpm}fXRAMPf^)?YR_JvhyNyw{ddxY_K+s{Y ztFvny9vE8C7~unmZH-x@mhcnW^yW}1!lz)?JbNrSS3VmYc9Fbr+>Qiu z#DON@mHg<=NRaUTx5z6LoLQjH0K1o~VU@};tTI@@$#n)Ian=2-+l4Izef31NJ>Nq= z>n{oC{-^xCS?l82sd@j-B01ReUO&1fBr+m!vv)@GE*olk&A{H}^HB&1KQ+9;Pv58M z+~lSHCCJ?B_t-dYv&X?2k|FD}nrfD_3??}uz)-QUZ7aE0R04_M$D+lF%>FEoHNJCh z!M-B}cNZ^YNOJV^U&++e=v{}{iqSdTN+8l^G;s_4y4cdE)kvmdP3TiH(Q(FdUh6Jp-Js< z!u6ZF6kVmZGa`|{(Q0i@Hr!EBOH`FPy}a^zW<;RtVQ?MmXRqf}lJGiEDRfxM>`eon z7V{V*S)ivtT(5zpgXwG7R~r4IPMc@xnSKZ_vOZtWwM>cZ*&VhN5hC7|qD}_HFV?et zO9;cB&xFERi#>nX*23Re|DXGu^)d#Um}$d`{CSc7E_eP#H}O$R^tUz)1^*%)cOuzn z4IKpoe7_K1;T!?BsFh#zgM>CDA5xX{9&JjFR^G?!j} zJa-W&h<$|O#rUbiLBNoZKyUVg-UL5bF2*mU%IPZnQK}k_PanQ6WcD-~#<0u+vh$q| zy>Z}EW&CY8{>A-{l~h_-gA3zdFutrI8kWXCo|)ZC^K3vLhV!#7zx4?d;%qF zMr+h7ywu~3YqJgja=GSUkL9HrDzt~4vS5l6fwIXuvvA7D0pQbYsPB=#noec~{eg+DMz3{W7 zy>9XZ84@Q~fJiIiujfPLH^(fj2!=B=vF*AREs3ZemRDOifb#`CdCSmy>F9T4^G z(B?w5Kfffq+knm@Cv_vaqD_}fif`jg2iNCm@4s*Qxe+rLEjFCgMaq_$8Z>LCz;kLl z40amQ>ooW<45e^(>3E>Sk=Y%ak~t(jL-w$(mQ~36w1%51^EMqrZIQleRS=uINcti) zP%Et%&Bl+D%DtmH$J9hKCd2?@GHSlFMa!;tsuO)mXvv}Tb8DqPJDy-e6HR~DQp6Vm@LYwCmJW3@flpGle zyrH$XVVuBuGB?wz3TO0=w+CNW@GW1V+JNc`AG|9(@Lsh7Ak2UWdR9qs2YiWogNgpnqKWxaU3 zT_??g0>~u0cMUGfZ`Sh%E+6g)z?>vaXuCS7E9xub>n<6Db|@^SuL0Lqdm~FmLy=Yu zt{G!`mqY^%teGRK3VrSUljw_+t9qAuZBELF5_WOCk`08A5lNo3%e***GDX|t<7y=1 zA>SE)dV)ttzKGosZMw(E7VsP6OYbj`V?^2lwCh7V=b5ElY%a`FJ=4#0CjXr2C*8_F zt2+fp>)!1ivB$mWk!jMkH%6q+-$9Uta(5sL*>HR3&1955X{s~lQS=yxeP>ezlf>&J zy}JjU5VmoP`&J?SR?j4VlfW2zI&@$Jh~owiqY zII~`Pe5(DksW8=f{6*ew=j{&Oa)jBeSNptum=-OfMd4)E`|-JCe~53pUgf51YS_63 z8SrcA+tK?tl1)$EI3HcFo80|B!>V(bS zy;%W{iQ(HKMix?Cn;Dopt0Wb$%5&z=)FL2rOO*)JNj-chfA6mNJhHY?pa1>s!2rt! z;k$=-o^EhwF1G1C=9p*9V#lD)v(j7y8y?L)GEVZwoRJR>*QlkR&RyK9>x%qeB+0Vj zYfz1Th@Z6a?E*S=laso-j@QY~?V>k}$dSx9Ku1ErX3G;k6ZCX;u;v%bjfc6A*7!+H zGFSq}7!ibr0^$@((@1)k(X6KrB@Q(kJ;=TR6k(j(jhVW_nkC2!JMX1mP2M6T;L*-s zsrQh~gPgr2X*!F7I5U|UwJq4%z@|H!WC-`1FjUkRN|hu_+NRyHuS{&3(rESVNOq_( z*j~vJ>CjhWJT3<1I>{%1P57d2V1f$992!Hd@%a+bo0)BAsCLEV2xq=Jl2iB)ZF?mzP4Iz)82o+ zWyo?Z(w!kj@et~TgR#Dl0LFxUhbqf@3o@Nr{dzRLId`0^A+-iPw8g3hoz!1|tq~l* zr>{}%NgTuf2^W}r!X(jZ4o=>vLN&=#9}6MgL^6L`uS9bk=eTBZmln}dcN;KYjcf=~G0MKs*QM4j?5y0#Q7&{x zorPu7D!YEH?WsN!Gy5?5=xAmR`xrtjoFHa79p5qnjX9BI?5g|W{T=G38=AnJ(M_phBcw1*XJzn6V&R>h5<_k z9baRsCzQOlHV_|#wR64M>Vc_>>A6j7T<27vZ6EVvv@7J(PsjHd!u%0RqW(6iG!P5K z7>Hf9fQwbqD+>trfP9gUCNQY!8U<7d9W-&QzHkZvqja+x2P=n-?VUnWi|L<1U3*{ zJjm2ClGf^HP_)o!L@%ZFg^$&wgJf`Y{AqL*H-3el@XaM!oHCy$sZjbBVUTu z3RP-O8R>NV1||-Pj|?~cGnNWx*hroTPlcEtCUM0Y)hDaEwk?3EwdES;*^ zk1~3QH=NW2a$#dJwkp2u^vqRb;mlrRhMLBpU-}$H82!>@E$J;Wj$uBxZ6%IL{VZ%9vOr82v(ErUP36E6~Hb2?&tk*_A7nZHZQ zHjGpGRjEPJ!z(Bp2A5NUp`+q-;$rupX(BxgGHQd25X#VdCOd;>9w{ZIzWYr@dU8^C z&`C>Ed8UyfP33{OPgCnPmosM`#yTf@(Q8GTsufL1(@ea$aHiGLlmyyvCR##MOkYM) z>y0laQVCjmVy5H31HKV4K>(JRj6FmUGYE+3Y7x^n1U;yfpnE0+R;8%upG15LZ+KC5 zC>^87ASx(TmVChMD@+msBH$DBmNKXbxsZBmT{W5RqsR*sqqr57F ze0^k*o_aibT8&=sy&^rGXzA(1UV6HZp^&~-6fFj6n4#O$<#bGjz${Yxl;or$21l;< zh-er@#GE6mHgLO*G2a1}Hy=CiZvs+~{TBw4}GeSEPo%X>91Vu#@Cq0?ryU9wRR{vx- z2EZ_D4+1wwP@jcpW_KBDDZEW!hM}Ts;OO*n1w92=MxZwGsGDI@N*}bBOsYIcSSy6l zEGC~8Y_mx#aOzF+{#u$@7JsV!epfeT2b9I}*-ct8R1U-Un{hGfy4Y8R{4W&zcyDI? zwKClFYOE!SN*4Jnj7pYvX}SgZe~f!9$p4g91hr1Gb(D~QB@+qk-z@f>j&p#vuiqvL zS3p`FtIBYjCSam5j`#hLqC!dD;^K%ufD{Ma22#8RCsSuPpv1EE=Ju{wajM~3aeZ{f^5GZ*)UM1zX@@q6UIY5R^RR* z?tZ=1O3y1W@vtuVB!i`RSm$tKO%u-exM!M>9tVi+#=68;X|dE7&?IFo6MQ)kWGg9n@iw{CS}dK=n~33 zF*j#~k4SdZ>w{_IGT*(eFs4MFwk0d7ud%GUgKFLgIoGzriD#g&LElsBq;8^oUq{~v|ei@o#%l{%tvD-ZDZ5yLGGZZ&QE_ z>)%Grg6{|Ww>{D8-xmBg{o8{3@Nerb`nSE@&%fhw;x*&ZMxHRJ-#)}bgCX0DFhR|1D`XD_z`I+ zCXrt5bbQS)Rxv(NRXB}HJ4%PbC~=WyU+6*7Gqo!bzan=#5ly9xBKUN9Xeqq4EaFUf zu4uZcHOL-`fAhuyE3*&(q7>F>)^{Pc8f)TfHAY&6A4wKBy*YV*xM>*@ zF~?D(cJdr*^_ff}Sk!Mq;ylJn}D;i;>LgvuH6pwyVqhj@wyta%BzhC90DW`g2LMKBn_yj%=4zpD|kl!rTK z6Ydz#dxJYGdU5CJez>#FNCKJPNxtw}>EjNz4}I4w?W_9WPo(KCQBM3NH}in7$B(A< z_%jB3*6-}_aOZs5mmeVnf>I>+)Ae&|s;vIBxu^Pse@cJaYkpv6C&otjt)F=KzW8>j zsa!WumPW6W>%S4T>haYjrgGu|f@*2J|IMacJjry;f-l~)H#OvrWTod%4ZQZVx0&n} z@0`@fWbVti3adTtMW~C)XR#|IS;AXAqoQ~2# zW5sJb!`p!%4tVb77i6dWQtr~1wRp8(8H+iA(^$-@D(G!K!n_y!ayX-5C~nZls1Z?c zwXJ(~bC8c{YqJCdvsZ|jb2FAn&CSA8uCB@Ofd2AJxY<_rk|sn1YbWgZqVE2Tp z26iVCJPn+>I%yeecXFZzgu6nBl6>l{%Tprhjw;Q?Ytz=`8 zpRt!My6|=@SG~>gw|sSSr=A83kmI$)+}xUFyL$+Er&j4O64M?ri#C6f(*t6Z9dkX@ z>OoELZEa-<*)RrvX|~?sYbwOZM;gnbJAhY<39P5;_{_%jIGc@iBkZ0wQZ)N^ejHbO zwurXhwfn{t@Dkn(wqb1IVKLXKBCs$={F!Eqm}0XK`&Bg#VrxK7Z-1uV&CWNEh=a_b zOB#74^XvJ?94rQNN4>IUCO4yra-G!IEcOjW@HZN~8>m$-Cei?c(EdK^p4`#P-s=e& z3po}P+UT#M=Cb@as0V{d8DfY|RJeY+SH%`BQ#H+AdbsNaHj`kpr)A3tByA0A#Wf7U z!IOeAST$lEC5VRo(h~kXQ^z9iH7JYC^%i@Sy+?W)Bo&r>5KVeSl+AF@k^kA z+r^fNGjD;CS;HLd+&z5q3p9es2dyHfYd@_fnPH26)C`g~xvO%QFMY4)0dnLD_Rzb>8q*hVkYIQt7N%m(bL9J(a?4BiTbice@rc*2Wq)3e5KEP6!Lc2VZat= zk28>AW|8Jvh1wmniRswr?Gw{ijozg@tRZNGGI_Si(xFGv&$}laS`#~z@Oua@6TsYh zB*AY^&R_l!it+95yh+^?(%kG#2AdH|Duiv3%-5SaS=Dvhmm3PeC@!2G_K*}Va^v#K zbmrGkq?`E|aSt?a-(4~6d0{_Jc;92p!rr-hqcmsU^{gaYWV^a8$OHr3B_-0%`d$e^ zV<+Bk;rLAMe27KH0iw?Q9%=Jn{dy_Ar6F0vaYWerIHnI`&#AzDpKeehPYM^N^{z0@@(Jim%#;#|tb?kapV<&nN8P@BHjMgSXZqx%Pw16Jy zr~8|@l5Fl5an-L>bl7SN;?yp#|Ay#r^MfU#L$AmnqjL!33OCy;4TvMKj=cX9rNRQb z2Q|OVzWdwpeI$kYpNpdYN0P$TX^P11ZDjvMs8>=bF|xnpA8OpQxl^{--6BD7pQ6H7 zk;pw!VawxGA>n+}fpqZS7Zt)qQGxaP{}UB}_<#XJji`WX7#wpL6a=SFf4imp zZYv7^8*;_&2T-f+#32fn*2EIv!8Qu+sb2P|ha)$$AQ5+C=^`q%fgS9$Xkt6adas;M zWN=iB-AqPW3>}C{Xmk}<=>Zn$T8F2c_q@P+RuA=F6bJTRZ^(S2{WrB^5s%??%i&dqG#2nAg;e?B((41V1PPeXGKKi& zz81c@J5Y@G6$kWf>?qka&5HlJ*W5m|L^T?HrQAhtTJj#;8-NtrHRpHgoi7or=b=mz z!Fvk3#oNvHtrk~7D>Q8Pvuq>_O$Nk9>hA;w>P|vm0M_;9`NwLLu{+H&j6#$k65MsVwn_@a&_ytv|$MJ__%3{txF$u=(DJvkc0FTOtE{*h+T?dYT)@$?BvPoE%tN5dwziu#o&3~4%)J*{n?a$jx+BP-)u%@`57 z0cL57Y_LT>oUf#)QsS#pvprEN_p!SqM+sD(t~<~1_Ut8$KlvwYBRp`Q)x&7;G;pkk zyn!>*Ke~iY^Ty)}z~u^=0iZ0xp2Mh$IyRJ!k%Y^@dXFj$RNE~*b_(U2ozzDROz!k{ zPSXa$jQ_Nv_ihVzz1bNOD>g)=pu=2-pl(?<%W07vR*}iH!oh~#0KDk17%%xPnp>oi zE&X+Zdmb{QuudCjnu@d!YCG7)&Z05?p)syO?-jh4C7GutY>s3ut8z2nfGwUJG&s)a z4a1&QQvZu*Cl`Z?9v zA#R$%aHEfs`jO%G%R0HFthK^WRtRTdtI#3Ml)^e0ZDzd~POa0?DLpj4#4!3k>5G+q zgX;P~L-WwGO7al>Q`vNj(_w{BgrO4n>*X@FnB>Bh$b`4AqMLAFgGI0cfflSV!fGd1 z6)@Fz^IxME*|7r?eB&eODF#V_lRwbxmkE`!lc0T0u*)>KGMe(2%xXccQOUkre!mug zt~253qC=$Pa;i@1w=y%+D(PusAg(6q$4ao1mEdw`-dtsnQXlp<@k!#B1G&0$_U6?cZ zegUU2UOcKNdN{&D+BP6P2a` zDwZJ3E_E$aof&f=!Kz*UN4}bUTF9&~dTE*;|k|Q9pJp6qLQNm@R$ z(E#rcU%Twr;A=1MokK(O@_Dof)UQb&#P7@f>X>f%4mhfGy=StE6s z_zrOq7OvXgMt{)Vf3Sg9wBLgM+>!r}O=7eeX@vsGZ&y;2YW7b@+vE-*pwDi+woqFb- zCQSO_v+z!iCCk&2<{?Nm{^8@-ulLS@H? z7&YDu0?*1{ZI&0&lP%~kDT%hIZTjh6YGys^UOm=NyWg9OjW6kpnIy9nx5g=l2AFBm zTe~Z~f8eJ!_Qtm;$6x+xA-jMw)o=q*zFVYczBB3Bg?2Y9YgJz^%gkVIwWrB}K#Vrs zx-v8ZK=hMc>X;W8z`mGeUVO`YVc=|ERGJs(@j|<5L7t?1tmUdmY{x{iQ!6>+7eW|eI9rQkB-rp1Mu`!p4j_EnRH<)+d;Y|_Se{gQ=7i>>mmU8c%o=KE&_ z46{{UtUN)Jr}|*Z$UXHtuf+;6^~SGE;bo?9Bx78gb9eh0mNf&6+QFfgCz!g8~G&9Uv+>5VpFZ_7uu=E&o&7w+70z5T3mNrycZxv^4zofTZNA2u05UgXUmdxv zfo|{mLUF1OAl<2I1@BjJutfO)BU|*Wjc>`T+tjW4?iW&-av$UdSeOPG?<)z9qnAGj znvbylS1T8BR28|RP1h9tt67x3+w%m|>pyV4Z8r8I>ikvA7@SqD$b`L}C)~3$PmvHs zM_<5^s*w(^#befNpiQDC(~vJ|wn?vG#)uu$(8=N*d(NiSv1)>b4wA<&eHrNYg+s7% z@(QiWZ-k+;IN$^GxRyunp47a8HCl}^Z;{=#%0lQ5>aNyoDc;MFnstCg<;kaIhh0oh z@oCUuDkdsnqZ|0URzl4>{=4)&X>IsY^jY6g%Oq))k@8snepO{>C$yv$mNw7 z(&zb=l%>#({o~)+_>Hf`?!nmbXyk8>CpcOJFxeOz9<$7#8}<+vxo+kwlsKiP&8R-m z`B?cZxvCAG#CUC@>TuIn&3IkyLRQ9sX4?a%gpJ5pjp5A24731plt9z8>hg~mBe6Af z-_;=zCpN6j|A2=+MjhBMsX>79<=h`dsFYx!i5M&87(GRp-5rP#M=Xcq_A|3;+T<8lN}6_wguxvG=1wQ24Rjwhc6UyPVdeT7~coc{nMfBuMrI;>S01<`aBtDlQpf%iD5~{z7BR zrz))0d>rPp7~APsc0IR;kTGUZ15eu_?KJqu)+*H6GR6+5x%Ees!80S;6@NM$*v$^+ zfY8p>0Rm+(Ze%PkH#}r>xu~2l3WCkZa2kci`Jbj)@RlnKY2$5jjz7pI)8Gx z{Z`Ez;}bK1;EJCXCzNM$zwjUMBg=iChob(lWWH$MCP=2A2y3;ASm72A;R_c}AjT;2 zH;N0&QPDYpZm%MB^FN}jch&fji_Wnifah&$B8kJ}dr#!zav@EabFj z)r2KVMO4|bM?zCLC^Wjqm` zyRWJ_)1CgLrds0BH8b?_0}Hdl?Iwy}L@JyFrJt5u8j!$M7Ju>N_N4&{A;w<&sZ%o7 z2c$|3?d$?u7A_C9KUW##vHhJgU7YWCwWij^?kJoq@b~K5O3M%ayX9Be@^$gc|8u~d zzEgcr2b_-0w63A2&{D*wmQ1S2HnUUB>YeW+GEcr zM@nt7UB9n=X_Mdc*v7)|!k{t<6f$${p}WOcK=J#|qA9B1WIFH1Vx(&tdR`Bb4pD!2NX>TxJ!oetpB1#jLD75uteHPCt-ih6L@qQ zQi^7oE0|E?pNeLW9zo3haNXZHDJQ)HX$Fge)CzSYJN_FN4nn}n7be;q&fM_~TPQJZ z#DmUvwMU5vf5s(}tT>coD=`~R`^|fbe(@;(5Bgka{mY@9%ZV^Ki^7aQjr>-p^AJt1 zX?2#J+0)wb=oN=Vvu;mo_RDXFlJ8Yq_K(8!UV5UG$$LVH_d2f*;#E0$x49$x`#ep1 zKl$R|t``R-pFe3xp>P1HdqTxzalg~R{&ky4Hq|lH}1l-_u%So+6p7yJ8u2Vd$ zQ1aa%{-wHWe>VZloa!ayk?tL_jCtLw5X-se^#tj>2gA+R6X&#?bm)XlEx- zi;=G{e=#F-3{`~j`%Q0$kMV0Rl>L>q#v`o(U!1-G13E^I)v3m~1OyY^ic&Nm@Vw5Gd4 zU3uXAj)C)9!TBBFd=>AM(ZadYK#eyPu@Q)H2b|>%M;;H(o%waVDMB#6lqa|D$w;8v z!l9|mm3gqa{oG2%p4+=F;)Rs<*h1tH0r)TQ1rl!GOhS#VSj)GMf_(qC8q z`A_bT#bzpeIX37WauuhAL{m)9Yv(2OHJ(mO6Pz8YjcSJ zeWVOZvU_bb);m)schAidjfiek_`RvBB(A=je#6jg?t98Z5ET>@EIiL4&ca#p*UFBc zwoRO*`g`B-SK;q0lGIXtU^`OF`X3t!=9-1v2Y!GAqgo}jZ2rC$xXoTX{IkA5=wYfd zN9eU9(tEZogZ>O~w7k8E?>rk=%omUu*i2~-QWmM!6xJL`6he0MHjwZ#1(VX#4q^E zx4*HM-|50z&j>bghfTiIUNjHr?NYA#)*8VkmMghCq5TiNU8k44wMMXs^-AteJgy6G zH|iyCtr2X(8o?&EcyG6QZ*yGB$-Pt01G*EtbZMTySa_Ih91#16!q3GR(<`dNX@XH4 zd%N&&Gtkypp$H)Pj4A}$LB>J^hJCL)E3H}8@jMGmUi#>o*g>t z3vT;1!L8qUi3liT`(A;{TPwGaLj->ebxF8!$Hh|NOkf zz<=_*#Oe&5ZpHEc*UwAb4cFi2d5P!ThW6)QJTI}Hy#L*KiNPC6`Im>^VzyDD?wiFk zYigEzMpM@&F^c(G+zNTB(z|IkDVa;qo=vRs7yQUnEONxzaVnZ=;%gi>_z#0wW4utP zl0UHGHLZ*^aa2=m66P=CE8_)%>WxR-GD6!9bFMP_kT`MS-gJ^bftaG1tAn!rWeL9; z-};u-)P^X>fH?sh)GZ#(A1~St2HU1sImKWPqTz%k$Sh{tkBey0zmp}z#uGwRXBP*-+*@|!ep4v(9 zcsUbdkFDUKn=VIN)e}P(j8?=L@101S!agpB4W4$q5+9XcEOhg~*(-xJ1CzhGQA;$V zaU@)!kX7p^r2{7v6k0oRdP_o0cC)R9_*@Ja705^WvW%I@Z9GCYhe6)yMngwrAE;BR+ZwCT;*so?MNlMH?w56*%5An>zvL;J%94B`jO059imtEmsy3)#ORTCXl&y@jl61V*pm~Qk%w-r{u-bY_3 z`AkaV+TN)bUkZ>2;vxtXYYQoln>IM9M+|<5*fL|M12mnro8W8UEBiByVOUH3$iTaf zaNj7OA>5E=xQ1!fx*4v7OM@1gZCELpoGP*mDI-M*Cs|&^?n|$IgboM#^yy9K z6zzHJWxe)2&Di7F!Oh)xk))!TQ0Hc8Y{630 zjOlYKbnr+teId<-Z@ZaZBONX8{P^(GcS&bfP<%qqes8tiUwai8gqv=$KD{OOd)lqA z4SZOW-XsGnZYEQxkqX+B;%z+}&jqmupfC*$=<)vrT5>;295svcSMK}QYOgu|HNkX} zj)9!46Rp{7PEbmT+Yl~8sp)WTr`CHVF6bO^Y9;tw6tC=>ET9Q4h#<4r8-?`B&?|w#@QrLL?MZV&CC+U0PS8`izt5^yo6;7`go-xdD z;PBEBGyn4GhNmNY!pjc(#?PlczxnW+BbocOZgDd|+O7-R%-RfDy_%s#;rC7pjD#7L z`N4228Aa`F1M)(o>9WfBGvQM64+%qQA|QRB1qf$3;qA4G*4aadu>cvyhr}{dc~Mu-*n`Kfulm1`O;LjqTv)&#O>_}5p=_! zU)TkX%_OX;xD zgz>a)+7drM)b;8Cp~Tj}+g&m`K^N6+lmJf48nm*I)3T>QSI!C%GY@K-WTfStPW0Ba z0uYP!q)!gcKdm;BK9Z+l^G~jW$Jh2Hj9C`xfBYq1?-5vFgqcHT!CW@N_ziyc;jg>O z0aKa)(h^rOi;#GspM2r((AZ?LjM5bwNqhCIL&&?PB=36VS#l*`>c4DJHj*M|6E1N&&98B{8$-g%_CFP?C`~75H*s=^R5HY&vwx7jOM?pn6-(TjK#cM61C}~F`ule>mD}a zdpY9^Wv+7Oed&{>4RNVaPyWQk2ILmDYj?TQHEdLp_^XI~Z&M$8# zf@#lY=bqNGv0tAqREiErzJAHnA;hq_fQ;rv>^%R)*Y%=fjoDcx(ADKtE`yfb6>#Pr z`w3Cysg+Y#m)8e_Y)lUbGdB6*zyXSBg*IXpldi2$fyD8-gj3RD!}ZJ#6ZcPbjqmB9 zl8%ch+F(}0&isdmmX$HX-Fx2GXT}@W(6aL6>oGO#UNY%LeD--4`Y$d}!#<<0fv)!9 z^wYf{&Y+lkAL^d{ij4*Xd^uhy#^yijs$Aq&>-nf6j4Sj;C*h)rS7-{0{tM0EfwVd= zf}_`sG5pI%h(bVhA*ma%+I2j2u$E$7|6^pAz$@W2=Syg>@q7n&fH!2ny5zhWGe)0x z*@d&+rdE1CbC7y(9omG2BWZ-2^{zZu(h)0*_sj2 z>>rJU_{o0zB{+I0-EHr(^5Ui;j9c>R_3RIa+OI~~A(q#sQ1XGz^cl_=PCk(1t}MPf zlsS9X&gJFtWp6Jp3zo@dw!1kMs~H|YXy@|ExYPCWu;iA&(6efWvmF+{Ih_58DgW+@ zyu65N72VRM1l6t5SB zF`-O!7aQ2@RoU%pyL-*%a%!E^@gvFzXR`(*O)rMi4?C$arP=OoEq3=G#qR#8*xfaS zU;A~`_o;*Lse`|!j`-*Lm7iy5_h0^9CFS25&E6#tX)hxv>vUmU>=Tjnn2nxudQj7_ zP*!m07y!}dzfJL_o=Q+C2(r{;FVEyINgx7%K!Rl9&LZIrzN$hKSahJM?&T}@qPn+P zacX6fLGjk`X#P4L+pjLWaHM&XA|}&KP2W-G3-}T!Ehez_ioZ! z!$yCY#Jl_$vYYd@?>%p7?1IZiPrJZ{=rcSQKN0v?D*HupLy}c=g};i)jVA?rI_{73P0=D zFPJ*>vI|B}D`quM?3a6`c3ccFy?)G~^J;Rln%t{#YWf^j5N7Fw2#M|Do%YncrW2t7 z36-gJUY~BnQZj!Ug%}5x{|cY!i#ZouHoIXB zUB7QO9dFp6J`aOZ^={^@*mV1jSF_E#4il)}h^~7@%0_v_R-g%6xWLf=3?L0Ty2)?C zcRuQokXs>g@ToHPWG@TZ{_`RWi7N`5SO`<|zrsQcv3Qhh>>nf9dsPifcqdgytjS_C z4)B^$Y`_yb_0tgL0g?1LMOx5gEo?9Rk=?@mks%^c?xm}6*iAzN9wk2L;V*+Q^Rm(4 zg%D+sdtVXP3{J&o`=epYX57niw|$y1S*?(k0NyooVT{jg5f%N5APySsvspDef@&pM zr(JN~lQAVAX(rTW-SCs! zvmm4Q;tp!MRdu}Y>g%U-Qv!jqe2O77Cx#Sf*3z|YUNFp&SgxEfzm^Z3_JpAq zFG|b;!)@RrpAV{MmXFA+a(>xiB6OdRY~~~Q$jYCoKKRJ#Z29_8WY+O6UqN<>)-14k z4}Q?8#74>HDONo1Cu|qWJoje2Z8Z%V2 zW0wj;-xuU+$W)WHe#IQ1u4S#$K?1uqXI%jiCkJ_E{Dlwu_WXufbBKr#CV36$KQz>S zjlupH^3<}T__!rGIeSEOCC&?m^H(2CJO6v((clUv2RfF`O)vMy<~QLjp&-k4`fWrPi%jYTnx zFFgf{Z*QD5eE&oMbed!Ss-d2xAB_{B~Ec!|oy}wmxPSo^hX+mb@J9Ma4zA}M| zViK>#-u&xe4%#SoQilQ{aQYKBi^<`@bZgeb=qt!#HoGt}X5ffLafx0LEzUgVCL4@r zPWvcb%kN}740(D-I(b1{m`i+;F48&2-@s->*!dqLu9^)rbBrQZkSI|qRZBnU-I*zc zURVm5D!jppx)<8Vmyghps8zohmyb_zjur*yM{*5kPZ^Ax!Y=eVPHH=iZCKkEA4Y%= zs{}c0{c%UYn=!gQe<2A=$V|7*);6H9jXd8Dr?=QP4SGpIWc+ou&GiRz6_?ly=l5R` ze`o6@-@#qKIbzol2v(2PfL)%(EkD&{zuwB)cs|@mL-b3yO$T^W)C95+Xv7Zc9}W^~ zPGe9doinJ>A9{oOIPf!U>X&5cJE%A7RdG<0V7C!ePX0E7dI-gMwrLgvW{}yiFuu?x zR5Lf!mKiNdxxQ^En*{tAxY&qw&NQ;zv}j7MoSQhlWLLvlbh~9UR!d!j_;Jp*IM`Qhi9HpC7C z=v9rNO?h0)#VWDg_7jbf_MZz+AriDuaamyyQSP}9XKtU*V|e;KYO|(3H}I-2s4Ans z1VGL#D+Xi4Xx`IR_~8}sRkHhIO>luf>$~h?l?Dkli!Xk^>l1DxnG){=uoqx2j(z1n zY?oZjhRt{!zl-Nfn)n{EBcn|-4!8bWhx@Ey)_h}bfIpKB=^*_@eW9cH=qXjO&&gU9 zN$$iiO1rnz!%4HL7fp{Dj9tKB#fAtcSHj9EBtP0yv08FtQ3INm4(~{w&AiHqQxDLs zM0`>xb9*OuOUe>uWk;-HTt@_m^O6FlzVP9*8|~k-aXo_oO{Xd!%xvBwL7Kfd2H?Ak zxi6SE0W&D|iX*a@UfnMvFN3G9R~(x)zm_M9YT1ehFOe{6gwKe!X{`oPbAl01vlYi| zmDbY_E$T_B8_j4{oXp;d-fh++Q#Q5-k(zVe?82H)sI6&9%m~iK7wOYJ!mbtYD@pk* zDfN9)P9deaPs&tM+WMr-A!U|!kp%q#Wx5m6;t0-NGk5xN>v9{!S6Ue+6|=S#v(DlU zXejFyC0P^2tP6@+7jdT_Sq1%ISz^3M`ELCsE+l<4aKB%W1%|NL=`^SSN(&FzI4|cCD#RFDs`@(}y67q3>cyRoSeeobB zJowf=@W6Xff(ONvA|4b|ig-{=DdIsf<$nzxTz}es5)ZbHEy05@Hamv+jWXA80+~!^ zhfhN0%N@nCs23BK)^w7g3^PBo5PeX*gr|u-rEjaL5oseUb&@E970GgDrV4B~GGk%1 zUsBONqIXVWktm;V1tTQD+$-?8XyzDv=P^u}A@v2uvz{cQd5RE@>>pzxC}|-weY58F z)3fEDRz1PO!Nu~6=cn59j2CbmV`CtmM<8vM?HgPAGu=36pxRa0PZMTFUl+>E6GLB& zzTnofAU#~zl|nlZKX7qnd_-4nSaNeWg=VGA4lj zVz#)tMpXie@n!sBvpLmea>RaGxMY9zt)?yiLVb1nudhn=@u#%DX!h3vxR&Y$E}UHu zG|#}44#qwsE~2|g`skc@Qi90{R0V9)>~Pacr{gbd4i`r4Lmi=*6~DZoL>+OPf)}e6 zt#-_U!mAyy*9T$;7siK{YG6GRQFMytg(l3t+thE-E`OWaF4nb8?J{@wn-&lH=lvVClDWCz!(K zROOFDby3jrh!-VU~j~G zJGYvQlH>EuZ|*z8Z~P3OX6LV@HiHB-${VR@;~RqFRPVGXD`W zqIA2QSS1Gyk}qq+Ba!q|Zr$7Nkf*|#vj$a08rDT{g{*th9r9%4h}G^9Z%3L|W9psk ztSWR{4X%^=+{@@@*6(yF#$L3 zjl06P&()w`Se1YKNq~|a{|okqa-+WDhi?i}aBhGeMe6X!+*@CUytCt%e}a6wxi>FB z+1x+;2hb_^H=CZKbqWzA^R7R`Od}b>1pSOosrDcs%X;|=SCfQ)Nvhb zA(9z{Bf%xLr#N@VjyXJ>++7jDWFH?6D8fl@qD5}@l%Qn9diQ>R>wtr{0#WDoJ@Qe) z)@6%x9bxck`G!c{bBL5dOoN@vkJpRTA-rhqqfb7iaSU2mX%WLcU6H1>@mKSj}hIH}_VsK9za;MNHWG}^akR(oT^y}s_q4^hVh8wwTX z%V^*sbAZ-V7}txDx>uYVJEO$L{h=A3Um$Ja3&+fa3pQb8tfPgrUGQ$}&zAmYPxZ&} zO|XTf3!XC;t&>))R=lnfg6{Y)SvRKTx^Q8YnO*Yp46Z%O85MTK-mRMbQAR8_qhW1} zT705W_OFZYD0~^ula}<`VHq|OE*(quf95_qAYkjXkkHxW&n^zcJ`+tdYY;|gL%7&6 zZHIr)^y&v)sWtH$Dv=JQY<7ELPy}BX&J)LxAi1)!#IP3EfZdZ|Op*|h3UW)JARnG3 z_}#wEim7-8xvR@-RH}ATBp8|-dO$TALXGC5;46WQj#X7}Im)@u*K&{3YKZD8o-7p8SQhH}v)@t$Cb|N9kI~ z$lvx$bLeHaXI7>Lv&(5ibF&s6Z>m>zd7_ukv&i2cuId?~n z8kpQNxND07G9;fnX~^qCHZb}J7cPJwbZr?l<`8}elObxMA)@FD19aR6UYz6+;ci`KE69mWAI zYa(@Ph>&*qxyINq!U1xPr)S3vjR;fUji#9^AM2^!a4DMz>8GRV*Q0@VB3KO=opCVI z^hoTh6S~XUI)D=?ISeGB>X8`F=KSo|<|6`zP|U>$svzlv<$SW>easav6P=oR7eE^m91}AxhROCHyxU*kj}P3Qu){X>tNxAV|o-u=C61vp2g< z99EnQr`Ng8sa>aK4>}I6QTlzPY0vBv-1O^_z|IJp{Ygz7ZuZgu^Xj+{HGgj0(AYo2 zb+3l89`EUHSSv`?7Z#M%kAT#tJ>jNzo#YdA*zNgSq^ZXt@ESpsvgOB{wml<)0l823 z+^~VM$JqguE?}}LHGe$qp1Oek_*7@Uh%?;9-fSV*9UXYNr2a_LyR(mS)9WLF9r%vm zE=>)D?NN7bOZ7F$aBbiE= zj%eVmNLoP@cgjWMrJm}$F47A3l^7GgX&mLajeC#Dv$;F?PW75|nfI09yM6`*G(x2PE&DUMBPW&mxc0)| zO>P^Rehhc*5_iPRsa1(<>&jxyZg#jO^QQT_i#V+>VcNc$N4;kQkCZLV z!Cg3Yq>d(~Ikhu>Sm6XOyOSD8np>ey85ds0g3-)1xGY^x)brz=)Ti|Vw+L@&rEH37 z#c1O7$S;nN2*lDsXs#G~xsa@FgJcO`0kG46@PP(R+gUIVE|wnfuZt5Ta{)zPL;#jeyY19TjOj`32RN*IAxVjrd1;Kj&ZyyzJCD7I{Tf5BgFCjZR z9jZC6^2STXnte9Ldx^E1)x>m{n)}>IiM0tHhkGp^5qeNEa^dSG)?09(Ej`uqDVv~c zC1u~GuHDI>uKaZc zIvT-C~Ox)e*?Hs@U*YxyZszbI#WJOpLJH^p(t+8zF$cPMeg+!p9J02{lLucP9udx`RA} zrf^ebUIEfPWa9kG)6GKuPhk*z4EN@RDJ*vYk47FZ;eYMhjHaB8ip`9c_CK_=&`3EoHpY{p;+w@j9(}0V)nWdB^!LqW=>a394 z&5}T&zz#7o^g}+YkbP$!+IMGA|+Q5bk_rT)2gs@D*WF&8HTc(weZ}oCNT(;dls6Z z)jCr{Ypex6&dZkhQxq`4+XzH-axt( z)JWXi2i3ry>IcrJ%VNvllHbbeL>sC4X>3h>P-Le`0bf@qG!iV(Ybnnx!=}MeW+9WY z*l^SH_uVG9#}c(^+t<~$kJC136x6j6#U%{E=o*^3;zNxjkRJs6)Z@yj$z30ElI&Q3 z2Rq%atrd~Ls}U@?=Kh+baQ2#jBIzPSrn_3|Uf1%VUZyaMc$r?;wWUJ7<(Y~j=&K@@ zr&skb;+|Q1dZ2Diz3B-IsL(Gx0Tk3Kcf!civt!rXFrr&r+kcTUOfl0RsK$BDSigUJPi1$ zh}7PIKXjfq;OWCe{%G57GlsY&V;^$vG4<-)*|#5a11o6A&(sh%`Q9)mnbe2b8MscN z@KI>uxg^+NAr(*^Iw;`p>W*Hr@Cs*JD(I*6#n%@00yPexn`?zZ8s4rqaJ8wYWm21M zI%AJUSR?KZ^iGCI>)zt0qyI?zv?H%_ge(6t(!JS>ble)G3w6E7JpQtZu?70wEY$w1 z1si^4SV<>FLy)0u6&}`zCIoNk!bEt%NMKjAi|8*&Lysp zuDgW}u-{=^XQmSLv|=_Z31$eRg3wl>8kyJTQka*qI`fizY+Ol4(Qz|x?zLoki)k1k z%Wp2~D_)Y8!t_&r&4s=p;ne%X=TtglCHr*$?-nrNEM>{yt^xsMb1-zOi zS*CYDZj5U{KFL_zW^g2&or#nO%nctP;7zn{moxWf)4A8|JoHj)`qkFDJuT@SmJ>wM z5q(az=SF$oA*7s4`;`1^LSUNYb$h*)8=7q6wvdSKCOg$ z-xu|Uvt!8Dt==&|@%8GB+>+hUV$Wj{=COh~5_G?{_9>4wVIZ7s#eVjznyS;&3*TQ) zaYYuvHlZ0|Cpii(&|0@U)Uzs-d~slG^y%4ysC>C{OKm!4T_pV*Gr;5Orlyx^fZ1pX zH$5DGo(X9uRHZ}4B({+aCAvj>#C z*j)O>K<@=&VY!@pevqFn)*1mCL-6>K9&QQQ3>mnYgV3`7&UWWI zwHj6u?s-H9<^4OXP-~e!%&%i0J;?utjdz_;2s@HQryMd{PaTXq0zn;QkJL#Tlm6!~ zVA7W)-&6e*o2N*5zLdzRIC6XHmG(TzP7uFC!x7F#Y69W(T+@lr>bdHLXxEbonJ`ob z$FVsbODU-+7)pEr&sb{Wg5t3p=YVD;9C2$aAR5UI;?)2HXRnG5RiPa!_=ja327&v? zj-T2=|F@XtO(*8|!%T=3(ZGvSLrs5olK0b~^lL^6B>c`s?JU4#S=BxX%dr9jO7V)r zfJ7uctVR-`!G%^t!g#T<@W)mokF{jStfEAS>drBuvzF}9uh?gfY4KzVkq9LtSa8!* zy?nAIZ_%dt2685^Pn%#>fK11~nQN1C_N8QZ0CnM?K3fe8%@*}6Vq~{6Z zavpEm5P!}MJQ1n;E3@Cg%f9jdA5HcrruN8 zxXzKCZ*YJ}jdS-IobI#JNk7UPvB?cDx1@I_w+65i@iKP5;Y{vyGyjF=gMq@6)9HAS z%qR(*R7gNTIJBoLmFNpV*^08v4bm8-pG6F6hzCg zqF51shzY%x=d%38%+h^S6va1R;EiPe4f*tP;*z*S)_ILwu15Ch(fnhydZe#m=SX(O zN}8VvX|gu0E*w-`Uz$eXRch8u#l|Z%%JaRUQCd=4<5dcb@*x`-rKNI9d?o6Cwsjsa zPJ3WzRqo0!s%Lg0^o-3a0aj1-k!KAqGd>-)Xx8(xu2A@^q||R}6H5{bTbb6pQvy$p zfI(jK^f?`$)mO>x%1F~2>_M=+nV6X|w#>6BO@qJXUHJi{bfAV+x-9IhT*C>R{=BRP zW)7+$a6<0!vl(`np4!%$c|hZ(s^ZfybwEAR@m>h^C{!^O@czBWxh$nFRjYG+b9Hsxjd6Qqe-J!u;R22BXsV7-l$y%e*x=0 zolNkCQ#GvS4d>i7j4UDD>bfn2dJKfv#4U{S_sdc^8`%P#j-Z-^K8bj@PAb5|#LSfO zK*xHM><>Kb;?QGHaxoA>6Q*#u-XbuuATaTwTWRr*)!kQhhnEl zv-r|pZ^9r&6r~sz9?70}B(q#?dR=h&{Do$1S=lw;F8C4uQ6DjTE}%f!L7*>^Vap^A zrS->O69Bp#6Yuj*qdkja&0dGOFj}QlVYsIGo>-Wb%6BDohuOnS<|vM!kNHXxu&+Rg z>}KsSalQpbp_6G4Bn1R?j$K^xJMhSm{e;whV8`oN8F0wc;8;V$qkZ&|(Tq_TcoW3y zcW|PREX$fo-dnV^t(6-xS0=$k=&tbGGl76 z1rp+F$z7G3GRc%ksT{55`>AeVJ*8?&gRJoy6y(oMl0h@`UH(SWzp|>8EQ%1*34GVM z$}Hx9GAQaM>WRm2wM5ULm9ApTm`VmZb9YjSyh6(OK$V$*Zowdq?Zl|Hwbe^RRe>%Q zn5&3R&$cOvdIM9mb4uggVy<}|9J7GRl`)dN(|jl}uQwP}@rysmgc@~`dGyNTd9!`} z{Ayd2h*1uIYM%8CtTK1Tzk@sdcwNhF5PiOJ9yA$r*KF>TbrN^{Q`X5`{j6==+frwl zJ7rC9rysZTx%GSlKRggI6uf9N8wmi>0Hcfy>O?}%`hctd&h(QnX6cJ7fDq&K8e2_& z4^R@e;%&K;;QAUnfmDzYq|6}A(ai_IRs+}vQ$CNvqjV63F-L0*3CqVAGHj-7TIxZ+ z=C;1jU*vUUvpSNk7<;>QdHCM~{Z)clALt8i2{ra#g!=hqKGfGTqcI{7J-d{Li946@ z6EhED4r=K^a*3vV7N0db=92hKVs;Eiyato}so*y9}$}-0w!&?X4@} z3tCA`^R~BU=(}fgzyAy!POoGiCpLuVp6bikp44JOo68s$0#!Q}DWi$iHza$^Dks+8CJ5O9g99YU;A6D; z5X#*jAGtw8XZXn5cL^lcA;j47hO_0U3-7F1L~-Hlu=-L7{2*{^?5ZUFb6Oq=HyzZ7 z?6yXe-4ZH{AeMD=d(znrhBBDJZsFe)1FXE;w8WJAy|!=ZkL{C=AH-Z5TNvpS9npu%VHnK{6^MXP%W-SsIQ@S9Wp4ZNGfy5x1&qngX33*O zXDQ)#t}l<8*euAS+g(gzJ$aOmB#&+{kw@Lkch?yFNdL>1dri({rQhk6xhnyKP)`S(0~xfwG1wcT`ssYJWfia#Sj(aDeZTBy!FBVY&_h|JV9I1 z?V&80TDT?1IXhuVlT7d$Hs`k$P{qAx$a?MsczydyNuIsNUn@Keags9`%mPQcRs7&^ z^7)et46l+(_-9y~W+BbJs9>A}EQ^F8O>y|bTV>}igvK!Udx%J0@ZzSo2O-;3Jc^*| zW?3ontvwAOajePq9Pe{A4QO$zw-TR>5ARXRfuz`@F*HWG|3lro07g|^`~L|fFeo@d ziKdEmv{4gZ4JtJes56ql8JK8PthCB)dbNo4mBIvLeFY~$PRD7vty*f^Tl%K0RoYsN z7IDHO3DieG#0ORaD9$)V(JBN)=J)yTb7nFL*oVLS|NrlQ#GHNh-e*77UTf{O*Is+= zEvK5y)s&LhQ(?j@Ur_nQUnlp9v6PzdLi|KjC<0FlbYV;4Hm5B&Ie9CB8VrI#IIRqJOZp0oy>aM6`UjS(-bxf7v>IU0pmiMfzV{7pXQieC&=h; z@V5Lw4w~4`XOdGJLf36mWm95joRU?zEzx&q0@)|5aQ)4sxb5?9Wwff^LLZE}oMV~0 zFWlYS_~z~l_cfycMKxF-iv6Jy>t5CAQ~y*B;WEN{Rk*^9=PHr;T1*Ht1WQS-nnWf0 zv42!}<4+{En)@o;40N_xg~STy{oIjR7w8p%)>}vV}i()+ClG z(9K5nI`dw*9(|+QFrC*Y7E**3m8#9STY1ztB25>6#xE97c*Eg5vWqYE&n&R?M4)Gr zn9lK%>9}82sDH#MO*k~5eDv8fzBKl0;Ym4MnS~z`Gp$S=V;(G)2Bu=u=EJ7#BRY3+^wAw%^ecHB zJ#ns(8;~2T4Ay0|Y1nu~$74cO$;R^xe1ynmr79q*s##O*mL0PwOlumz2kV6|ds{C? zQcd0^Q~bxOBCW z*@o2R75E4trbGdD3S7%IwF6@{%{Qh!Ps#iCJ4~>lsv9_W)N&48cP!EVn=HDPnZeb` z0geaF|20v;*zK4_nN7$&GDTxrK_#rYDv#b8Q#5R8*@k=o5HY3gUwT zN=ytSbw|)X##Jbdpbi?GTz(sVlcmx?aQak zx+0RsAnkfS490GhJ({^G?PlIX==8ZB4ywW^hr6>dM;qc%$cH)FkRnm16^zXn5(<5a zsBmhu#_`OsBUvIB)FDP_J-kBVGKp^Jy?7uWzt6!<0p4f%+13z)}M#oge|>eXp%1O ztx^xg8Q7O*N5~XdOO&A_9NZHCn6()?s)ddWGZ8TfK?3Pc5XV%3!JX-e%mGx7tjiku zIES;dKwFHzux?3_FmmQ;P&c zsDOo-9VZWXkdzn!I;UkhZ9wZP$p5&Nuly-x!Oo6J*TgZT$o9#*Rxlmhd7w zuHW+%TWb&wHE9lRrd19NEO&&J7-rUqD=$%N(1MYl20fD0?RwUP_}5X z#}@OwWq$+`#R;*2VeGlAXkkMo_CDPjiAu{c=Tg{5cnKK=QGMW=bXkr`m*tprT@))d zCSB${LmB1hOR(Blb&<7~){s@QgUM3pX0gbkG!WMeTOgKW-Q}`thI;m01MRw`l9Qzc zm#8KzyG=vXXWT{Xi@UP18RIU+_GV)<#$8sl;Kgj@p=`Up&wjhH?J{aWZ%Yl+IhQ|l zQDgF0!dU~a%&55rUhaS)1vCRS3513c&0sxzF&Gs+1+sh8EZS?0jn_vG?Y*HBwdH$j zZOpuu@~QMZj-g47y{D$Uv)bNg%)D5k!?ktJuq0jl=;s`mGja|oGHf-*vLj9rj+u#g zeC*uSE?dWb3sWw`NDvytNLY2>NHJRHYVbsLLA%8mf?(W1W@B5TM9LXYIj-^7J~R+y zMsOh|#jQdHf&M`={7lHJ#Sj>7%)cfX^DhhYuhrecg^YzLzFQ5UJGLe@;f~Nfi`_7|a!-E} zzek9tY|!vMP8*rQ2)o2;ro#ZNrH@8&74J|*j%k{R6#F#GenJE~)4n^dMrZBQ{tXb> zdj*cxccnI338RJy8xE^I2MJ?_KYzr18nQf)RK~0y|9sXWt>zraLu--)WXYN8UAaxe zzgQFha)fwwEb8a7#QdevM zEYNMb_-ALk3?XQvQ-O^K?Mc~2VRtskOwXQyhG!SX3U*RDO_LxP8(%O`)|l#+D;hRt zXDXbW=aTav+cOC#$MS*LgGbl6!Wn2!?V*~Y0v)5XT8z$WvOJ-`)|T9DOwd|fg;kkYf+&$W2kWy+u)?+1ic2!`=zUqR zOa=$`6oWu-VSr}8?bx5mO6^(fy4D(-Gkq*SJCXk;5W4Omqrd9X1e~3U&fN61!n{<8 z@ozD2mD0E(Mk*=pgkfge9a%wCbK~~ik(DNZe?oNi7z7vuc_q=wUOrw4`V5||s_1lT z3lFto5e3AWn#}X(j*27}_4C@d?P67Z*F<=844?8@ZaD{I6JOBEi!H$hK4Kf?3Km49 zq>GO}i*1x3Z&IYt1P5qr7*+6^m%NkMkGFao2+0M@U@C&$GlE-77jM>e$lKH@kfe^v zfsa)v@PzNrfF_Xv&6ey0p97y?N%+e&-*IFnXmEb{OxLEZA}QY^SZuXpvoyM-FwZ-` zM?ETE6S{7BUlUHnpTZl#s-1l(bW7aIj98~LVh3ncBp0*sadhYmuD5S(){hm z4A?{e`heAGK_n|I&LO{@_^Elr%T;#R{F!0<@)-=<*?MzPFcdrUGFp);Ss1jDFI*H{ z?R4mu0OH^d$)ityEDRtFYyE{9%>0`FN3ifV+_t+|*iA5}JC|g-v+#7fBR3rx#OoU# z(Xp8@pju5B+{t2hXac%_WtjDhsGPP;9vUEap^HOvm4VjQDQ!)%YN8B%hdOECYI}1p*d}_VphKTqIOYOcy!h! zz+^rg;1WQ{8doJbG<3DZ?P$bsiP(sfXZFKc!)?GDrG}~!mbdz4JY8~|bdkIRMRXzK zgCrSGm$b4&91@PY5{zOc(D4CP5a#WHcV9`v%tA zx`PIS7_8V6S9sMn>2}K7EyvdmR&wfTtnj#^LNk~?^IE+BUT3GgOs|Yn1yB8E0-H+0 zGr^$-NB!MQw6jgVz=WI+782HvZ>6C1p>!0ksOKur;>ka1)~JzC?L*%qd<4q-WmJF*M{)?ozeGqsf;~K3qqJqaKxMn2R5m0YT0%3On#A;c zidDaeb@^bCqDtrvQOk`#eG6AMO`IMUAG6%PROrcjo%?S1GVjyfcb}d#q)7#-EW*u% zJ#KhGCO$fKy3Xt_;vKg#^;T?jJKDp+x%>Tw@t#J8Q0(g-q`}_iTMIDUe7A8&AUdg+ zUT`113tbngUu$)ts$R`fNByDL$&db6SaVIO^*;n_bs-CD$E+|xlrt>7CZukA+^!NV zBB)^r#U{M@3Om;JcxPDP>xUQ?C$`_P097+AaSGC~Y^`TlgbVsH**lB0Ml-B+iql|D zcYuyjmtvAbD1;T^!#K}ol|~LvXFviwKWviyEw` zze$7_ik<66*9y5@-l}Q(joPXM-qtS|$-~Kw8(TlQt(@FJH=8`J7%hm5vY=&I1{!B? z+9zW|5ton_NZcW@<~Iy9R}D2W6MBpo-k&x8VqOLj@LTAISH9mW+lcC1`c)4S>JEj! zZMxM``b|Lt_A4ntl)i{3yp)`;xH)^=oDaG=7wbvRB|P;bcrdS30Y{3fQB{ea%mO-* zp{n9MRaF;Hrz&&v895I#Ib9KfFV^V`a=yey6Hnz>>@=~ zzQt2Hdp|a(C{a20=?ijtc;}z0a`=zKs!E7+s_G9wtl!-Nj^(MU%Cb581JLz$PgP>h zs;ZKwegypleePss5q7HT55RjJ>5BrifLB%1vpEL>u$~n4>Pvc(a~4ni2sRKD06~$j zzm+rD6_R}LWaq>llB?F6!P=3CUMcrJ%gv%AG;X<>#2QB-v^?Qh@HF`+QmRE`8g=al`lA7R3fTs`3)wD6Ps_JP?Q%=O@!7b7@L;3 zdN^Q0`~IC7S|Gt>Fmu}f3cd)~r)qnXXD*zhZ*U2H<*+vTuGP9t`?H)PjmpxY|vw#mtq@Ptss+<%l|m2&6G zA*ss>Kg1SoVdjgL0GTgz$K%3(I3C09_+LF9hh1I>8oDyyzds&YcHA@l5aXc>7ys|Z z<2Cm6KXyD;am+gP+YC)*C=m0$Z$DO;@ox%Q8aZ6oAnr@d`?)iR%*qQNZbey5q>G0f zhpQPZ&&LFremGM$_Jd=wi5QhDk3?3L1k=xiy;kJ5-n{TGD>^Qa-jrgI3|^QkBXQsM z6kqAs*J)O4hDv!vr5xd`m(2Ii9pZb3Gf;$a>U2AwNLM0R**(Uo2{2uJwG!s7ZX!Ns z0p%=4>dBkm4DgV(|cyjuuB`nyz<}hG` znxV+->~BgGQ?mS7_83Fb)xIkO{}K4I><2CUt!}^#sL$n3R=P8?7i*gD#3Os};wpk_ zTzR)#Dz1c!qn0ldu-9`?d}vKeyy+-1r|#@8?^Wx3?Fr<#B0mt>c0r)Iw`cZPUN0UL zz;$l`cfK{l))TvH_F2SE9&ANA3mj*^f%dJW_mJKd7}kxFJkmLcPpXG)2-w}&%0xN` zw{IIB7`DE~?#h8rq}S*D&dNZf_pSiV4S3f7fpf+eql_Zz#sC*91njke-Ro;S?E#|> zUH~LaU%pGgyUg3N)@u({cDsw(`&usV#ODocxEvIZr8B14WFH!6?>SNpr(e~>)>aQ| zPp*LTsOh8(sTtN?ZMP?X>qHGEYIx1C_G)`=auHEu*4pcKZ}2YLpaaSI-S#>YyQ;5m z(zo{cZ-Z-nXhkRa&5Gz->P4EB<|IEBRo+%@z*=}~G=}CINDOhEKqz`=N!FIS(;K;x z(ZdWp7`p+36~v%+O4n8 znC1l1Ts<(qUdgDJFfdLfMLJYK;gd>)*0)HjZH&0@Cj}$!gYBWs0egH>wPU=E1}t-4 z5{qVa=HIvBj_AB3z2alpBS3mNpuPJSjHhnijh-1fx?g{C?bWa5TYRNqmGG3N@r=Ft za@SrR&YKyU)~`|?XNXgm00IZpvnM(HC;D%-eSzt$Gk{^AgF2Ev3%B$l0i{WOS znq{Ql%Jl?mMyMAI`6gXSuHp}@DEXn3P?UkaQDm>jdw0sbcjk`YCmo-aj8F0hl!yQ7 zQM4*Hp?fVVpwpRG2*0oJ355HqGVtu9FWFBsDz)}AAw#Tlb?vwW=<&k@l?Od3-YD?BH}wX|7H@7YH%{{5Z5qJGVu<~-L;&OObE z+t^Hwq2BrDxH+uHeeTb)IlL3;z&_!YqCc|*%N7C}XveH6vZ}yw`{`ZqUDSIl`ycZG z7oExayoOEN!1W~HjjSWjhZBnY#*u%f8<_U6v3Bc?$z{B_j)bFQQ-Udrv9h53*BpAa z)~7I_IMuj_-NsB>oBul3Ja97fuXA3Pv`~g~BW?lEny@MCWp;A>$)<~cKzXJj?}Ce{ z2at=En0sKuQ)%nrrmY-L|BfnFTiexp9Cv~{ST;5o1@+}-q?a3`e~!^fBYOT~kq)!? z-Xoc{%ZyXZz7I-sJ}|B_^~q2^(GssmXspGtmd)L~m}RpTwN?#|>PyROTF{HrDV#MU zFW|%M{*`jFcwf8S?dig%^oZnl_)1YNtttzVwa$^55K4}f*S3~k*;%s4pWadMDPKlz zH75g6!KYAeN|c$-sX!_Jg@r7i)5SL)#pZE-N|o0e7>!xWR*K-8`plTkjuUgQC`CJK1&ndHV581!JyT0dIjVI_%+sB@^ zT6%$uYYVtSV!`bs&}k?H&ywr|nxpi<#@SW$&YvmlXBBI?xdI+}2QOK9hZ|F}8R1}yNmilYVY_h8l8tmrbs-AkTmAWA ziXctP+mkE29HD7bcC^G5)MEmb1{lQnO$<=c#HNayi2#7ZZ_?t|9U78N3A`_Kl8^to zGjbXwald2L7+=t?1+i=T#~dvUbH6;FBc`HX%p_v`{bFVkQ{OLUE-~hIV2xiNMxb+I ze0LG2Umq6q2zfN-PF88foUA@V{8QF4o<3K9RYBOv>Ng>kT1QAfg3}4Q`ltV@(Zahw zZe`ZrYMavHdh(fYE0fl&IMSB7X??iGCBGop+V(yKOPuiy&CgTDRi9k)^`k`e{^VC^ zLf`oY*2rc|;B;{k635}aOWLVLyg1vl4(0vOXk80$f3F|q&A9m=Q(iyFn=$?5w3v@b zHV|Gk5-j_qwCKR=`|%uj?QfDBpYX}PDbX8Fh6_mvC8#munoVy<)re0Ihiw_5B5$~u zoSAGvK8J6Gm?1eCnvpaR171mVe-F?i2UHln0n+e2I&PCANBDE)2!>MaV_X_E6fWaT z9H()hS!LD)XJG!zSSOFzzDomhZ)vlE$cWW9YGB+uB|)HtMC+#$=7%P>Pd+e~(dhL@ zWQW;(vVjron2dDi^+!l08D^QN$K|FZk4iHl=I#L&tuRaOrWvP;o)Aso5E4ExGhp_) z7WkTbX>eI#;O=eNZ?sa3ALn0&VTSTI-g7p}B}~Chxz)mq*nhmc5AOB0_DAZ?AXLjT zw4o?_ zwu0%W!{@NU*=w!uK{RQU5Y&^`I4ZSG>#K3;;)_+9;=hse1u1EWJ=nksS4JQ4&Uc3-!M-GN`?kGtrU`a7^cS|@buRF5-@rR1xcvtoq} z|8|XYpUbH+K#fln_3ygC3P0GAm}Y9^Zke!T@>pTPzg^dR&*s$if>0qg;WzmI!x-fe zl2)8R&51kS-

    x@wLS5$?VJ9iJN)hi{<#lP27@6NPLk{AM+S^zI%z_syl38X5wpH zU!&zJm#7uKinQ&l)eVWKi?1w%O0=vAGoP@p-;sBiBt5@S$ZVwQ%?L7D!nE#$m|4i5 z;V{Z{@%{p{&eNb!kLBUe8TM;fFE`fePKpZSSfQD+SnAD?ZsAHAV90YDUsADF&0Jkr zsM*Y3<6X82w+2JK_gnz7>Zk%*>tr2uVy~|0p+cwfyw$JLmT-vDMrfTOO~rjG4H?oy zA<|uQ6Wuw^5)rgHJ+UwSq&kE`4(F_@F&JU(I_gum%lL%i zbw$+xpDIc)Yd~dalR`!ROG?os+u_WK`6&P73-*T6%7sGddMgIcOl-Y3orZbUqmErm zW`Svz;Mbtarw7ZoXmUW`mSBqGQaL4gZkd9gcg)MrGNg}{cnfA!+>fOLYGt+MA7EN| z%XEELsZ3}H&8eX;n@mtCnS{~PlZ~joa;R9Xq9z@pOMLAuhql%y5Jc z4{E%bzwy!(v`6Fl51m7;L16&q&kG+bHaTy#@Vk$tr%yglUY!O;ud<%#p|||*0;PNg zmF5iPKI4S~I?g&yPDS80i1x@7|k7oyVW6&eJuq zTniiC$}`0?$#WMMx4zE>uEeKy@UDwoU*Mhe)LVb|-gV7bY?kl3VJzZEhtH~dw{dB( z>NzwCv;=RMCE>4I+)Nf(3AEOSPTV`7SvQY(?)5{o=gv{*QPV55fXixc?xDu*)X014 z)tTN+SB+(c?7;8oyNw&ED}1uqe#v1O%SL&d_Z{Y~?q0wJw#NDMbB$cK_n}J|vtj1R zCd1KzywQN=q5+fC`4E+`#L|G)CEwIGtkB71!v#cU7Ba{+g3Ll)p_YReLan4OYco`8 zDo8|LcNrggr^H-d`r4bLf8~BI|L)HG@bQ6V`G58RLfz{UKH9m@#j7)b!jCaKlNW$( z*xS`b?lj7y@1FzgnrlAFJpO>@#CR^iv z@BM2~21?7`&N@Bb*8B~Bp4?PlT4L>arQxsIdAuYPyBhjCbL;^$Te;kbVRuoV)Au zU$Z4;rb|r$l{AQ&ovIYe9j|cdOl(}K#QGJhHjozqQoVrJS0uh#r9nsBR*d?gr&fOM zyN6Hoo^an6=t)ualw<<4gy2RQs^|tqbGh6}6N?s9mwF|V_9~`z5ZQJ|F5&9}Z|esf zGYLh1+f3O;#r%ejowR-7a`P)>JCGB1-g`cCv~vAX&;SQ_s$?s6hM!5b4awUqCoTX3 zjBGHNyr}=jYz{8Z`@FMoNL|w3eh)PBsfQB#&>JzQmuH5p080gv%Sl1HM_H1L0dhnvw7dH*+gB!mTr3io=V$y9I5MQw_Px7->~;o;F+m& zNE*alwAI5pY!h{C%16}T_8r5A?XmZf>6W4l{n(qhr}X{VP4o6O3t)GDfd<-}+TZp> z4xDh;Ni66-A31QexAg*|$pZNCXq_xmFC6>h$N?V~alA(kRCrrUOt!oVCtJR<8E|ww zK+l8D8Chp&HSi7#v*j+uu09 zkoS>Y++o}|A0Xg`%Q-B;MjN+P4CcOByKBx{2+FJFaW7U}{V<}namI8KqO!KJ7fi*t zJ`A1|zEmg?6g|wB_Zj?dJkrcTvTx6SZC|=g9gxffd|&{gJ3le3Pj5j*&ryl054`s* zW5FtdvcZ)f{-PDdRjcykZyB>Qi*M%q<>?fHACb@c zK=;pI;@{^xl0W307?MG1~V@cczOUP_dCU)Um~?;_@7dYkab{e23@)1ufL3 z_WE?~MPwBd%-EBA2h0b=8+(>fefouP$~9`)ZshUz@K&WEHSC#=qlX$XX}b8WNQ{IM zjj`c%QVv@n5I`40j1}H_m1A|u-cU>F1HeiI|3f|D_lwPUEu{~-&)=A5W=j-vNB6zk zO@GCG@6q$1@~~NS(_!a_OwX887LndJNvNa+Zp*&qw#@I=cs@_%6c)<{vAXmd>Oixb zO-QYgmI2~FonchZAM_yww7CT|xCMNTr|N0qsd`#Uf9~e|jhnOC&G`*I$+>{1egqd1 z)C{Ep77=zPvn3{^tU_DF{G9hJ6n2^c3i(n>euZdRq9zf@4yGsZW ztx|miGYu$nG8_V?6{HAQr}0!#m2S=fF!j6Hj595=S-k5w{rh?-uYS zo~mb7Hs?T?Hn=&zrYAX@cuCKmQcyPrKu!D3?SG=1oHql|VpgJ#Jbeo8~f6 zO?vw1C7#Gae1sECRR{Zv^PZS7#u5G+WTaT%IFhMqgDPZ(t54+3gV};~98r+fBJN;} zJY@_Q*_xo79NWbPXGhsFWy6udIJuKTStU6@P4LlH{S+=Ej9_5G6`As167HkDYrGhy`YAL)wrJN2PN!ZpT3zY%_mowJE_?3-a3M@xUN8A&{UTCp>KgbhR}Hg?kz4v=Ul7uIV08u$dg0%!V4nwyI94>^99U3!S|vz=}5 z|IY``nUz1uh#6T@WA^-+2anm6*)jX904%a`NO78ETGxP>8x>sxVt3?z{ZB^jQ!npJ zryfC5#pr2WkTJM2k?{yQ^t-m0A>dc@mrJ6ZK?S7uh zspcLugSs;(+3J*?Y}0w_N3fotuiqL?_5AOfK@aXdOB!_txJrUi?_c71Q19JqbjkLL zvXd>rQ$K>c2>RUK_Y!ubf`Pp!+SId;9ID5|yOVR^Tvz1gG%^r5HGS(x&_~c^emA4C z=wp6t`h$gN+{Fr~>rLnt*Rvnf)1>AR2Ah>_^t6L!v{@?F%xGtQW5A47qVF6^qWQdJ ziHU=z17@`AcJ|F^S!*Gk!Dnsyk#+%g?M$b!7HZv3Tb(_t)^`c!*ax;i0dAXxAmU7FusBnNb6Iy_MG3h=v7bAj(F~M2xBvQ+5(K6x zcJ)|ueo(yaLY6XPF?~gYk9H7~CUn!fRX%Y9z3mSQWe=Yo8pk$j;~x*6KT#a$fWiaM zOQ%iCQ{R^Akv&`#l$oi(J#Xfrq%7OLJp2(JWUlpKpu3G@LaC9N^?DFBn9c*Rad12E z48J1<8v3#~Sz5aMU3lN5_sB^CIdK(})X>vBK?BKAvx%dT}4$ z{@=idTS~Qp5x;NXsTMWyJTxb2cDwlvJ;}L%r+x$%5)>y=0gDJb1^lB)NjaB%Y|f>m z2%^8ylbmfl`KPMlJbf;I?IP?{)qfWI|1Tf+J_<@ff{qXiuYuZid)+_hVB}7toyOiF82!BL`xOy>9&1LF(=Vph>C6t)gwbv_1wuVB z?t*2}@m;PV@b6xe56|zCj(wKtk+TC~MO}5YHqGBl%xTcY8_OLT42rD)D^SLSPr;|0 z$Ue1$mLA4=uQky7(_wEga)-|UV4Q#vhT!8+-i^1Sm(=OnhOzHk0AT{q}PH&UI9n6I}PK*`v{TJC-)d zmQ@r-ykBjFjQ>kbLVgr)_#M4g0KgC$=X+n~IC&2S8~8l&ww4*dw9YcgOmEy~{gLxhP>OhA zF0rZRz3%DPNVB zV9)Fsvo>@7%3g;DUn{a61>&Qd^livqR?lOm{XkrARd3BHB*)xMYLicGs?b{0;~mLu z93$DIzYdf80CA(}^d-KK{q;)T{cQKl>W6X@md_Q56;EA+LbXgIJf_>lgcTaS#Is$( zh2n`y$55Ddyp#CWb0%)G;;?zfzJZ87WrFOX*`wFxkyo%`-wUkYe;g_wdC`jP(5J(sYDc^%GvS7H$VSZ4d)(qD(_p3r&%PWBP(=rrAxj_n+%+s1*qSBTv;Td~f8JHFuL+Ez}k=}4ZA z+;!{J9ktB;Z0daH^x9TVuf5DsI}`hq zz`WjO+ULFdbM!3YIl!R!*9BnmNg^%#^kfZi@2uMaVNP;bfGvmezALmY6g>lOQ&N#{}bqg5-&YVFTf{TdsxkAWdlR@&#QWH|v zI3Zdjd8Lbo&&}FR*eSKggp_p`A^iwS)O6Q#7kmm5r6qnLt_4OLWNlDXy`pAiqQKvb zato>;*K)^uFv#mqJU-e%UXL>!I~qnV&V6}{7*IxVooJ+WwbwgxFmse>FNa}d&~rdBY`oBO z(6EA{1wQtG=2x09(?u&LN?-shJ=&Hr2$KJpGFe`+UnAiRd0D&yqPAjygr2mKn`42F zG|jvcD_BDYn8O+VU}qzRx*dJc11tbDMn8Npa0KQZ0sxTMdzqJOZDz8rt_=gYREOk`5zP)iY(JZ_wN z7D?cKUN~zyIwiV1-9XQh#dJUzBN~`ux1@^%92($PD`*?Ab_;PK0|`!NXuPeHq0r>R zI_yD5><q*##qx2f z>J|-DD!2B}RJ#rxs!klHm}05erQ#rTaUtzTl<}U}DW8#16cR+H?&4DGgIk#fME!?wru}V$vDraP&O>{E zq`S9`=fBs08{7sg;Y0j@|In-~1@qe28LJV#nY)n}GuSfs>$rt4^{@)LOB?FIy~}>7 zy1W-(G{QXOvQd5+y+y~q`s$E8ju)!wOXw)zKDcK%XWozVRSf~Aj08K)5CH!o^C`8a zj{k=xur2GtW~$w?Uj^ZW+3ADyKL*rfSS+ZpYEmb)<`B!bV$Qx`uD5wENE4H2rX1A8 zhBUazg29zuLeqfMJSG)1YshugULT5{qs{G>VdTbG(A)Yxnt$(OKbS>X!1ZA>V7ONo zZ$l*l5WRPE=Q0*w@tKhi3+H@ZOiL&sRH@LDsYNIwz9^KC9f65iX8= z2trD_G2Yn6Y))#U=;I0&&K^|oU*-7Dg&b>yKdRYsc5TIe+f05rW%th4G-k#AtjaHn zonic^Pl=7Xkyq@`xi^UMpYSR!v+UuRHoYjhx8CTmpg-oq8nEP#4l(@MZ`$`3xeRey zcEm~e<6;u1La2jq@1`?25hXyrGwq1mv=0r=!!HK+q3P_e<+xqvs%3yGkL#-vmR%B? z{oG7@sfLA^=XaTy?wpuj6SF=WQ-C`;KH89ph+SBKh2UCPe&eqZ6Q7gUXm87MO+>M1 z1H~pER5-F~FIw0`Kp*^a`Z$0STn#UkRlZAz24Pss;?>=dFAu@LHUq$hmqURK;(Ue!#vaX(-T_EY z#KQ&%Hf$&I4JK&Lh`_*ucFVI$gWTc49+v+#y(aR;;BZwiHtIE`2xW3^yUW=R z<>K9SA^UTI*m&)g0~dwsz=iLJ%*hs}v8pY%f}vcwq=dzn|{TU_FAVLkMP+ zM)Ous8XLVvJqgAh{j^#%DOPICPMH8tajDQ~Gk!=}h5{iOlM(78gP}e%F=1c+=?wWn zd*-8S%}0*DkK$6E*1Q5rvdd%|*2?@TDo{ z^QB4#XX`9`qVfAb#j=^vod{G<)ulvCWa4sSK9`9>Z{x&F%Eb6HF*7qU^_iHtnV1GE z*5WK<8LxUY3vX07ngvXMob6)`B)JOrpCb-|8p>>v04YZkpkZ+I3vB`)Kd>y$!*qg z(2ZM^iHoUcWNvm77Vtze0S)EuJj6;w#puMzf(e2>nh@oTG~waSfWf?GYU936p(L-W z6u|sN`fOeehSHYB6ite0R|X~_EYJ zd3p2pj*-4|KzXr)$}2ME@wZ=j!Pq@&fH0+u z#qt59->0aPsV<@;ZtC5Kw48HY!F*PwkEiYfRRQ5jgJ%-BhI-xolYDv6TRu~meMB~ z!sf=q6>L|KI~Q!{T<5;Tm;QzZwPiQQhw;IIQa@eXjn|aqDmmvPZ~v2|dlIKVs-vcJ zi;^BhG6&eSJ?oKgd}(4BIWllb>SCJQ`6$!W>`Zi<+RxsY+Mn0hgQih)L5`-;afK&d zl9;;GY)75{AMp5Caq_N=>GwU4Wp*lj6p|<N0&*p=_7%)xy5> zM$8OoA}09_F&Vq3kMpPYEMMpNQ_C(YuB5hHe`?>;yYZ){*0U+;_)}};Wq?05rT@?P zQyXfUFWh92JQN=}1MnMVA*)^HaBW6$_WYgXedNvcrFNU~)TIltwWr};h@It!+%K)h zTFzzIhxDgr(xc7)@}teEF4s?2KjYC}w2uSPZ24;KB^!y75SPt!AXe^nT2~Vp zjMcC|9V=2vtR>l8xOZpfr6?G?OS+c1YzcO0KbULWu1Oc$f-)@MgC2R8%tsw1irFl_ zku($3uWt^WU3c{vLLNu-;RYR7N3*;eW^-@&WLl-p?Muv~^kGg&VTV^v(`< zD1Ksw0($^83;?2{ILH=2pHDT)`p_Dnuf6x8>NN)VerLbk4AUVD0Ztdtfxp!Ue~ba{ zb#(J65rZ)tWy&PqfWP0WJ6$|jZ8Y$6YyvcBW-;aV4 zXAkfieaqMbe9!b#_5dPB?GzZfH^&~}o0PB8{*gU^zC}BQEr6I_))oM5nK1)EiNOWt z6)u8Y=(Ft8Ec-&xLAxeXz=qjHymPc__4FJ}fSQ+n!3^^SO_^anx&M^9a*4r^^OT;k z1-SbW6E{wA#unh~L@YG)e>ofg50O^%%k1@I;=zH|F&t>+<;-hVVMmkWA0-G~>pbho zT>Cp6Sltnfd_FIHB+MY&)bz=x@OAc;Gpqi*K7M1N7?M4JyC%r-gNP$^3Nsu z@8;FASAldAbF5CkkB6RRBskVJek`v1ej`S9`Yn?zp-jJKR9ny%MpzSP>AhoO)8LMY zw-4@!H1jriW@n^D(Rm$_`Fih&eA9VIvQX-Gcq;Wiy>~<;{_xOQDy1&wsnnnHm*`(Q z51k%T>cc#hDru3_N1caSrqty;mAXRj9g&sJqeBl;*YQ;9(|YfSbUTlYdXV}OPo>H? z45`9c9^3RFbq7zSCiq*>8QHD3L4)v^vIQR@iIKnDpN1h0)j2heBTojm*sAU*D9wY- zdj{zYTe;GP39FG~4Qi7^Ay5;KC|eSD9EYMM9vnBM0X@ScQ$h)44$*gr)1{~a*x22& z0ymX;iKV||BO7OVk=2%vKvRJu_GzFKpZ+DBDR(}Y_qPRnW&CBluU*?RcGN8UMI6F> z?;_cX{c*99qrY9Ehq>(+|E-bCc5o%(N)Sb@EkY>)1+n3-E#UfEHc#=PN>}(21gb8z zJZ_*)F>U6}=93s!(0HxLkzXvCu8g4EP^`g+&Xv^06!LX~JJELuB7fP3Z7Ag2Ae~Z^ z79q_PnQJ85u0~Wej@2391t+pJ36BBeH$N?n&^tkUBj+F672f7dsEwaWddQTuFACxM z;Uw3sr*@3d!eQ+++FA zFnCYHRT4gyW=wOMkuKgWFI)(mhb6yBjy92)AUNH1-${|w`T&_Y+z5ks4^uCS_zIh# z`Hh}2@emMCosT;QC)g*iacq7)=abF_3-{gb2H{w2$N8+{l``wy_qn5>(1?^Xvk_$tFOVNSu!>{37E_J*e zgf&KEJK!g@*=a3>j~rfFYwSz-oY@al(JLGcvnDL>9Y_ib1Wq$A`wTC7lf`|y_=*)Q zyk6Bhp8@xC(%x#{UKni49F7IogL`^p@`!2C2jZeAl9Pf*t%j zie{Q^8QD0Zm-7Xy_B2ANAE3izaq!lYL-NAotoFAG=n7YTlwL|wsA_xoR5^fYsbYkT zE(NzDYtqGMJSE+8LiRJ_oxjs?mw$jxg+Q=<=iplJBMI!Lr^c#pWaSZF10jXhF#Bku zK3cs7N-ijM{HLdi`>h8fhw#7tBKDJ7h)$-78i@K(w7vwnPb5$jzKcsoiWrju(Qowl zZvwQMF*{|#T}@lkYuGv|s;$}|zG6z%vPoNn5ilv{&oJ3_bz9dtu1@D7| z-j;9c@3O+*u&~gmUtSY7V(m|ugFld8n=eTrJ8!j^Qg#lTkv{p-A~zKmzZLB%?ZQCxbcdJvm%?~jq!y@cH((QhZ-UVIS0?4l9&GxB3CiOk>p z(ICcin(=4sZ4DS^I1NxlA6%%e)1~oFSEJ496v$fuftdwppL`!fSrP?9>!A2|5>F0Q zH*tUS8vapXob`NXIH=o-@JF6bu>J2Sl9}{$Z_8j+$oL_J$=qa~ z)6;nP)ll?tbut+JbS)N$t~xPQl+o|aTO)m4cxi3bBdW3S&0zE?rx|kTl`h`+=OKAu zR(CM^;|%axYNL;sBC%6Yg8?6CeO!O|aV8UG6OI%vgJINGU2~?V@ozZwIFm-2gW(vG z-s%+XZm^Cs!qf1@7GKKt(Gk zdt)g2grLP@3GPP&g3%d_JKRXl`PD{w=VOSsL;E`c&Is9W7a8lGRCxBqRkxo7y-$te zKFNUwj)$&)!T>sB0AS>e8({4We5D3H5dEP!i5x_qT^HcchkVG4xcpsAM2(U8NQd@g zg?G=U&9Sl3pObR+s0Xb4_tM)Ou+dVa10%#xycoT8=u*@2;n=^_Gn`V#_A513csbFj zW3A||3`(HL99B~O=CIP^1k!b7IG<{#{e#t$CiO&`-DaM`=iK}CNUs+=5kwj7X-qz@ zUfATs?dxKt61SA6;uMxNsb72Q@aFCL3w~G{=S3KVj{tBXvFg49NKZKOvc6Icu&3eo ztAh$Es_k9Pdj}gb3LoxW)*h&Q);pQ_1vOu>qBH!~xEU4ror&F1k$CqGVPFmAvGnRJ z=u&NTrpx0rp}MQc#9)JC^IdetbiTD3hl^`QI<3TpyUpiy|H|jnrQmG&6oQAw30l_O z(+ec*YCo?1womcTlt6#@cGoGt~=x{eJHi-F-a+c1dB~)yy0a^FOm8+ z7GlBzn<^8J2u4&mUCRszvCP|YzbHF4v0jD4pRQ+q*%`(ZXpRSw6Rdtcb+ia7%P(0E z;fUgma2v>dil=cG$bCv*OTI-*;3BN|CR!?yo?Tz(5)GRy4#CWF3FdX&l)3DrfB8Ds z!MtBNwd#hG4gK7HGT?A}lP*5ZsRL6hmm|<)B#dgqp zob#pzXASNxBHF=CKWEVnjhB=icfQV|WW{%clBuwVwO{_E;n2*InbNGetqI0J6t--@B1`nq+o6qb1mCvUmXIzM6?e5)l z{t1>MaZ0A#tV0czcKSW$2{ZP|#xZ0!8IabqDYiSp2Y`2$)z~ zXD3$<9sRo=y*42lHq~+Fj~R#x*BhZ4@p8JV0~4vS^>otQssBLY?~9NL=B*Y5_DLe{ zTFOUcVuLcoCS377CXQDK_u)^U{v7{MhM?^6?0rnGQ$x6Zgw9E00&h3hVXy{@&ayO{ zAhzx(7_*rPL^#=p?`dv=SXG2T;B9%4szX)R9PepNB3B&`%{lJw7IAI~tY@~M7;XJT zPM`|soJavSgJmoS$`E*wz4xQULz{LAB5pyt_*Z<$VIA2LamNMH_?%hh^Y^F-45$xY z{~SA$X)t)kiDikVF$fuA|M-@@Ohx%vX)--ti z##!m&vz&^lbQTMmL5-s@B$&5a;L3rwYgN)>jKlR(=aoxtGU)|F3lPFvhSt$r2HWwD z{Gr)B@{YXE?45W=I#w-OdNqkVvAfKl#OA{eq?hKW7NWJ=#k}w8SO5M!4QTQ1zL>4V z=)6Q9Vm*<;sT>9CLTPgSI@G~t2?Xr0XaXe;?g9qdoA)?>K}Bq4#0?St!uwSr zpj1;#A!V%m5;w;7bHumt7%>+g>XagYNLR5qkF54z$w{aQd+^c6r`PalC|39pb_!N( zTB&!1%dDPFDZp=$oYa4L&)0cBrth`@}`T#Jn4uH!3Rm$EAq8;=gF6Y@=`>q+1k9DUbiklsQvINELvi~F2u3bGVy((8yFew1VHFr9D%dj|Th zUM+RbF2L-Y)lz=?%&%m`6;PUalc=#zg8=e$;SmVUbLZF%ZN`lU~-^cqEO7 zFad5RtGDG=S{1Ta1^cd8k4>txq7OJS?KIl&_#`YYeA7sN-EQd(lx${9GE)Wh;neeC zBl<>XA@T0?wj4pxT6R@h81AaYa4QQYHA}hq^TW~wCi1p=2@cF}M2AB5OR4kw$q!ck zU--x;(Y|boJ-jEF=79RuWis_y#P@j9vc^G>-ja79XnE!pccy+-%ytJiz7~M;+MP98?>U0ScbsQPuT%#gch!noB zz>x&5Cy>Mc#k8nIoFjTk5zmmVy>#aW&!Ejl9=MRM^U0ThhY<*?UG~o%76|WvZ=*Nz zmSgdw5h{0uTUr6X(Tqf>Ng<$qmEtH|kW6hVZK zP#M0?iH&3Xc#h;Vq3h}lBry~(kp)yA%7S7cl*9z|RK?zS1a z+NG;m9?$BC_G}GR?FgUkTpv86i_*|dW4|T zObzMcHGIhW{9xfg)(&71H@0dPHY)ug=rw4c67;+pPS~^qZkr@w0G? z)X4_@LWqRZQ=cNTim4=p=cD2V1%?uMlWd|OX=p*Kki8b2SFQbSAbqKeXpL-~yp!pv zxAjOGmpqC;u;Xp)g`ucbC9@LE_rsPy77aBmL-s7j%^qPtWOIuU!X$240N%wWB(|9e zApd42fU6mf#03xbpYG6iv3?2H_X%NjC=Ijw9_~7s!_G5v#(xd#iB$MFXR)mH1a5@U z@$E~$fK1hcs4xiO1hmP{MKe~7iD&(R{zcELYyb$t zS<#!cbn>>`1~GA12?0}-O8j(pCAC{hL8Ho%qX~TZwbYUIqN>}^fj*~1$DiYNyEyn8 zL!Cxn!uJhjK{7{fSGiAZzW(Q@-P?3kZE*RHxfA2}KKcN2eVs3O{RgvHD4vbY>enwEa`(E2y?XAce($n1vEj|tpj4p!?cssgB)q-vGHfg1 z{}mf>*LPgwFIz*loz>TU@C@aV?QoPb!~61;kgq0x_rzGiGG%Rkrh@DrIA!c-6Hf!y zUuKG!8$xHSG6=dttxP=iO|xEzT#(P^N%ZqrP6>N7aeY3Cka#V55CiZD;GBgN3TR$~ z10qtn&?9$Y>R!h(7U&y=wpI!T=*Wj(a|Xb1&1ql*Sf*1lU^Yzz_JUiT82~k6u8|8X z6U91b6j?oMRUiL=H9j9IUp4#MS{x5ZtNo%;Y>zJuPmtQ>2xq*IkAhXNhEHQP$-Fu{ z9IDzin;Y%UJwyCow_qIiOT#T*4B6Wu|I*Zn?A>Ez;UpgTg%TByqO)_TTADhE6K=O$ zV6G{l$X&B1)ynC>XDyq}aBk_dZ04~@KX!{b2!{lUAD=7qKalwKw~g4pl2;}P#T>KH z#B`Yq#zS2zc?`Ze=vLw`1+<@MykWfILl{~nNea-ntZihhuF_$}4((jrx6-rT+=VJU zY#w)}w^iHF^!E4pEM~kdVlUohbMpPo9o_!s1H-)c+)j)Y*_V&2Ktje$FjW4YnToM& z8?!d`nJm4sD;L?D|2TA&7seAvM<_P@>>x4W%Q=1?Iw!v-c1d>t59PDBbHMwo@Dcp2 z39sevSHr7x%j@2JbB$})7;bHi=QkDxn4#Ln#7px58eHZ-R>8;)SXI5)1bMnr39ds) z?d)TB3tf0%dn5w{b1c`)5)Q(~#$NTg!n`Mj(Kr~KjyWv=QQ58@28N9dlE#{|{3J-i z-u{FP9n1i{n|Rl>C9XRsOZRAlT447(;#{3KR5snOvOuoUJ3YE6VpmEP8qB%C1*(iM$&Z0x;U zDQ7AKm~tv6=gCBWadN-L+pCfZMD0Epv$R%=u|@bbk3r5{t04ZjU*N%w!ENG9_PXZ1 zhs{0{DKa*yIX0@h{jK5Gue`>7&R^E)_b%&XmK#F@ypI)3o=Mw>nf>pU4Sw%^om@D4 zf4jeBZ{yM4W$PgOVam5GG$nsQs9-2gyaSJ`{9t)|C{}Z_)&+Izblv@=b-H^ zqiUJRz7}M;Z?CtaC+HqpXEKRizA>?9NM7FWVF+AQlFw*GnURc1j~2uc$GB#O%xh+( zdun4f`D$cm&BimSJ=2s{T{tpkL#C!V5152JNcpSrkX_T(cwUYDZcRCNUH7&pj*mzx z9eamu6bAEYWXQg8iDlO=vh2$jSKGBH5UTC2q_L5UURzXc_neGA@y8=70E#`CJ-`br z`;M+mXEcw(pkGr@&dl~CP3x*pZ)^*sJ976^W(IK9G?EXD4S4!8A8as{`VW;5ZKSDh zr7wd${2uQsGM{35stZxIh}%RSF|bYz!9cWqeIhXL&2$=VsUUeRkgQo+9h;SJ{LO5k z3jD`a+Xn*aX{Dxo5MmCi4H{@gYZr&2HH#80g$~FYu>xT2*oe?@`4W9lqJe0vhHEda zF2Av>dhm^HHRT`746Kk#cz+&3+gURsz3K2MzRT1>AL+*HsUb8sV0X-{9@p6A{Z2cB z-EZ_*P%)o1`PLNc5>5JLLu)U1-Uup8g5Lff1UeR zUf;<5EBd2bOg642x7+d?^nlT%g3y)H^l_LII#-szyw;yF_qcfPlFVZ_Ge6#X*-2L~UAUi2GkJ(13H{<9F0od0He=f(l=h%I*(GLS9#$I(%Z1k2;c}KOq zDzbfWEq0D4ZVI-)_cJAS|CqBzz{K0d$XJrF=^yJep2BSYpchq838F_O*c3LPH z*eLxl6uZI?7QD`O3y7Dc9Q2snWgv)HU zfD&AAv+-5s{m*Xw{RY?V+{pDhH~)>V-XZ+v-)ktX!ld~WK5Qm`+GkdKZ|GF$B|`7K z1j@~MeyIL-4I!Q>rJ_Tp~dUTxp}R=e!=;g(3V4e{et-#T%Yrz2?2o3(8We#HgbE= z=Dn1=(fk1{H$w`v#C!8=JYQ1X22A?1QLuuT=4?{n?|jMqL>u4W`7Tce=B;K_XgC~` z|0QDHhjccHbT-Wldhgs&TXn$O@@Mw`a0XQv%>Qs9R~;S2|5p}K8^yk(L83kHB&gyA zQ=zF^l`(Dtf;T1VWvJ-9cjNPv|BA|gMdiN+`mufI3sr4y{6+FI>akYjyFcc%{a{KBs2@UJAPTa+fCecp%+(#(Y}s|XNP z;Ek*%B;9j7`4$umYrXbpbL=Ie9QhxNiJN6t5VmK(m-rG2gSJ1dkaQ#$s1{qYLBOe;{eSnXI^GL-xMrgU2CsNUTji#()MJvT5cyIJ)^yk z9l_mK?cT>O8pPAgD6ikDndF+4nQOW<8N~T>^YN#dl+CM1T}SF#ri!&n)t}9OL8#+a z`*v}s$1Y-qx@jvEz7W)NOe(Z**Yy&h*vfkHfPVTXP4!iIZWPIX!~ z+$~J~{@Cg8AGeIl^JJAx%b-=$%_Bc~VWXT&$tY};TiDT`ys(lm2zgP7TM&kH|3VjE z5b!q$_;3&ddzf@;?=Px$#>`@k?)=hA5m@ZcBIFhC?qaJf?J9N*M{`y zatc4PW4yd(V|9KHR8oEVSG#5go=T^Y-^LsH?MO;;$_S)8k=}MldfOPVJCWY**y#NZ zvV3maklmUY{XFp#3p->-*)=112627Tm&0%RcXLL1YhQ+g`B9tCY}MCvBT~nKSXU_e zpFY{z+Ltfo<{{7*jcS>ZtZv~Y6g@2zosAlM4Qh6F&QUG{oi=00VdR4-E~e0Fv!hRO z$fLn%W3Rj9=BT@T6;+QeLJ9pj1hU3UxV3C_i3(Eu5D$NckB;me6fR>S(>O604UMLn ztx63Y;Yn4_Txh;OGLx_IC6;j~<;wR+Uv3$V%XOcwz8pO$5S=!$Cn z?XRfwvLcV3#{L-w1XH8a#$xue0r}hoz|?4XtTZ@C^{9So+AfOebOh>as+GV`wT+{t zWoOh+bHAHAKe;FL)(4&#MelG&c{g_v3eo1J6UU# zXg`kcCe)FA+YsUg(|NsjJ+O$yc=s(2v-lV`_e{IHJu%4pSp2%UQ^?5b>*Lo{m#_3b zwt+84T{81Rds^`Zwn&(U5OdSvLIHhbWSbYwM)f867cQtSems zjl@Q@F}qz2%5x}BZrFv4;%E{j92ol0NrKqe%eSI1`Ya#MNS=qUnSS)Q3$+g#ji+h~ zL4;9gZ6>^`;MM1T+sdawoimaJ<`eXDhF;%`USPB}Gm^t8u#X)3ggHU-LG3tab_ z0bYs`_)sI@eQflX0Nho_zXA+j%f7uDwEq&Aw@)KbW3RmBp+KZ}*j$}oV~Zg2 zFbn5C;9?SLFE$So#Q9Eh4Uk_c+z#qnf zd@Dp9zNoq4b>O=c__*5Dlq$FyRoqo@b-6%Xxmut?zZJ^gcPpwZc?&O`o2sIn{kMNK>QRlcpaNXx6(~4v3=-w(LTR-L6(Sp0}YwXf49-VsaFe}OLlm(0qChmTAbCN z{cP7L-g*X(W_qs;9L?}r;f1xDA83-ZAgaM;k2VUou2Cg&hBCNe{md<**@PL{-bsCZwCH!z;lPD=A|cKoUa34 zMx+;H)$U)Vkvo0vP|00#lH4m7p3c{dcpY3cQT<%0J+_V$&iGJnnj6umfkT7w*>JhK z(OtLjSNshlDMGn|j({;Tl`-b}j;rL1Zv)5ApF03SNT^qzxk;`ehQIpmQ%fQ{8G*pj zslFcaIyJJ1*UF<}DXjgnuDXFp^YkB`0@D6NFt&)X**>aw^U>HEXtro8>H=*8pkaDQ zKi=rvg#%0Hm!xg4-`9@`^ZhIl@(ww*yww=|`+4`;2|XIe^z0GIrz_H_ zdm}P`+8e}-&08X0&W}X-B2Tj;JL6B@h}dCPe$HTtrxP-3fjYjJeg8X8a4)^=jotiq zw_av%g``BI6b(UMj%7!!7DF_>iQ&}8on^_s#D%e>+%Hj*M5u`fG^^l&jP zb`(vI7u{tRZERIV`?L8_v{m*XVe#zCTKF5@Cz%uo#-Ty2FsQ>@|CBDSSKzsugm;E8 z9`Cj6?#wjOk4ySl%Ot&yw3dma<-bf?Wm8&gKf-}~k-6NCc;RkX@cXj}jiaYhxNm28UGD@1lKMBiaIYpL(eJKy8uSkqu@(g2ep2Zxq505A@~+y^mzp z@5>kKjN9zXgu{27>v-gt+$d__s9W}X%N@mpDqUa7R+TkvGecoCh&ZcbKIoN4_EFv3 z%SNM4O?Oz<+78dvlsAmczAsQbSS=76qeXr=6elb8{W>RD-|@_s6*hU=_a-f zc@OLND~;~&2@>Q`bf zJKJY>*&4K}#Z=(oVbQBnlcgDMF}YtN0P>zm4DD| z)_~#>a2Bi6i^+qw&K(g{vxz4vwMakAfqr2;YRs{ZS-eP3<$?-Dt z%Vl(xzuC7>4~=cZrTv_4(QD+mfVN^;>*-x-pmS{Q5juP~C5o-FyrqDXU~cUi>Dpd`{p~^lR6au4NhGxLVV- zQO$DOvwAVa6Y7EbqxF!hxQ&a%q5Qi(#SZ(OL=U5RkE?4Q^uI+5%p*TMSGVfV=KWZl z*B95LDUxWGT`td$EdrU;zf=87|ovN97O{V=F6AISnxN znviTy9ePTHA6F^E25sr693LKL4lSYRNd3T18in7L_e zRwM_vpUAd3(JQ0H1N2CQ6&F!OqjL)c8Ltb)&c~rLTM$URU>ZvxmC0}_rTLF5A{f3pp7@bU^eqo0--GDJ!(dUA!i-t7_p$5D=TOUnJ1TmW_MUjO*d2w_M@*Dp{1+gC7 zKX4Zx^;nwFpDwAj0LL=Wrs63&>%gbS_=W*NgNjvFM-xHk2U<-t%V;s`T)9#0wjHSG z%|&@Muq~0vvJ@YeN3Pr@>7fTlQMOOCMOToDs@z??e_SZD1eQXZJA~p|^%*3j?5F-= zWj%;b0p8@ci0v@+_AoEW{ZaeU!y>FB?In5~Bwr*-t@ zxbHv|&B+d2Ltib|>Mh3=DcZ(JE2wK)c)~qGX&p#&8`0=#>_4m*J}p7#u#ZSSVseKC z>nOwdfy^6!S(^83b3bGRnMIGyfW<;i$`A?|A_>DM3?!id{^7)K$c6s4C)HFaY2Sg(kY5Hg*gZHtuf3kf zbYG$R&Gg+R=3RzqDwmKTMCRgx4=J9q+%Y-M#qS$CK4}5`&(T)E77F5dn@rRXQ@LpsRGG;2(gJkdAartt5Ur*}pJFAZ}uu zXLuI7gFgfRTNDe7!N2`YMdpscAuDayA|BiZGsn0I!M+b+Nvmneb6Rq}xh>c-JDrHrs=-jwGkXLM40nSSQ&h8QRoGtd8rsyEDk(OTH+AXIIJwUV{ZyEKixj7AX zV@qQET$T@^>Z`H*fYG(2g)jO>R?3ym)%WLfJ0>E0LMQ%0Tk70!fph&Z{JgXLg-)?I zxr^6nRqxPI4+o($Jhq)&r(pT92WPKb*fS#DxQJM#(!ZAUuafCSb@O{hDpmS}{KdTI z1$Tz0h0=`Otz5{M&%mrF0-9_YlgMGhmK*dnOImF5vM63*oa?ovlQ-za4e^Vbt0gU7 zNUn0)mARqF<^SM@ABwRBX;i~x(!o=Bjx`V!!iXo$5kyj!fbVIV3kP9!3 z{1^F@GB$dZc%xw+nn@fheW!{oF_)HFFObH_G zYl&tc1|`SC5~_lh(@H=a@vri@UT(2mOE7EnKX!ZL81=2yKsPYG%NBZB@f}I;F9;-wP)(>+4WlW!&Jjp1P1GLBcw~7P>uRA zYUZi8tOaLCH=KSF%!-}05dG#`#I#@7p^!9S8kRXg`XkvYp+arjDHT z{=;pvizP=!oN7Wrm>A{$rzJ*NPVs7vJt?E5=2(16I%TBK0|%x{_qXKv zM_HR-Cv#j6p5+cs=kn1*)z!nncBpQKcYl=ZV@*GqLP31!;I=a~^o=zg$E-LOYQ$SXaFl6}?mN>& z+3kc*%}(O%e1!Fp_sND2z3e2S6#vD-`w#JB_DArOQrG`a{CwQ2D}I_bLB&mmvWs}$ zl#gC_ZHio{vwW+(Y*=rtT96bMF>$^c$@!{oPEK@&Jc^X|?SufRL&OD5;^6Zm3yRf` zQstxLg9A8ieWavapSg2B8!xgiK6s4vp5pDEobCF+_uT`()ot(la^RFXdezNAFxKG9 z6ay5FadJH-g})T|Z)4L(!Virxz!=|QFn12I#zUuwnn!& zxzk3q$nIL)qE)>oJq_hvjoQ^5Z)J)QTj#g+&_k}6?;A*VD%fGk59xVsomxE8h-zO5aC`?=BXEh$-s8?VJ?7tJ#9)mY3Fb z;zxxWD$qkeim{W#dT_$_eXaVdI;;M$LUxZ5ve*><+YO4=wW-$);ldkD{w4MNfItMR zy$@W*5f{fZqy}|j!{YPWm7RZSoni_(0KnX%Ea3mqhh4^YPw_sjY8=}tQUte!=O6K` z<8x%u_3Go~7Os2^Q@2>SzFjm+ZgpwZ%-J9KE^x)_J+{Lhm{84u(!Mn_2k<+SnZ|6m z^y@f)2NhD}j#jyxk4ogUZya_PM@kPOm%T!4E0Glh)^h3|8^V{Cfb^pjkaFj)^_?$% z?QK{~?gylG$ilEZY9u8BUcXp{g`7l&(Y)S3$agiyb1SF8bL zfL^?wTpnaFs4RR)VZhDSio4;&^>(H^_RmdR^H#vE0{IxB$al+Dy||f-T0nf>%L)dO znVI&o%wew zf|sMoe(AFb?>a1FJr+*P^_}6R-Iizo5xPqo(=2i^BttdCtN1O`&|w^A&f<3_Q)a3b zc#dz(+gL;n0mk;gt^tWzjQmEXT|dsLj(!B$e(8`~dkI#5=|la}9&PmZ9GUf|MmEBj-c&C?7?E=jjn0#h z)Srs^D(9BTEzubw)(h-9Ch)2H03~x6f84_?0t^2)3v|QMn^3#9f5k^H|U?FNzP3esy?9eize-Xi5}zjDK6uNTU|}*vUEMhPqSUd zHF+N6fdZE?ve4BuvWU-!w;m{Q8MDh=#@KQg9E=O5+7lw=Q2w7ss0+*7MG1SaQ>5z^ z^(7Ym;}rG!J6@F^%T;{W}7V~D$d5W;DD3T#CeyjM~(28t%3%w~HWduU^YzdDO z;Z3kcrO3%d2;XrQza9+bN$y}xfvTdW%zP_UZydqI$mL$Coku0X(+e4eu!Lk8aq zc*H^tEKGECLFe_zT_H{sNM9_7UhMv3$YQjmvPn;@t z68ZQ`WHBGub5=)-MH?+T0TITuAm2tK5xOoz%E$qu-fn!5xL+5V|0v=_*k^<>&x1S1 zmGd9f{6humrOszAa6UbZTe9aVB;lqFk$Uj~tx9N<+;lrbzsk3y0<$J(vwv8L$X@=7 z6s_jBD*ZD_zbTnsAhMT$N}n(38A_(Y1*hxOg~m~Q3p$@PYSfuG=zLT+Y9`VyoqY2K z^Y@h-`8~Mx{_E{;`J-2;^%Z<`65pmbsZvzhq{_%>F(_;q;uQqxMr`u4BGK8wY(o&{ zTk9;_SK)*lG}@0hYD?e9l7^z2S&s+#|A!R%h`zaE0M=k{43#WG1`@S-zl=Oib!yMF zS03}zq*nDM;uv*SbU|(wgr1VB z!s9=ViF>TO@GyfVs$Z+|(74`d-A2Y9;}fb6v41>6^doSR6@)dFDV10E&;X7%5otv* zP#QFvwd&P8AR@Z!DjYOBhe*KZys}?q!6T&?UYL!fiiNN0TcM9H+EQoX* z>u2NB@C3?tY>jGu#pO+Ebdz^eQ|1SZN7wtQ|56;SuBak=h@Y;y$fBRKB##c}_1N&E zY&uC5F8qf0d*-I}vrtV&PSVGu+4KjBCM zL;7~w&hN8+%4NRFBO^v?X>-owF6GSqf$e9E;!f9PGuM~%v3MQ%UwKzdN1EP#;bBW! zbX4V$-H@+2MJo44p4%}T-gn;2^G#N;kFd&%~i;oqYNWpAZ8>BtNjP z`0#@dKH$W(7mv{Aa!D4-H-hBA;T~Gm5QG>~)ZYHRl&zPt+eq}x+Sy%1^01&&tNM^_E~S}OQs_Bqw674;**I($ zQ;u6B|E0=_y{uOCROfQ5rJVSdGMekdS?-zPH8(uegBH)HWR~}y%EL0UTGcJ_Qq$wT zS~FeBO)$G9^MWFmQKXyqips+>JG82cx)f7w{2#XJp$g zZmjV~g&eP>*%~Uwa@dJ1BrQHf$syyap5%+%K^l^zC3G(>lxa}pc9J3zy4>VrRj%Rk zYWzbFjfuToLQa#O;t~SW-7Ky<+>WxXE~for6%_qT{}G!*8?|$E?X;nFvootd^KFqY zMpR(as+9jkE}UuAuTc>vgGejCcBLOqKp#=QNR%==`DwYz1wv43nthD?S$z_LSMrmH z+U$7oP5D%*K6Ov|6ulo&9|p`?)%&tTE^V+M{9ar7u}rn5>P_Br*~$?6v3#-K1iRV3 zffxkaYu7}6C!~=hTl8wX=|wIMNwhGYzv=-h^sg(ao!lH>4e=bh@uutrOU&~Pyv__E z&Vg9Y+c^M+3ET$Eq4Cj!P?np`p{G=`@s#45LX&F~;`h+xXL%I1NDs;B^(onNc!Z)V z`8XwI>GCFqIeG28#;^Ld$ zby%Vo-t@wB`wIA!PW;BmQ09fx)&1?1O6{>ViTm5{+Kn~b0J`U0ZU99bY9f29qN+e@VDVKSJP=w;a|}kKAA#DZAH0`A=VlU8+#E@NdSXvUqX(M6R7CFSxwK zXm+qCru~E|>|b6f9WV}eS`R`kl$1$QSM0^9JSS1f?GW_QOGOu z=nZp`uh)r_k)l*YrHA)AxQ7&U7Vjx+CP^J!2bCZ>7{A^jGy!T zRp^?_UreNME0uBE#Fo&B>! zep#uY(Mb}P{BhLcZ_6KM@Os@QF?3jJhfCjqWbtj(r+Ve#N**hU5wGDi z!fuzFs>bJU`}r7tUNTj#mU@$W?JDlyU*((W;z} z0Y#!1K7|*PzfJL%Rk=3|Np;|kiN>0Bqo39EPPfd2Fg8LQ2yinX2aQ>z(Aym)dHca= zCZ`_+h&Y`SiwT86<;%K_Gxx@@pc6qv;Bfh}azTbRvR?8MVM*swkglz0j@56Bs3WHS zQLFyZK9O8(+$XLK3*(-u^eN(%S?AtRo;=*j17JurlR#aoR5oJ;BaC?FYmujM^~qty z?gkj##jr@xt2^@>A~}GW+Zc9Ph?e_(BIDftrJIy=8&yWS7T5wJBD>(aIVg(LNW5H1 z=$p{6be%9Lg%vLULsmzc_jX3Sa9N@1*r+ycK4K7p=yol3vf*=K(8X^r#&vC&^{{VJ z<<->N1s-ghE3PDiNMzC?XT~#htOwk673wz8X|?H=gOOuoqlRQU?skgY!7*hWE|)#F z59Ayn?zCInwh7!JehOvU^@I(3romZ=XnzOxcHW-=I!4vI$Y_6$M&oX*!P~72fy^zL zo#+!X9Q4|bi6g$SNoF`@8niHrhL(^5$_ zRed?{+%yyqWDF;Y6^q$$^z79BAQ2N^pNQ|3b*Y@6uwnHCZ)@`e`*b*B#%F{59n#V~ znsXb!W4zNEM8_K*-+`CQ0!^al>Z_-O!)WuMiSWDo*2sN#%`mwc0 zWDez`-NA$w4dHPD89?s>i|cq{tchpz&Pu1X+7JUgC7KIK{RvvfT3IP*0ct?xeqNhbt}jG0Jqv>TkZQzfe=`^vqGCA--FwnH)pYE@&|f!xN2_z!U5p!Ho+<)5E;Icno8F*iomEyu?( zg|d{(Wgd#B$b@~YJ+RNBRc%M6BwKfV1kA11>v!SzLrQTuf9A$k>eMYqF#Rc)D)7|i zwOT7qb=&UD_7=K>6AGedcI-Fdqwt%mFp{z89gmAv9a9@FmKAtxyV+~%+?b9&Q|BnG za|f@2B{RVwZ zu;WpWtOs{cSFK3TJ+|@jUA6&%e5FIZLw+3j^3`UtRgZMvJ%D+)ylsg`sWVBz+a8i_-b@*qu*dw}n5M7L@oBN((hL zbKE=9!{vyoQ#gnVe1OJqp&Z_Z>954#vN|yh3O%Z3NBEbhg;*TO{|0I()Zq$tGw_eA zkzbD>L>vGLqsJU8!eA()^lLTx>;&Q|KRNzx!vxQA#2kM@li~>cR=6xNK%G@ku07r8 z$i{zMeQS9&x24uH{&=7d3px_xPgl(Gx0ItGgif2|-%@dkny)Vtmg?oieDlcot8vCV zPp3K1R}j*dSZ`7qGmFS=jP2ttHU*iV%FS^sf3h-(#y>nX#Z~-`R=p7+G4c*KkPa4zN5;eEQ1c1a;tGa}GQ@2DU>|~!G%G>YbxYyZh?K7uCucb@{ufh_fRS(w9h<#@T!bVW4*((kf;tUU$kMk>sO zBgkyy_~5ku*|@#wUtrSK@wU6QY^iBdHuP#Q5UzIHHUXi%`ePSYrHI1ksAirpUDtDR zXybQ{Bxw%jITS4TBZ3e9s36XC+h$~YGd;m6RJDhyz{)mN75bKSa_*o=y*e2{ru)d; z$Vjpb<4PnnJA*4!Lx|b9iF_y*GGbDZakF^8)!e4CT!iN$cq;=ksieS;j#5VC?vf&J zmM7>QT;>U74tCqVF+o_zz%)4uw@8XkO!~o7%&vQEcMqN+1ttyd7#!)kIXD{}#s(N- zJ3I`7v)|4@F*w_t#x@xzd*E9J=Zmbd41wUYJB%S`7=?Lao1`;3xH!t2f~nVpP;QCG z(tr=1@(CepLCPeveXT}Ew^34i23O7Ff_Hc0&!lbzb}>+tC@C3?&V-;hqrj!+9UuK} z+Zy6-(79D|7LuXDtP;m2&ISPVTC>%Fxs0zFt0u61gp`evhcE~{e$4nVW)llswx4F3 z&B&O|X3V0U>U85`MRRVVNQ>N?%$vZVxCiqmb8vFh+=ENlaR$q{rSm^A1jsT`K9%!| zjTTIpyxl6_XRQIz18dSG*!5HPvO68IgJ zVUUV(p3p}2qs$W7luGhON+pM=Lj0k0S(@B1P$ka25u~V zWUe`;)TbchoUnKCc-z!-4$b+!%fkG+2;GH(fIlEt@k7Rkvg`L~6$JNalS+H2`g`Ey z9-IuLv+j_mwS$`_qTL1H#BG~;!PdET(m%__2w~6Jt&a<Wy%C)sOO~Z8%hqi-i<%)k_BY;_lJP<6-F zdhbh+m!Cr0+`+MI>vxIpgvB>b*t&X`u?gnY$5kTSMJ1PkkTBG-0*l*ruPS;SMeoZl z*Ph}Eohf(0qSaowN2?jHhWgvcXnv8D6spZ{Fk35!2isA(y@H!!@p`0tM+P6g77mFB__laS!MEYE6k3m^+9xo z+Gp$lauKCtVz}gzBeC#HLzJY{Enkgq!o&F1!TqD(NS;?Fs*?&ak`8Cjo+2j;i8@oi zyF1c~5$>5gTWN*qd_E_aaFcY`Sc47m)e?MADQqI)R~0fEU6vg#%iqO-71I)et8;DZ z8I>RL$~P_?R$ypfAPfGgG1;?ZCx!yA)7!U|Yfo^8w+^~kUU&dKgIFUy4z)~U>u;0p=UJmn}LQo{<+qL5P zGqA8QO%BZu7RB;kw}Ys_(U`ZJ9vheKO(#en7iMFFe$992mCDc6ZhVbqgTCB*ezbM!RlGX^m0Y61q>_MkWMBDBpS-GUulTF_+8( zvKRI|l;2yvF63(xpB?kbbOw7&x`7{R-56%os&FHg#*6PluDx3eF$Bb{j7uC+nds?1 zp_@wh>keLgVR<)Xzz3u5MAkl?vc5`IUG1#Wbv-mgLN!N*aSHT5kaw5 zZLRuZ^2h4z#+cmbjR|_C2ea0WBf?wqUFB?5T=^8_>)NYl{x|8q-P4G^q3SlP_5OEh zU7KBd^}cLPU3hUBXWN^`I;q;On*-JJFti5s_1!dAIHUP;)MB;X^l@1ht-@RJt-kGg!kxe>O95#_;1$<^P?^cJYj&L z=7&Lgr}?3(l?kFcE3-r*t<)@Ja<~ZLVu$Ffi6Y_S5FymOPi-zf<_X4E(haaeB%hhX zi3V$MoWz?xN06v1MizU_ZO!!!m&*};G7_cfbJk!GAEjRu>VfyuQ!*8}@c1QpxXZ8z zCYOb)Rciu7;D?wTkFhcz7}1p#l(Go2ZA70~$o&n+w=$6Cpp-Rx??Po_PS7ihlM|FB zuG4Z1CoBtOqGnLBCpbOk3f`QUs97k%Vl8TVdb{yVSQnz(LeF`S1|lQO!A>1-iT6`| zyVPZAkDN`qh?`EFj>&0zj42UWL?=(4FF9>LCSUY+m(WdE#PHB7Wxno<+^weR>clkN z)iFn9f-a(ik@aN3I!)Suo|&i!9KvIVXg4F`1*dcqQ2Q>4-buRLYN!z{NlM24l5r>B zptv7j(2YCX2fbG*s)-c9Q{1jqy(H_28BjnbTu``#M&r*yB;(v$BKBSWqkzJ)_8?p= zP~<{^Acs=i-KJ6phyZ@Dw+MAOB1AxlgOCh1(T`&JPhF|1fiy%HxI;rnD`+5%iV+f0 zD-KGG?>xoFw5mY>r8kW-VPZRa5RgEcFaIp9BG67<-7Kv!A zpvX}g)KdTfaANs6JjfCNzMiVbvHXJ=#fYf6MBmsd8(}YbnaB#r@)blEN~W?{{>FGF z_1!xY2ivo!d4PS2tnpi2!Az@5@X#s(1JX7a8Nmk zQH?FcA#1CtP~umL5B5W5FTBKu9D(J(^6HwpZi$EJFA0W%tBFki>%4Tp@q$hc73gzZFF zE^_uYyv#0{A;IhrcgS*aHhnI9Ck-yDsj)hTECp z3e5+vPzZUJ?kYSGZ0a3((SxtQz)$$<7iGS`zF2+w^%C`yz(#ul8~tUncXCc08}wVL zxYM^);oC+i&iaP)1ue1g=jW)`aq6`_{E>Pceh^VT%l0Q1VyJMQfNzi&!Z(CjM+qps*9DWwa#amE{K1ro= z;PhVLy6T?nS^ZtX$*@x&&))3{&S!#b=K?kBjO#|3R{K?me4eg5Nqo(Y>5_8Zz(8ZG z3;?r@#qNXJ z$PDxZ+x`13>@L?ZWKmWu-vX;SsV-%gblWPj#dY_!1-k8%*{r7rIc^ijMnZ#rqB!5H zGPFgH%I<77v)Ei)#Nph-+Dbq)h4yE_m|MK3W5?;^Pn|DcnH%68!>(ASXoW1CbIcN< zSrdiho)tc8_E9D8CaCO-R_Sc?r|~+=8LnHi#S2XBQPuYnZxNTCFdaF-@j%rr(_qC< z2|6uTmOdwwZ0^SPXpY$;O)F(6#P!n4WpYik&T^wVnkV6dr7hJZcW{{y1L9E2kNgwG zu&fcu_5!~;X|h1%pL~;5(rCtMx1fV5)PsIW7HiBw?yGLiuIOI+S>#o|94sGZ@t$(9 zygc2T8<>}8@pU7)VD8Ro{$Ya_!`X()qemMdvIceAo&8 z#o1lpzYoDn9RBaH6jkv5OpU|;CHzmwEMbNfXiM+57Rss-@G`su)MR{?XW80&^EPad zyoJm0jiip1@;0r!_99gvvRXQG<(L`f?bwcC+1R~Hx1QyI5bxHRiEhbA{;!7RmKgw+ zs{qquIlg{LFwrZApT?g!3^u@KsvOg52Pjxo&uEc}yhJ*Y9LpMJ$22`=4j1Au*(p-Q zVJowFf3KWB;r{vT{ldM8l=RlFbU+S56DKmAXIQ+avag3fsEo4;?_UaUzV9fA>mX0R zQga4EBX>QYS2G4OAhb#pnK{V2_Y``2h@ISi)G|>l=Gyn$(a)?z)10QiLq7SpFxpQ} zOqo`7U=lJb0X3?)M25EnA}-$&&fdsR@m&<20TYcv< z;T_gYtmoM%vUZqXy)T5{M2yG9xo6~zm1&9oJp3XbpcTkO&HP%mNZgUKTtFYAUnnSi?dgqcD^QsXx!C=-1 zfiJl&!vSkG)j-jKjhgu=_fFpWjnewfBxB&X0a;J@n!Xq~f-1IzUExw*!gazN$v(jF z)ZC^h+VH8}$l8D4k(fX=#3Cr@09&he(w)dy{)7V;3&u1Rh10}ZWE$V$%}S|4_|X>& zupdn^=1}~22S0^83(E5?o(=TiO4$Kj!9}t+#wHdCL8xH`rRgiEQvNM;2QPF5oj8RJ zYk^-&3K#PYC$Nn%k0U>E1wAEdo)xj|J;C$Y`enDqlwl*4+5^WpA>K(rPjGHF^!y?v zJCdkLHKIlU+1J4Qqd!pcCN>&wfzBY%p!Vv;HWGZhB^hrrL}5XJ(>369@RQkuW*u z*@L4^q05h@6@)IMbH$V(o708Mc3+8aXyk9So3gsDV^?sJ*JE5_ZyIfi+ENN=)eFhb z`WfSr%R{qyK`17MI>GD9;8n`uzc^5bAISibvV&bh4zzWVsr)iZ93StzRY`2j#oSw~ z`8rdLR1qD}YrsCdT(L++*kQoj_(az6Y6l!HeCzs`1@HF~*n6%aryCbI~3?It>;Vp1vG~#Vr6O z91MIxRz@GtCd*SXFS4%Xp@d(EzZj#CRw$no8z{U=UUY-%8a2ycrh-% zlE2Wc^Z5xs@)h;SNQvY!*6VDQyAM$7OT)>JSpICkqU1!^lTq_v^!>C$++X1{^{Ul0EKRK@_Cl7D52?rGqIk+VW{S7O9vq)b zkQHNmE;Ld|zc4tiCe@xy`SD6DUL&qw5e!F5?TuqxmX1PLh?&JgCn@H85VZk*C=&v_ zgB>^!1T=CEN5UMPOvLFlS#ViXL6%y}mocJv@rW-u-{9nO6CH%0XFQy)ZveO-%7gq9 z)X1}-rn(2YTrp3cQIGEuIY|x_xeUjqG~dmf5zKWFSUn?!>2U{V!RgHF?jlYMUP(+r z-RjsziAoo1b_K)*ve7=5~7M5Oku>}_3HZ{PEUM)_S7Tj!7&mva;@PDl};$v8u=r8w`zTh+Q&pn zs*#42RFP#7CkC_5RP29PtNxzch#8YvzwDfqoxFoeR&P^Pi=u`@Z9y#7UErv6 zElYkN0s`Vq4bNXAkoJ0(8<||-e>F`O%Oq=_iZC3$onB(yjmR|o#9)DogV2Fgx~SEZ zVj&v&;gI4%?qEL$Kv7QUoU4?J$s>^-7@E=0y`{;-3p)}glgJDV7tj~ExNxYN$%+%e z7!f%#Es>je3Lhi85dL~mMX1kj@x<~!gDShMLYaXM#ty2tQDqw5`&0(*Q+T1Iyhp59 z;Sf}4Xrn1|&tqNgZxM{=Z2v-L6;3#^o~MmCDLt>WZczpdswg;Bvq%zB=RO+GwS#EP zt>E=-Y#arf`9A)tue)|49`}^L;9xmAz@a~S9T#pGkwScT$kfBjvA2ivWSot^D|ClL zznw=8G-8qia-u6$?9H)Owf~@+4I+_Qn5Qk(3pjbOE}%6>EWY0U!x`QjJ*H{Z*W>R^ zTQOrE3*y%BrcgBaA@c`knz7HUiH8_2_b=V*Cj@*K4bzZy%3tWmGL_oF?*JoPw<)RM^9Kk&EB6*@j89QCMoF0j1!_^ZDeEev9meD|( ziOWgWF)T(OrZ=J_OHuh7C~hgQ8>R?{tu+jNk=JJ_ENQT*)z%l(OV+!pJyW7X*5Rd6 zpUBl{Hc#PNwp{X3GF~Cc3uhf)awtQW~K$*l{lMx(t3!m<+X2E1sRB* z#80FAo6d6<&z3afQ7iZ2Bu&IHCU&Z=ZR8P<)i3=mBaIHe3z*XVa$W_sWq3D%0ZB{C zQvAjgshSVB7MfR7@8PJQ#3U^U3MolVaTG6+7ZR2w6XH!JP)wQ}2BeUh8Z|jQo_rRR z2)5KL5VlXv8$g*QWd&5Pngw&Z%!0Yhg8NnoluugyG$O#%@~faU=YksV0zT0Hzbh`N z8ZEcHCPuVcaaAP$7WyFlEirRna_PUE4yw+RPX{l7-Z=QpO7~XCbeJJ${+Yrt&5-l{ zpSG*>e)Red5M)}0vd&cP(`lZ6bc``c&PCN9un?b%Y8EFZqDo6l#3RfA|GR3sq!X+n z_^6sew2zohcnmp<-OmGle7qOwfveKJ=V6cmg}gQ|Asq-m-7B6^C!@C1Bm(Mk$hqVz z7gsZ!XDhg8ZAuHnKS>nmPXTw(Bndzv)PjTB7yNWy@p9%d$NEZnqMQH26<__149UM) z@e<}*hEb*~nCyQv6_fvFRd+(>D@ZOFMpiZb6}cnB2%CeROg6F|f0toAq)>Vm)w)5) zR+@~w2)-+N=OcP|QcI=FEvt!@#PEy78MXE7qJ3A;BxinS~FdoteahVuLRe z;!~cO4^yaFEk|a#oFqt_Xm+7G*~;URCBAyi>_hvtgA%}1NujAiFSmtv1m#M(z$=Jj zcdnKLjq2VA=?MPxHFn4o=43%O*|h8Hu!yu4vZ38~P%1|W82&I@L=vD&Mng7*@JpYu z!e~KWRLx&eHqy%8k19gp!2~I>G=|zQKV93oO{11;-Ua5lZx8xh|bC$Hj-D zrp(eaZY;S6B}ArfkQN+=Zh`>wn4%dxDn2L0f8Ox7m^b0mdnj)Em-5_OJwI5eLO2*} z!hhA^9K+I1^m&ut5%WCaAMKq5Q-f#%64q;Af97cL3e4Kw%)u#02V(u|UBR=kWL4X` zqM!^`30Pp>>=quFL)Gzc8{TPTm1jFdza1E6MZ}+>cn6Vec86!HJW>^o`Lsm~gk~*& zYpgN5oAVOxB;(5Qb9GZ@UtZ|pcAR#(?>OX{xn)JSyKE9pt3Eu!Re$7CyQRTCv*Fb% z)6?w5O|Cnd+#$cb)Zo?7Rp$!%C$9M+wvw80WAXB1II8ZiFJF5@@3bS8FMp-HThhc9 z!kugO`qh!E@d9g1mP=()Q_nd8|@Qjg9JQKL*b>%X14`!AgOS4p@ zz&X?dQ(JxJLH~~|X->-)*UY+ctU&^a;exhV&%)bCOgZb(hu_1boqd+ReD~n>>33iK z#YNJi_C3mRLwJNz>NR${b*)pP3KY2d`wzT2`Xl=%yLah=`YT%s=*Pge3zDv%-)sy+imlF`BG z%A#^RjCI8g;u>g@HQi}hOKfMOxT)N~p`^U_AuEQs?={@ja;Nszk@`J77`F1XEokD% zo5eMlEmY9&7ey^NC~{c4>C5jl<$TlSypoFCbdVbwDVefWlf{kY{zmHeT631IdHoMh z#3S5axcrlAG9$cjr)1BiCP+PJwtUEZpz*-xSF6TyrJmenMs00vyxbt}!@XHK{tQZ; zH}k+tl6_xJVAq1skU8Z=2h4hUQ_lxd&nbb=k5f-^i>gOkCOC@MbMDNRm;NGoh`>vp zYmCO?&E@{}3eY~5x=^OSxZc0E1Wny3`0}*QkQ055v*t6O9YNi2nESprD7QqiYZU1S zw1+$y6N}3tmf#06InZE0KSbguPRXw;fOyQ}_+-Cjl>_U3Smb)hCG++HEii@Y&Afe)No#*CBQi=(p);F}HxKp02KC~Z8&$=7v^d^2ni%L$ zmMw%(Cd-AOpILYsa2BcwQ5?@xpwFx`J;jC3BfFU=QfOHl$~B6c75+~HqSJ3!euhA_ zMuh$UR}D9t4M%AB3|7!m^__3U^Eo3Gso!+H8t$TtL*;w zOB}URtpk?J71GG}g2>9_&+%N53xXfEzm^&K9Ay+Am&r#>uWY=NVX(iJ64%14@cAjvpLgymv0mgwM*vlhCW}rUPbRg|?M5SG#6~oL>*7^F$W za)%U;vp{$pK4P`Q{k^`@>{ca~bMYK~GqrojH%$Hp=T|Cn0Fs+@AGTBrvZI+8ixK4D z{Dje`T)lVE-#Byg5SqHs-0bkX^uQ&Co^l*f0qlGI4BT^poD}&uD>kkRLgUPyZ zJ5&EB+|H|WB~um$1wBE*R1aQWUOVvfe_(AISp{e=a_9)xLVq}aaH4(3$bmX1x&s>q&6ZMGS6^3q- zWbYQ(3k3{0BJl>yaY$wX@zC#O&B-NxvrpAlzvK#Kec+YM<`JLQ(Ag&IZ}u#~`rk@k z)w5Y0JyU6_XP?5|i%u5l%NZfjUc@T}Ugw1;nctZ=$$_{T33P5FjsXW_Z?2n7a`{`Uq;5)ZGl7|aa z&#T2+)DyfH5S*%*Xw8(lsClq3?FGN!L?^K2Z&MGg(brNZTw3z_3p{on&@f;e#qhUz z+|S<%O*oNUrLa(uU5vKM<7q6hiZkoO-E!-M-5?Oh2v`BXQcLuHTNvW#(E9KxxowG@xrv;q#d@a}(@cv~R0byMgsA3*C9dU3 z@K?}*KggB}TB3Y<|BrF_eD638pH>g8(Z8n1pSzIZ(9q|0XQf5F(3sBWH5PW68efjx zBA*dOx?1ERxdFsF5hFl`fb)rN^s~NBL@%z!t&f%q=a|$FyMhY|oyx%tpF(&qaWbg7 zCF(M6DRIS!htBNI6Jyo8tp&K!Cdeoam3}QIkeA2LQ~rl8PV3>-m6mv)ugy)gMAYsD zM4UXh%Hq8?@+dH-w5JlW%Z{fHj@;cjUG84HiW~J%=EWqy&xfTi+;94l>QIPFk2!Lc z;8#j~>uHOgW1*_}l`wmB`AH>Efo6O(i=4c+${2=*e#`|B5j}_HmCtSRi-_Y8zw&Q7 zQqcq<(!~`YH^RhyvjbZ>{_#7jFfFZBzR#27gwRmxkOgm&k`930ycN>U?UF)N8cdS#kJC{6kQ}KKk{^69m2CBqNmnRDu@LGdKZ<@~3i}dwIlLK| zw?fmPVLYhGCE(O>7L7%oqBiU=YOoj-1-OD3)CCVQaLGG359Xa4#mDki4rzrLn&WRY z@riEg&0w7cB9hh6#s+TxxQ;oN?{Y=FnXx0D9bjk<`QQf3J#t zr$ms|oZ`&E7x5SWsfi%Mz-0M^XnN=cUq}`2suJNEYEk=-+Hd^a$Ma1LjIeMOGIUF} ze?eB7Zww(XefRm1OlURFP_cgj=i?f2f#b*Pk5;o=J&DR&uBiAIbnmIvh;G`ypeIk) z@RVTJCV+KFPO-Q#%g`Pc9##)d$ZN{9n8F;)_l+?H5@GWRzIV>-O3hq~5ILQc8ff zY6*;@hpy{RU;*yRq0~F5R5xK6QzT{zqt$;Ulgbci#6}(N_CV=Dh2e;>O-i7JUl>)K zt0Rr!kB%Ki0NIWlO74F~9-;V&nf}^2lN<$3%w%-V^!!OPP3xTL<&$O_(K(YiR5`J^ z(>rHsBvZ$B6z7iudkft#a(%U>=|&xb&TzRb`P0k}cHhniIgGyr(I%gjz}>H?Z1N zi#tRcl-gpB_V6ttYEEsjG_s9sD*snq^V5PJ&!5u5<&i^xf>!k!i?(!Zy0&y=hJEHH zQyA0J5z76=7>@CF%SIf}<0N@!w=tmshTYicEc(>4$q^dx3x~1EQM669_#0^vwzY55 zXdw~M3j~sC|I*5?y6h@QPp%-w?mse33zU-O9m(bt&AJqL2RPCqqj++|0rdr>u_+*J zOoEgNNSS`S1z#OuKx!3`{C1Z`zvWRXL4Q(`f79f&JYWOW&c(PUHkOb`614EA6I-ZF zwD8NW`Dx+jC$=y&vO7^?QP&c*u=vClsuKAh>6)Jwo;b0E!I2s=%8HxWpk{TrXDHXt zGPBgP$XH_zgtJDyqp043Z~IKY(c&noQ#46o_6BK%W!BH$R34w$GOyzkduVc<$ug^w z%r4}#8ye#OEp?>S?_vD&Vt-kL7Us|O6-vN}X09q>mJTBQrMi(@0v}wGEjwdlk4QO8X{S

    vc5HEzF@kBy^`|*EGQ=}@PDYEeYHBA{# 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

    0sCOI_jtXCi7Zd8_Ij*tPZ- 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

    #sM&#eDTD`A-E=@6 zX!Ty2FDaBS>e(e9iJfU(w0_0(!t>Pni1sboRpB&|qOD)K*61u|V0dsvJ)3AymYu(X2a;(wFW)X4z~j`V6aJba8#j{i>cy-HZ?d7rLnGQ;riN zlbEW&4XaNDUsd-&o_}|xT!HDXe@@lz_owCV$w}2?SsR@mGb1k6U$^@#(}oA$`K5cf zTVn59_acimNg9jxLXqjQzHI-{)u7Wuu`cWSNy~tU$ZA!cWr$9@SFE;W`MT4lMPD>r zt+&g!8QsEQf7V{@nMmb9nJfZz)tRo+AUBNgpxvZ zw$-m>8Q7=E(`n4d(b$k{rNfEv7<2w?YM=x?l$I|uW>XZs#|X|zT1?mTngA%SF7DWD6e*z28~eK6xgvuOwC45FcrGj z@*8Oi^=q^9i)FzJ*%roHP}nr_p^V=9-`}E!U*qr3*qUDcx_RNQf7^cUF7n&vzrV|y z-{jAgzp~}s^^@k0dHv@)?_=IK%YSFfyX&W&-~UGE{nJkQ|7^><>nEMxcgz1a-~X>) z{9^6e|8ra3UETfvtgWZp{+!SMB7d&@$lbtRe{Ks(A7$)Z`5*9F{w?{FTe|W;{|oZz zXymT{$F|3OYU*&W<@yzWzi71okN%4J)?I(kydAmryZgB7Kjr)X*C>DfS4{zT)kgD? zdq%GPw%XC}@O22y<{NkYY-QfN`@8b4|Nq>Ue`tO-`h(vwFWlArPRh$%?Uw(y zd?w@S>K}c}8~OLG{$IVMt){}JCv``!J2{~J@@UH|0Y zRYmoM8#njqf8#~7{C9unFX>nA`ul&~{nA{!_x~TZ{IA(_tev*!JO_OEUE z-!<1CyNRKt>+-Iizu#&9=-=4;erK-VwUX?Q~JU|L?Z^pPcF2(I--dIqLfD versions.yml "${task.process}": - python: \$(python3 --version | sed 's/Python //g') + msakit: 0.0.1 END_VERSIONS """ @@ -42,7 +37,7 @@ process SPLIT_MSA { cat <<-END_VERSIONS > versions.yml "${task.process}": - python: \$(python3 --version | sed 's/Python //g') + msakit: 0.0.1 END_VERSIONS """ } From 735a55cae56fc74ddeba9ec0af8a438b7adc2e73 Mon Sep 17 00:00:00 2001 From: Ziad Al-Bkhetan Date: Mon, 13 Oct 2025 13:47:36 +1100 Subject: [PATCH 28/70] Add files via upload --- bin/msakit | Bin 935504 -> 1108048 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/msakit b/bin/msakit index c1ee5da8cec479238b0e0c3fdfac8d0972b7de19..0f4aae0e05a6404e943582aa1decace6063e341d 100755 GIT binary patch literal 1108048 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�H_V>b~A^juBuV0g7BXig3r0K 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ℑ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

    =^8&nNQ?K^3c0)bjw;4Jdy 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

    vc5HEzF@kBy^`|*EGQ=}@PDYEeYHBA{# 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

    0sCOI_jtXCi7Zd8_Ij*tPZ- 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

    #sM&#eDTD`A-E=@6 zX!Ty2FDaBS>e(e9iJfU(w0_0(!t>Pni1sboRpB&|qOD)K*61u|V0dsvJ)3AymYu(X2a;(wFW)X4z~j`V6aJba8#j{i>cy-HZ?d7rLnGQ;riN zlbEW&4XaNDUsd-&o_}|xT!HDXe@@lz_owCV$w}2?SsR@mGb1k6U$^@#(}oA$`K5cf zTVn59_acimNg9jxLXqjQzHI-{)u7Wuu`cWSNy~tU$ZA!cWr$9@SFE;W`MT4lMPD>r zt+&g!8QsEQf7V{@nMmb9nJfZz)tRo+AUBNgpxvZ zw$-m>8Q7=E(`n4d(b$k{rNfEv7<2w?YM=x?l$I|uW>XZs#|X|zT1?mTngA%SF7DWD6e*z28~eK6xgvuOwC45FcrGj z@*8Oi^=q^9i)FzJ*%roHP}nr_p^V=9-`}E!U*qr3*qUDcx_RNQf7^cUF7n&vzrV|y z-{jAgzp~}s^^@k0dHv@)?_=IK%YSFfyX&W&-~UGE{nJkQ|7^><>nEMxcgz1a-~X>) z{9^6e|8ra3UETfvtgWZp{+!SMB7d&@$lbtRe{Ks(A7$)Z`5*9F{w?{FTe|W;{|oZz zXymT{$F|3OYU*&W<@yzWzi71okN%4J)?I(kydAmryZgB7Kjr)X*C>DfS4{zT)kgD? zdq%GPw%XC}@O22y<{NkYY-QfN`@8b4|Nq>Ue`tO-`h(vwFWlArPRh$%?Uw(y zd?w@S>K}c}8~OLG{$IVMt){}JCv``!J2{~J@@UH|0Y zRYmoM8#njqf8#~7{C9unFX>nA`ul&~{nA{!_x~TZ{IA(_tev*!JO_OEUE z-!<1CyNRKt>+-Iizu#&9=-=4;erK-VwUX?Q~JU|L?Z^pPcF2(I--dIqLfD Date: Thu, 16 Oct 2025 11:56:02 +1100 Subject: [PATCH 29/70] update collect confidence --- bin/collect_confidence.py | 183 ++++++++++++++++++++++++++++ modules/local/collect_confidence.nf | 107 ++-------------- workflows/wisps.nf | 5 +- 3 files changed, 197 insertions(+), 98 deletions(-) create mode 100755 bin/collect_confidence.py diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py new file mode 100755 index 0000000..a8b27f8 --- /dev/null +++ b/bin/collect_confidence.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python3 + +import os, sys +import json +import csv +import statistics +from pathlib import Path +from typing import Any, Dict, Iterable +import argparse + +def flatten_deep( + data: Dict[Any, Any], + *, + sep: str = "_", + index_lists: bool = False, # set True to flatten lists/tuples by index + keep_empty_dicts: bool = False +) -> Dict[str, Any]: + """ + Recursively flattens nested dictionaries by joining keys with `sep`. + - Dict keys at any depth are converted to strings in the output keys. + - If `index_lists` is True, lists/tuples are traversed and indexed. + - If `keep_empty_dicts` is True, empty dicts become key -> {} (else skipped). + """ + flat: Dict[str, Any] = {} + + def _walk(prefix: str, obj: Any) -> None: + # dict -> dive deeper + if isinstance(obj, dict): + if not obj: + if keep_empty_dicts and prefix: + flat[prefix] = {} + return + for k, v in obj.items(): + k_str = str(k) + new_key = f"{prefix}{sep}{k_str}" if prefix else k_str + _walk(new_key, v) + return + + # list/tuple handling (optional) + if index_lists and isinstance(obj, (list, tuple)): + if not obj: + # represent empty list if desired; default: skip + return + for i, item in enumerate(obj): + new_key = f"{prefix}{sep}{i}" if prefix else str(i) + _walk(new_key, item) + return + + # leaf value -> record it + if prefix == "": + # top-level non-dict without a key path; use a default name if needed + flat["_"] = obj + else: + flat[prefix] = obj + + _walk("", data) + return flat + +def extract_boltz_results(json_files, samples, output_csv): + rows = [] + all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] + writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + writing_keys_extra = set() + # First pass: read and collect keys + cntr = 0 + for file in json_files: + with open(file) as f: + data = json.load(f) + flat_data = {"id": samples[cntr]} + cntr += 1 + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict): + for sub_key, sub_value in value.items(): + flat_data[f"{key}_{sub_key}"] = sub_value + writing_keys_extra.add(f"{key}_{sub_key}") + else: + flat_data[key] = value + rows.append(flat_data) + + # Write to CSV + + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=writing_keys + sorted(writing_keys_extra)) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in writing_keys}) + +def extract_colabfold_results(json_files, samples, output_csv): + def parse_colabfold_metrics(json_file): + with open(json_file, "r") as f: + data = json.load(f) + + result = {} + for key in ["iptm", "max_pae", "pae", "ptm", "plddt"]: + if key not in data: + result[key] = None + continue + + if key == "plddt" and isinstance(data[key], list): + # Compute mean for list + result[key] = statistics.mean(data[key]) if data[key] else None + else: + # Take value directly + result[key] = data[key] + + return result + + rows = [] + all_keys = ["id", "plddt", "ptm", "iptm", "max_pae"] + writing_keys = all_keys + cntr = 0 + for file in json_files: + flat_data = parse_colabfold_metrics(file) + flat_data["id"] = samples[cntr] + cntr += 1 + rows.append(flat_data) + + # Write to CSV + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=writing_keys) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in writing_keys}) + +def extract_alphafold3_results(json_files, samples, output_csv): + rows = [] + all_keys = ["chain_iptm","chain_pair_iptm", "chain_pair_pae_min", "ptm", "iptm", "chain_ptm", "fraction_disordered", "has_clash", "ranking_score"] + writing_keys = ["id", "ptm", "iptm", "fraction_disordered", "has_clash", "ranking_score"] + writing_keys_extra = set() + # First pass: read and collect keys + cntr = 0 + for file in json_files: + with open(file) as f: + data = json.load(f) + flat_data = {"id": samples[cntr]} + cntr += 1 + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict) or isinstance(value, list): + sub_data = flatten_deep(value, index_lists=True) + for sub_key, sub_value in sub_data.items(): + flat_data[f"{key}_{sub_key}"] = sub_value + writing_keys_extra.add(f"{key}_{sub_key}") + else: + flat_data[key] = value + rows.append(flat_data) + + # Write to CSV + final_writing_vals = writing_keys + sorted(writing_keys_extra) + with open(output_csv, "w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=final_writing_vals) + writer.writeheader() + for row in rows: + writer.writerow({key: row.get(key, "") for key in final_writing_vals}) + + + +def main(): + parser = argparse.ArgumentParser(description="Collect confidence scorer generating by different models..") + parser.add_argument("-i", "--input", help="Path to input directory containing all json files") + parser.add_argument("-o", "--output", default="output_msa", help="output CSV file") + parser.add_argument("--model", default="boltz", help="model generating the input files can be one of [boltz, alphafold3, and colabfold]") + + args = parser.parse_args() + json_files = [str(f) for f in Path(args.input).glob("*.json") if f.is_file()] + + if args.model.lower() == "boltz": + samples = [Path(p).name.split("_")[1] for p in json_files] + extract_boltz_results(json_files, samples, args.output) + elif args.model.lower() == "colabfold": + samples = [Path(p).name.split("_")[0] for p in json_files] + extract_colabfold_results(json_files, samples, args.output) + elif args.model.lower() == "alphafold3": + samples = [Path(p).name.split("_")[0] for p in json_files] + extract_alphafold3_results(json_files, samples, args.output) + + print(f"CSV file created at: {args.output}") + +if __name__ == "__main__": + main() diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 3199154..00b78c9 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -9,7 +9,7 @@ process COLLECT_CONFIDENCE { input: tuple val(meta), val(samples) - path(json_files) + path("input_json_files/*") output: tuple val(meta), path ("*confidence_scores_full.csv"), emit: confidence path "versions.yml" , emit: versions @@ -21,103 +21,16 @@ process COLLECT_CONFIDENCE { def args = task.ext.args ?: '' """ - #!/usr/bin/env python3 + collect_confidence.py \\ + --input input_json_files \\ + --model "${meta.model}"\\ + --output "${meta.model}_confidence_scores_full.csv" - import os, sys - import json - import csv - import statistics - - # Folder containing the JSON files - output_csv = "${meta.model}_confidence_scores_full.csv" - - # Collect all JSON files - json_files = ["${json_files.join('", "')}"] - samples = ["${samples.join('", "')}"] - - def extract_boltz_results(json_files, samples, output_csv): - rows = [] - all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] - writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] - writing_keys_extra = set() - # First pass: read and collect keys - cntr = 0 - for file in json_files: - with open(file) as f: - data = json.load(f) - flat_data = {"id": samples[cntr]} - cntr += 1 - for key, value in data.items(): - if key not in all_keys: - continue - if isinstance(value, dict): - for sub_key, sub_value in value.items(): - flat_data[f"{key}_{sub_key}"] = sub_value - writing_keys_extra.add(f"{key}_{sub_key}") - else: - flat_data[key] = value - rows.append(flat_data) - - # Write to CSV - - with open(output_csv, "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=writing_keys + sorted(writing_keys_extra)) - writer.writeheader() - for row in rows: - writer.writerow({key: row.get(key, "") for key in writing_keys}) - - - - def extract_colabfold_results(json_files, samples, output_csv): - def parse_colabfold_metrics(json_file): - with open(json_file, "r") as f: - data = json.load(f) - - result = {} - for key in ["iptm", "max_pae", "pae", "ptm", "plddt"]: - if key not in data: - result[key] = None - continue - - if key == "plddt" and isinstance(data[key], list): - # Compute mean for list - result[key] = statistics.mean(data[key]) if data[key] else None - else: - # Take value directly - result[key] = data[key] - - return result - - rows = [] - all_keys = ["id", "plddt", "ptm", "iptm", "max_pae"] - writing_keys = all_keys - cntr = 0 - for file in json_files: - flat_data = parse_colabfold_metrics(file) - flat_data["id"] = samples[cntr] - cntr += 1 - rows.append(flat_data) - - # Write to CSV - with open(output_csv, "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=writing_keys) - writer.writeheader() - for row in rows: - writer.writerow({key: row.get(key, "") for key in writing_keys}) - - - - if "${meta.model}".lower() == "boltz": - extract_boltz_results(json_files, samples, output_csv) - elif "${meta.model}".lower() == "colabfold": - extract_colabfold_results(json_files, samples, output_csv) - elif "${meta.model}".lower() == "alphafold3": - extract_alphafold3_results(json_files, samples, output_csv) - - print(f"CSV file created at: {output_csv}") - - with open ("versions.yml", "w") as version_file: - version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + generate_comparison_report.py: \$(python3 --version) + END_VERSIONS """ stub: diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 1c093c9..12aaf59 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -466,7 +466,10 @@ workflow WISPS { .map{"${it[0]},${it[1] != null ? it[1] : ""},${ it[2] != null ? it[2] : ""},${ it[3] != null ? it[3] : ""}\n"} .toSortedList() .flatten() - .collectFile(name: 'ipsae_scores.csv', seed: "Sample,boltz_ipsae,colabfold_ipsae,alphafold3_ipsae\n") + .collectFile( + storeDir: "${outdir}/ipsae", + name: 'ipsae_scores.csv', + seed: "Sample,boltz_ipsae,colabfold_ipsae,alphafold3_ipsae\n") .set{ch_ipsae_scores} ch_boltz_confidence From b9bd7f2dd48e4877e620e79e79ae60f06e1796cb Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 27 Jan 2026 14:00:41 +1100 Subject: [PATCH 30/70] updating interaction creation --- conf/gadi.config | 19 ++- conf/modules.config | 2 +- .../local/data_convertor/boltz_fasta/main.nf | 1 - .../data_convertor/create_interactions.nf | 59 ++++++++ nextflow.config | 2 +- subworkflows/local/msa.nf | 2 + workflows/wisps.nf | 143 +++++++++++------- 7 files changed, 162 insertions(+), 66 deletions(-) create mode 100644 modules/local/data_convertor/create_interactions.nf diff --git a/conf/gadi.config b/conf/gadi.config index 8bcc1f2..c26600d 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -23,12 +23,18 @@ params { // Input data outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - samplesheet2 = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" + boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" + boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" + boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" + + //colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" - colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" +colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" + + alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" uniref30 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/uniref30_2302/" use_gpu = true @@ -43,12 +49,12 @@ process { withName: 'MMSEQS_COLABFOLDSEARCH' { memory = 300.GB - time = 16.h + time = 24.h } withName: 'RUN_BOLTZ' { cpus = 12 queue = "gpuvolta" - time = 10.h + time = 24.h memory = 24.GB cpus = 12 gpus = 1 @@ -61,7 +67,10 @@ process { resourceLimits = [ cpus: 1000, memory: '2000.GB', - time: '24.h' + time: '48.h' ] } +executor.pollInterval = '5 sec' +executor.queueStatInterval = '1 min' +executor.submitRateLimit = '20min' diff --git a/conf/modules.config b/conf/modules.config index 3451468..986e8c2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -29,7 +29,7 @@ process { withName: 'MMSEQS_COLABFOLDSEARCH' { memory = 300.GB - time = 16.h + time = 48.h def args = "" if (params.colabfold_search_args){ ext.args = "${params.colabfold_search_args}" diff --git a/modules/local/data_convertor/boltz_fasta/main.nf b/modules/local/data_convertor/boltz_fasta/main.nf index 200125a..2e8cfc7 100644 --- a/modules/local/data_convertor/boltz_fasta/main.nf +++ b/modules/local/data_convertor/boltz_fasta/main.nf @@ -113,7 +113,6 @@ process BOLTZ_FASTA { with open ("versions.yml", "w") as version_file: version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) - ${args} """ stub: diff --git a/modules/local/data_convertor/create_interactions.nf b/modules/local/data_convertor/create_interactions.nf new file mode 100644 index 0000000..e15862f --- /dev/null +++ b/modules/local/data_convertor/create_interactions.nf @@ -0,0 +1,59 @@ +process CREATE_INTERACTIONS { + tag "all_run" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + val(ids) + val(types) + val(seqs) + + output: + path ("interactions.fasta"), emit: interactions + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + #!/usr/bin/env python3 + import os, sys + seqs = [${"\"" + seqs.join('", "') + "\""}] + ids = [${"\"" + ids.join('", "') + "\""}] + types = [${"\"" + types.join('", "') + "\""}] + done_singles = set() + n = len(seqs) + with open("interactions.fasta", "w") as target_interactions: + for i in range(n): + for j in range(i + 1, n): + if types[i] == "protein" and types[j] == "protein": + target_interactions.write(f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{seqs[j]}\\n") + elif types[i] == "protein": + if ids[i] not in done_singles: + target_interactions.write(f">{ids[i]}\\n{seqs[i]}\\n") + done_singles.add(ids[i]) + elif types[j] == "protein": + if ids[j] not in done_singles: + target_interactions.write(f">{ids[j]}\\n{seqs[j]}\\n") + done_singles.add(ids[j]) + + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch interactions.fasta + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/nextflow.config b/nextflow.config index 84de3cf..ae096a2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -38,7 +38,7 @@ params { alphafold3_params = null spire_db = null - colabfold_uniref30_prefix = "colabfold_uniref30/uniref30_2302_db" + colabfold_uniref30_prefix = "uniref30_2302/uniref30_2302_db" colabfold_envdb_prefix = "colabfold_envdb_202108/colabfold_envdb_202108_db" use_spire_db = false colabfold_search_args = null diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf index 5759134..dbf7099 100644 --- a/subworkflows/local/msa.nf +++ b/subworkflows/local/msa.nf @@ -74,6 +74,8 @@ workflow MSA { ) ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) + MMSEQS_COLABFOLDSEARCH.out.a3m.view() + ch_input.fasta.view() ch_a3m = ch_a3m.mix( ch_input.fasta.mix(ch_input.yaml) .map{[it[1].baseName, it[0]]} diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 12aaf59..a0735bf 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -27,7 +27,6 @@ include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_wisps_pipeline' -include { MSA } from '../subworkflows/local/msa' // // LOCAL MODULE: Boltz @@ -38,7 +37,8 @@ include { COLABFOLD_BATCH } from '../modules/local/colabfold_batch' include { BOLTZ_FASTA } from '../modules/local/data_convertor/boltz_fasta' include { SPLIT_MSA } from '../modules/local/msa_manager/split_msa' include { IPSAE } from '../modules/local/ipsae' - +include {CREATE_INTERACTIONS} from '../modules/local/data_convertor/create_interactions' +include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' // // FUNCTIONS @@ -105,46 +105,58 @@ workflow WISPS { } } log.info "Used Interactions (Sorted): ${interaction_mode.join(',')}" - ch_samplesheet.map{it[0]} - .combine(ch_samplesheet.map{it[0]}) - .map{[ - "id": [it[0]["id"], it[1]["id"]].min() + "-" + [it[0]["id"], it[1]["id"]].max(), - "group": [it[0]["group"], it[1]["group"]].min() + "-" + [it[0]["group"], it[1]["group"]].max(), - ]} - .filter{ it["group"] in interaction_mode || interaction_mode[0] == "all-all"} - .unique() - .set{ch_unique_pairs} ch_samplesheet - .combine(ch_samplesheet) - .map{[ - [ - "id": [it[0]["id"], it[2]["id"]].min() + "-" + [it[0]["id"], it[2]["id"]].max(), - "group": [it[0]["group"], it[2]["group"]].min() + "-" + [it[0]["group"], it[2]["group"]].max(), - ], - [it[0], it[2]], - [it[1], it[3]], - ]}.set{ch_pairs} - - ch_pairs - .join(ch_unique_pairs) + .multiMap{ + if (it[1].extension == "fasta" || it[1].extension == "fa") + {seq = getFastaSequences(it[1].text).sequence.join(":")} + else if (it[1].extension == "yaml" || it[1].extension == ".yml") + {seq = getYamlSequences(it[1].text).sequence.join(":")} + else if (it[1].extension == "json") + {seq = ""} + + ids:it[0].id + types: it[0].type + seqs: seq + }.set{ch_raw_sample_sheet} + + + CREATE_INTERACTIONS( + ch_raw_sample_sheet.ids.collect(), + ch_raw_sample_sheet.types.collect(), + ch_raw_sample_sheet.seqs.collect() + ) + + ch_samplesheet + .collect(flat: false) + .flatMap { data_ls -> + def list = data_ls.toList() + def out = [] + for (int i = 0; i < list.size(); i++) { + for (int j = i + 1; j < list.size(); j++) { + //print("${list[i]} - ${list[j]}") + if ("${[list[i][0]["id"], list[j][0]["id"]].min()}-${[list[i][0]["id"], list[j][0]["id"]].max()}" in interaction_mode || interaction_mode[0] == "all-all") + { + out << [ + [ + "id": list[i][0]["id"] + "-" + list[j][0]["id"], + "group": list[i][0]["group"] + "-" + list[j][0]["group"] + ], + [list[i][0], list[j][0]], + [list[i][1], list[j][1]], + ] + } + } + } + out + } .set{ch_interaction_in} + + ch_interaction_in.count().subscribe{print("total final: ${it}")} + ch_interaction_in .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} - .collectFile{ - seqs = [] - for (j in [0, 1]){ - if (it[2][j].extension == "fasta" || it[2][j].extension == "fa") - {seqs.add(getFastaSequences(it[2][j].text))} - else if (it[2][j].extension == "yaml" || it[2][j].extension == ".yml") - {seqs.add(getYamlSequences(it[2][j].text))} - else if (it[2][j].extension == "json") - {seqs.add("")} - } - [ "${it[0].id}.fasta", ">${it[0].id}\n${seqs.collect{it.sequence.join(":")}.join(":")}\n" ] - } - .map{[["id": it.baseName], it]} .set {ch_protein_pairs} ch_interaction_in @@ -158,16 +170,25 @@ workflow WISPS { .set{ch_single_protein} //ch_protein_pairs.view() - MSA ( - ch_protein_pairs - .mix( - ch_single_protein - ), + + MMSEQS_COLABFOLDSEARCH ( + CREATE_INTERACTIONS.out.interactions.map{[["id": "all_run"], it]}, ch_colabfold_db, - ch_uniref30, - mmseqs_batch_size + ch_uniref30 + ) + ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) + + MMSEQS_COLABFOLDSEARCH.out.a3m + .map{it[1]} + .flatten() + .map{[it.baseName, it]} + .cross( + ch_protein_pairs + .mix(ch_single_protein) + .map{[it[0].id, it[0]]} ) - ch_versions = ch_versions.mix(MSA.out.versions) + .map{[it[1][1], it[0][1]]} + .set{ch_a3m} // Prepare interactions for boltz ch_boltz_data = Channel.empty() @@ -175,12 +196,26 @@ workflow WISPS { ch_boltz_interactions_in = Channel.empty() if ("boltz" in tools.split(",")){ - ch_split_msa_in = MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + ch_a3m + .join(ch_protein_pairs.map{it[0]}) + .set{ch_split_msa_in} ch_boltz_interactions_in = ch_interaction_in } + split_batch_id = 0 + SPLIT_MSA( + ch_split_msa_in + .map{it[1]} + .buffer( size: mmseqs_batch_size, remainder: true ) + .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}-${it.size()}"], it]} + ) + + ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) + // Adding non protein for boltz - ch_boltz_data = ch_boltz_data.mix(ch_boltz_interactions_in + ch_boltz_data = + ch_boltz_data + .mix(ch_boltz_interactions_in .filter{it[1][0].type != "protein" && it[1][1].type != "protein"} .map{[it, ["", ""]]} ) @@ -196,7 +231,7 @@ workflow WISPS { [it[1][1], it] } } - .combine(MSA.out.a3m.filter{it[0].type == "protein"}) + .combine(ch_a3m.filter{it[0].type == "protein"}) .filter{it[0] == it[2]} .map{ if (it[1][1][0].type == "protein") @@ -205,15 +240,6 @@ workflow WISPS { [it[1], ["", it[3]]] } ) - split_batch_id = 0 - SPLIT_MSA( - ch_split_msa_in - .map{it[1]} - .buffer( size: mmseqs_batch_size, remainder: true ) - .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}-${it.size()}"], it]} - ) - - ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) SPLIT_MSA.out.msa_csv .map{it[1]} @@ -308,7 +334,7 @@ workflow WISPS { ch_colabfold_interaction_in = Channel.empty() if ("colabfold" in tools.split(",")){ colabfold_batch = 0 - MSA.out.a3m.join(ch_protein_pairs.map{it[0]}) + ch_a3m.join(ch_protein_pairs.map{it[0]}) .map{it[1]} .buffer( size: analysis_batch_size, remainder: true ) .map{ @@ -319,6 +345,7 @@ workflow WISPS { ch_colabfold_interaction_in } } + //ch_colabfold_interaction_in.view() COLABFOLD_BATCH( ch_colabfold_interaction_in, @@ -346,7 +373,7 @@ workflow WISPS { af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ - MSA.out.json.join(ch_protein_pairs.map{it[0]}) + ch_a3m.join(ch_protein_pairs.map{it[0]}) .map{it[1]} .buffer( size: analysis_batch_size, remainder: true ) .map{ From 3208b4c7e216133074028ceab1c4be3b29ee0b81 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Wed, 25 Feb 2026 15:26:42 +1100 Subject: [PATCH 31/70] interaction creation and limiting to neighbours --- README.md | 15 ------- conf/gadi.config | 43 +++++++++++-------- conf/modules.config | 4 +- docs/usage.md | 2 +- main.nf | 3 +- .../data_convertor/create_interactions.nf | 37 +++++++++++----- nextflow.config | 8 ++-- workflows/wisps.nf | 18 +++++--- 8 files changed, 73 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 28b6924..6514708 100644 --- a/README.md +++ b/README.md @@ -91,18 +91,3 @@ If you would like to contribute to this pipeline, please see the [contributing g For further information or help, don't hesitate to get in touch on the [Slack `#wisps` channel](https://nfcore.slack.com/channels/wisps) (you can join with [this invite](https://nf-co.re/join/slack)). ## Citations - - - - - - -An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. - -You can cite the `nf-core` publication as follows: - -> **The nf-core framework for community-curated bioinformatics pipelines.** -> -> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen. -> -> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x). diff --git a/conf/gadi.config b/conf/gadi.config index c26600d..5a81ee6 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -24,19 +24,19 @@ params { outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" - boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" - boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" - boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" - boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" + boltz_ccd = "/g/data/li87/struct_bio/params/boltz/ccd.pkl" + boltz_model = "/g/data/li87/struct_bio/params/boltz/boltz1_conf.ckpt" + boltz2_aff = "/g/data/li87/struct_bio/params/boltz/boltz2_aff.ckpt" + boltz2_conf = "/g/data/li87/struct_bio/params/boltz/boltz2_conf.ckpt" + boltz2_mols = "/g/data/li87/struct_bio/params/boltz/mols" - //colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" - colabfold_db = "/g/data/if89/proteinfold_dbs/colabfold_dbs/colabfold_envdb_202108/" -colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" + uniref30 = "/g/data/li87/proteinfold_dbs/colabfold_uniref30/" + colabfold_db = "/g/data/li87/proteinfold_dbs/colabfold_envdb/" - alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" + colabfold_alphafold2_params = "/g/data/li87/struct_bio/params/alphafold2/" + + alphafold3_params = "/g/data/li87/struct_bio/params/alphafold2" - uniref30 = "/g/data/if89/proteinfold_dbs/colabfold_dbs/uniref30_2302/" use_gpu = true project = "ll61" use_dgxa100 = false @@ -45,25 +45,27 @@ colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params process { //executor = "local" - storage = "gdata/if89+scratch/${params.project}+gdata/${params.project}" + storage = "gdata/li87+gdata/if89+scratch/${params.project}+gdata/${params.project}" withName: 'MMSEQS_COLABFOLDSEARCH' { memory = 300.GB time = 24.h + cpus = 24 } withName: 'RUN_BOLTZ' { + queue = "gpuvolta" + time = 48.h + memory = 128.GB cpus = 12 + gpus = 1 + } + withName: 'COLABFOLD_BATCH' { queue = "gpuvolta" - time = 24.h - memory = 24.GB + time = 16.h + memory = 128.GB cpus = 12 gpus = 1 } - resourceLimits = [ - cpus: 1, - memory: '4.GB', - time: '1.h' - ] resourceLimits = [ cpus: 1000, memory: '2000.GB', @@ -74,3 +76,8 @@ process { executor.pollInterval = '5 sec' executor.queueStatInterval = '1 min' executor.submitRateLimit = '20min' + +gadi { + format = 'csv' + output = 'gadi_report.csv' +} diff --git a/conf/modules.config b/conf/modules.config index 986e8c2..f9953fa 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -59,8 +59,8 @@ process { withName: 'RUN_BOLTZ' { cpus = 12 - time = 10.h - memory = 24.GB + time = 24.h + memory = 128.GB ext.args = "--write_full_pae --output_format mmcif" } diff --git a/docs/usage.md b/docs/usage.md index 45faa49..7ce1ac0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -40,7 +40,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The created interactions generated from the sample sheet are customised through the parameter `--mode`. Two different ways to customise what interactions are generated from the sample sheet: -1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. +1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. When using this mode, the user can liit the number of formed interactions through the parameter `interaction_threshold` which takes a numeric value. by default the value is 0 and all interactions are formed. For any positive value `n`, onlye the neighboring paires that are within `n` neighbors will be considered. In this case, teh order of the samples in teh sample sheet matters. For example, if `--interaction_threshold 2`, the 2 nighbouring samples (2 before and 2 after) will be consdered. 2. A custom combination can be achieved through the column group in the sample sheet. You can use a combination of the group values. You can use multiple combinations by separating them with a comma (`,`). For example, there are group `A` and group `B1` in the example sample sheet above, running the pipeline with `--mode A-A,A-B` will generate the followiong pairs `S1-S1`, `S3-S3`, and `S1-S3` from the combination `A-A` and add to it the pait `S1-S2` and `S2-S3` from teh combination `A-B`. diff --git a/main.nf b/main.nf index f1c1fc9..9a0c9a6 100644 --- a/main.nf +++ b/main.nf @@ -62,7 +62,8 @@ workflow NFCORE_WISPS { ch_multiqc_logo, ch_multiqc_methods_description, params.outdir, - params.analysis_batch_size + params.analysis_batch_size, + params.interaction_threshold ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/data_convertor/create_interactions.nf b/modules/local/data_convertor/create_interactions.nf index e15862f..3f947c6 100644 --- a/modules/local/data_convertor/create_interactions.nf +++ b/modules/local/data_convertor/create_interactions.nf @@ -10,7 +10,10 @@ process CREATE_INTERACTIONS { input: val(ids) val(types) + val(groups) val(seqs) + val(interaction_mode) + val(interaction_threshold) output: path ("interactions.fasta"), emit: interactions @@ -24,25 +27,37 @@ process CREATE_INTERACTIONS { """ #!/usr/bin/env python3 import os, sys + interaction_mode = [${"\"" + interaction_mode.join('", "') + "\""}] seqs = [${"\"" + seqs.join('", "') + "\""}] ids = [${"\"" + ids.join('", "') + "\""}] types = [${"\"" + types.join('", "') + "\""}] + groups = [${"\"" + groups.join('", "') + "\""}] done_singles = set() n = len(seqs) + interactions_cntr = 0 + group_ls = {part for s in groups for part in s.split("-")} with open("interactions.fasta", "w") as target_interactions: for i in range(n): - for j in range(i + 1, n): - if types[i] == "protein" and types[j] == "protein": - target_interactions.write(f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{seqs[j]}\\n") - elif types[i] == "protein": - if ids[i] not in done_singles: - target_interactions.write(f">{ids[i]}\\n{seqs[i]}\\n") - done_singles.add(ids[i]) - elif types[j] == "protein": - if ids[j] not in done_singles: - target_interactions.write(f">{ids[j]}\\n{seqs[j]}\\n") - done_singles.add(ids[j]) + for j in range(i, n): + if interaction_mode[0] != "all-all" and groups[i] not in group_ls: + continue + if (interaction_mode[0] != "all-all" and "-".join(sorted([groups[i], groups[j]])) in interaction_mode) or (interaction_mode[0] == "all-all" and (${interaction_threshold} == 0 or abs(i-j) <= ${interaction_threshold})): + interactions_cntr += 1 + if types[i] == "protein" and types[j] == "protein": + target_interactions.write(f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{seqs[j]}\\n") + elif types[i] == "protein": + if ids[i] not in done_singles: + target_interactions.write(f">{ids[i]}\\n{seqs[i]}\\n") + done_singles.add(ids[i]) + elif types[j] == "protein": + if ids[j] not in done_singles: + target_interactions.write(f">{ids[j]}\\n{seqs[j]}\\n") + done_singles.add(ids[j]) + if interactions_cntr == 0: + print("No Interactions found!!") + exit(1) + print(f"{interactions_cntr} Interactions found!!") with open ("versions.yml", "w") as version_file: version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ diff --git a/nextflow.config b/nextflow.config index ae096a2..d5bdae1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,10 +13,11 @@ params { // Input options input = null mode = "all-all" + interaction_threshold = 0 mmseqs_batch_size = 10000 mmseqs_gpu = false use_gpu = true - analysis_batch_size = 10000 + analysis_batch_size = 3000 colabfold_model_preset = "alphafold2_multimer_v3" colabfold_num_recycles = 3 @@ -38,8 +39,8 @@ params { alphafold3_params = null spire_db = null - colabfold_uniref30_prefix = "uniref30_2302/uniref30_2302_db" - colabfold_envdb_prefix = "colabfold_envdb_202108/colabfold_envdb_202108_db" + colabfold_uniref30_prefix = "colabfold_uniref30/uniref30_2302_db" + colabfold_envdb_prefix = "colabfold_envdb/colabfold_envdb_202108_db" use_spire_db = false colabfold_search_args = null @@ -259,6 +260,7 @@ manifest { // Nextflow plugins plugins { id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-gadi@1.2.0' } validation { diff --git a/workflows/wisps.nf b/workflows/wisps.nf index a0735bf..a8fad74 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -78,6 +78,7 @@ workflow WISPS { ch_multiqc_methods_description outdir analysis_batch_size + interaction_threshold main: ch_multiqc_files = Channel.empty() @@ -117,6 +118,7 @@ workflow WISPS { ids:it[0].id types: it[0].type + groups: it[0].group seqs: seq }.set{ch_raw_sample_sheet} @@ -124,7 +126,10 @@ workflow WISPS { CREATE_INTERACTIONS( ch_raw_sample_sheet.ids.collect(), ch_raw_sample_sheet.types.collect(), - ch_raw_sample_sheet.seqs.collect() + ch_raw_sample_sheet.groups.collect(), + ch_raw_sample_sheet.seqs.collect(), + interaction_mode, + interaction_threshold ) ch_samplesheet @@ -133,14 +138,14 @@ workflow WISPS { def list = data_ls.toList() def out = [] for (int i = 0; i < list.size(); i++) { - for (int j = i + 1; j < list.size(); j++) { - //print("${list[i]} - ${list[j]}") - if ("${[list[i][0]["id"], list[j][0]["id"]].min()}-${[list[i][0]["id"], list[j][0]["id"]].max()}" in interaction_mode || interaction_mode[0] == "all-all") + for (int j = i; j < list.size(); j++) { + def key = [list[i][0]['group'].toString(), list[j][0]['group'].toString()].sort().join('-') + if ((interaction_mode[0] != "all-all" && interaction_mode.contains(key)) || (interaction_mode[0] == "all-all" && (interaction_threshold == 0 || Math.abs(i-j) <= interaction_threshold))) { out << [ [ "id": list[i][0]["id"] + "-" + list[j][0]["id"], - "group": list[i][0]["group"] + "-" + list[j][0]["group"] + "group": key ], [list[i][0], list[j][0]], [list[i][1], list[j][1]], @@ -189,7 +194,8 @@ workflow WISPS { ) .map{[it[1][1], it[0][1]]} .set{ch_a3m} - + ch_a3m.first().view() + ch_protein_pairs.first().view() // Prepare interactions for boltz ch_boltz_data = Channel.empty() ch_split_msa_in = Channel.empty() From 268b85cf22a181af3ec2a1065b65de58affe3180 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sat, 21 Mar 2026 12:35:58 +1100 Subject: [PATCH 32/70] general hpc fixes --- conf/gadi.config | 4 ++++ modules/local/mmseqs_colabfoldsearch/main.nf | 1 + modules/local/run_boltz/main.nf | 4 ++-- nextflow.config | 1 - 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/conf/gadi.config b/conf/gadi.config index 5a81ee6..b5dacf0 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -81,3 +81,7 @@ gadi { format = 'csv' output = 'gadi_report.csv' } + +plugins { + id 'nf-gadi@1.2.0' +} diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 959d8fe..8b4002f 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -30,6 +30,7 @@ process MMSEQS_COLABFOLDSEARCH { --threads $task.cpus \\ ${fasta} \\ ./db \\ + --af3-json \\ "result/" cat <<-END_VERSIONS > versions.yml diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 4b78501..898e915 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -39,8 +39,8 @@ process RUN_BOLTZ { def args = task.ext.args ?: '' """ - export NUMBA_CACHE_DIR=/tmp - export HOME=/tmp + export NUMBA_CACHE_DIR=./tmp + export HOME=./tmp boltz predict fasta ${args} --cache ./ diff --git a/nextflow.config b/nextflow.config index d5bdae1..a455498 100644 --- a/nextflow.config +++ b/nextflow.config @@ -260,7 +260,6 @@ manifest { // Nextflow plugins plugins { id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet - id 'nf-gadi@1.2.0' } validation { From 5381ddd6d02d83feec0737dc38cbb5096a0ed8fc Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 24 Mar 2026 23:20:34 +1100 Subject: [PATCH 33/70] fix typos --- nextflow_schema.json | 14 ++++++++++---- subworkflows/local/msa.nf | 4 ---- workflows/wisps.nf | 3 +-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index fed197d..ec84043 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -51,8 +51,14 @@ }, "analysis_batch_size": { "type": "integer", - "default": 10000, - "description": "Number of samples to be processes in teh analysis after multiple single alignment", + "default": 20, + "description": "Number of samples to be processed in the analysis after multiple single alignment", + "fa_icon": "fas fa-microchip" + }, + "interaction_threshold": { + "type": "integer", + "default": 0, + "description": "Local neighbourhood to model in all-by-all mode", "fa_icon": "fas fa-microchip" }, "use_gpu": { @@ -84,7 +90,7 @@ } } }, - "dbs_weights_ptions": { + "dbs_weights_options": { "title": "Databases options", "type": "object", "fa_icon": "fas fa-terminal", @@ -358,7 +364,7 @@ "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/$defs/dbs_weights_ptions" + "$ref": "#/$defs/dbs_weights_options" }, { "$ref": "#/$defs/models_options" diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf index dbf7099..d1b2bf4 100644 --- a/subworkflows/local/msa.nf +++ b/subworkflows/local/msa.nf @@ -74,8 +74,6 @@ workflow MSA { ) ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) - MMSEQS_COLABFOLDSEARCH.out.a3m.view() - ch_input.fasta.view() ch_a3m = ch_a3m.mix( ch_input.fasta.mix(ch_input.yaml) .map{[it[1].baseName, it[0]]} @@ -100,8 +98,6 @@ workflow MSA { ) .map{[it[1], it[2]]} ) - //MMSEQS_COLABFOLDSEARCH.out.a3m.view() - //ch_a3m.view() emit: formated_input = ch_input.fasta.mix(ch_input.yaml) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index a8fad74..b27a79a 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -194,8 +194,7 @@ workflow WISPS { ) .map{[it[1][1], it[0][1]]} .set{ch_a3m} - ch_a3m.first().view() - ch_protein_pairs.first().view() + // Prepare interactions for boltz ch_boltz_data = Channel.empty() ch_split_msa_in = Channel.empty() From 75c7f6c9087633ad5d8a238593c6e9eeece4fded Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 25 Mar 2026 13:27:38 +1100 Subject: [PATCH 34/70] more robust to fasta headers --- bin/collect_confidence.py | 6 +- conf/modules.config | 7 +- main.nf | 1 + modules/local/colabfold_batch/main.nf | 2 +- modules/local/collect_confidence.nf | 4 +- modules/local/run_alphafold3/main.nf | 5 +- nextflow.config | 3 +- nextflow_schema.json | 6 ++ workflows/wisps.nf | 108 ++++++++++++++++++++------ 9 files changed, 105 insertions(+), 37 deletions(-) diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index a8b27f8..a6c3342 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -168,13 +168,13 @@ def main(): json_files = [str(f) for f in Path(args.input).glob("*.json") if f.is_file()] if args.model.lower() == "boltz": - samples = [Path(p).name.split("_")[1] for p in json_files] + samples = [Path(p).name.split("_boltz_")[0].split("confidence_")[1] for p in json_files] extract_boltz_results(json_files, samples, args.output) elif args.model.lower() == "colabfold": - samples = [Path(p).name.split("_")[0] for p in json_files] + samples = [Path(p).name.split("_scores_")[0] for p in json_files] extract_colabfold_results(json_files, samples, args.output) elif args.model.lower() == "alphafold3": - samples = [Path(p).name.split("_")[0] for p in json_files] + samples = [Path(p).name.split("_summary_confidences.json")[0] for p in json_files] extract_alphafold3_results(json_files, samples, args.output) print(f"CSV file created at: {args.output}") diff --git a/conf/modules.config b/conf/modules.config index f9953fa..84e179b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -38,9 +38,10 @@ process { args += "--gpu 1 " } - if ("${params.tools}".split(",").contains("alphafold3")){ - args += "--af3-json " - } + //pre v1.6 always needs this to clean up intermediate a3ms + //if ("${params.tools}".split(",").contains("alphafold3")){ + // args += "--af3-json " + //} if (params.colabfold_uniref30_prefix){ args += "--db1 ${params.colabfold_uniref30_prefix} " diff --git a/main.nf b/main.nf index 9a0c9a6..3f6af2d 100644 --- a/main.nf +++ b/main.nf @@ -63,6 +63,7 @@ workflow NFCORE_WISPS { ch_multiqc_methods_description, params.outdir, params.analysis_batch_size, + params.colabfold_batch_size, params.interaction_threshold ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 1d6d21c..0db89b1 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -14,7 +14,7 @@ process COLABFOLD_BATCH { val numRec output: - tuple val(meta), path ("*relaxed_rank*_model_1_*.pdb") , emit: pdb + tuple val(meta), path ("*relaxed_rank_001_*_model_*.pdb") , emit: pdb tuple val(meta), path ("*_coverage.png") , emit: msa tuple val(meta), path ("*_scores_rank_001_*.json") , emit: top_ranked_scores path "versions.yml" , emit: versions diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 00b78c9..8a0fade 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -29,7 +29,7 @@ process COLLECT_CONFIDENCE { cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') - generate_comparison_report.py: \$(python3 --version) + collect_confidence.py: \$(python3 --version) END_VERSIONS """ @@ -40,7 +40,7 @@ process COLLECT_CONFIDENCE { cat <<-END_VERSIONS > versions.yml "${task.process}": python: \$(python3 --version | sed 's/Python //g') - generate_comparison_report.py: \$(python3 --version) + collect_confidence.py: \$(python3 --version) END_VERSIONS """ } diff --git a/modules/local/run_alphafold3/main.nf b/modules/local/run_alphafold3/main.nf index 444fe04..ee5447c 100644 --- a/modules/local/run_alphafold3/main.nf +++ b/modules/local/run_alphafold3/main.nf @@ -11,9 +11,8 @@ process RUN_ALPHAFOLD3 { path "params/*" output: tuple val(meta), path ("out/*/*_model.cif") , emit: top_ranked_cif - tuple val(meta), path ("out/*/*_confidences.json") , emit: confidence - tuple val(meta), path ("out/*/*_summary_confidences.json") , emit: summary_confidences - path "versions.yml" , emit: versions + tuple val(meta), path ("out/*/*_confidences.json"), emit: jsons + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: diff --git a/nextflow.config b/nextflow.config index a455498..0766b77 100644 --- a/nextflow.config +++ b/nextflow.config @@ -17,7 +17,8 @@ params { mmseqs_batch_size = 10000 mmseqs_gpu = false use_gpu = true - analysis_batch_size = 3000 + analysis_batch_size = 20 + colabfold_batch_size = 10 colabfold_model_preset = "alphafold2_multimer_v3" colabfold_num_recycles = 3 diff --git a/nextflow_schema.json b/nextflow_schema.json index ec84043..5cf1a6d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -55,6 +55,12 @@ "description": "Number of samples to be processed in the analysis after multiple single alignment", "fa_icon": "fas fa-microchip" }, + "colabfold_batch_size": { + "type": "integer", + "default": 20, + "description": "Number of ColabFold samples to be processed in the analysis after multiple single alignment", + "fa_icon": "fas fa-microchip" + }, "interaction_threshold": { "type": "integer", "default": 0, diff --git a/workflows/wisps.nf b/workflows/wisps.nf index b27a79a..6b6059f 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -78,6 +78,7 @@ workflow WISPS { ch_multiqc_methods_description outdir analysis_batch_size + colabfold_batch_size interaction_threshold main: @@ -195,6 +196,19 @@ workflow WISPS { .map{[it[1][1], it[0][1]]} .set{ch_a3m} + MMSEQS_COLABFOLDSEARCH.out.json + .map{it[1]} + .flatten() + .map{[it.baseName, it]} + .cross( + ch_protein_pairs + .mix(ch_single_protein) + .map{[it[0].id, it[0]]} + ) + .map{[it[1][1], it[0][1]]} + .set{ch_af3_json} + + // Prepare interactions for boltz ch_boltz_data = Channel.empty() ch_split_msa_in = Channel.empty() @@ -249,7 +263,7 @@ workflow WISPS { SPLIT_MSA.out.msa_csv .map{it[1]} .flatten() - .map{[["id" : it.baseName.split("_")[0]], it]} + .map{[["id": it.baseName.replaceFirst(/_\d+$/, '')], it]} .groupTuple(sort: true) .set{ch_split_msa_out} @@ -320,19 +334,19 @@ workflow WISPS { RUN_BOLTZ.out.confidence .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_boltz_")[0].split("confidence_")[1], "model": "boltz"], it]} .set{ch_boltz_confidence} RUN_BOLTZ.out.pae .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_boltz_")[0].split("pae_")[1], "model": "boltz"], it]} .set{ch_boltz_pae} RUN_BOLTZ.out.cif .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_boltz_")[0], "model": "boltz"], it]} .set{ch_boltz_cif} //prepare interactions for colabfold @@ -341,7 +355,7 @@ workflow WISPS { colabfold_batch = 0 ch_a3m.join(ch_protein_pairs.map{it[0]}) .map{it[1]} - .buffer( size: analysis_batch_size, remainder: true ) + .buffer( size: colabfold_batch_size, remainder: true ) .map{ colabfold_batch += 1; [["id": "batch-${colabfold_batch}-${it.size()}"], it] @@ -365,20 +379,20 @@ workflow WISPS { COLABFOLD_BATCH.out.top_ranked_scores .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "colabfold"], it]} + .map{[["id": it.baseName.split("_scores_rank_")[0], "model": "colabfold"], it]} .set{ch_colabfold_scores} COLABFOLD_BATCH.out.pdb .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "colabfold"], it]} + .map{[["id": it.baseName.split("_unrelaxed_")[0], "model": "colabfold"], it]} .set{ch_colabfold_pdb} af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ - ch_a3m.join(ch_protein_pairs.map{it[0]}) + ch_af3_json.join(ch_protein_pairs.map{it[0]}) .map{it[1]} .buffer( size: analysis_batch_size, remainder: true ) .map{ @@ -395,23 +409,39 @@ workflow WISPS { ch_alphafold3_params ) ch_versions = ch_versions.mix(RUN_ALPHAFOLD3.out.versions) + //since *_confidences overmatches outputs + ch_jsons = RUN_ALPHAFOLD3.out.jsons + .flatMap { meta, files -> + files.collect { f -> tuple(meta, f) } + } + + confidence = ch_jsons + .filter { meta, f -> + f.name.endsWith('_confidences.json') && + !f.name.endsWith('_summary_confidences.json') + } + + summary_confidence = ch_jsons + .filter { meta, f -> + f.name.endsWith('_summary_confidences.json') + } RUN_ALPHAFOLD3.out.top_ranked_cif .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .map{[["id": it.baseName.split("_model")[0], "model": "alphafold3"], it]} .set{ch_alphafold3_cif} - RUN_ALPHAFOLD3.out.confidence + confidence .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .map{[["id": it.baseName.split("_confidences")[0], "model": "alphafold3"], it]} .set{ch_alphafold3_confidence} - RUN_ALPHAFOLD3.out.summary_confidences + summary_confidence .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_")[0], "model": "alphafold3"], it]} + .map{[["id": it.baseName.split("_summary_confidences")[0], "model": "alphafold3"], it]} .set{ch_alphafold3_summary_confidences} @@ -477,32 +507,62 @@ workflow WISPS { boltz: it[0].model == "boltz" lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return [it[1].baseName.split("_boltz_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] alphafold3: it[0].model == "alphafold3" lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return [it[1].baseName.split("_model_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] colabfold: it[0].model == "colabfold" lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return [it[1].baseName.split("_unrelaxed_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] } .set{ch_ipsae_out} - ch_interaction_in.map{it[0].id} - .join(ch_ipsae_out.boltz, remainder: true) - .join(ch_ipsae_out.colabfold, remainder: true) - .join(ch_ipsae_out.alphafold3, remainder: true) - .map{"${it[0]},${it[1] != null ? it[1] : ""},${ it[2] != null ? it[2] : ""},${ it[3] != null ? it[3] : ""}\n"} + def active_modes = tools + .split(',') + .collect { it.trim() } + .findAll { it in ['boltz','colabfold','alphafold3'] } + + def header = "Sample," + active_modes.collect { "${it}_ipsae" }.join(",") + "\n" + + // 1) Long format: [sample_id, model, score] + ch_long = Channel.empty() + if ('boltz' in active_modes) + ch_long = ch_long.mix(ch_ipsae_out.boltz.map { id, score -> [id, 'boltz', score] }) + if ('colabfold' in active_modes) + ch_long = ch_long.mix(ch_ipsae_out.colabfold.map { id, score -> [id, 'colabfold', score] }) + if ('alphafold3' in active_modes) + ch_long = ch_long.mix(ch_ipsae_out.alphafold3.map { id, score -> [id, 'alphafold3', score] }) + + // 2) Pivot per sample: [sample_id, modelScoreMap] + ch_wide = ch_long + .map { id, model, score -> [id, [model, score]] } + .groupTuple() + .map { id, pairs -> + def m = pairs.collectEntries { p -> [(p[0]): p[1]] } + [id, m] + } + + // 3) Left-join against all expected samples and render rows by active_modes order + ch_interaction_in.map { it[0].id }.unique().map { [it, true] } + .join(ch_wide, remainder: true) + .map { id, _, m -> + def mm = m ?: [:] + def vals = active_modes.collect { mode -> mm[mode] != null ? mm[mode] : "" } + "${id},${vals.join(',')}\n" + } .toSortedList() - .flatten() + .flatMap{ it } .collectFile( storeDir: "${outdir}/ipsae", name: 'ipsae_scores.csv', - seed: "Sample,boltz_ipsae,colabfold_ipsae,alphafold3_ipsae\n") - .set{ch_ipsae_scores} + seed: header + ) + .set { ch_ipsae_scores } + ch_boltz_confidence .collect(flat: false, sort: true).multiMap{json_list -> From 469310728540be479a610133cb2c9a4de81ccbb6 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 25 Mar 2026 13:35:47 +1100 Subject: [PATCH 35/70] whitespace linting --- conf/modules.config | 2 +- workflows/wisps.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 84e179b..405d72b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -38,7 +38,7 @@ process { args += "--gpu 1 " } - //pre v1.6 always needs this to clean up intermediate a3ms + //pre v1.6 always needs this to clean up intermediate a3ms //if ("${params.tools}".split(",").contains("alphafold3")){ // args += "--af3-json " //} diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 6b6059f..1624eb6 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -411,7 +411,7 @@ workflow WISPS { ch_versions = ch_versions.mix(RUN_ALPHAFOLD3.out.versions) //since *_confidences overmatches outputs ch_jsons = RUN_ALPHAFOLD3.out.jsons - .flatMap { meta, files -> + .flatMap { meta, files -> files.collect { f -> tuple(meta, f) } } From 3ac1dcbd894970b0711785975c2d91ce9909fdfa Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 25 Mar 2026 13:57:33 +1100 Subject: [PATCH 36/70] remove redundant colabfold params --- main.nf | 1 - modules/local/colabfold_batch/main.nf | 7 +++---- nextflow.config | 2 -- nextflow_schema.json | 12 ------------ workflows/wisps.nf | 5 ----- 5 files changed, 3 insertions(+), 24 deletions(-) diff --git a/main.nf b/main.nf index 3f6af2d..3dff4cb 100644 --- a/main.nf +++ b/main.nf @@ -52,7 +52,6 @@ workflow NFCORE_WISPS { Channel.fromPath(params.colabfold_db, checkIfExists: true).first(), Channel.fromPath(params.uniref30, checkIfExists: true).first(), params.mmseqs_batch_size, - params.colabfold_model_preset, Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first(), params.colabfold_num_recycles, Channel.fromPath(params.alphafold3_params, checkIfExists: true).first(), diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 0db89b1..dc922cb 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -7,10 +7,7 @@ process COLABFOLD_BATCH { input: tuple val(meta), path("alignment/*") - val colabfold_model_preset path ('params/*') - path ('colabfold_db/*') - path ('uniref30/*') val numRec output: @@ -32,12 +29,14 @@ process COLABFOLD_BATCH { """ ln -s \$(realpath params/alphafold_params_*/*) params/ touch params/download_finished.txt + touch params/download_complexes_multimer_v3_finished.txt + touch params/download_complexes_multimer_v2_finished.txt + touch params/download_complexes_multimer_v1_finished.txt colabfold_batch \\ $args \\ --num-recycle ${numRec} \\ --data \$PWD \\ - --model-type ${colabfold_model_preset} \\ alignment \\ \$PWD diff --git a/nextflow.config b/nextflow.config index 0766b77..3e24e4d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -19,8 +19,6 @@ params { use_gpu = true analysis_batch_size = 20 colabfold_batch_size = 10 - - colabfold_model_preset = "alphafold2_multimer_v3" colabfold_num_recycles = 3 tools = "boltz,colabfold" diff --git a/nextflow_schema.json b/nextflow_schema.json index 5cf1a6d..e09a805 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -191,18 +191,6 @@ "maximum": 20, "errorMessage": "Number of recycles must be a whole number between 1 and 20" }, - "colabfold_model_preset": { - "type": "string", - "default": "alphafold2_multimer_v3", - "description": "Model preset for 'colabfold' mode", - "enum": [ - "alphafold2_ptm", - "alphafold2_multimer_v1", - "alphafold2_multimer_v2", - "alphafold2_multimer_v3" - ], - "fa_icon": "fas fa-stream" - }, "colabfold_search_args": { "type": "string", "default": null, diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 1624eb6..fad0a71 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -67,7 +67,6 @@ workflow WISPS { ch_colabfold_db ch_uniref30 mmseqs_batch_size - colabfold_model_preset ch_colabfold_params num_recycles ch_alphafold3_params @@ -364,14 +363,10 @@ workflow WISPS { ch_colabfold_interaction_in } } - //ch_colabfold_interaction_in.view() COLABFOLD_BATCH( ch_colabfold_interaction_in, - colabfold_model_preset, ch_colabfold_params, - [], - [], num_recycles ) ch_versions = ch_versions.mix(COLABFOLD_BATCH.out.versions) From 630891bb69801a7a678f4c0e6df94de3438a98a5 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 1 Apr 2026 20:22:53 +1100 Subject: [PATCH 37/70] add support for boltz affinity --- conf/gadi.config | 2 - conf/test_gadi.config | 2 - main.nf | 2 - modules/local/prepare_interactions.nf | 90 +++++++++++++++++---------- modules/local/run_boltz/main.nf | 4 +- nextflow.config | 2 - nextflow_schema.json | 12 ---- workflows/wisps.nf | 6 +- 8 files changed, 60 insertions(+), 60 deletions(-) diff --git a/conf/gadi.config b/conf/gadi.config index b5dacf0..4df154a 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -24,8 +24,6 @@ params { outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - boltz_ccd = "/g/data/li87/struct_bio/params/boltz/ccd.pkl" - boltz_model = "/g/data/li87/struct_bio/params/boltz/boltz1_conf.ckpt" boltz2_aff = "/g/data/li87/struct_bio/params/boltz/boltz2_aff.ckpt" boltz2_conf = "/g/data/li87/struct_bio/params/boltz/boltz2_conf.ckpt" boltz2_mols = "/g/data/li87/struct_bio/params/boltz/mols" diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 89aa2a4..1f58f54 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -22,8 +22,6 @@ params { outdir = "out-test" input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - boltz_ccd = "/g/data/if89/proteinfold_dbs/boltz_dbs/ccd.pkl" - boltz_model = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz1_conf.ckpt" boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" diff --git a/main.nf b/main.nf index 3dff4cb..3d93332 100644 --- a/main.nf +++ b/main.nf @@ -44,8 +44,6 @@ workflow NFCORE_WISPS { ch_samplesheet, params.mode, ch_versions, - Channel.fromPath(params.boltz_ccd, checkIfExists: true).first(), - Channel.fromPath(params.boltz_model, checkIfExists: true).first(), Channel.fromPath(params.boltz2_aff, checkIfExists: true).first(), Channel.fromPath(params.boltz2_conf, checkIfExists: true).first(), Channel.fromPath(params.boltz2_mols, checkIfExists: true).first(), diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf index 3c17291..4179e1a 100644 --- a/modules/local/prepare_interactions.nf +++ b/modules/local/prepare_interactions.nf @@ -15,8 +15,8 @@ process PREPARE_INTERACTIONS { path(files) output: - tuple val(meta), path ("*_boltz_interaction_input.fasta"), emit: fasta - path "versions.yml" , emit: versions + tuple val(meta), path ("*_boltz_interaction_input.yaml"), emit: yaml + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -28,13 +28,25 @@ process PREPARE_INTERACTIONS { #!/usr/bin/env python3 import os, sys import string + import json + ids_batch = ${ids.collect { "\"${it}\"" }.toString()} fasta_files_batch = ${fasta.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} a3m_files_batch = ${a3m.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} seq_types_batch = ${types.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] - batch_itr = 0 + + def read_fasta_sequence(fasta_path): + with open(fasta_path, "r") as f: + lines = [line.strip() for line in f.readlines()] + + if not lines: + return "" + + sequence_lines = [line for line in lines if line and not line.startswith(">")] + return "".join(sequence_lines) + for batch_itr in range(len(fasta_files_batch)): a3m_files = a3m_files_batch[batch_itr] seq_types = seq_types_batch[batch_itr] @@ -43,35 +55,46 @@ process PREPARE_INTERACTIONS { for seq_type in seq_types: if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') - exit (1) - output_file = ids_batch[batch_itr] + "_boltz_interaction_input.fasta" + exit(1) + + output_file = ids_batch[batch_itr] + "_boltz_interaction_input.yaml" counter = 0 + yaml_lines = ["version: 1", "sequences:"] + ligand_chain_ids = [] + + for seq_itr in range(len(seq_types)): + fasta_path = fasta_files[seq_itr] + a3m_path = a3m_files[seq_itr] + seq_type = seq_types[seq_itr] + + sequence = read_fasta_sequence(fasta_path) + if not sequence: + continue + + chain_id = all_combinations[counter] + counter += 1 + + if seq_type in {"smiles", "ccd"}: + yaml_lines.append(" - ligand:") + yaml_lines.append(f" id: {chain_id}") + yaml_lines.append(f" {seq_type}: {json.dumps(sequence)}") + ligand_chain_ids.append(chain_id) + else: + yaml_lines.append(f" - {seq_type}:") + yaml_lines.append(f" id: {chain_id}") + yaml_lines.append(f" sequence: {json.dumps(sequence)}") + if seq_type == "protein" and a3m_path: + yaml_lines.append(f" msa: {json.dumps(os.path.basename(a3m_path))}") + + if len(ligand_chain_ids) == 1: + yaml_lines.append("properties:") + yaml_lines.append(" - affinity:") + yaml_lines.append(f" binder: {ligand_chain_ids[0]}") + with open(output_file, "w") as outfile: - for seq_itr in range(len(seq_types)): - fasta = fasta_files[seq_itr] - a3m = a3m_files[seq_itr] - seq_type = seq_types[seq_itr] - - with open(fasta, "r") as f: - lines = f.readlines() - - if not lines: - continue # Skip empty FASTA files - - #header = lines[0].strip() - lines[-1] = lines[-1].strip() + "\\n" - body = lines[1:] - header = f">{all_combinations[counter]}|{seq_type}" - counter += 1 - if seq_type == "protein": - header += f"|{os.path.basename(a3m)}\\n" - else: - header += "\\n" - - outfile.write(header) - outfile.writelines(body) - - with open ("versions.yml", "w") as version_file: + outfile.write("\\n".join(yaml_lines) + "\\n") + + with open("versions.yml", "w") as version_file: version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ @@ -79,12 +102,13 @@ process PREPARE_INTERACTIONS { """ #!/usr/bin/env python3 from pathlib import Path - import sys, os + import sys + ids_batch = ${ids.collect { "\"${it}\"" }.toString()} for batch_itr in range(len(ids_batch)): - Path(ids_batch[batch_itr] + "_boltz_interaction_input.fasta").touch() + Path(ids_batch[batch_itr] + "_boltz_interaction_input.yaml").touch() - with open ("versions.yml", "w") as version_file: + with open("versions.yml", "w") as version_file: version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) """ } diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 898e915..ef78d0c 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -11,8 +11,6 @@ process RUN_BOLTZ { input: tuple val(meta), path("fasta/*") path(alignments) - path ('boltz1_conf.ckpt') - path ('ccd.pkl') path ('boltz2_aff.ckpt') path ('boltz2_conf.ckpt') path ('mols') @@ -25,6 +23,7 @@ process RUN_BOLTZ { tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , optional: true, emit: cif tuple val(meta), path ("boltz_results_*/predictions/*/plddt_*model_0.npz") , emit: plddt tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , optional: true, emit: pae + tuple val(meta), path ("boltz_results_*/predictions/*/affinity_*.json") , optional: true, emit: affinity path "versions.yml", emit: versions @@ -41,6 +40,7 @@ process RUN_BOLTZ { """ export NUMBA_CACHE_DIR=./tmp export HOME=./tmp + touch mols.tar boltz predict fasta ${args} --cache ./ diff --git a/nextflow.config b/nextflow.config index 3e24e4d..a24eb8e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -25,8 +25,6 @@ params { ipsae_pae_cutoff = 10 ipsae_dist_cutoff = 10 - boltz_ccd = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl' - boltz_model = 'https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt' boltz2_aff = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt' boltz2_conf = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt' boltz2_mols = null // extract this file locally: 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar' diff --git a/nextflow_schema.json b/nextflow_schema.json index e09a805..85c032f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -143,18 +143,6 @@ "description": "Link to the Alphafold2 parameters for Colabfold", "fa_icon": "fas fa-folder-open" }, - "boltz_ccd": { - "type": "string", - "description": "Path to CCD file", - "icon": "fas folder-open", - "default": "https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl" - }, - "boltz_model": { - "type": "string", - "description": "Path to boltz Model file", - "icon": "fas folder-open", - "default": "https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt" - }, "boltz2_aff": { "type": "string", "default": "https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt", diff --git a/workflows/wisps.nf b/workflows/wisps.nf index fad0a71..156205f 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -59,8 +59,6 @@ workflow WISPS { ch_samplesheet mode ch_versions - ch_boltz_ccd - ch_boltz_model ch_boltz2_aff ch_boltz2_conf ch_mols @@ -306,7 +304,7 @@ workflow WISPS { ) - PREPARE_INTERACTIONS.out.fasta + PREPARE_INTERACTIONS.out.yaml .map{it[1]} .flatten() .map{[it.baseName.replace("_boltz_interaction_input", ""), it]} @@ -322,8 +320,6 @@ workflow WISPS { RUN_BOLTZ( ch_boltz_in.map{boltz_batch += 1; [["id": "batch-${boltz_batch}-${it.size()}"], it.collect{it[1]}]}, ch_boltz_in.map{it.collect{it[2]}.flatten().findAll{it}.unique{it.toUriString()}}, - ch_boltz_model, - ch_boltz_ccd, ch_boltz2_aff, ch_boltz2_conf, ch_mols From be9ecad7e956d5cd9495e05edac134f7c8e18c4f Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 1 Apr 2026 20:56:34 +1100 Subject: [PATCH 38/70] collect boltz affinities in outputs --- bin/collect_confidence.py | 81 +++++++++++++++++++++++++++++---------- workflows/wisps.nf | 9 ++++- 2 files changed, 68 insertions(+), 22 deletions(-) diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index a6c3342..3c5ab83 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -4,6 +4,7 @@ import json import csv import statistics +import re from pathlib import Path from typing import Any, Dict, Iterable import argparse @@ -56,36 +57,75 @@ def _walk(prefix: str, obj: Any) -> None: _walk("", data) return flat -def extract_boltz_results(json_files, samples, output_csv): - rows = [] +def parse_boltz_json_file(json_file): + name = Path(json_file).name + if name.startswith("confidence_") and "_boltz_" in name: + return "confidence", name.split("_boltz_")[0].split("confidence_")[1] + if name.startswith("affinity_") and "_boltz_" in name: + return "affinity", name.split("_boltz_")[0].split("affinity_")[1] + + m = re.match(r"confidence_(.+?)_model_\d+\.json$", name) + if m: + return "confidence", m.group(1) + m = re.match(r"affinity_(.+?)_model_\d+\.json$", name) + if m: + return "affinity", m.group(1) + return None, None + +def extract_boltz_results(json_files, output_csv): + rows_by_id = {} all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] writing_keys_extra = set() - # First pass: read and collect keys - cntr = 0 + for file in json_files: + record_type, sample_id = parse_boltz_json_file(file) + if sample_id is None: + continue + + if sample_id not in rows_by_id: + rows_by_id[sample_id] = {"id": sample_id} + with open(file) as f: data = json.load(f) - flat_data = {"id": samples[cntr]} - cntr += 1 - for key, value in data.items(): - if key not in all_keys: - continue - if isinstance(value, dict): - for sub_key, sub_value in value.items(): - flat_data[f"{key}_{sub_key}"] = sub_value - writing_keys_extra.add(f"{key}_{sub_key}") - else: - flat_data[key] = value - rows.append(flat_data) + flat_data = rows_by_id[sample_id] + + if record_type == "confidence": + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict): + for sub_key, sub_value in value.items(): + key_name = f"{key}_{sub_key}" + flat_data[key_name] = sub_value + writing_keys_extra.add(key_name) + else: + flat_data[key] = value + + elif record_type == "affinity": + for key, value in data.items(): + if isinstance(value, dict) or isinstance(value, list): + sub_data = flatten_deep(value, index_lists=True) + for sub_key, sub_value in sub_data.items(): + key_name = f"{key}_{sub_key}" + if not key_name.startswith("affinity_"): + key_name = f"affinity_{key_name}" + flat_data[key_name] = sub_value + writing_keys_extra.add(key_name) + else: + key_name = key if key.startswith("affinity_") else f"affinity_{key}" + flat_data[key_name] = value + writing_keys_extra.add(key_name) # Write to CSV + final_writing_vals = writing_keys + sorted(writing_keys_extra - set(writing_keys)) with open(output_csv, "w", newline="") as f: - writer = csv.DictWriter(f, fieldnames=writing_keys + sorted(writing_keys_extra)) + writer = csv.DictWriter(f, fieldnames=final_writing_vals) writer.writeheader() - for row in rows: - writer.writerow({key: row.get(key, "") for key in writing_keys}) + for sample_id in sorted(rows_by_id.keys()): + row = rows_by_id[sample_id] + writer.writerow({key: row.get(key, "") for key in final_writing_vals}) def extract_colabfold_results(json_files, samples, output_csv): def parse_colabfold_metrics(json_file): @@ -168,8 +208,7 @@ def main(): json_files = [str(f) for f in Path(args.input).glob("*.json") if f.is_file()] if args.model.lower() == "boltz": - samples = [Path(p).name.split("_boltz_")[0].split("confidence_")[1] for p in json_files] - extract_boltz_results(json_files, samples, args.output) + extract_boltz_results(json_files, args.output) elif args.model.lower() == "colabfold": samples = [Path(p).name.split("_scores_")[0] for p in json_files] extract_colabfold_results(json_files, samples, args.output) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 156205f..c80bd7f 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -331,6 +331,12 @@ workflow WISPS { .flatten() .map{[["id": it.baseName.split("_boltz_")[0].split("confidence_")[1], "model": "boltz"], it]} .set{ch_boltz_confidence} + + RUN_BOLTZ.out.affinity + .map{it[1]} + .flatten() + .map{[["id": it.baseName.split("_boltz_")[0].split("affinity_")[1], "model": "boltz"], it]} + .set{ch_boltz_affinity} RUN_BOLTZ.out.pae .map{it[1]} @@ -556,8 +562,9 @@ workflow WISPS { ch_boltz_confidence + .mix(ch_boltz_affinity) .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} + ids: json_list.collect{it[0].id}.unique() json: json_list.collect{it[1]} }.set{ch_boltz_confidence_scores} From 097647a1369472a5777ef82138204dd272e3860e Mon Sep 17 00:00:00 2001 From: tlitfin Date: Thu, 2 Apr 2026 01:09:29 +1100 Subject: [PATCH 39/70] update colabfold search container --- conf/modules.config | 7 +++---- modules/local/mmseqs_colabfoldsearch/main.nf | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 405d72b..f9953fa 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -38,10 +38,9 @@ process { args += "--gpu 1 " } - //pre v1.6 always needs this to clean up intermediate a3ms - //if ("${params.tools}".split(",").contains("alphafold3")){ - // args += "--af3-json " - //} + if ("${params.tools}".split(",").contains("alphafold3")){ + args += "--af3-json " + } if (params.colabfold_uniref30_prefix){ args += "--db1 ${params.colabfold_uniref30_prefix} " diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 8b4002f..865759d 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -2,7 +2,7 @@ process MMSEQS_COLABFOLDSEARCH { tag "$meta.id" label 'process_high_memory' - container "/g/data/ll61/colabfold_search-gpu.sif" + container "ghcr.io/tlitfin/wisps-colabfold-search:1.0" input: tuple val(meta), path(fasta) @@ -25,12 +25,11 @@ process MMSEQS_COLABFOLDSEARCH { def args = task.ext.args ?: '' """ - mamba run --name colab colabfold_search \\ + colabfold_search \\ $args \\ --threads $task.cpus \\ ${fasta} \\ ./db \\ - --af3-json \\ "result/" cat <<-END_VERSIONS > versions.yml From eabe63c70e37554229cd0568b675e0d1347969dc Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 09:54:23 +1000 Subject: [PATCH 40/70] colabfoldsearch boltz yaml --- bin/collect_confidence.py | 2 +- bin/msa_manager.py | 125 ---------------- bin/msakit | Bin 1108048 -> 0 bytes conf/modules.config | 4 + main.nf | 1 - .../data_convertor/create_interactions.nf | 37 ++++- modules/local/mmseqs_colabfoldsearch/main.nf | 10 +- modules/local/msa_manager/split_msa.nf | 43 ------ modules/local/prepare_interactions.nf | 114 --------------- nextflow.config | 1 - nextflow_schema.json | 6 - workflows/wisps.nf | 133 +++--------------- 12 files changed, 58 insertions(+), 418 deletions(-) delete mode 100755 bin/msa_manager.py delete mode 100755 bin/msakit delete mode 100644 modules/local/msa_manager/split_msa.nf delete mode 100644 modules/local/prepare_interactions.nf diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index 3c5ab83..b2457fd 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -67,7 +67,7 @@ def parse_boltz_json_file(json_file): m = re.match(r"confidence_(.+?)_model_\d+\.json$", name) if m: return "confidence", m.group(1) - m = re.match(r"affinity_(.+?)_model_\d+\.json$", name) + m = re.match(r"affinity_(.+?)\.json$", name) if m: return "affinity", m.group(1) return None, None diff --git a/bin/msa_manager.py b/bin/msa_manager.py deleted file mode 100755 index 242f0a9..0000000 --- a/bin/msa_manager.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python3 -import os -import string -import argparse - - -MAX_MSA_SEQS = 16384 -MAX_PAIRED_SEQS = 8192 -ID_CHARS = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(10)] - - -def get_sub_sequences(seq_lengths, whole_seq): - out_seqs = [] - curr_seq = "" - curr_seq_itr = 0 - total_letters = 0 - for letter in whole_seq: - curr_seq += letter - if letter.isupper() or letter == "-": - total_letters += 1 - if total_letters == seq_lengths[curr_seq_itr]: - out_seqs.append(curr_seq) - curr_seq = "" - curr_seq_itr += 1 - total_letters = 0 - - if len(out_seqs) != len(seq_lengths): - print("Something wrong in the input file, could not generate the required number of sequences") - exit(1) - - return out_seqs - - -def parse_msa(msa_path, output_dir, meta_id): - os.makedirs(output_dir, exist_ok=True) - homolog = "" - section_index = 0 - - with open(msa_path, "r") as file: - first_line = file.readline() - if not first_line.startswith("#"): - homologs_lengths = [len(file.readline().strip('\n'))] - sequence_groups = [[[],[]]] - is_multimer = False - else: - homologs_lengths = [int(x.strip()) for x in first_line.replace('#',"").split()[0].split(",")] - sequence_groups = [[[], []] for _ in range(len(homologs_lengths))] - is_multimer = True - - with open(msa_path, "r") as file: - if is_multimer: - file.readline() - header_line = file.readline().strip()[1:] - expected_section_headers = [x.strip() for x in header_line.split()] - current_header = header_line - first_seq = False - for line in file: - line = line.strip() - if line.startswith(">"): - if homolog: - if first_seq and section_index > 0: - first_seq = False - else: - sub_sequences = get_sub_sequences(homologs_lengths, homolog) - for seq_index in range(len(homologs_lengths)): - if section_index == 0: - if len(sequence_groups[seq_index][0]) < MAX_PAIRED_SEQS: - sequence_groups[seq_index][0].append(sub_sequences[seq_index]) - else: - if seq_index == section_index - 1: - if len(sequence_groups[seq_index][1]) + len(sequence_groups[seq_index][0]) < MAX_MSA_SEQS: - sequence_groups[seq_index][1].append(sub_sequences[seq_index]) - - homolog = "" - current_header = line[1:].strip() - - if section_index < len(homologs_lengths) and current_header == expected_section_headers[section_index]: - section_index += 1 - first_seq = True - else: - homolog += line - if homolog: - if first_seq and section_index > 0: - first_seq = False - else: - sub_sequences = get_sub_sequences(homologs_lengths, homolog) - for seq_index in range(len(homologs_lengths)): - if section_index == 0: - if len(sequence_groups[seq_index][0]) < MAX_PAIRED_SEQS: - sequence_groups[seq_index][0].append(sub_sequences[seq_index]) - else: - if seq_index == section_index - 1: - if len(sequence_groups[seq_index][1]) + len(sequence_groups[seq_index][0]) < MAX_MSA_SEQS: - sequence_groups[seq_index][1].append(sub_sequences[seq_index]) - - for seq_index in range(len(homologs_lengths)): - filename = os.path.join(output_dir, f"{meta_id}_{seq_index}.csv") - with open(filename, "w") as out_file: - out_file.write("key,sequence\n") - if len(homologs_lengths)==1: #Homo-oligomer: all sequences are paired - paired_sequences = sequence_groups[seq_index][0]+sequence_groups[seq_index][1] - for i, seq in enumerate(paired_sequences): - out_file.write(f"{i},{seq}\n") - else: - paired_sequences = sequence_groups[seq_index][0] - for i, seq in enumerate(paired_sequences, start=1): - out_file.write(f"{i},{seq}\n") - - unpaired_sequences = sequence_groups[seq_index][1] - for seq in unpaired_sequences: - out_file.write(f"-1,{seq}\n") - - -def main(): - parser = argparse.ArgumentParser(description="Split multi-A3M file into CSV sequences per section.") - parser.add_argument("msa_path", help="Path to input .a3m file") - parser.add_argument("-o", "--output_dir", default="output_msa", help="Directory to write output CSVs") - parser.add_argument("--meta_id", default="default", help="Prefix for MSA files") - - args = parser.parse_args() - parse_msa(args.msa_path, args.output_dir, args.meta_id) - - -if __name__ == "__main__": - main() diff --git a/bin/msakit b/bin/msakit deleted file mode 100755 index 0f4aae0e05a6404e943582aa1decace6063e341d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1108048 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�H_V>b~A^juBuV0g7BXig3r0K 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ℑ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 eO6H&TzkBpZ%>CH$|Iz 1 and parts[0].lower() in supported: + parsed_type = parts[0].lower() + parsed_seq = "|".join(parts[1:]) + + if parsed_type == "smiles": + # ColabFold expects aromatic bonds to be written with ';' instead of ':'. + if "|" in parsed_seq: + smi_parts = parsed_seq.split("|") + smi_parts[0] = smi_parts[0].replace(":", ";") + parsed_seq = "|".join(smi_parts) + else: + parsed_seq = parsed_seq.replace(":", ";") + + return f"{parsed_type}|{parsed_seq}" + with open("interactions.fasta", "w") as target_interactions: for i in range(n): for j in range(i, n): @@ -47,13 +70,13 @@ process CREATE_INTERACTIONS { if types[i] == "protein" and types[j] == "protein": target_interactions.write(f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{seqs[j]}\\n") elif types[i] == "protein": - if ids[i] not in done_singles: - target_interactions.write(f">{ids[i]}\\n{seqs[i]}\\n") - done_singles.add(ids[i]) + target_interactions.write( + f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{format_non_protein_entry(types[j], seqs[j])}\\n" + ) elif types[j] == "protein": - if ids[j] not in done_singles: - target_interactions.write(f">{ids[j]}\\n{seqs[j]}\\n") - done_singles.add(ids[j]) + target_interactions.write( + f">{ids[i]}-{ids[j]}\\n{format_non_protein_entry(types[i], seqs[i])}:{seqs[j]}\\n" + ) if interactions_cntr == 0: print("No Interactions found!!") exit(1) diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index 865759d..ebec523 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -2,7 +2,7 @@ process MMSEQS_COLABFOLDSEARCH { tag "$meta.id" label 'process_high_memory' - container "ghcr.io/tlitfin/wisps-colabfold-search:1.0" + container "ghcr.io/tlitfin/wisps-colabfold-search:1.1" input: tuple val(meta), path(fasta) @@ -12,6 +12,8 @@ process MMSEQS_COLABFOLDSEARCH { output: tuple val(meta), path("**.a3m"), emit: a3m tuple val(meta), path("**.json"), emit: json, optional: true + tuple val(meta), path("**.yaml"), emit: yaml, optional: true + tuple val(meta), path("**.csv"), emit: msa_csv, optional: true path "versions.yml", emit: versions when: @@ -34,9 +36,9 @@ process MMSEQS_COLABFOLDSEARCH { cat <<-END_VERSIONS > versions.yml "${task.process}": - colabfold_search: \$(conda run -n colabfold pip list | grep "^colabfold" | awk '{print \$2}') - alphafold_colabfold: \$(conda run -n colabfold pip list | grep "^alphafold-colabfold" | awk '{print \$2}') - mmseqs: \$(mamba run --name colab mmseqs version) + colabfold_search: \$(pip list | grep "^colabfold" | awk '{print \$2}') + alphafold_colabfold: \$(pip list | grep "^alphafold-colabfold" | awk '{print \$2}') + mmseqs: \$(mmseqs version) END_VERSIONS """ diff --git a/modules/local/msa_manager/split_msa.nf b/modules/local/msa_manager/split_msa.nf deleted file mode 100644 index 54dee18..0000000 --- a/modules/local/msa_manager/split_msa.nf +++ /dev/null @@ -1,43 +0,0 @@ -process SPLIT_MSA { - tag "$meta.id" - label 'process_single' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mgikit:2.1.0--h3ab6199_0' : - 'biocontainers/mgikit:2.1.0--h3ab6199_0' }" - - input: - tuple val(meta), path("input_msa/*") - output: - tuple val(meta), path ("output_msa/*.csv"), emit: msa_csv - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - - """ - - msakit split-a3m --input input_msa --output output_msa - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - msakit: 0.0.1 - END_VERSIONS - """ - - stub: - """ - mkdir output_msa - touch "output_msa/A.csv" - touch "output_msa/B.csv" - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - msakit: 0.0.1 - END_VERSIONS - """ -} diff --git a/modules/local/prepare_interactions.nf b/modules/local/prepare_interactions.nf deleted file mode 100644 index 4179e1a..0000000 --- a/modules/local/prepare_interactions.nf +++ /dev/null @@ -1,114 +0,0 @@ -process PREPARE_INTERACTIONS { - tag "$meta.id" - label 'process_single' - - conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'biocontainers/python:3.8.3' }" - - input: - tuple val(meta), val(ids) - val(fasta) - val(a3m) - val(types) - path(files) - - output: - tuple val(meta), path ("*_boltz_interaction_input.yaml"), emit: yaml - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - - """ - #!/usr/bin/env python3 - import os, sys - import string - import json - - ids_batch = ${ids.collect { "\"${it}\"" }.toString()} - fasta_files_batch = ${fasta.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} - a3m_files_batch = ${a3m.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} - seq_types_batch = ${types.collect { inner -> inner.collect { "\"${it}\"" }}.toString()} - - all_combinations = list(string.ascii_uppercase) + list(string.ascii_lowercase) + [str(x) for x in range(0, 10)] - - def read_fasta_sequence(fasta_path): - with open(fasta_path, "r") as f: - lines = [line.strip() for line in f.readlines()] - - if not lines: - return "" - - sequence_lines = [line for line in lines if line and not line.startswith(">")] - return "".join(sequence_lines) - - for batch_itr in range(len(fasta_files_batch)): - a3m_files = a3m_files_batch[batch_itr] - seq_types = seq_types_batch[batch_itr] - fasta_files = fasta_files_batch[batch_itr] - - for seq_type in seq_types: - if seq_type not in {"protein", "dna", "rna", "smiles", "ccd"}: - print(f'seqeuence type should be ["protein", "dna", "rna", "smiles", "ccd"], found {seq_type}!') - exit(1) - - output_file = ids_batch[batch_itr] + "_boltz_interaction_input.yaml" - counter = 0 - yaml_lines = ["version: 1", "sequences:"] - ligand_chain_ids = [] - - for seq_itr in range(len(seq_types)): - fasta_path = fasta_files[seq_itr] - a3m_path = a3m_files[seq_itr] - seq_type = seq_types[seq_itr] - - sequence = read_fasta_sequence(fasta_path) - if not sequence: - continue - - chain_id = all_combinations[counter] - counter += 1 - - if seq_type in {"smiles", "ccd"}: - yaml_lines.append(" - ligand:") - yaml_lines.append(f" id: {chain_id}") - yaml_lines.append(f" {seq_type}: {json.dumps(sequence)}") - ligand_chain_ids.append(chain_id) - else: - yaml_lines.append(f" - {seq_type}:") - yaml_lines.append(f" id: {chain_id}") - yaml_lines.append(f" sequence: {json.dumps(sequence)}") - if seq_type == "protein" and a3m_path: - yaml_lines.append(f" msa: {json.dumps(os.path.basename(a3m_path))}") - - if len(ligand_chain_ids) == 1: - yaml_lines.append("properties:") - yaml_lines.append(" - affinity:") - yaml_lines.append(f" binder: {ligand_chain_ids[0]}") - - with open(output_file, "w") as outfile: - outfile.write("\\n".join(yaml_lines) + "\\n") - - with open("versions.yml", "w") as version_file: - version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) - """ - - stub: - """ - #!/usr/bin/env python3 - from pathlib import Path - import sys - - ids_batch = ${ids.collect { "\"${it}\"" }.toString()} - for batch_itr in range(len(ids_batch)): - Path(ids_batch[batch_itr] + "_boltz_interaction_input.yaml").touch() - - with open("versions.yml", "w") as version_file: - version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) - """ -} diff --git a/nextflow.config b/nextflow.config index a24eb8e..e49f8fe 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,7 +14,6 @@ params { input = null mode = "all-all" interaction_threshold = 0 - mmseqs_batch_size = 10000 mmseqs_gpu = false use_gpu = true analysis_batch_size = 20 diff --git a/nextflow_schema.json b/nextflow_schema.json index 85c032f..c47699e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -43,12 +43,6 @@ "fa_icon": "fas fa-cogs", "errorMessage": "Tools must be a comma-separated list containing any combination of 'alphafold3', 'colabfold', or 'boltz' with no spaces." }, - "mmseqs_batch_size": { - "type": "integer", - "default": 10000, - "description": "Number of samples in each mmseq run (batching leads to higher performance time in total.)", - "fa_icon": "fas fa-microchip" - }, "analysis_batch_size": { "type": "integer", "default": 20, diff --git a/workflows/wisps.nf b/workflows/wisps.nf index c80bd7f..caa5240 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -18,7 +18,6 @@ // MODULE: Installed directly from nf-core/modules // include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { PREPARE_INTERACTIONS } from '../modules/local/prepare_interactions' include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' // // SUBWORKFLOW: Consisting entirely of nf-core/modules @@ -35,7 +34,6 @@ include { RUN_BOLTZ } from '../modules/local/run_boltz' include { RUN_ALPHAFOLD3 } from '../modules/local/run_alphafold3' include { COLABFOLD_BATCH } from '../modules/local/colabfold_batch' include { BOLTZ_FASTA } from '../modules/local/data_convertor/boltz_fasta' -include { SPLIT_MSA } from '../modules/local/msa_manager/split_msa' include { IPSAE } from '../modules/local/ipsae' include {CREATE_INTERACTIONS} from '../modules/local/data_convertor/create_interactions' include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' @@ -64,7 +62,6 @@ workflow WISPS { ch_mols ch_colabfold_db ch_uniref30 - mmseqs_batch_size ch_colabfold_params num_recycles ch_alphafold3_params @@ -172,8 +169,6 @@ workflow WISPS { }.unique() .set{ch_single_protein} - //ch_protein_pairs.view() - MMSEQS_COLABFOLDSEARCH ( CREATE_INTERACTIONS.out.interactions.map{[["id": "all_run"], it]}, ch_colabfold_db, @@ -197,123 +192,28 @@ workflow WISPS { .map{it[1]} .flatten() .map{[it.baseName, it]} - .cross( - ch_protein_pairs - .mix(ch_single_protein) - .map{[it[0].id, it[0]]} - ) - .map{[it[1][1], it[0][1]]} .set{ch_af3_json} - // Prepare interactions for boltz - ch_boltz_data = Channel.empty() - ch_split_msa_in = Channel.empty() - ch_boltz_interactions_in = Channel.empty() - + // Prepare interactions for boltz directly from MMSEQS outputs + ch_boltz_in = Channel.empty() if ("boltz" in tools.split(",")){ - ch_a3m - .join(ch_protein_pairs.map{it[0]}) - .set{ch_split_msa_in} - ch_boltz_interactions_in = ch_interaction_in - } - - split_batch_id = 0 - SPLIT_MSA( - ch_split_msa_in + MMSEQS_COLABFOLDSEARCH.out.yaml .map{it[1]} - .buffer( size: mmseqs_batch_size, remainder: true ) - .map{ split_batch_id += 1; [["id" : "batch-${split_batch_id}-${it.size()}"], it]} - ) - - ch_versions = ch_versions.mix(SPLIT_MSA.out.versions) - - // Adding non protein for boltz - ch_boltz_data = - ch_boltz_data - .mix(ch_boltz_interactions_in - .filter{it[1][0].type != "protein" && it[1][1].type != "protein"} - .map{[it, ["", ""]]} - ) - - // Adding single protein for boltz - ch_boltz_data = ch_boltz_data.mix( - ch_boltz_interactions_in - .filter{[it[1][0].type, it[1][1].type].count("protein") == 1} - .map{ - if (it[1][0].type == "protein"){ - [it[1][0], it] - }else if (it[1][1].type == "protein"){ - [it[1][1], it] - } - } - .combine(ch_a3m.filter{it[0].type == "protein"}) - .filter{it[0] == it[2]} - .map{ - if (it[1][1][0].type == "protein") - [it[1], [it[3], ""]] - else - [it[1], ["", it[3]]] - } - ) - - SPLIT_MSA.out.msa_csv - .map{it[1]} - .flatten() - .map{[["id": it.baseName.replaceFirst(/_\d+$/, '')], it]} - .groupTuple(sort: true) - .set{ch_split_msa_out} - - ch_boltz_data = ch_boltz_data - .mix(ch_boltz_interactions_in - .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} - .map{[["id": it[0].id], it]} + .flatten() + .map{[it.baseName, it]} .join( - ch_split_msa_out - .map{ - if (it[1].size() == 1){ - it[1] = [it[1][0], it[1][0]] - } - it - } - + MMSEQS_COLABFOLDSEARCH.out.msa_csv + .map{it[1]} + .flatten() + .map{[it.baseName.replaceFirst(/_[A-Z]+$/, '').replace("_boltz_interaction_input", ""), it]} + .groupTuple(sort: true), + remainder: true ) - .map{[it[1], it[2]]} - ) - - batch_id = 0 - - PREPARE_INTERACTIONS( - ch_boltz_data - .map{it[0][0].id} - .buffer( size: analysis_batch_size, remainder: true ) - .map{ batch_id += 1; [["id" : "batch-${batch_id}-${it.size()}"], it]}, - ch_boltz_data - .map{it[0][2].collect{it.name}} - .buffer( size: analysis_batch_size, remainder: true ), - ch_boltz_data - .map{it[1].collect{it ? it.name: ""}} - .buffer( size: analysis_batch_size, remainder: true ), - ch_boltz_data - .map{[it[0][1][0].type, it[0][1][1].type]} - .buffer( size: analysis_batch_size, remainder: true ), - ch_boltz_data - .map{[it[0][2][0], it[0][2][1], it[1][0], it[1][1]]} - .buffer( size: analysis_batch_size, remainder: true ) - .map{it.flatten()findAll{it}.unique{it.toUriString()}} - - ) - - PREPARE_INTERACTIONS.out.yaml - .map{it[1]} - .flatten() - .map{[it.baseName.replace("_boltz_interaction_input", ""), it]} - .join( - ch_boltz_data - .map{[it[0][0].id, [it[1][0], it[1][1]]]} - ) - .buffer( size: analysis_batch_size, remainder: true ) - .set{ch_boltz_in} + .map{id, yaml, msa_csv -> [id, yaml, msa_csv ?: []]} + .buffer( size: analysis_batch_size, remainder: true ) + .set{ch_boltz_in} + } boltz_batch = 0 @@ -389,7 +289,8 @@ workflow WISPS { af3_batch = 0 ch_alphafold3_interaction_in = Channel.empty() if ("alphafold3" in tools.split(",")){ - ch_af3_json.join(ch_protein_pairs.map{it[0]}) + //ch_af3_json.join(ch_protein_pairs.map{it[0]}) + ch_af3_json .map{it[1]} .buffer( size: analysis_batch_size, remainder: true ) .map{ From 5419e40da5fc8dc434b054966a5a4e6d5a872999 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 11:53:50 +1000 Subject: [PATCH 41/70] support ipsae for higher order complexes --- workflows/wisps.nf | 179 ++++++++++++++++++++++++++------------------- 1 file changed, 105 insertions(+), 74 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index caa5240..2cb6e18 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -127,26 +127,28 @@ workflow WISPS { interaction_threshold ) - ch_samplesheet - .collect(flat: false) - .flatMap { data_ls -> - def list = data_ls.toList() + CREATE_INTERACTIONS.out.interactions + .flatMap { interactions_fasta -> def out = [] - for (int i = 0; i < list.size(); i++) { - for (int j = i; j < list.size(); j++) { - def key = [list[i][0]['group'].toString(), list[j][0]['group'].toString()].sort().join('-') - if ((interaction_mode[0] != "all-all" && interaction_mode.contains(key)) || (interaction_mode[0] == "all-all" && (interaction_threshold == 0 || Math.abs(i-j) <= interaction_threshold))) - { - out << [ - [ - "id": list[i][0]["id"] + "-" + list[j][0]["id"], - "group": key - ], - [list[i][0], list[j][0]], - [list[i][1], list[j][1]], - ] - } + def lines = interactions_fasta.readLines().findAll { it?.trim() } + if (lines.size() % 2 != 0) { + throw new IllegalStateException("Invalid interactions FASTA layout in ${interactions_fasta}: expected an even number of non-empty lines.") + } + + lines.collate(2).each { chunk -> + def header = chunk[0] + if (!header.startsWith(">")) { + throw new IllegalStateException("Invalid FASTA header in ${interactions_fasta}: '${header}'") } + + def interaction_id = header.substring(1).trim() + def sequence_line = chunk[1].trim() + //def has_protein = sequence_line.split(":").any { !it.contains("|") } + def has_protein = sequence_line.split(":").count { !it.contains("|") } > 1 + out << [ + ["id": interaction_id], + has_protein + ] } out } @@ -155,20 +157,6 @@ workflow WISPS { ch_interaction_in.count().subscribe{print("total final: ${it}")} - ch_interaction_in - .filter{it[1][0].type == "protein" && it[1][1].type == "protein"} - .set {ch_protein_pairs} - - ch_interaction_in - .map{ - if (it[1][0].type != "protein" && it[1][1].type == "protein"){ - [it[1][1], it[2][1]] - }else if (it[1][1].type != "protein" && it[1][0].type == "protein"){ - [it[1][0], it[2][0]] - } - }.unique() - .set{ch_single_protein} - MMSEQS_COLABFOLDSEARCH ( CREATE_INTERACTIONS.out.interactions.map{[["id": "all_run"], it]}, ch_colabfold_db, @@ -180,12 +168,6 @@ workflow WISPS { .map{it[1]} .flatten() .map{[it.baseName, it]} - .cross( - ch_protein_pairs - .mix(ch_single_protein) - .map{[it[0].id, it[0]]} - ) - .map{[it[1][1], it[0][1]]} .set{ch_a3m} MMSEQS_COLABFOLDSEARCH.out.json @@ -229,32 +211,33 @@ workflow WISPS { RUN_BOLTZ.out.confidence .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_boltz_")[0].split("confidence_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_model_0")[0].split("confidence_")[1], "model": "boltz"], it]} .set{ch_boltz_confidence} RUN_BOLTZ.out.affinity .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_boltz_")[0].split("affinity_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_model_0")[0].split("affinity_")[1], "model": "boltz"], it]} .set{ch_boltz_affinity} RUN_BOLTZ.out.pae .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_boltz_")[0].split("pae_")[1], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_model_0")[0].split("pae_")[1], "model": "boltz"], it]} .set{ch_boltz_pae} RUN_BOLTZ.out.cif .map{it[1]} .flatten() - .map{[["id": it.baseName.split("_boltz_")[0], "model": "boltz"], it]} + .map{[["id": it.baseName.split("_model_0")[0], "model": "boltz"], it]} .set{ch_boltz_cif} //prepare interactions for colabfold ch_colabfold_interaction_in = Channel.empty() if ("colabfold" in tools.split(",")){ colabfold_batch = 0 - ch_a3m.join(ch_protein_pairs.map{it[0]}) + //ch_a3m.join(ch_protein_pairs.map{it[0]}) + ch_a3m .map{it[1]} .buffer( size: colabfold_batch_size, remainder: true ) .map{ @@ -349,8 +332,8 @@ workflow WISPS { .join(ch_colabfold_pdb) .map{[["id": it[0].id], it]} .join(ch_interaction_in - .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} - .map{["id": it[0].id]} + .filter{it[1]} + .map{it[0]} ) .map{[it[1][1], it[1][2], []]} .buffer( size: analysis_batch_size, remainder: true ) @@ -364,8 +347,8 @@ workflow WISPS { .join(ch_boltz_confidence) .map{[["id": it[0].id], [it[0], it[1], it[2]], it[3]]} .join(ch_interaction_in - .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} - .map{["id": it[0].id]} + .filter{it[1]} + .map{it[0]} ) .map{[it[1][1], it[1][2], it[2]]} .buffer( size: analysis_batch_size, remainder: true ) @@ -378,8 +361,8 @@ workflow WISPS { ch_alphafold3_confidence.join(ch_alphafold3_cif) .map{[["id": it[0].id], it]} .join(ch_interaction_in - .filter{it[1][0].type == "protein" || it[1][1].type == "protein"} - .map{["id": it[0].id]} + .filter{it[1]} + .map{it[0]} ) .map{[it[1][1], it[1][2], []]} .buffer( size: analysis_batch_size, remainder: true ) @@ -399,23 +382,32 @@ workflow WISPS { ch_versions = ch_versions.mix(IPSAE.out.versions) + def parseIpsaeMaxRows = { file, model, sampleId -> + def lines = file.text + .split("\n") + .findAll { line -> + def cols = line.split() + cols.size() > 5 && cols[4].trim() == "max" + } + def entries = lines.collect { line -> + def cols = line.split() + def pairId = "${cols[0].trim()}_${cols[1].trim()}" + [pairId, new BigDecimal(cols[5].trim())] + } + [sampleId, entries] + } + IPSAE.out.txt .transpose() .branch { boltz: it[0].model == "boltz" - lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } - max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_boltz_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return parseIpsaeMaxRows(it[1], "boltz", it[1].baseName.split("_model_0")[0]) alphafold3: it[0].model == "alphafold3" - lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } - max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_model_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return parseIpsaeMaxRows(it[1], "alphafold3", it[1].baseName.split("_model_")[0]) colabfold: it[0].model == "colabfold" - lines = it[1].text.split("\n").findAll{line -> line.split().size() > 4 && line.split()[4].trim() == "max" } - max_vals = lines.collect{new BigDecimal(it.split()[5].trim())} - return [it[1].baseName.split("_unrelaxed_")[0], max_vals ? (max_vals.sum() / max_vals.size()) : null] + return parseIpsaeMaxRows(it[1], "colabfold", it[1].baseName.split("_unrelaxed_")[0]) } .set{ch_ipsae_out} @@ -424,42 +416,81 @@ workflow WISPS { .collect { it.trim() } .findAll { it in ['boltz','colabfold','alphafold3'] } - def header = "Sample," + active_modes.collect { "${it}_ipsae" }.join(",") + "\n" - - // 1) Long format: [sample_id, model, score] + // 1) Long format: [sample_id, pair_id, model, score] ch_long = Channel.empty() if ('boltz' in active_modes) - ch_long = ch_long.mix(ch_ipsae_out.boltz.map { id, score -> [id, 'boltz', score] }) + ch_long = ch_long.mix(ch_ipsae_out.boltz.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'boltz', e[1]] } }) if ('colabfold' in active_modes) - ch_long = ch_long.mix(ch_ipsae_out.colabfold.map { id, score -> [id, 'colabfold', score] }) + ch_long = ch_long.mix(ch_ipsae_out.colabfold.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'colabfold', e[1]] } }) if ('alphafold3' in active_modes) - ch_long = ch_long.mix(ch_ipsae_out.alphafold3.map { id, score -> [id, 'alphafold3', score] }) + ch_long = ch_long.mix(ch_ipsae_out.alphafold3.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'alphafold3', e[1]] } }) - // 2) Pivot per sample: [sample_id, modelScoreMap] - ch_wide = ch_long - .map { id, model, score -> [id, [model, score]] } + // 2) Pivot per pair: [pair_id, sampleModelScoreMap] + ch_pair_wide = ch_long + .map { sampleId, pairId, model, score -> [pairId, [sampleId, model, score]] } .groupTuple() - .map { id, pairs -> + .map { pairId, rows -> + def bySample = [:].withDefault { [:] } + rows.each { r -> + bySample[r[0]][r[1]] = r[2] + } + [pairId, bySample] + } + + // 3) Create one CSV per pair with model-only headers + ch_interaction_in.map { it[0].id }.unique().toSortedList().map { [sample_ids: it] } + .combine(ch_pair_wide.collect(flat: false).map { [pairs: it] }) + .flatMap { left, right -> + def ids = left.sample_ids + def pairs = right.pairs + pairs.collect { pairEntry -> + def pairId = pairEntry[0] + def bySample = pairEntry[1] + def header = "Sample," + active_modes.join(",") + "\n" + def body = ids.collect { id -> + def mm = bySample[id] ?: [:] + def vals = active_modes.collect { mode -> mm[mode] != null ? mm[mode] : "" } + "${id},${vals.join(',')}\n" + }.join("") + def safePairId = pairId.replaceAll(/[^A-Za-z0-9._-]+/, "_") + ["ipsae_scores_${safePairId}.csv", header + body] + } + } + .collectFile( + storeDir: "${outdir}/ipsae", + newLine: false + ) { item -> [item[0], item[1]] } + .set { ch_ipsae_scores_by_pair } + + // 4) Additional summary file: max score per sample/model across all pair ids + ch_model_wide = ch_long + .map { sampleId, pairId, model, score -> [[sampleId, model], score] } + .groupTuple() + .map { key, scores -> [key[0], [key[1], scores.max()]] } + .groupTuple() + .map { sampleId, pairs -> def m = pairs.collectEntries { p -> [(p[0]): p[1]] } - [id, m] + [sampleId, m] } - // 3) Left-join against all expected samples and render rows by active_modes order + def summary_header = "Sample," + active_modes.join(",") + "\n" ch_interaction_in.map { it[0].id }.unique().map { [it, true] } - .join(ch_wide, remainder: true) + .join(ch_model_wide, remainder: true) .map { id, _, m -> def mm = m ?: [:] def vals = active_modes.collect { mode -> mm[mode] != null ? mm[mode] : "" } "${id},${vals.join(',')}\n" } .toSortedList() - .flatMap{ it } + .flatMap { it } .collectFile( storeDir: "${outdir}/ipsae", name: 'ipsae_scores.csv', - seed: header + seed: summary_header ) - .set { ch_ipsae_scores } + .set { ch_ipsae_scores_max } + + ch_ipsae_scores = ch_ipsae_scores_by_pair.mix(ch_ipsae_scores_max) ch_boltz_confidence From 397b79a77e953dc0bd5c4c839b79d650840df6bc Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 14:54:13 +1000 Subject: [PATCH 42/70] colabfold chainwise scores --- conf/modules.config | 4 ++++ modules/local/colabfold_batch/main.nf | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index a050bd2..47061dc 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -68,6 +68,10 @@ process { ext.args = "--write_full_pae --output_format mmcif" } + withName: 'COLABFOLD_BATCH' { + ext.args = "--calc-extra-ptm" + } + withName: 'IPSAE' { ext.args = "${params.ipsae_pae_cutoff} ${params.ipsae_dist_cutoff}" } diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index dc922cb..9284f42 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -3,7 +3,8 @@ process COLABFOLD_BATCH { label 'process_medium' label 'process_gpu' - container "nf-core/proteinfold_colabfold:dev" + //container "nf-core/proteinfold_colabfold:dev" + container "ghcr.io/tlitfin/wisps-colabfold-batch:1.1" input: tuple val(meta), path("alignment/*") From a574cd7f254c0ae895b929605aea930d524635b8 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 20:49:36 +1000 Subject: [PATCH 43/70] track chainwise scores by group --- bin/collect_confidence.py | 147 ++++++++++++++++-- modules/local/collect_confidence.nf | 6 + .../data_convertor/create_interactions.nf | 37 ++++- workflows/wisps.nf | 68 ++++++-- 4 files changed, 233 insertions(+), 25 deletions(-) diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index b2457fd..4494314 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -import os, sys import json import csv import statistics @@ -72,10 +71,114 @@ def parse_boltz_json_file(json_file): return "affinity", m.group(1) return None, None -def extract_boltz_results(json_files, output_csv): +def build_sample_meta_by_id(sample_metadata): + sample_meta_by_id = {} + if not sample_metadata: + return sample_meta_by_id + + for item in sample_metadata: + if isinstance(item, dict) and "id" in item: + sample_id = str(item["id"]) + sample_meta_by_id[sample_id] = { + "int_chain_map": item.get("int_chain_map", ""), + "str_chain_map": item.get("str_chain_map", ""), + } + return sample_meta_by_id + +def add_mapping_fields(row, sample_id, sample_meta_by_id): + meta = sample_meta_by_id.get(sample_id, {}) + row["int_chain_map"] = meta.get("int_chain_map", "") + row["str_chain_map"] = meta.get("str_chain_map", "") + +def parse_int_chain_map(int_chain_map): + if not int_chain_map or ":" not in int_chain_map: + return [], [] + + left, right = int_chain_map.split(":", 1) + left_ids = [int(x) for x in left.split(",") if x.strip() != ""] + right_ids = [int(x) for x in right.split(",") if x.strip() != ""] + return left_ids, right_ids + +def parse_str_chain_map(str_chain_map): + if not str_chain_map or ":" not in str_chain_map: + return [], [] + + left, right = str_chain_map.split(":", 1) + left_ids = [x.strip() for x in left.split(",") if x.strip() != ""] + right_ids = [x.strip() for x in right.split(",") if x.strip() != ""] + return left_ids, right_ids + +def compute_max_cross_group_metric(int_chain_map, value_getter): + left_ids, right_ids = parse_int_chain_map(int_chain_map) + if not left_ids or not right_ids: + return None + + values = [] + for li in left_ids: + for rj in right_ids: + v_lr = value_getter(li, rj) + v_rl = value_getter(rj, li) + + if isinstance(v_lr, (int, float)): + values.append(v_lr) + if isinstance(v_rl, (int, float)): + values.append(v_rl) + + return max(values) if values else None + +def compute_max_cross_group_metric_from_groups(left_ids, right_ids, value_getter): + if not left_ids or not right_ids: + return None + + values = [] + for left_id in left_ids: + for right_id in right_ids: + v_lr = value_getter(left_id, right_id) + v_rl = value_getter(right_id, left_id) + + if isinstance(v_lr, (int, float)): + values.append(v_lr) + if isinstance(v_rl, (int, float)): + values.append(v_rl) + + return max(values) if values else None + +def compute_max_cross_group_pair_chains_iptm(pair_chains_iptm, int_chain_map): + if not isinstance(pair_chains_iptm, dict): + return None + + def get_dict_value(i, j): + return pair_chains_iptm.get(str(i), {}).get(str(j)) + + return compute_max_cross_group_metric(int_chain_map, get_dict_value) + +def compute_max_cross_group_chain_pair_iptm(chain_pair_iptm, int_chain_map): + if not isinstance(chain_pair_iptm, list): + return None + + def get_list_value(i, j): + if 0 <= i < len(chain_pair_iptm) and isinstance(chain_pair_iptm[i], list): + if 0 <= j < len(chain_pair_iptm[i]): + return chain_pair_iptm[i][j] + return None + + return compute_max_cross_group_metric(int_chain_map, get_list_value) + +def compute_max_cross_group_pairwise_iptm(pairwise_iptm, str_chain_map): + if not isinstance(pairwise_iptm, dict): + return None + + left_ids, right_ids = parse_str_chain_map(str_chain_map) + + def get_pairwise_value(i, j): + return pairwise_iptm.get(f"{i}-{j}") + + return compute_max_cross_group_metric_from_groups(left_ids, right_ids, get_pairwise_value) + +def extract_boltz_results(json_files, output_csv, sample_meta_by_id): rows_by_id = {} all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] - writing_keys = ["id", "confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + writing_keys = ["id", "iptm", "ptm", "int_chain_map", "str_chain_map", "max_cross_group_pair_chains_iptm", "confidence_score", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] writing_keys_extra = set() for file in json_files: @@ -91,6 +194,11 @@ def extract_boltz_results(json_files, output_csv): flat_data = rows_by_id[sample_id] if record_type == "confidence": + int_chain_map = sample_meta_by_id.get(sample_id, {}).get("int_chain_map", "") + flat_data["max_cross_group_pair_chains_iptm"] = compute_max_cross_group_pair_chains_iptm( + data.get("pair_chains_iptm"), + int_chain_map + ) for key, value in data.items(): if key not in all_keys: continue @@ -125,15 +233,16 @@ def extract_boltz_results(json_files, output_csv): writer.writeheader() for sample_id in sorted(rows_by_id.keys()): row = rows_by_id[sample_id] + add_mapping_fields(row, sample_id, sample_meta_by_id) writer.writerow({key: row.get(key, "") for key in final_writing_vals}) -def extract_colabfold_results(json_files, samples, output_csv): +def extract_colabfold_results(json_files, samples, output_csv, sample_meta_by_id): def parse_colabfold_metrics(json_file): with open(json_file, "r") as f: data = json.load(f) result = {} - for key in ["iptm", "max_pae", "pae", "ptm", "plddt"]: + for key in ["iptm", "max_pae", "pae", "ptm", "plddt", "pairwise_iptm"]: if key not in data: result[key] = None continue @@ -148,12 +257,17 @@ def parse_colabfold_metrics(json_file): return result rows = [] - all_keys = ["id", "plddt", "ptm", "iptm", "max_pae"] + all_keys = ["id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_pairwise_iptm", "plddt", "max_pae"] writing_keys = all_keys cntr = 0 for file in json_files: flat_data = parse_colabfold_metrics(file) flat_data["id"] = samples[cntr] + add_mapping_fields(flat_data, flat_data["id"], sample_meta_by_id) + flat_data["max_cross_group_pairwise_iptm"] = compute_max_cross_group_pairwise_iptm( + flat_data.get("pairwise_iptm"), + flat_data.get("str_chain_map", "") + ) cntr += 1 rows.append(flat_data) @@ -164,10 +278,10 @@ def parse_colabfold_metrics(json_file): for row in rows: writer.writerow({key: row.get(key, "") for key in writing_keys}) -def extract_alphafold3_results(json_files, samples, output_csv): +def extract_alphafold3_results(json_files, samples, output_csv, sample_meta_by_id): rows = [] all_keys = ["chain_iptm","chain_pair_iptm", "chain_pair_pae_min", "ptm", "iptm", "chain_ptm", "fraction_disordered", "has_clash", "ranking_score"] - writing_keys = ["id", "ptm", "iptm", "fraction_disordered", "has_clash", "ranking_score"] + writing_keys = ["id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_chain_pair_iptm", "fraction_disordered", "has_clash", "ranking_score"] writing_keys_extra = set() # First pass: read and collect keys cntr = 0 @@ -175,6 +289,11 @@ def extract_alphafold3_results(json_files, samples, output_csv): with open(file) as f: data = json.load(f) flat_data = {"id": samples[cntr]} + add_mapping_fields(flat_data, flat_data["id"], sample_meta_by_id) + flat_data["max_cross_group_chain_pair_iptm"] = compute_max_cross_group_chain_pair_iptm( + data.get("chain_pair_iptm"), + flat_data.get("int_chain_map", "") + ) cntr += 1 for key, value in data.items(): if key not in all_keys: @@ -203,18 +322,24 @@ def main(): parser.add_argument("-i", "--input", help="Path to input directory containing all json files") parser.add_argument("-o", "--output", default="output_msa", help="output CSV file") parser.add_argument("--model", default="boltz", help="model generating the input files can be one of [boltz, alphafold3, and colabfold]") + parser.add_argument("--sample-metadata", default=None, help="JSON file with list of sample metadata maps including id/int_chain_map/str_chain_map") args = parser.parse_args() json_files = [str(f) for f in Path(args.input).glob("*.json") if f.is_file()] + sample_meta_by_id = {} + if args.sample_metadata: + with open(args.sample_metadata, "r") as f: + sample_metadata = json.load(f) + sample_meta_by_id = build_sample_meta_by_id(sample_metadata) if args.model.lower() == "boltz": - extract_boltz_results(json_files, args.output) + extract_boltz_results(json_files, args.output, sample_meta_by_id) elif args.model.lower() == "colabfold": samples = [Path(p).name.split("_scores_")[0] for p in json_files] - extract_colabfold_results(json_files, samples, args.output) + extract_colabfold_results(json_files, samples, args.output, sample_meta_by_id) elif args.model.lower() == "alphafold3": samples = [Path(p).name.split("_summary_confidences.json")[0] for p in json_files] - extract_alphafold3_results(json_files, samples, args.output) + extract_alphafold3_results(json_files, samples, args.output, sample_meta_by_id) print(f"CSV file created at: {args.output}") diff --git a/modules/local/collect_confidence.nf b/modules/local/collect_confidence.nf index 8a0fade..e153032 100644 --- a/modules/local/collect_confidence.nf +++ b/modules/local/collect_confidence.nf @@ -19,11 +19,17 @@ process COLLECT_CONFIDENCE { script: def args = task.ext.args ?: '' + def samples_json = groovy.json.JsonOutput.toJson(samples) """ + cat << 'EOF' > sample_metadata.json + ${samples_json} + EOF + collect_confidence.py \\ --input input_json_files \\ --model "${meta.model}"\\ + --sample-metadata sample_metadata.json \\ --output "${meta.model}_confidence_scores_full.csv" cat <<-END_VERSIONS > versions.yml diff --git a/modules/local/data_convertor/create_interactions.nf b/modules/local/data_convertor/create_interactions.nf index f5983dd..9b0948a 100644 --- a/modules/local/data_convertor/create_interactions.nf +++ b/modules/local/data_convertor/create_interactions.nf @@ -17,6 +17,7 @@ process CREATE_INTERACTIONS { output: path ("interactions.fasta"), emit: interactions + path ("interaction_mapping.tsv"), emit: interaction_mapping path "versions.yml" , emit: versions when: @@ -59,7 +60,22 @@ process CREATE_INTERACTIONS { return f"{parsed_type}|{parsed_seq}" - with open("interactions.fasta", "w") as target_interactions: + def chain_count(entity_type, entity_seq): + if entity_type.lower() == "protein": + return len([chain for chain in entity_seq.split(":") if chain]) + return 1 + + def int_id_to_str_id(i): + if i < 0: + raise ValueError(f"int_id_to_str_id: Only positive integers allowed, got {i}") + output = [] + while i >= 0: + output.append(chr(i % 26 + ord("A"))) + i = i // 26 - 1 + return "".join(output) + + with open("interactions.fasta", "w") as target_interactions, open("interaction_mapping.tsv", "w") as mapping_file: + mapping_file.write("interaction_id\\tint_chain_map\\tstr_chain_map\\n") for i in range(n): for j in range(i, n): if interaction_mode[0] != "all-all" and groups[i] not in group_ls: @@ -67,15 +83,27 @@ process CREATE_INTERACTIONS { if (interaction_mode[0] != "all-all" and "-".join(sorted([groups[i], groups[j]])) in interaction_mode) or (interaction_mode[0] == "all-all" and (${interaction_threshold} == 0 or abs(i-j) <= ${interaction_threshold})): interactions_cntr += 1 + left_chain_count = chain_count(types[i], seqs[i]) + right_chain_count = chain_count(types[j], seqs[j]) + left_chain_indices = ",".join(str(idx) for idx in range(0, left_chain_count)) + right_chain_indices = ",".join(str(idx) for idx in range(left_chain_count, left_chain_count + right_chain_count)) + left_chain_str_ids = ",".join(int_id_to_str_id(idx) for idx in range(0, left_chain_count)) + right_chain_str_ids = ",".join(int_id_to_str_id(idx) for idx in range(left_chain_count, left_chain_count + right_chain_count)) + interaction_id = f"{ids[i]}-{ids[j]}" + interaction_header = f">{interaction_id}\\n" + mapping_file.write( + f"{interaction_id}\\t{left_chain_indices}:{right_chain_indices}\\t{left_chain_str_ids}:{right_chain_str_ids}\\n" + ) + if types[i] == "protein" and types[j] == "protein": - target_interactions.write(f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{seqs[j]}\\n") + target_interactions.write(f"{interaction_header}{seqs[i]}:{seqs[j]}\\n") elif types[i] == "protein": target_interactions.write( - f">{ids[i]}-{ids[j]}\\n{seqs[i]}:{format_non_protein_entry(types[j], seqs[j])}\\n" + f"{interaction_header}{seqs[i]}:{format_non_protein_entry(types[j], seqs[j])}\\n" ) elif types[j] == "protein": target_interactions.write( - f">{ids[i]}-{ids[j]}\\n{format_non_protein_entry(types[i], seqs[i])}:{seqs[j]}\\n" + f"{interaction_header}{format_non_protein_entry(types[i], seqs[i])}:{seqs[j]}\\n" ) if interactions_cntr == 0: print("No Interactions found!!") @@ -88,6 +116,7 @@ process CREATE_INTERACTIONS { stub: """ touch interactions.fasta + touch interaction_mapping.tsv cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 2cb6e18..0f8c0aa 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -127,7 +127,28 @@ workflow WISPS { interaction_threshold ) - CREATE_INTERACTIONS.out.interactions + ch_interaction_info = CREATE_INTERACTIONS.out.interaction_mapping + .flatMap { mapping_tsv -> + def out = [] + def lines = mapping_tsv.readLines().findAll { it?.trim() } + if (lines.isEmpty()) { + throw new IllegalStateException("Invalid interaction mapping file ${mapping_tsv}: file is empty.") + } + + lines.drop(1).each { line -> + def cols = line.split("\t", -1) + if (cols.size() != 3) { + throw new IllegalStateException("Invalid interaction mapping row in ${mapping_tsv}: '${line}'") + } + def interaction_id = cols[0].trim() + def int_chain_map = cols[1].trim() + def str_chain_map = cols[2].trim() + out << [interaction_id, int_chain_map, str_chain_map] + } + out + } + + ch_interaction_raw = CREATE_INTERACTIONS.out.interactions .flatMap { interactions_fasta -> def out = [] def lines = interactions_fasta.readLines().findAll { it?.trim() } @@ -145,13 +166,22 @@ workflow WISPS { def sequence_line = chunk[1].trim() //def has_protein = sequence_line.split(":").any { !it.contains("|") } def has_protein = sequence_line.split(":").count { !it.contains("|") } > 1 - out << [ - ["id": interaction_id], - has_protein - ] + out << [interaction_id, has_protein] } out } + ch_interaction_raw + .join(ch_interaction_info) + .map { interaction_id, has_protein, int_chain_map, str_chain_map -> + [ + [ + "id": interaction_id, + "int_chain_map": int_chain_map, + "str_chain_map": str_chain_map + ], + has_protein + ] + } .set{ch_interaction_in} @@ -492,23 +522,41 @@ workflow WISPS { ch_ipsae_scores = ch_ipsae_scores_by_pair.mix(ch_ipsae_scores_max) + ch_interaction_meta_by_id = ch_interaction_in + .map { [it[0].id, it[0]] } + + ch_boltz_confidence_with_meta = ch_boltz_confidence + .map { [it[0].id, it[1]] } + .join(ch_interaction_meta_by_id) + .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } + + ch_boltz_affinity_with_meta = ch_boltz_affinity + .map { [it[0].id, it[1]] } + .join(ch_interaction_meta_by_id) + .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } - ch_boltz_confidence - .mix(ch_boltz_affinity) + ch_boltz_confidence_with_meta + .mix(ch_boltz_affinity_with_meta) .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id}.unique() + ids: json_list.collect{it[0]}.unique{it.id} json: json_list.collect{it[1]} }.set{ch_boltz_confidence_scores} ch_alphafold3_summary_confidences + .map { [it[0].id, it[1]] } + .join(ch_interaction_meta_by_id) + .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} + ids: json_list.collect{it[0]}.unique{it.id} json: json_list.collect{it[1]} }.set{ch_alphafold3_confidence_scores} ch_colabfold_scores + .map { [it[0].id, it[1]] } + .join(ch_interaction_meta_by_id) + .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0].id} + ids: json_list.collect{it[0]}.unique{it.id} json: json_list.collect{it[1]} }.set{ch_colabfold_confidence_scores} From 4b4d7ee78e80bf4d9e2d68bd55f890f9eb8b125f Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 22:04:58 +1000 Subject: [PATCH 44/70] add manual mode --- workflows/wisps.nf | 82 ++++++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 32 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 0f8c0aa..d4fa5cb 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -85,7 +85,7 @@ workflow WISPS { } if ("all-all" in interaction_mode) { interaction_mode = ["all-all"] - }else{ + } else if (!("manual" in interaction_mode)) { required = interaction_mode.collect{it.split("-")}.flatten().unique() ch_samplesheet .map{it[0].group} @@ -106,7 +106,7 @@ workflow WISPS { .multiMap{ if (it[1].extension == "fasta" || it[1].extension == "fa") {seq = getFastaSequences(it[1].text).sequence.join(":")} - else if (it[1].extension == "yaml" || it[1].extension == ".yml") + else if (it[1].extension == "yaml" || it[1].extension == "yml") {seq = getYamlSequences(it[1].text).sequence.join(":")} else if (it[1].extension == "json") {seq = ""} @@ -118,38 +118,52 @@ workflow WISPS { }.set{ch_raw_sample_sheet} - CREATE_INTERACTIONS( - ch_raw_sample_sheet.ids.collect(), - ch_raw_sample_sheet.types.collect(), - ch_raw_sample_sheet.groups.collect(), - ch_raw_sample_sheet.seqs.collect(), - interaction_mode, - interaction_threshold - ) + ch_interaction_raw = Channel.empty() + ch_interaction_info = Channel.empty() - ch_interaction_info = CREATE_INTERACTIONS.out.interaction_mapping - .flatMap { mapping_tsv -> - def out = [] - def lines = mapping_tsv.readLines().findAll { it?.trim() } - if (lines.isEmpty()) { - throw new IllegalStateException("Invalid interaction mapping file ${mapping_tsv}: file is empty.") - } + if (!("manual" in interaction_mode)) { + CREATE_INTERACTIONS( + ch_raw_sample_sheet.ids.collect(), + ch_raw_sample_sheet.types.collect(), + ch_raw_sample_sheet.groups.collect(), + ch_raw_sample_sheet.seqs.collect(), + interaction_mode, + interaction_threshold + ) - lines.drop(1).each { line -> - def cols = line.split("\t", -1) - if (cols.size() != 3) { - throw new IllegalStateException("Invalid interaction mapping row in ${mapping_tsv}: '${line}'") + ch_interaction_info = CREATE_INTERACTIONS.out.interaction_mapping + .flatMap { mapping_tsv -> + def out = [] + def lines = mapping_tsv.readLines().findAll { it?.trim() } + if (lines.isEmpty()) { + throw new IllegalStateException("Invalid interaction mapping file ${mapping_tsv}: file is empty.") + } + + lines.drop(1).each { line -> + def cols = line.split("\t", -1) + if (cols.size() != 3) { + throw new IllegalStateException("Invalid interaction mapping row in ${mapping_tsv}: '${line}'") + } + def interaction_id = cols[0].trim() + def int_chain_map = cols[1].trim() + def str_chain_map = cols[2].trim() + out << [interaction_id, int_chain_map, str_chain_map] } - def interaction_id = cols[0].trim() - def int_chain_map = cols[1].trim() - def str_chain_map = cols[2].trim() - out << [interaction_id, int_chain_map, str_chain_map] + out } - out + + ch_interaction_raw = CREATE_INTERACTIONS.out.interactions + } else { + ch_interaction_raw = ch_samplesheet + .map { it[1] } + .filter { it.extension == "fasta" || it.extension == "fa" } + .ifEmpty { error("Manual mode requires at least one FASTA file in the samplesheet sequence column.") } + .collectFile(name: "manual_interactions.fasta", newLine: false) { fasta_file -> + ["manual_interactions.fasta", fasta_file.text.trim() + "\n"] + } } - ch_interaction_raw = CREATE_INTERACTIONS.out.interactions - .flatMap { interactions_fasta -> + ch_interaction_has_protein = ch_interaction_raw.flatMap { interactions_fasta -> def out = [] def lines = interactions_fasta.readLines().findAll { it?.trim() } if (lines.size() % 2 != 0) { @@ -164,13 +178,18 @@ workflow WISPS { def interaction_id = header.substring(1).trim() def sequence_line = chunk[1].trim() - //def has_protein = sequence_line.split(":").any { !it.contains("|") } def has_protein = sequence_line.split(":").count { !it.contains("|") } > 1 out << [interaction_id, has_protein] } out } - ch_interaction_raw + + if ("manual" in interaction_mode) { + ch_interaction_info = ch_interaction_has_protein + .map { interaction_id, _ -> [interaction_id, "", ""] } + } + + ch_interaction_has_protein .join(ch_interaction_info) .map { interaction_id, has_protein, int_chain_map, str_chain_map -> [ @@ -184,11 +203,10 @@ workflow WISPS { } .set{ch_interaction_in} - ch_interaction_in.count().subscribe{print("total final: ${it}")} MMSEQS_COLABFOLDSEARCH ( - CREATE_INTERACTIONS.out.interactions.map{[["id": "all_run"], it]}, + ch_interaction_raw.map{[["id": "all_run"], it]}, ch_colabfold_db, ch_uniref30 ) From e798c21f3acfea5566970ff79cae52d7d487de12 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 12 Apr 2026 23:40:21 +1000 Subject: [PATCH 45/70] fix ipsae join on id --- workflows/wisps.nf | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index d4fa5cb..1826a06 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -375,15 +375,15 @@ workflow WISPS { ipsae_batch = 0 + ch_protein_interaction_by_id = ch_interaction_in + .filter { it[1] } + .map { [it[0].id, it[0]] } ch_colabfold_scores .join(ch_colabfold_pdb) - .map{[["id": it[0].id], it]} - .join(ch_interaction_in - .filter{it[1]} - .map{it[0]} - ) - .map{[it[1][1], it[1][2], []]} + .map { [it[0].id, it[1], it[2]] } + .join(ch_protein_interaction_by_id) + .map { id, score_json, pdb_file, _ -> [score_json, pdb_file, []] } .buffer( size: analysis_batch_size, remainder: true ) .map{ ipsae_batch += 1; @@ -393,12 +393,9 @@ workflow WISPS { ch_boltz_pae .join(ch_boltz_cif) .join(ch_boltz_confidence) - .map{[["id": it[0].id], [it[0], it[1], it[2]], it[3]]} - .join(ch_interaction_in - .filter{it[1]} - .map{it[0]} - ) - .map{[it[1][1], it[1][2], it[2]]} + .map { [it[0].id, it[1], it[2], it[3]] } + .join(ch_protein_interaction_by_id) + .map { id, pae_file, cif_file, confidence_json, _ -> [pae_file, cif_file, confidence_json] } .buffer( size: analysis_batch_size, remainder: true ) .map{ ipsae_batch += 1; @@ -407,12 +404,9 @@ workflow WISPS { ) .mix( ch_alphafold3_confidence.join(ch_alphafold3_cif) - .map{[["id": it[0].id], it]} - .join(ch_interaction_in - .filter{it[1]} - .map{it[0]} - ) - .map{[it[1][1], it[1][2], []]} + .map { [it[0].id, it[1], it[2]] } + .join(ch_protein_interaction_by_id) + .map { id, confidence_json, cif_file, _ -> [confidence_json, cif_file, []] } .buffer( size: analysis_batch_size, remainder: true ) .map{ ipsae_batch += 1; From 8c8a2ad29aab0be3359eae6117e3f263911a6987 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 07:57:55 +1000 Subject: [PATCH 46/70] report max cross group wisps --- workflows/wisps.nf | 74 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 1826a06..810fc8c 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -439,6 +439,53 @@ workflow WISPS { [sampleId, entries] } + def parseStrChainMap = { strChainMap -> + if (!strChainMap || !strChainMap.contains(":")) { + return [[], []] + } + def parts = strChainMap.split(":", 2) + def leftIds = parts[0].split(",").collect { it.trim() }.findAll { it != "" } + def rightIds = parts[1].split(",").collect { it.trim() }.findAll { it != "" } + [leftIds, rightIds] + } + + def computeMaxCrossGroupIpsae = { entries, strChainMap -> + if (!entries) { + return null + } + def overallMax = entries.collect { it[1] }.findAll { it != null }.max() + + // If no chain map exists, fall back to the overall max IPSAE. + if (!strChainMap || !strChainMap.contains(":")) { + return overallMax + } + + def parsed = parseStrChainMap(strChainMap) + def leftIds = parsed[0] as Set + def rightIds = parsed[1] as Set + if (leftIds.isEmpty() || rightIds.isEmpty()) { + return overallMax + } + + def crossScores = entries.collect { pair -> + def pairId = pair[0].toString() + def score = pair[1] + def chains = pairId.split("_", 2) + if (chains.size() != 2) { + chains = pairId.split("-", 2) + } + if (chains.size() != 2) { + return null + } + def left = chains[0].trim() + def right = chains[1].trim() + ((leftIds.contains(left) && rightIds.contains(right)) || + (leftIds.contains(right) && rightIds.contains(left))) ? score : null + }.findAll { it != null } + + crossScores ? crossScores.max() : null + } + IPSAE.out.txt .transpose() .branch { @@ -504,9 +551,30 @@ workflow WISPS { ) { item -> [item[0], item[1]] } .set { ch_ipsae_scores_by_pair } - // 4) Additional summary file: max score per sample/model across all pair ids - ch_model_wide = ch_long - .map { sampleId, pairId, model, score -> [[sampleId, model], score] } + // 4) Additional summary file: max cross-group (left/right in str_chain_map) IPSAE per sample/model + ch_str_chain_map_by_id = ch_interaction_in.map { [it[0].id, it[0].str_chain_map] } + + ch_model_rows = ch_ipsae_out.boltz + .join(ch_str_chain_map_by_id, remainder: true) + .map { sampleId, entries, strChainMap -> + [[sampleId, "boltz"], computeMaxCrossGroupIpsae(entries, strChainMap)] + } + .mix( + ch_ipsae_out.colabfold + .join(ch_str_chain_map_by_id, remainder: true) + .map { sampleId, entries, strChainMap -> + [[sampleId, "colabfold"], computeMaxCrossGroupIpsae(entries, strChainMap)] + } + ) + .mix( + ch_ipsae_out.alphafold3 + .join(ch_str_chain_map_by_id, remainder: true) + .map { sampleId, entries, strChainMap -> + [[sampleId, "alphafold3"], computeMaxCrossGroupIpsae(entries, strChainMap)] + } + ) + + ch_model_wide = ch_model_rows .groupTuple() .map { key, scores -> [key[0], [key[1], scores.max()]] } .groupTuple() From 682bc823d175507e7a62d5a84254c658152f70df Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 08:34:39 +1000 Subject: [PATCH 47/70] fix envdb prefix bug --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index c47699e..900c8c7 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -125,7 +125,7 @@ "type": "string", "description": "Link to the ColabFold database", "fa_icon": "fas fa-folder-open", - "default": "colabfold_uniref30/uniref30_2302_db" + "default": "colabfold_envdb/colabfold_envdb_202108_db" }, "spire_db": { "type": "string", From 17b7462fc85bec6ead3a3ab5a6952b412e4d27f5 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 09:23:11 +1000 Subject: [PATCH 48/70] update param names --- conf/gadi.config | 4 ++-- conf/test_gadi.config | 6 +++--- docs/usage.md | 2 +- main.nf | 6 +++--- modules/local/data_convertor/create_interactions.nf | 4 ++-- nextflow.config | 5 ++--- nextflow_schema.json | 12 ++---------- subworkflows/local/msa.nf | 8 ++++---- workflows/wisps.nf | 12 ++++++------ 9 files changed, 25 insertions(+), 34 deletions(-) diff --git a/conf/gadi.config b/conf/gadi.config index 4df154a..1fade99 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -28,8 +28,8 @@ params { boltz2_conf = "/g/data/li87/struct_bio/params/boltz/boltz2_conf.ckpt" boltz2_mols = "/g/data/li87/struct_bio/params/boltz/mols" - uniref30 = "/g/data/li87/proteinfold_dbs/colabfold_uniref30/" - colabfold_db = "/g/data/li87/proteinfold_dbs/colabfold_envdb/" + colabfold_uniref30 = "/g/data/li87/proteinfold_dbs/colabfold_uniref30/" + colabfold_envdb = "/g/data/li87/proteinfold_dbs/colabfold_envdb/" colabfold_alphafold2_params = "/g/data/li87/struct_bio/params/alphafold2/" diff --git a/conf/test_gadi.config b/conf/test_gadi.config index 1f58f54..cca3175 100644 --- a/conf/test_gadi.config +++ b/conf/test_gadi.config @@ -25,9 +25,9 @@ params { boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" - colabfold_db = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" - uniref30 = "/g/data/za08/tom/colabfold_uniref30" - colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_colab_2022-12-06/" + colabfold_envdb = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" + colabfold_uniref30 = "/g/data/za08/tom/colabfold_uniref30" + colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_2022-12-06/" alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" diff --git a/docs/usage.md b/docs/usage.md index 7ce1ac0..ca45b6c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -40,7 +40,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The created interactions generated from the sample sheet are customised through the parameter `--mode`. Two different ways to customise what interactions are generated from the sample sheet: -1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. When using this mode, the user can liit the number of formed interactions through the parameter `interaction_threshold` which takes a numeric value. by default the value is 0 and all interactions are formed. For any positive value `n`, onlye the neighboring paires that are within `n` neighbors will be considered. In this case, teh order of the samples in teh sample sheet matters. For example, if `--interaction_threshold 2`, the 2 nighbouring samples (2 before and 2 after) will be consdered. +1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. When using this mode, the user can liit the number of formed interactions through the parameter `interaction_neighbours` which takes a numeric value. by default the value is 0 and all interactions are formed. For any positive value `n`, onlye the neighboring paires that are within `n` neighbors will be considered. In this case, teh order of the samples in teh sample sheet matters. For example, if `--interaction_neighbours 2`, the 2 nighbouring samples (2 before and 2 after) will be consdered. 2. A custom combination can be achieved through the column group in the sample sheet. You can use a combination of the group values. You can use multiple combinations by separating them with a comma (`,`). For example, there are group `A` and group `B1` in the example sample sheet above, running the pipeline with `--mode A-A,A-B` will generate the followiong pairs `S1-S1`, `S3-S3`, and `S1-S3` from the combination `A-A` and add to it the pait `S1-S2` and `S2-S3` from teh combination `A-B`. diff --git a/main.nf b/main.nf index 9571eee..e8ba6ba 100644 --- a/main.nf +++ b/main.nf @@ -47,8 +47,8 @@ workflow NFCORE_WISPS { Channel.fromPath(params.boltz2_aff, checkIfExists: true).first(), Channel.fromPath(params.boltz2_conf, checkIfExists: true).first(), Channel.fromPath(params.boltz2_mols, checkIfExists: true).first(), - Channel.fromPath(params.colabfold_db, checkIfExists: true).first(), - Channel.fromPath(params.uniref30, checkIfExists: true).first(), + Channel.fromPath(params.colabfold_envdb, checkIfExists: true).first(), + Channel.fromPath(params.colabfold_uniref30, checkIfExists: true).first(), Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first(), params.colabfold_num_recycles, Channel.fromPath(params.alphafold3_params, checkIfExists: true).first(), @@ -60,7 +60,7 @@ workflow NFCORE_WISPS { params.outdir, params.analysis_batch_size, params.colabfold_batch_size, - params.interaction_threshold + params.interaction_neighbours ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/data_convertor/create_interactions.nf b/modules/local/data_convertor/create_interactions.nf index 9b0948a..96316a8 100644 --- a/modules/local/data_convertor/create_interactions.nf +++ b/modules/local/data_convertor/create_interactions.nf @@ -13,7 +13,7 @@ process CREATE_INTERACTIONS { val(groups) val(seqs) val(interaction_mode) - val(interaction_threshold) + val(interaction_neighbours) output: path ("interactions.fasta"), emit: interactions @@ -81,7 +81,7 @@ process CREATE_INTERACTIONS { if interaction_mode[0] != "all-all" and groups[i] not in group_ls: continue - if (interaction_mode[0] != "all-all" and "-".join(sorted([groups[i], groups[j]])) in interaction_mode) or (interaction_mode[0] == "all-all" and (${interaction_threshold} == 0 or abs(i-j) <= ${interaction_threshold})): + if (interaction_mode[0] != "all-all" and "-".join(sorted([groups[i], groups[j]])) in interaction_mode) or (interaction_mode[0] == "all-all" and (${interaction_neighbours} == 0 or abs(i-j) <= ${interaction_neighbours})): interactions_cntr += 1 left_chain_count = chain_count(types[i], seqs[i]) right_chain_count = chain_count(types[j], seqs[j]) diff --git a/nextflow.config b/nextflow.config index e49f8fe..8df2de3 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,7 +13,7 @@ params { // Input options input = null mode = "all-all" - interaction_threshold = 0 + interaction_neighbours = 0 mmseqs_gpu = false use_gpu = true analysis_batch_size = 20 @@ -28,8 +28,7 @@ params { boltz2_conf = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt' boltz2_mols = null // extract this file locally: 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar' - colabfold_db = null - uniref30 = null + colabfold_uniref30 = null colabfold_alphafold2_params = null colabfold_envdb = null alphafold3_params = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 900c8c7..1400753 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -55,7 +55,7 @@ "description": "Number of ColabFold samples to be processed in the analysis after multiple single alignment", "fa_icon": "fas fa-microchip" }, - "interaction_threshold": { + "interaction_neighbours": { "type": "integer", "default": 0, "description": "Local neighbourhood to model in all-by-all mode", @@ -97,15 +97,7 @@ "description": "Define where the pipeline should find input data and save output data.", "required": ["input", "outdir"], "properties": { - "colabfold_db": { - "type": "string", - "format": "path", - "exists": true, - "description": "Specifies the PARAMS and DB path used by 'colabfold' mode", - "fa_icon": "fas fa-folder-open", - "errorMessage": "Please provide a valid path to ColabFold database" - }, - "uniref30": { + "colabfold_uniref30": { "type": "string", "description": "Link to the UniRef30 database", "fa_icon": "fas fa-folder-open" diff --git a/subworkflows/local/msa.nf b/subworkflows/local/msa.nf index d1b2bf4..7810742 100644 --- a/subworkflows/local/msa.nf +++ b/subworkflows/local/msa.nf @@ -11,8 +11,8 @@ workflow MSA { take: ch_samplesheet - ch_colabfold_db // channel: path(colabfold_db) - ch_uniref30 // channel: path(uniref30) + ch_colabfold_envdb // channel: path(colabfold_envdb) + ch_colabfold_uniref30 // channel: path(colabfold_uniref30) batch_size main: @@ -69,8 +69,8 @@ workflow MSA { MMSEQS_COLABFOLDSEARCH ( ch_input_seqs, - ch_colabfold_db, - ch_uniref30 + ch_colabfold_envdb, + ch_colabfold_uniref30 ) ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 810fc8c..212ed56 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -60,8 +60,8 @@ workflow WISPS { ch_boltz2_aff ch_boltz2_conf ch_mols - ch_colabfold_db - ch_uniref30 + ch_colabfold_envdb + ch_colabfold_uniref30 ch_colabfold_params num_recycles ch_alphafold3_params @@ -73,7 +73,7 @@ workflow WISPS { outdir analysis_batch_size colabfold_batch_size - interaction_threshold + interaction_neighbours main: ch_multiqc_files = Channel.empty() @@ -128,7 +128,7 @@ workflow WISPS { ch_raw_sample_sheet.groups.collect(), ch_raw_sample_sheet.seqs.collect(), interaction_mode, - interaction_threshold + interaction_neighbours ) ch_interaction_info = CREATE_INTERACTIONS.out.interaction_mapping @@ -207,8 +207,8 @@ workflow WISPS { MMSEQS_COLABFOLDSEARCH ( ch_interaction_raw.map{[["id": "all_run"], it]}, - ch_colabfold_db, - ch_uniref30 + ch_colabfold_envdb, + ch_colabfold_uniref30 ) ch_versions = ch_versions.mix(MMSEQS_COLABFOLDSEARCH.out.versions) From df2060ae33d80df7db8f3b697c3599df560f85b3 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 18:27:14 +1000 Subject: [PATCH 49/70] Update documentation --- README.md | 73 ++++++++++++++++++++++------------ conf/dbs.config | 16 ++++++++ conf/modules_alphafold3.config | 15 +++++++ conf/modules_boltz.config | 17 ++++++++ conf/modules_colabfold.config | 14 +++++++ docs/output.md | 70 +++++++++++++++++++++++++++++++- docs/usage.md | 20 +++++++--- nextflow.config | 47 +++++++++++++++++----- nextflow_schema.json | 28 ++++++++----- 9 files changed, 249 insertions(+), 51 deletions(-) create mode 100644 conf/dbs.config create mode 100644 conf/modules_alphafold3.config create mode 100644 conf/modules_boltz.config create mode 100644 conf/modules_colabfold.config diff --git a/README.md b/README.md index 6514708..fc9a1e4 100644 --- a/README.md +++ b/README.md @@ -19,50 +19,73 @@ ## Introduction -**nf-core/wisps** is a bioinformatics pipeline that ... - - +**nf-core/wisps** is a bioinformatics pipeline for interaction screening by structure prediction. It ingests a samplesheet of sequence entries (FASTA format) and generates interaction sets based on all-vs-all or group-based modes. The workflow then runs MSA/search and structure prediction with supported models (Boltz, ColabFold, and/or AlphaFold3), computes confidence/interface metrics (including IPSAE), and produces per-interaction result files alongside run-level reports such as MultiQC. - - -2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +- Validate and parse sequence inputs from the samplesheet (FASTA). +- Build interaction sets in manual, all-vs-all or group-based screening mode. +- Generated paired MSAs for each interaction using ColabFold Search powered by MMSeqs2. +- Run structure prediction for each interaction with the configured model(s) (Boltz, ColabFold, and/or AlphaFold3). +- Compute confidence and interface metrics, including IPSAE. +- Aggregate run metrics and QC summaries in [`MultiQC`](http://multiqc.info/). ## Usage > [!NOTE] > If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. - +To run the pipeline with the minimum required inputs: + +1. Create a samplesheet CSV with at least `id` and `sequence` columns (`type` and `group` are optional). +2. Put one sequence entry per row; `sequence` must point to a `.fasta` file. Each fasta file may contain multiple entities which will be considered as a single unit when building candidate interactions. +3. Run `nextflow run` with `--input`, `--outdir`, and a compute `-profile`. + +`samplesheet.csv`: + +```csv +id,sequence,type,group +S1,./data/S1.fasta,protein,A +S2,./data/S2.fasta,protein,B +S3,./data/S3.fasta,rna,A +``` -Now, you can run the pipeline using: +In this file, each row represents a single unit (can contain multiple sequences) to be used to generate candidate interactions. - +Now, to model molecules in group A partnered with molecules in group B you can run the pipeline using: ```bash -nextflow run nf-core/wisps \ - -profile \ - --input samplesheet.csv \ - --outdir +nextflow run Australian-Structural-Biology-Computing/wisps \ + --input ./samplesheet.csv \ + --outdir ./results \ + --db WISPS-DB \ + --mode A-B \ + -profile docker ``` > [!WARNING] diff --git a/conf/dbs.config b/conf/dbs.config new file mode 100644 index 0000000..f5a2d0e --- /dev/null +++ b/conf/dbs.config @@ -0,0 +1,16 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for database links and paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Centralizes URLs and local paths for all external resources used in the workflow. + Update version numbers and base directories in one place for maintainability. +---------------------------------------------------------------------------------------- +*/ + +params { + + // Colabfold + colabfold_uniref30 = "${params.db}/colabfold_uniref30/" + colabfold_envdb = "${params.db}/colabfold_envdb/" + +} \ No newline at end of file diff --git a/conf/modules_alphafold3.config b/conf/modules_alphafold3.config new file mode 100644 index 0000000..51f1efe --- /dev/null +++ b/conf/modules_alphafold3.config @@ -0,0 +1,15 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for database links and paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Centralizes URLs and local paths for all external resources used in the workflow. + Update version numbers and base directories in one place for maintainability. +---------------------------------------------------------------------------------------- +*/ + +params { + + // AlphaFold3 + alphafold3_params = "${params.db}/params/af3.bin" + +} \ No newline at end of file diff --git a/conf/modules_boltz.config b/conf/modules_boltz.config new file mode 100644 index 0000000..cd860a7 --- /dev/null +++ b/conf/modules_boltz.config @@ -0,0 +1,17 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for database links and paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Centralizes URLs and local paths for all external resources used in the workflow. + Update version numbers and base directories in one place for maintainability. +---------------------------------------------------------------------------------------- +*/ + +params { + + // Boltz-2 + boltz2_aff = "${params.db}/params/boltz2_aff.ckpt" + boltz2_conf = "${params.db}/params/boltz2_conf.ckpt" + boltz2_mols = "${params.db}/params/mols" + +} \ No newline at end of file diff --git a/conf/modules_colabfold.config b/conf/modules_colabfold.config new file mode 100644 index 0000000..21a8e05 --- /dev/null +++ b/conf/modules_colabfold.config @@ -0,0 +1,14 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for database links and paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Centralizes URLs and local paths for all external resources used in the workflow. + Update version numbers and base directories in one place for maintainability. +---------------------------------------------------------------------------------------- +*/ + +params { + + colabfold_alphafold2_params = "${params.db}/params/alphafold_params_2022-12-06" + +} \ No newline at end of file diff --git a/docs/output.md b/docs/output.md index aa34f33..b5b9512 100644 --- a/docs/output.md +++ b/docs/output.md @@ -6,13 +6,81 @@ This document describes the output produced by the pipeline. Most of the plots a The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level results directory. - +## WISPS-specific outputs + +### Interaction generation + +

    +Output files + +- `create/` + - `interactions.fasta`: generated interaction sequences used as model input. + - `interaction_mapping.tsv`: mapping between interaction IDs and chain indices / chain labels. + +
    + +This step expands the samplesheet inputs into pairwise interactions according to `--mode` and `--interaction_neighbours`. + +### MSA and model-input preparation + +
    +Output files + +- `mmseqs/` + - `*.a3m`: MSA files produced by `colabfold_search`. + - `*.json`: AlphaFold3 JSON input files (when AlphaFold3 is enabled). + - `*.yaml`: Boltz YAML input files (when Boltz is enabled). + - `*.csv`: Paired MSA in CSV format used by Boltz (when Boltz is enabled). + +
    + +These files are generated once from the interaction FASTA and reused by downstream structure prediction tools. + +### Structure prediction results + +
    +Output files + +- `run/` (outputs from both Boltz and AlphaFold3 modules) + - Boltz: + - `boltz_results_*/predictions/*/*.cif` and optional `*.pdb`: predicted structures. + - `boltz_results_*/predictions/*/confidence_*.json`: confidence metrics. + - `boltz_results_*/predictions/*/affinity_*.json`: affinity predictions (if produced). + - `boltz_results_*/predictions/*/pae_*.npz`: PAE matrices. + - `boltz_results_*/predictions/*/plddt_*.npz`: per-residue confidence arrays. + - `boltz_results_*/processed/structures/*.npz`: processed structure arrays. + - `boltz_results_*/processed/msa/*.npz`: processed MSA arrays. + - AlphaFold3: + - `out/*/*_model.cif`: top-ranked model structures. + - `out/*/*_confidences.json`: detailed confidence output. + - `out/*/*_summary_confidences.json`: summary confidence output. +- `colabfold/` + - `*_relaxed_rank_001_*_model_*.pdb`: relaxed top-ranked ColabFold structures. + - `*_scores_rank_001_*.json`: model score summaries. + - `*_coverage.png`: MSA coverage plots. + +
    + +### IPSAE and confidence summaries + +
    +Output files + +- `ipsae/` + - `*.pml`, `*_byres.txt`, `*.txt`: IPSAE per-structure analysis outputs. + - `ipsae_scores.csv`: per-interaction summary table with maximum cross-group IPSAE scores by model. + - `ipsae_scores_.csv`: per-chain-pair IPSAE tables across all interactions. +- `collect/` + - `*_confidence_scores_full.csv`: model-specific confidence summary tables used by MultiQC including a maximum cross-group chainwise ipTM score. + +
    ## Pipeline overview The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline +- [WISPS-specific outputs](#wisps-specific-outputs) - Interaction files, model inputs, structure predictions, and summary tables - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution ### MultiQC diff --git a/docs/usage.md b/docs/usage.md index ca45b6c..55c8aba 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -24,25 +24,35 @@ An example of the sample sheet used for the pipeline is shown below: id,sequence,group,type S1,S1.fasta,A,protein S2,Sample2.fasta,B,protein -S3,S3.yaml,A,rna +S3,S3.fasta,A,rna ``` | Column | Description | | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | -| `sequence` | Full path to Fasta/YAML file for sample sequence. File has to have the extension ".fasta", ".fa", or "yaml". | +| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | | `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | | `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | +A sequence file can contain multiple entities but if the entities are different types, they must adhere to the colabfold standard described below. + An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. ## Creating Interactions from sample sheet -The created interactions generated from the sample sheet are customised through the parameter `--mode`. Two different ways to customise what interactions are generated from the sample sheet: +The interactions generated from the sample sheet are controlled with `--mode`. There are three supported modes: + +1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with up to 2 samples before and 2 samples after it. + +2. Group-based mode (for example, `--mode A-A,A-B`): interactions are generated only for the requested group combinations from the `group` column (comma-separated, no spaces). With groups `A` and `B`, `--mode A-A,A-B` will include all `A-A` pairs plus all `A-B` pairs. -1. The default behavior is for `--mode all-all`. In this case, the workflow will generate interaction pairs for all samples in the sample sheet against each other (all possible combinations) and keep the unique pairs after ignoring the order of the samples. This does not require the group column to be provided in the sample sheet, and this is the default behavior of the workflow unless the `--mode` parameter is customised. When using this mode, the user can liit the number of formed interactions through the parameter `interaction_neighbours` which takes a numeric value. by default the value is 0 and all interactions are formed. For any positive value `n`, onlye the neighboring paires that are within `n` neighbors will be considered. In this case, teh order of the samples in teh sample sheet matters. For example, if `--interaction_neighbours 2`, the 2 nighbouring samples (2 before and 2 after) will be consdered. +3. `--mode manual`: no interaction pairing is generated from the sample sheet. Instead, each FASTA record is treated as one interaction input directly. In this mode, provide interaction FASTA entries in the required ColabFold format: + - One FASTA record per interaction (`>interaction_id` then one sequence line). + - Use `:` to separate entities/chains in a complex. + - Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). + - If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. -2. A custom combination can be achieved through the column group in the sample sheet. You can use a combination of the group values. You can use multiple combinations by separating them with a comma (`,`). For example, there are group `A` and group `B1` in the example sample sheet above, running the pipeline with `--mode A-A,A-B` will generate the followiong pairs `S1-S1`, `S3-S3`, and `S1-S3` from the combination `A-A` and add to it the pait `S1-S2` and `S2-S3` from teh combination `A-B`. +Reference: ColabFold input format examples in the official repository README: . ## Running the pipeline diff --git a/nextflow.config b/nextflow.config index 8df2de3..d73aa38 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,21 +12,22 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null - mode = "all-all" - interaction_neighbours = 0 - mmseqs_gpu = false - use_gpu = true - analysis_batch_size = 20 - colabfold_batch_size = 10 - colabfold_num_recycles = 3 - tools = "boltz,colabfold" + mode = "all-all" + interaction_neighbours = 0 + mmseqs_gpu = false + use_gpu = true + analysis_batch_size = 20 + colabfold_batch_size = 10 + colabfold_num_recycles = 3 + tools = "boltz,colabfold" + db = null ipsae_pae_cutoff = 10 ipsae_dist_cutoff = 10 - boltz2_aff = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt' - boltz2_conf = 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt' - boltz2_mols = null // extract this file locally: 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar' + boltz2_aff = null // 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt' + boltz2_conf = null // 'https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt' + boltz2_mols = null // 'https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar' colabfold_uniref30 = null colabfold_alphafold2_params = null @@ -290,3 +291,27 @@ validation { // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' + +includeConfig ({ + if (params.tools.toLowerCase().split(",").contains("alphafold3")) { + return 'conf/modules_alphafold3.config' + } + return '/dev/null' +}()) + +includeConfig ({ + if (params.tools.toLowerCase().split(",").contains("boltz")) { + return 'conf/modules_boltz.config' + } + return '/dev/null' +}()) + +includeConfig ({ + if (params.tools.toLowerCase().split(",").contains("colabfold")) { + return 'conf/modules_colabfold.config' + } + return '/dev/null' +}()) + +// Load links to DBs and parameters +includeConfig 'conf/dbs.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 1400753..f6168f0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -97,15 +97,22 @@ "description": "Define where the pipeline should find input data and save output data.", "required": ["input", "outdir"], "properties": { + "db": { + "type": "string", + "description": "Path to reference data and model parameters", + "fa_icon": "fas fa-folder-open" + }, "colabfold_uniref30": { "type": "string", "description": "Link to the UniRef30 database", - "fa_icon": "fas fa-folder-open" + "fa_icon": "fas fa-folder-open", + "default": "null/colabfold_uniref30/" }, "colabfold_envdb": { "type": "string", "description": "Link to the ColabFold database", - "fa_icon": "fas fa-folder-open" + "fa_icon": "fas fa-folder-open", + "default": "null/colabfold_envdb/" }, "colabfold_uniref30_prefix": { "type": "string", @@ -127,25 +134,28 @@ "colabfold_alphafold2_params": { "type": "string", "description": "Link to the Alphafold2 parameters for Colabfold", - "fa_icon": "fas fa-folder-open" + "fa_icon": "fas fa-folder-open", + "default": "null/params/alphafold_params_2022-12-06" }, "boltz2_aff": { "type": "string", - "default": "https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt", - "description": "Path to boltz affinity file" + "description": "Path to boltz affinity file", + "default": "null/params/boltz2_aff.ckpt" }, "boltz2_conf": { "type": "string", - "default": "https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt", - "description": "Path to boltz-2 conf file" + "description": "Path to boltz-2 conf file", + "default": "null/params/boltz2_conf.ckpt" }, "boltz2_mols": { "type": "string", - "description": "Path to boltz-2 mols" + "description": "Path to boltz-2 mols", + "default": "null/params/mols" }, "alphafold3_params": { "type": "string", - "description": "Path to Alphafold3 params" + "description": "Path to Alphafold3 params", + "default": "null/params/af3.bin" } } }, From fc5311a6e5a45cf9070f1de99f5955dc89651f3b Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 19:51:41 +1000 Subject: [PATCH 50/70] fix single mode db bug --- main.nf | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/main.nf b/main.nf index e8ba6ba..cfcbf59 100644 --- a/main.nf +++ b/main.nf @@ -28,6 +28,7 @@ workflow NFCORE_WISPS { take: samplesheet // channel: samplesheet read in from --input main: + tool_set = params.tools.toLowerCase().split(",") as Set ch_samplesheet = samplesheet ch_multiqc = Channel.empty() ch_versions = Channel.empty() @@ -36,6 +37,22 @@ workflow NFCORE_WISPS { ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath( params.multiqc_config ).first() : Channel.empty() ch_multiqc_logo = params.multiqc_logo ? Channel.fromPath( params.multiqc_logo ).first() : Channel.empty() ch_multiqc_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + + ch_boltz2_aff = ("boltz" in tool_set) + ? Channel.fromPath(params.boltz2_aff, checkIfExists: true).first() + : Channel.empty() + ch_boltz2_conf = ("boltz" in tool_set) + ? Channel.fromPath(params.boltz2_conf, checkIfExists: true).first() + : Channel.empty() + ch_boltz2_mols = ("boltz" in tool_set) + ? Channel.fromPath(params.boltz2_mols, checkIfExists: true).first() + : Channel.empty() + ch_colabfold_alphafold2_params = ("colabfold" in tool_set) + ? Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first() + : Channel.empty() + ch_alphafold3_params = ("alphafold3" in tool_set) + ? Channel.fromPath(params.alphafold3_params, checkIfExists: true).first() + : Channel.empty() // // WORKFLOW: Run pipeline // @@ -44,14 +61,14 @@ workflow NFCORE_WISPS { ch_samplesheet, params.mode, ch_versions, - Channel.fromPath(params.boltz2_aff, checkIfExists: true).first(), - Channel.fromPath(params.boltz2_conf, checkIfExists: true).first(), - Channel.fromPath(params.boltz2_mols, checkIfExists: true).first(), + ch_boltz2_aff, + ch_boltz2_conf, + ch_boltz2_mols, Channel.fromPath(params.colabfold_envdb, checkIfExists: true).first(), Channel.fromPath(params.colabfold_uniref30, checkIfExists: true).first(), - Channel.fromPath(params.colabfold_alphafold2_params, checkIfExists: true).first(), + ch_colabfold_alphafold2_params, params.colabfold_num_recycles, - Channel.fromPath(params.alphafold3_params, checkIfExists: true).first(), + ch_alphafold3_params, params.tools, ch_multiqc_config, ch_multiqc_custom_config, From 95766a007811fa388402247bf26a6f4fe3701498 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 19:54:03 +1000 Subject: [PATCH 51/70] minimal boltz outputs --- modules/local/run_boltz/main.nf | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index ef78d0c..b53e5dd 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -16,13 +16,9 @@ process RUN_BOLTZ { path ('mols') output: - tuple val(meta), path ("boltz_results_*/processed/msa/*.npz") , optional: true, emit: msa - tuple val(meta), path ("boltz_results_*/processed/structures/*.npz") , emit: structures tuple val(meta), path ("boltz_results_*/predictions/*/confidence*.json") , emit: confidence - tuple val(meta), path ("boltz_results_*/predictions/*/*.pdb") , optional: true, emit: pdb - tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , optional: true, emit: cif - tuple val(meta), path ("boltz_results_*/predictions/*/plddt_*model_0.npz") , emit: plddt - tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , optional: true, emit: pae + tuple val(meta), path ("boltz_results_*/predictions/*/*model_0.cif") , emit: cif + tuple val(meta), path ("boltz_results_*/predictions/*/pae_*model_0.npz") , emit: pae tuple val(meta), path ("boltz_results_*/predictions/*/affinity_*.json") , optional: true, emit: affinity path "versions.yml", emit: versions @@ -62,13 +58,9 @@ process RUN_BOLTZ { fname=\${f##*/} id=\${fname%%_*} mkdir -p boltz_results_fasta/predictions/\${id}_boltz_interaction_input - touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/\${id}_boltz_interaction_input_model_0.pdb touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/\${id}_boltz_interaction_input_model_0.cif touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/confidence_\${id}_boltz_interaction_input_model_0.json touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/pae_\${id}_boltz_interaction_input_model_0.npz - touch boltz_results_fasta/predictions/\${id}_boltz_interaction_input/plddt_\${id}_boltz_interaction_input_model_0.npz - touch boltz_results_fasta/processed/msa/\${id}_boltz_interaction_input_0.npz - touch boltz_results_fasta/processed/structures/\${id}_boltz_interaction_input.npz done cat <<-END_VERSIONS > versions.yml From 84ad1ff1962948d6dd743cf2e53b3fd91f8df6a5 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 20:13:56 +1000 Subject: [PATCH 52/70] cleanup unused db path print to log --- nextflow_schema.json | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f6168f0..fb4ddbc 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -105,14 +105,12 @@ "colabfold_uniref30": { "type": "string", "description": "Link to the UniRef30 database", - "fa_icon": "fas fa-folder-open", - "default": "null/colabfold_uniref30/" + "fa_icon": "fas fa-folder-open" }, "colabfold_envdb": { "type": "string", "description": "Link to the ColabFold database", - "fa_icon": "fas fa-folder-open", - "default": "null/colabfold_envdb/" + "fa_icon": "fas fa-folder-open" }, "colabfold_uniref30_prefix": { "type": "string", @@ -134,28 +132,23 @@ "colabfold_alphafold2_params": { "type": "string", "description": "Link to the Alphafold2 parameters for Colabfold", - "fa_icon": "fas fa-folder-open", - "default": "null/params/alphafold_params_2022-12-06" + "fa_icon": "fas fa-folder-open" }, "boltz2_aff": { "type": "string", - "description": "Path to boltz affinity file", - "default": "null/params/boltz2_aff.ckpt" + "description": "Path to boltz affinity file" }, "boltz2_conf": { "type": "string", - "description": "Path to boltz-2 conf file", - "default": "null/params/boltz2_conf.ckpt" + "description": "Path to boltz-2 conf file" }, "boltz2_mols": { "type": "string", - "description": "Path to boltz-2 mols", - "default": "null/params/mols" + "description": "Path to boltz-2 mols" }, "alphafold3_params": { "type": "string", - "description": "Path to Alphafold3 params", - "default": "null/params/af3.bin" + "description": "Path to Alphafold3 params" } } }, From 822fc1600c1db9fea43cdfc8b05a727f46684f36 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 14 Apr 2026 23:53:11 +1000 Subject: [PATCH 53/70] initial pool mode --- main.nf | 4 +- .../create_interaction_pools.nf | 227 ++++++++++++++++++ nextflow.config | 2 + nextflow_schema.json | 12 + workflows/wisps.nf | 75 +++++- 5 files changed, 312 insertions(+), 8 deletions(-) create mode 100644 modules/local/data_convertor/create_interaction_pools.nf diff --git a/main.nf b/main.nf index cfcbf59..7240eb2 100644 --- a/main.nf +++ b/main.nf @@ -77,7 +77,9 @@ workflow NFCORE_WISPS { params.outdir, params.analysis_batch_size, params.colabfold_batch_size, - params.interaction_neighbours + params.interaction_neighbours, + params.pool, + params.pool_size ) ch_versions = ch_versions.mix(WISPS.out.versions) diff --git a/modules/local/data_convertor/create_interaction_pools.nf b/modules/local/data_convertor/create_interaction_pools.nf new file mode 100644 index 0000000..6e10a12 --- /dev/null +++ b/modules/local/data_convertor/create_interaction_pools.nf @@ -0,0 +1,227 @@ +process CREATE_INTERACTION_POOLS { + tag "all_run" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + val(ids) + val(types) + val(groups) + val(seqs) + val(pool_mode) + val(pool_max_total_length) + + output: + path ("interactions.fasta"), emit: interactions + path ("interaction_mapping.tsv"), emit: interaction_mapping + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + """ + #!/usr/bin/env python3 + import sys + + seqs = [${"\"" + seqs.join('", "') + "\""}] + ids = [${"\"" + ids.join('", "') + "\""}] + types = [${"\"" + types.join('", "') + "\""}] + groups = [${"\"" + groups.join('", "') + "\""}] + pool_mode = [${"\"" + pool_mode.join('", "') + "\""}] + + pool_max_total_length = int(${pool_max_total_length}) + + if pool_max_total_length <= 0: + raise ValueError(f"pool_max_total_length must be > 0, got {pool_max_total_length}") + + n = len(seqs) + interactions_cntr = 0 + supported = {"dna", "rna", "ccd", "smiles"} + + def format_non_protein_entry(entity_type, entity_seq): + parsed_type = entity_type.lower() + parsed_seq = entity_seq + + # If sequence is already in colabfold format, keep it and normalize type. + if "|" in entity_seq: + parts = entity_seq.split("|") + if len(parts) > 1 and parts[0].lower() in supported: + parsed_type = parts[0].lower() + parsed_seq = "|".join(parts[1:]) + + if parsed_type == "smiles": + # ColabFold expects aromatic bonds to be written with ';' instead of ':'. + if "|" in parsed_seq: + smi_parts = parsed_seq.split("|") + smi_parts[0] = smi_parts[0].replace(":", ";") + parsed_seq = "|".join(smi_parts) + else: + parsed_seq = parsed_seq.replace(":", ";") + + return f"{parsed_type}|{parsed_seq}" + + def chain_count(entity_type, entity_seq): + if entity_type.lower() == "protein": + return len([chain for chain in entity_seq.split(":") if chain]) + return 1 + + def sequence_length(entity_type, entity_seq): + parsed_type = entity_type.lower() + parsed_seq = entity_seq + + # Handle already-prefixed non-protein entries: type|seq(|copies) + if "|" in entity_seq: + parts = entity_seq.split("|") + if len(parts) > 1 and parts[0].lower() in supported: + parsed_type = parts[0].lower() + parsed_seq = "|".join(parts[1:]) + + if parsed_type == "protein": + return sum(len(chain) for chain in parsed_seq.split(":") if chain) + + # For non-protein entities, use payload length and optional copies. + non_protein_parts = parsed_seq.split("|") + payload = non_protein_parts[0] + copies = 1 + if len(non_protein_parts) > 1 and non_protein_parts[-1].isdigit(): + copies = int(non_protein_parts[-1]) + return len(payload) * copies + + def entity_to_fasta(entity_type, entity_seq): + if entity_type.lower() == "protein": + return entity_seq + return format_non_protein_entry(entity_type, entity_seq) + + def int_id_to_str_id(i): + if i < 0: + raise ValueError(f"int_id_to_str_id: Only positive integers allowed, got {i}") + output = [] + while i >= 0: + output.append(chr(i % 26 + ord("A"))) + i = i // 26 - 1 + return "".join(output) + + def best_fit_decreasing_pool(indices, lengths, capacity): + # Bin-packing heuristic: keeps pools close to capacity without going over. + items = sorted(indices, key=lambda idx: lengths[idx], reverse=True) + bins = [] + + for idx in items: + item_len = lengths[idx] + if item_len > capacity: + raise ValueError( + f"Sequence '{ids[idx]}' length {item_len} exceeds available pool capacity {capacity}." + ) + + best_bin_pos = -1 + best_remaining_after = None + for b_idx, b in enumerate(bins): + if b["remaining"] >= item_len: + rem_after = b["remaining"] - item_len + if best_remaining_after is None or rem_after < best_remaining_after: + best_remaining_after = rem_after + best_bin_pos = b_idx + + if best_bin_pos == -1: + bins.append({"items": [idx], "remaining": capacity - item_len}) + else: + bins[best_bin_pos]["items"].append(idx) + bins[best_bin_pos]["remaining"] -= item_len + + return [b["items"] for b in bins] + + pool_pairs = [] + for mode_spec in pool_mode: + parts = mode_spec.split("-") + if len(parts) != 2 or any(not p.strip() for p in parts): + raise ValueError( + f"Invalid pooled mode entry '{mode_spec}'. Expected '-'." + ) + pool_pairs.append((parts[0].strip(), parts[1].strip())) + + seq_lengths = [sequence_length(types[i], seqs[i]) for i in range(n)] + + with open("interactions.fasta", "w") as target_interactions, open("interaction_mapping.tsv", "w") as mapping_file: + mapping_file.write("interaction_id\\tint_chain_map\\tstr_chain_map\\n") + + for pool_group_1, pool_group_2 in pool_pairs: + left_indices = [i for i in range(n) if groups[i] == pool_group_1] + right_indices = [i for i in range(n) if groups[i] == pool_group_2] + + if not left_indices: + raise ValueError(f"No entries found in pool group '{pool_group_1}'.") + if not right_indices: + raise ValueError(f"No entries found in pool group '{pool_group_2}'.") + + for left_i in left_indices: + left_len = seq_lengths[left_i] + pool_capacity = pool_max_total_length - left_len + if pool_capacity <= 0: + raise ValueError( + f"Left sequence '{ids[left_i]}' length {left_len} is >= pool_max_total_length {pool_max_total_length}." + ) + + # If groups are identical, do not self-pool with the same row. + current_right_indices = [idx for idx in right_indices if idx != left_i] + if not current_right_indices: + raise ValueError( + f"No valid group2 entries available for left entry '{ids[left_i]}' after self-exclusion." + ) + + pools = best_fit_decreasing_pool(current_right_indices, seq_lengths, pool_capacity) + + for pool_idx, pooled_right in enumerate(pools, start=1): + # Keep only pools that include at least one protein partner overall. + has_left_protein = types[left_i].lower() == "protein" + has_any_right_protein = any(types[r].lower() == "protein" for r in pooled_right) + if not (has_left_protein or has_any_right_protein): + continue + + left_chain_count = chain_count(types[left_i], seqs[left_i]) + right_chain_counts = [chain_count(types[r], seqs[r]) for r in pooled_right] + right_total_chain_count = sum(right_chain_counts) + + left_chain_indices = ",".join(str(idx) for idx in range(0, left_chain_count)) + right_chain_indices_int = ",".join( + str(idx) for idx in range(left_chain_count, left_chain_count + right_total_chain_count) + ) + left_chain_str_ids = ",".join(int_id_to_str_id(idx) for idx in range(0, left_chain_count)) + right_chain_str_ids = ",".join( + int_id_to_str_id(idx) for idx in range(left_chain_count, left_chain_count + right_total_chain_count) + ) + + interaction_id = f"{pool_group_1}-{pool_group_2}__{ids[left_i]}-pool{pool_idx:03d}" + mapping_file.write( + f"{interaction_id}\\t{left_chain_indices}:{right_chain_indices_int}\\t{left_chain_str_ids}:{right_chain_str_ids}\\n" + ) + + entities = [entity_to_fasta(types[left_i], seqs[left_i])] + entities.extend(entity_to_fasta(types[r], seqs[r]) for r in pooled_right) + target_interactions.write(f">{interaction_id}\\n{':'.join(entities)}\\n") + interactions_cntr += 1 + + if interactions_cntr == 0: + print("No interaction pools found!!") + exit(1) + + print(f"{interactions_cntr} Interaction pools found!!") + with open ("versions.yml", "w") as version_file: + version_file.write("\\"${task.process}\\":\\n python: {}\\n".format(sys.version.split()[0].strip())) + """ + + stub: + """ + touch interactions.fasta + touch interaction_mapping.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python3 --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/nextflow.config b/nextflow.config index d73aa38..c508fdf 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,6 +14,8 @@ params { input = null mode = "all-all" interaction_neighbours = 0 + pool = false + pool_size = 2000 mmseqs_gpu = false use_gpu = true analysis_batch_size = 20 diff --git a/nextflow_schema.json b/nextflow_schema.json index fb4ddbc..fff75a4 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -61,6 +61,18 @@ "description": "Local neighbourhood to model in all-by-all mode", "fa_icon": "fas fa-microchip" }, + "pool": { + "type": "boolean", + "default": false, + "description": "Enable interaction pooling mode. When true, group pairs are read from --mode instead of standard interaction pairing.", + "fa_icon": "fas fa-layer-group" + }, + "pool_size": { + "type": "integer", + "default": 2000, + "description": "Maximum total sequence length per interaction pool (required when --pool is set).", + "fa_icon": "fas fa-ruler-horizontal" + }, "use_gpu": { "type": "boolean", "description": "Run on CPUs (default) or GPUs for the models", diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 212ed56..9bfb66d 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -36,6 +36,7 @@ include { COLABFOLD_BATCH } from '../modules/local/colabfold_batch' include { BOLTZ_FASTA } from '../modules/local/data_convertor/boltz_fasta' include { IPSAE } from '../modules/local/ipsae' include {CREATE_INTERACTIONS} from '../modules/local/data_convertor/create_interactions' +include {CREATE_INTERACTION_POOLS} from '../modules/local/data_convertor/create_interaction_pools' include { MMSEQS_COLABFOLDSEARCH } from '../modules/local/mmseqs_colabfoldsearch' // @@ -74,33 +75,61 @@ workflow WISPS { analysis_batch_size colabfold_batch_size interaction_neighbours + pool + pool_size main: ch_multiqc_files = Channel.empty() ch_confidence_scores = Channel.empty() - + use_interaction_pools = (pool instanceof Boolean) ? pool : pool.toString().toBoolean() interaction_mode = mode.split(",").collect { pair -> pair.split('-').sort().join('-') } if ("all-all" in interaction_mode) { interaction_mode = ["all-all"] - } else if (!("manual" in interaction_mode)) { - required = interaction_mode.collect{it.split("-")}.flatten().unique() + } + + if (use_interaction_pools) { + if ((pool_size as Integer) <= 0) { + error("When using --pool, --pool_size must be a positive integer. Received: ${pool_size}") + } + if ("manual" in interaction_mode || "all-all" in interaction_mode) { + error("When using --pool, --mode must be explicit group pairs (e.g. 'A-B' or 'A-A,A-B'). 'manual' and 'all-all' are not supported.") + } + + required_pool_groups = interaction_mode.collect{it.split("-")}.flatten().unique() ch_samplesheet .map{it[0].group} .unique() .toList() .subscribe{ emitted -> { - if (required - emitted){ - log.error "The groups ${required - emitted} is not in the sample sheet!" + if (required_pool_groups - emitted){ + log.error "The groups ${required_pool_groups - emitted} are not in the sample sheet!" exit 1 } } } + log.info "Using interaction pooling with modes: ${interaction_mode.join(',')} and max total sequence length ${pool_size}" + } else { + if (!("manual" in interaction_mode) && !("all-all" in interaction_mode)) { + required = interaction_mode.collect{it.split("-")}.flatten().unique() + ch_samplesheet + .map{it[0].group} + .unique() + .toList() + .subscribe{ + emitted -> { + if (required - emitted){ + log.error "The groups ${required - emitted} is not in the sample sheet!" + exit 1 + } + } + } + } + log.info "Used Interactions (Sorted): ${interaction_mode.join(',')}" } - log.info "Used Interactions (Sorted): ${interaction_mode.join(',')}" ch_samplesheet .multiMap{ @@ -121,7 +150,39 @@ workflow WISPS { ch_interaction_raw = Channel.empty() ch_interaction_info = Channel.empty() - if (!("manual" in interaction_mode)) { + if (use_interaction_pools) { + CREATE_INTERACTION_POOLS( + ch_raw_sample_sheet.ids.collect(), + ch_raw_sample_sheet.types.collect(), + ch_raw_sample_sheet.groups.collect(), + ch_raw_sample_sheet.seqs.collect(), + interaction_mode, + pool_size + ) + + ch_interaction_info = CREATE_INTERACTION_POOLS.out.interaction_mapping + .flatMap { mapping_tsv -> + def out = [] + def lines = mapping_tsv.readLines().findAll { it?.trim() } + if (lines.isEmpty()) { + throw new IllegalStateException("Invalid interaction mapping file ${mapping_tsv}: file is empty.") + } + + lines.drop(1).each { line -> + def cols = line.split("\t", -1) + if (cols.size() != 3) { + throw new IllegalStateException("Invalid interaction mapping row in ${mapping_tsv}: '${line}'") + } + def interaction_id = cols[0].trim() + def int_chain_map = cols[1].trim() + def str_chain_map = cols[2].trim() + out << [interaction_id, int_chain_map, str_chain_map] + } + out + } + + ch_interaction_raw = CREATE_INTERACTION_POOLS.out.interactions + } else if (!("manual" in interaction_mode)) { CREATE_INTERACTIONS( ch_raw_sample_sheet.ids.collect(), ch_raw_sample_sheet.types.collect(), From b602a2fdcad80ff72a72432efdc4a367faf5720c Mon Sep 17 00:00:00 2001 From: tlitfin Date: Wed, 15 Apr 2026 21:10:38 +1000 Subject: [PATCH 54/70] pool mode and reporting bugfixes --- bin/collect_confidence.py | 243 ++++++++++++++---- docs/output.md | 8 +- modules/local/colabfold_batch/main.nf | 4 +- .../create_interaction_pools.nf | 31 ++- modules/local/ipsae/main.nf | 2 - modules/local/mmseqs_colabfoldsearch/main.nf | 1 - workflows/wisps.nf | 194 +++++++------- 7 files changed, 321 insertions(+), 162 deletions(-) diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index 4494314..ab0022b 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -79,16 +79,66 @@ def build_sample_meta_by_id(sample_metadata): for item in sample_metadata: if isinstance(item, dict) and "id" in item: sample_id = str(item["id"]) - sample_meta_by_id[sample_id] = { + sample_meta_by_id.setdefault(sample_id, []).append({ + "id": sample_id, + "report_id": item.get("report_id", sample_id), "int_chain_map": item.get("int_chain_map", ""), "str_chain_map": item.get("str_chain_map", ""), - } + "left_source_id": item.get("left_source_id", ""), + "right_source_id": item.get("right_source_id", ""), + }) return sample_meta_by_id -def add_mapping_fields(row, sample_id, sample_meta_by_id): - meta = sample_meta_by_id.get(sample_id, {}) +def get_meta_entries(sample_id, sample_meta_by_id): + entries = sample_meta_by_id.get(sample_id, []) + if entries: + return entries + return [{ + "id": sample_id, + "report_id": sample_id, + "int_chain_map": "", + "str_chain_map": "", + "left_source_id": "", + "right_source_id": "", + }] + +def apply_mapping_fields(row, meta): + row["id"] = meta.get("report_id", row.get("id", "")) + row["model_input_id"] = meta.get("id", "") row["int_chain_map"] = meta.get("int_chain_map", "") row["str_chain_map"] = meta.get("str_chain_map", "") + row["left_source_id"] = meta.get("left_source_id", "") + row["right_source_id"] = meta.get("right_source_id", "") + +def is_empty_value(value): + if value is None: + return True + if isinstance(value, str): + return value.strip() == "" + return False + +def prune_empty_columns(rows, fieldnames): + retained = [] + for field in fieldnames: + if any(not is_empty_value(row.get(field)) for row in rows): + retained.append(field) + return retained + +def format_row_for_multiqc_csv(row, fieldnames): + """ + Emit deterministic table rows for MultiQC: + - no empty cells (use 'NA') + - avoid commas in chain-map display fields + """ + formatted = {} + for field in fieldnames: + value = row.get(field, "") + if is_empty_value(value): + value = "NA" + if field in {"int_chain_map", "str_chain_map"} and isinstance(value, str): + value = value.replace(",", ";") + formatted[field] = value + return formatted def parse_int_chain_map(int_chain_map): if not int_chain_map or ":" not in int_chain_map: @@ -143,18 +193,80 @@ def compute_max_cross_group_metric_from_groups(left_ids, right_ids, value_getter return max(values) if values else None +def compute_overall_max_pair_chains_iptm(pair_chains_iptm): + if not isinstance(pair_chains_iptm, dict): + return None + + values = [] + for left_id, right_map in pair_chains_iptm.items(): + if not isinstance(right_map, dict): + continue + for right_id, value in right_map.items(): + if str(left_id).strip() == str(right_id).strip(): + continue + if isinstance(value, (int, float)): + values.append(value) + + return max(values) if values else None + +def compute_overall_max_chain_pair_iptm(chain_pair_iptm): + if not isinstance(chain_pair_iptm, list): + return None + + values = [] + for i, row in enumerate(chain_pair_iptm): + if not isinstance(row, list): + continue + for j, value in enumerate(row): + if i == j: + continue + if isinstance(value, (int, float)): + values.append(value) + + return max(values) if values else None + +def split_pair_key(pair_key): + key = str(pair_key).strip() + if "-" in key: + parts = key.split("-", 1) + elif "_" in key: + parts = key.split("_", 1) + else: + return None, None + + if len(parts) != 2: + return None, None + return parts[0].strip(), parts[1].strip() + +def compute_overall_max_pairwise_iptm(pairwise_iptm): + if not isinstance(pairwise_iptm, dict): + return None + + values = [] + for pair_key, value in pairwise_iptm.items(): + left_id, right_id = split_pair_key(pair_key) + if left_id is not None and right_id is not None and left_id == right_id: + continue + if isinstance(value, (int, float)): + values.append(value) + + return max(values) if values else None + def compute_max_cross_group_pair_chains_iptm(pair_chains_iptm, int_chain_map): if not isinstance(pair_chains_iptm, dict): return None + overall_max = compute_overall_max_pair_chains_iptm(pair_chains_iptm) def get_dict_value(i, j): return pair_chains_iptm.get(str(i), {}).get(str(j)) - return compute_max_cross_group_metric(int_chain_map, get_dict_value) + cross_group_max = compute_max_cross_group_metric(int_chain_map, get_dict_value) + return cross_group_max if cross_group_max is not None else overall_max def compute_max_cross_group_chain_pair_iptm(chain_pair_iptm, int_chain_map): if not isinstance(chain_pair_iptm, list): return None + overall_max = compute_overall_max_chain_pair_iptm(chain_pair_iptm) def get_list_value(i, j): if 0 <= i < len(chain_pair_iptm) and isinstance(chain_pair_iptm[i], list): @@ -162,23 +274,26 @@ def get_list_value(i, j): return chain_pair_iptm[i][j] return None - return compute_max_cross_group_metric(int_chain_map, get_list_value) + cross_group_max = compute_max_cross_group_metric(int_chain_map, get_list_value) + return cross_group_max if cross_group_max is not None else overall_max def compute_max_cross_group_pairwise_iptm(pairwise_iptm, str_chain_map): if not isinstance(pairwise_iptm, dict): return None + overall_max = compute_overall_max_pairwise_iptm(pairwise_iptm) left_ids, right_ids = parse_str_chain_map(str_chain_map) def get_pairwise_value(i, j): return pairwise_iptm.get(f"{i}-{j}") - return compute_max_cross_group_metric_from_groups(left_ids, right_ids, get_pairwise_value) + cross_group_max = compute_max_cross_group_metric_from_groups(left_ids, right_ids, get_pairwise_value) + return cross_group_max if cross_group_max is not None else overall_max def extract_boltz_results(json_files, output_csv, sample_meta_by_id): rows_by_id = {} all_keys = ["confidence_score", "ptm", "iptm", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde", "chains_ptm"] - writing_keys = ["id", "iptm", "ptm", "int_chain_map", "str_chain_map", "max_cross_group_pair_chains_iptm", "confidence_score", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] + writing_keys = ["id", "model_input_id", "left_source_id", "right_source_id", "iptm", "ptm", "int_chain_map", "str_chain_map", "max_cross_group_pair_chains_iptm", "confidence_score", "ligand_iptm", "protein_iptm", "complex_plddt", "complex_iplddt", "complex_pde", "complex_ipde"] writing_keys_extra = set() for file in json_files: @@ -194,11 +309,7 @@ def extract_boltz_results(json_files, output_csv, sample_meta_by_id): flat_data = rows_by_id[sample_id] if record_type == "confidence": - int_chain_map = sample_meta_by_id.get(sample_id, {}).get("int_chain_map", "") - flat_data["max_cross_group_pair_chains_iptm"] = compute_max_cross_group_pair_chains_iptm( - data.get("pair_chains_iptm"), - int_chain_map - ) + flat_data["_pair_chains_iptm"] = data.get("pair_chains_iptm") for key, value in data.items(): if key not in all_keys: continue @@ -225,16 +336,31 @@ def extract_boltz_results(json_files, output_csv, sample_meta_by_id): flat_data[key_name] = value writing_keys_extra.add(key_name) - # Write to CSV + # Prepare output rows and prune columns with no data final_writing_vals = writing_keys + sorted(writing_keys_extra - set(writing_keys)) + output_rows = [] + + for sample_id in sorted(rows_by_id.keys()): + base_row = rows_by_id[sample_id] + for meta in get_meta_entries(sample_id, sample_meta_by_id): + row = dict(base_row) + apply_mapping_fields(row, meta) + row["max_cross_group_pair_chains_iptm"] = compute_max_cross_group_pair_chains_iptm( + row.get("_pair_chains_iptm"), + row.get("int_chain_map", "") + ) + output_rows.append({key: row.get(key, "") for key in final_writing_vals}) + + final_writing_vals = prune_empty_columns( + output_rows, + final_writing_vals + ) with open(output_csv, "w", newline="") as f: writer = csv.DictWriter(f, fieldnames=final_writing_vals) writer.writeheader() - for sample_id in sorted(rows_by_id.keys()): - row = rows_by_id[sample_id] - add_mapping_fields(row, sample_id, sample_meta_by_id) - writer.writerow({key: row.get(key, "") for key in final_writing_vals}) + for row in output_rows: + writer.writerow(format_row_for_multiqc_csv(row, final_writing_vals)) def extract_colabfold_results(json_files, samples, output_csv, sample_meta_by_id): def parse_colabfold_metrics(json_file): @@ -242,7 +368,7 @@ def parse_colabfold_metrics(json_file): data = json.load(f) result = {} - for key in ["iptm", "max_pae", "pae", "ptm", "plddt", "pairwise_iptm"]: + for key in ["iptm", "pae", "ptm", "plddt", "pairwise_iptm"]: if key not in data: result[key] = None continue @@ -257,63 +383,80 @@ def parse_colabfold_metrics(json_file): return result rows = [] - all_keys = ["id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_pairwise_iptm", "plddt", "max_pae"] + all_keys = ["id", "model_input_id", "left_source_id", "right_source_id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_pairwise_iptm", "plddt"] writing_keys = all_keys cntr = 0 for file in json_files: - flat_data = parse_colabfold_metrics(file) - flat_data["id"] = samples[cntr] - add_mapping_fields(flat_data, flat_data["id"], sample_meta_by_id) - flat_data["max_cross_group_pairwise_iptm"] = compute_max_cross_group_pairwise_iptm( - flat_data.get("pairwise_iptm"), - flat_data.get("str_chain_map", "") - ) + sample_id = samples[cntr] + base_data = parse_colabfold_metrics(file) + base_data["id"] = sample_id cntr += 1 - rows.append(flat_data) + for meta in get_meta_entries(sample_id, sample_meta_by_id): + flat_data = dict(base_data) + apply_mapping_fields(flat_data, meta) + flat_data["max_cross_group_pairwise_iptm"] = compute_max_cross_group_pairwise_iptm( + flat_data.get("pairwise_iptm"), + flat_data.get("str_chain_map", "") + ) + rows.append(flat_data) + + # Prune columns with no data across all rows + writing_keys = prune_empty_columns( + rows, + writing_keys + ) # Write to CSV with open(output_csv, "w", newline="") as f: writer = csv.DictWriter(f, fieldnames=writing_keys) writer.writeheader() for row in rows: - writer.writerow({key: row.get(key, "") for key in writing_keys}) + writer.writerow(format_row_for_multiqc_csv(row, writing_keys)) def extract_alphafold3_results(json_files, samples, output_csv, sample_meta_by_id): rows = [] all_keys = ["chain_iptm","chain_pair_iptm", "chain_pair_pae_min", "ptm", "iptm", "chain_ptm", "fraction_disordered", "has_clash", "ranking_score"] - writing_keys = ["id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_chain_pair_iptm", "fraction_disordered", "has_clash", "ranking_score"] + writing_keys = ["id", "model_input_id", "left_source_id", "right_source_id", "ptm", "iptm", "int_chain_map", "str_chain_map", "max_cross_group_chain_pair_iptm", "fraction_disordered", "has_clash", "ranking_score"] writing_keys_extra = set() # First pass: read and collect keys cntr = 0 for file in json_files: with open(file) as f: data = json.load(f) - flat_data = {"id": samples[cntr]} - add_mapping_fields(flat_data, flat_data["id"], sample_meta_by_id) - flat_data["max_cross_group_chain_pair_iptm"] = compute_max_cross_group_chain_pair_iptm( - data.get("chain_pair_iptm"), - flat_data.get("int_chain_map", "") - ) + sample_id = samples[cntr] cntr += 1 - for key, value in data.items(): - if key not in all_keys: - continue - if isinstance(value, dict) or isinstance(value, list): - sub_data = flatten_deep(value, index_lists=True) - for sub_key, sub_value in sub_data.items(): - flat_data[f"{key}_{sub_key}"] = sub_value - writing_keys_extra.add(f"{key}_{sub_key}") - else: - flat_data[key] = value - rows.append(flat_data) + for meta in get_meta_entries(sample_id, sample_meta_by_id): + flat_data = {"id": sample_id} + apply_mapping_fields(flat_data, meta) + flat_data["max_cross_group_chain_pair_iptm"] = compute_max_cross_group_chain_pair_iptm( + data.get("chain_pair_iptm"), + flat_data.get("int_chain_map", "") + ) + for key, value in data.items(): + if key not in all_keys: + continue + if isinstance(value, dict) or isinstance(value, list): + sub_data = flatten_deep(value, index_lists=True) + for sub_key, sub_value in sub_data.items(): + flat_data[f"{key}_{sub_key}"] = sub_value + writing_keys_extra.add(f"{key}_{sub_key}") + else: + flat_data[key] = value + rows.append(flat_data) - # Write to CSV + # Prune columns with no data across all rows final_writing_vals = writing_keys + sorted(writing_keys_extra) + final_writing_vals = prune_empty_columns( + rows, + final_writing_vals, + ) + + # Write to CSV with open(output_csv, "w", newline="") as f: writer = csv.DictWriter(f, fieldnames=final_writing_vals) writer.writeheader() for row in rows: - writer.writerow({key: row.get(key, "") for key in final_writing_vals}) + writer.writerow(format_row_for_multiqc_csv(row, final_writing_vals)) @@ -322,7 +465,7 @@ def main(): parser.add_argument("-i", "--input", help="Path to input directory containing all json files") parser.add_argument("-o", "--output", default="output_msa", help="output CSV file") parser.add_argument("--model", default="boltz", help="model generating the input files can be one of [boltz, alphafold3, and colabfold]") - parser.add_argument("--sample-metadata", default=None, help="JSON file with list of sample metadata maps including id/int_chain_map/str_chain_map") + parser.add_argument("--sample-metadata", default=None, help="JSON file with list of sample metadata maps including id/report_id/int_chain_map/str_chain_map") args = parser.parse_args() json_files = [str(f) for f in Path(args.input).glob("*.json") if f.is_file()] diff --git a/docs/output.md b/docs/output.md index b5b9512..316461b 100644 --- a/docs/output.md +++ b/docs/output.md @@ -43,13 +43,10 @@ These files are generated once from the interaction FASTA and reused by downstre - `run/` (outputs from both Boltz and AlphaFold3 modules) - Boltz: - - `boltz_results_*/predictions/*/*.cif` and optional `*.pdb`: predicted structures. + - `boltz_results_*/predictions/*/*.cif`: predicted structures. - `boltz_results_*/predictions/*/confidence_*.json`: confidence metrics. - `boltz_results_*/predictions/*/affinity_*.json`: affinity predictions (if produced). - `boltz_results_*/predictions/*/pae_*.npz`: PAE matrices. - - `boltz_results_*/predictions/*/plddt_*.npz`: per-residue confidence arrays. - - `boltz_results_*/processed/structures/*.npz`: processed structure arrays. - - `boltz_results_*/processed/msa/*.npz`: processed MSA arrays. - AlphaFold3: - `out/*/*_model.cif`: top-ranked model structures. - `out/*/*_confidences.json`: detailed confidence output. @@ -57,7 +54,6 @@ These files are generated once from the interaction FASTA and reused by downstre - `colabfold/` - `*_relaxed_rank_001_*_model_*.pdb`: relaxed top-ranked ColabFold structures. - `*_scores_rank_001_*.json`: model score summaries. - - `*_coverage.png`: MSA coverage plots.
    @@ -67,7 +63,7 @@ These files are generated once from the interaction FASTA and reused by downstre Output files - `ipsae/` - - `*.pml`, `*_byres.txt`, `*.txt`: IPSAE per-structure analysis outputs. + - `data/*.txt`: IPSAE per-structure analysis outputs. - `ipsae_scores.csv`: per-interaction summary table with maximum cross-group IPSAE scores by model. - `ipsae_scores_.csv`: per-chain-pair IPSAE tables across all interactions. - `collect/` diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index 9284f42..c45edd0 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -13,7 +13,7 @@ process COLABFOLD_BATCH { output: tuple val(meta), path ("*relaxed_rank_001_*_model_*.pdb") , emit: pdb - tuple val(meta), path ("*_coverage.png") , emit: msa + //tuple val(meta), path ("*_coverage.png") , emit: msa tuple val(meta), path ("*_scores_rank_001_*.json") , emit: top_ranked_scores path "versions.yml" , emit: versions @@ -44,6 +44,7 @@ process COLABFOLD_BATCH { cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') + alphafold_colabfold: \$(pip list | grep "^alphafold-colabfold" | awk '{print \$2}') END_VERSIONS """ @@ -63,6 +64,7 @@ process COLABFOLD_BATCH { cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_batch: \$(pip list | grep "^colabfold" | awk '{print \$2}') + alphafold_colabfold: \$(pip list | grep "^alphafold-colabfold" | awk '{print \$2}') END_VERSIONS """ } diff --git a/modules/local/data_convertor/create_interaction_pools.nf b/modules/local/data_convertor/create_interaction_pools.nf index 6e10a12..f28f635 100644 --- a/modules/local/data_convertor/create_interaction_pools.nf +++ b/modules/local/data_convertor/create_interaction_pools.nf @@ -147,7 +147,7 @@ process CREATE_INTERACTION_POOLS { seq_lengths = [sequence_length(types[i], seqs[i]) for i in range(n)] with open("interactions.fasta", "w") as target_interactions, open("interaction_mapping.tsv", "w") as mapping_file: - mapping_file.write("interaction_id\\tint_chain_map\\tstr_chain_map\\n") + mapping_file.write("interaction_id\\tint_chain_map\\tstr_chain_map\\treport_id\\tleft_source_id\\tright_source_id\\n") for pool_group_1, pool_group_2 in pool_pairs: left_indices = [i for i in range(n) if groups[i] == pool_group_1] @@ -184,27 +184,36 @@ process CREATE_INTERACTION_POOLS { left_chain_count = chain_count(types[left_i], seqs[left_i]) right_chain_counts = [chain_count(types[r], seqs[r]) for r in pooled_right] - right_total_chain_count = sum(right_chain_counts) left_chain_indices = ",".join(str(idx) for idx in range(0, left_chain_count)) - right_chain_indices_int = ",".join( - str(idx) for idx in range(left_chain_count, left_chain_count + right_total_chain_count) - ) left_chain_str_ids = ",".join(int_id_to_str_id(idx) for idx in range(0, left_chain_count)) - right_chain_str_ids = ",".join( - int_id_to_str_id(idx) for idx in range(left_chain_count, left_chain_count + right_total_chain_count) - ) interaction_id = f"{pool_group_1}-{pool_group_2}__{ids[left_i]}-pool{pool_idx:03d}" - mapping_file.write( - f"{interaction_id}\\t{left_chain_indices}:{right_chain_indices_int}\\t{left_chain_str_ids}:{right_chain_str_ids}\\n" - ) entities = [entity_to_fasta(types[left_i], seqs[left_i])] entities.extend(entity_to_fasta(types[r], seqs[r]) for r in pooled_right) target_interactions.write(f">{interaction_id}\\n{':'.join(entities)}\\n") interactions_cntr += 1 + # Emit one mapping row per original cross-group pair in this pool. + right_start = left_chain_count + for ridx, right_i in enumerate(pooled_right): + right_count = right_chain_counts[ridx] + right_indices_pair = ",".join( + str(idx) for idx in range(right_start, right_start + right_count) + ) + right_str_ids_pair = ",".join( + int_id_to_str_id(idx) for idx in range(right_start, right_start + right_count) + ) + report_id = f"{ids[left_i]}-{ids[right_i]}" + mapping_file.write( + f"{interaction_id}\\t" + f"{left_chain_indices}:{right_indices_pair}\\t" + f"{left_chain_str_ids}:{right_str_ids_pair}\\t" + f"{report_id}\\t{ids[left_i]}\\t{ids[right_i]}\\n" + ) + right_start += right_count + if interactions_cntr == 0: print("No interaction pools found!!") exit(1) diff --git a/modules/local/ipsae/main.nf b/modules/local/ipsae/main.nf index 8973233..a707de3 100644 --- a/modules/local/ipsae/main.nf +++ b/modules/local/ipsae/main.nf @@ -12,8 +12,6 @@ process IPSAE { path ("data/") output: - tuple val(meta), path ("data/*.pml"), emit: pml - tuple val(meta), path ("data/*_byres.txt"), emit: byres tuple val(meta), path ("data/*[0-9].txt"), emit: txt path "versions.yml" , emit: versions diff --git a/modules/local/mmseqs_colabfoldsearch/main.nf b/modules/local/mmseqs_colabfoldsearch/main.nf index ebec523..2233898 100644 --- a/modules/local/mmseqs_colabfoldsearch/main.nf +++ b/modules/local/mmseqs_colabfoldsearch/main.nf @@ -37,7 +37,6 @@ process MMSEQS_COLABFOLDSEARCH { cat <<-END_VERSIONS > versions.yml "${task.process}": colabfold_search: \$(pip list | grep "^colabfold" | awk '{print \$2}') - alphafold_colabfold: \$(pip list | grep "^alphafold-colabfold" | awk '{print \$2}') mmseqs: \$(mmseqs version) END_VERSIONS """ diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 9bfb66d..7ccfc6b 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -18,7 +18,9 @@ // MODULE: Installed directly from nf-core/modules // include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { COLLECT_CONFIDENCE } from '../modules/local/collect_confidence' +include { COLLECT_CONFIDENCE as COLLECT_CONFIDENCE_BOLTZ } from '../modules/local/collect_confidence' +include { COLLECT_CONFIDENCE as COLLECT_CONFIDENCE_COLABFOLD } from '../modules/local/collect_confidence' +include { COLLECT_CONFIDENCE as COLLECT_CONFIDENCE_AF3 } from '../modules/local/collect_confidence' // // SUBWORKFLOW: Consisting entirely of nf-core/modules // @@ -170,13 +172,16 @@ workflow WISPS { lines.drop(1).each { line -> def cols = line.split("\t", -1) - if (cols.size() != 3) { + if (cols.size() < 3) { throw new IllegalStateException("Invalid interaction mapping row in ${mapping_tsv}: '${line}'") } def interaction_id = cols[0].trim() def int_chain_map = cols[1].trim() def str_chain_map = cols[2].trim() - out << [interaction_id, int_chain_map, str_chain_map] + def report_id = cols.size() > 3 && cols[3].trim() ? cols[3].trim() : interaction_id + def left_source_id = cols.size() > 4 ? cols[4].trim() : "" + def right_source_id = cols.size() > 5 ? cols[5].trim() : "" + out << [interaction_id, int_chain_map, str_chain_map, report_id, left_source_id, right_source_id] } out } @@ -208,7 +213,7 @@ workflow WISPS { def interaction_id = cols[0].trim() def int_chain_map = cols[1].trim() def str_chain_map = cols[2].trim() - out << [interaction_id, int_chain_map, str_chain_map] + out << [interaction_id, int_chain_map, str_chain_map, interaction_id, "", ""] } out } @@ -247,22 +252,28 @@ workflow WISPS { if ("manual" in interaction_mode) { ch_interaction_info = ch_interaction_has_protein - .map { interaction_id, _ -> [interaction_id, "", ""] } + .map { interaction_id, _ -> [interaction_id, "", "", interaction_id, "", ""] } } - ch_interaction_has_protein - .join(ch_interaction_info) - .map { interaction_id, has_protein, int_chain_map, str_chain_map -> - [ - [ + ch_interaction_has_protein_map = ch_interaction_has_protein + .collect(flat: false) + .map { rows -> + rows.collectEntries { row -> [(row[0]): row[1]] } + } + + ch_interaction_in = ch_interaction_info + .combine(ch_interaction_has_protein_map) + .map { interaction_id, int_chain_map, str_chain_map, report_id, left_source_id, right_source_id, has_protein_map -> + def has_protein = has_protein_map.containsKey(interaction_id) ? has_protein_map[interaction_id] : false + [[ "id": interaction_id, + "report_id": report_id, "int_chain_map": int_chain_map, - "str_chain_map": str_chain_map - ], - has_protein - ] - } - .set{ch_interaction_in} + "str_chain_map": str_chain_map, + "left_source_id": left_source_id, + "right_source_id": right_source_id + ], has_protein] + } ch_interaction_in.count().subscribe{print("total final: ${it}")} @@ -436,9 +447,9 @@ workflow WISPS { ipsae_batch = 0 - ch_protein_interaction_by_id = ch_interaction_in + ch_protein_interaction_by_id = ch_interaction_has_protein .filter { it[1] } - .map { [it[0].id, it[0]] } + .map { [it[0], true] } ch_colabfold_scores .join(ch_colabfold_pdb) @@ -567,6 +578,11 @@ workflow WISPS { .findAll { it in ['boltz','colabfold','alphafold3'] } // 1) Long format: [sample_id, pair_id, model, score] + ch_report_meta_grouped_by_input_id = ch_interaction_in + .map { [it[0].id, it[0]] } + .groupTuple() + .map { inputId, metas -> [inputId, metas] } + ch_long = Channel.empty() if ('boltz' in active_modes) ch_long = ch_long.mix(ch_ipsae_out.boltz.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'boltz', e[1]] } }) @@ -574,6 +590,17 @@ workflow WISPS { ch_long = ch_long.mix(ch_ipsae_out.colabfold.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'colabfold', e[1]] } }) if ('alphafold3' in active_modes) ch_long = ch_long.mix(ch_ipsae_out.alphafold3.flatMap { id, entries -> entries.collect { e -> [id, e[0], 'alphafold3', e[1]] } }) + ch_long = ch_long + .join(ch_report_meta_grouped_by_input_id, remainder: true) + .flatMap { inputId, pairId, model, score, metaList -> + def metas = (metaList instanceof List && !metaList.isEmpty()) + ? metaList + : [[report_id: inputId, str_chain_map: ""]] + metas.collect { interaction_meta -> + def reportId = interaction_meta?.report_id ?: inputId + [reportId, pairId, model, score] + } + } // 2) Pivot per pair: [pair_id, sampleModelScoreMap] ch_pair_wide = ch_long @@ -588,7 +615,7 @@ workflow WISPS { } // 3) Create one CSV per pair with model-only headers - ch_interaction_in.map { it[0].id }.unique().toSortedList().map { [sample_ids: it] } + ch_interaction_in.map { it[0].report_id }.unique().toSortedList().map { [sample_ids: it] } .combine(ch_pair_wide.collect(flat: false).map { [pairs: it] }) .flatMap { left, right -> def ids = left.sample_ids @@ -613,27 +640,26 @@ workflow WISPS { .set { ch_ipsae_scores_by_pair } // 4) Additional summary file: max cross-group (left/right in str_chain_map) IPSAE per sample/model - ch_str_chain_map_by_id = ch_interaction_in.map { [it[0].id, it[0].str_chain_map] } - - ch_model_rows = ch_ipsae_out.boltz - .join(ch_str_chain_map_by_id, remainder: true) - .map { sampleId, entries, strChainMap -> - [[sampleId, "boltz"], computeMaxCrossGroupIpsae(entries, strChainMap)] + ch_ipsae_entries = Channel.empty() + if ('boltz' in active_modes) + ch_ipsae_entries = ch_ipsae_entries.mix(ch_ipsae_out.boltz.map { inputId, entries -> [inputId, "boltz", entries] }) + if ('colabfold' in active_modes) + ch_ipsae_entries = ch_ipsae_entries.mix(ch_ipsae_out.colabfold.map { inputId, entries -> [inputId, "colabfold", entries] }) + if ('alphafold3' in active_modes) + ch_ipsae_entries = ch_ipsae_entries.mix(ch_ipsae_out.alphafold3.map { inputId, entries -> [inputId, "alphafold3", entries] }) + + ch_model_rows = ch_ipsae_entries + .combine(ch_report_meta_grouped_by_input_id, by: 0) + .flatMap { inputId, model, entries, metaList -> + def metas = (metaList instanceof List && !metaList.isEmpty()) + ? metaList + : [[report_id: inputId, str_chain_map: ""]] + metas.collect { interaction_meta -> + def reportId = interaction_meta?.report_id ?: inputId + def strChainMap = interaction_meta?.str_chain_map ?: "" + [[reportId, model], computeMaxCrossGroupIpsae(entries, strChainMap)] + } } - .mix( - ch_ipsae_out.colabfold - .join(ch_str_chain_map_by_id, remainder: true) - .map { sampleId, entries, strChainMap -> - [[sampleId, "colabfold"], computeMaxCrossGroupIpsae(entries, strChainMap)] - } - ) - .mix( - ch_ipsae_out.alphafold3 - .join(ch_str_chain_map_by_id, remainder: true) - .map { sampleId, entries, strChainMap -> - [[sampleId, "alphafold3"], computeMaxCrossGroupIpsae(entries, strChainMap)] - } - ) ch_model_wide = ch_model_rows .groupTuple() @@ -645,7 +671,7 @@ workflow WISPS { } def summary_header = "Sample," + active_modes.join(",") + "\n" - ch_interaction_in.map { it[0].id }.unique().map { [it, true] } + ch_interaction_in.map { it[0].report_id }.unique().map { [it, true] } .join(ch_model_wide, remainder: true) .map { id, _, m -> def mm = m ?: [:] @@ -663,59 +689,45 @@ workflow WISPS { ch_ipsae_scores = ch_ipsae_scores_by_pair.mix(ch_ipsae_scores_max) - ch_interaction_meta_by_id = ch_interaction_in - .map { [it[0].id, it[0]] } + ch_confidence_meta = ch_interaction_in + .map { it[0] } + .unique { it.report_id ?: "${it.id}:${it.int_chain_map}:${it.str_chain_map}" } + .collect(flat: false, sort: true) - ch_boltz_confidence_with_meta = ch_boltz_confidence - .map { [it[0].id, it[1]] } - .join(ch_interaction_meta_by_id) - .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } - - ch_boltz_affinity_with_meta = ch_boltz_affinity - .map { [it[0].id, it[1]] } - .join(ch_interaction_meta_by_id) - .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } - - ch_boltz_confidence_with_meta - .mix(ch_boltz_affinity_with_meta) - .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0]}.unique{it.id} - json: json_list.collect{it[1]} - }.set{ch_boltz_confidence_scores} - - ch_alphafold3_summary_confidences - .map { [it[0].id, it[1]] } - .join(ch_interaction_meta_by_id) - .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } - .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0]}.unique{it.id} - json: json_list.collect{it[1]} - }.set{ch_alphafold3_confidence_scores} + ch_boltz_confidence_json = ch_boltz_confidence + .map { it[1] } + .mix(ch_boltz_affinity.map { it[1] }) + .collect(flat: false, sort: true) - ch_colabfold_scores - .map { [it[0].id, it[1]] } - .join(ch_interaction_meta_by_id) - .map { id, json_file, interaction_meta -> [interaction_meta, json_file] } - .collect(flat: false, sort: true).multiMap{json_list -> - ids: json_list.collect{it[0]}.unique{it.id} - json: json_list.collect{it[1]} - }.set{ch_colabfold_confidence_scores} - - - COLLECT_CONFIDENCE( - ch_boltz_confidence_scores.ids - .map{[["id": "all-boltz", "model": "boltz"], it]} - .mix(ch_colabfold_confidence_scores.ids - .map{[["id": "all-colabfold", "model": "colabfold"], it]} - ) - .mix(ch_alphafold3_confidence_scores.ids - .map{[["id": "all-alphafold3", "model": "alphafold3"], it]} - ), - ch_boltz_confidence_scores.json - .mix(ch_colabfold_confidence_scores.json) - .mix(ch_alphafold3_confidence_scores.json) + ch_alphafold3_confidence_json = ch_alphafold3_summary_confidences + .map { it[1] } + .collect(flat: false, sort: true) + + ch_colabfold_confidence_json = ch_colabfold_scores + .map { it[1] } + .collect(flat: false, sort: true) + + + COLLECT_CONFIDENCE_BOLTZ( + ch_confidence_meta.map{[["id": "all-boltz", "model": "boltz"], it]}, + ch_boltz_confidence_json + ) + ch_versions = ch_versions.mix(COLLECT_CONFIDENCE_BOLTZ.out.versions) + ch_confidence_scores_all = COLLECT_CONFIDENCE_BOLTZ.out.confidence + + COLLECT_CONFIDENCE_COLABFOLD( + ch_confidence_meta.map{[["id": "all-colabfold", "model": "colabfold"], it]}, + ch_colabfold_confidence_json + ) + ch_versions = ch_versions.mix(COLLECT_CONFIDENCE_COLABFOLD.out.versions) + ch_confidence_scores_all = ch_confidence_scores_all.mix(COLLECT_CONFIDENCE_COLABFOLD.out.confidence) + + COLLECT_CONFIDENCE_AF3( + ch_confidence_meta.map{[["id": "all-alphafold3", "model": "alphafold3"], it]}, + ch_alphafold3_confidence_json ) - ch_versions = ch_versions.mix(COLLECT_CONFIDENCE.out.versions) + ch_versions = ch_versions.mix(COLLECT_CONFIDENCE_AF3.out.versions) + ch_confidence_scores_all = ch_confidence_scores_all.mix(COLLECT_CONFIDENCE_AF3.out.confidence) @@ -742,7 +754,7 @@ workflow WISPS { ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) ch_multiqc_files = ch_multiqc_files - .mix(COLLECT_CONFIDENCE.out.confidence.map{it[1]}) + .mix(ch_confidence_scores_all.map{it[1]}) .mix(ch_ipsae_scores) MULTIQC ( ch_multiqc_files.collect(sort: true), From 057324070566fa979cf5e88b8b77dffba100fdf1 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Tue, 21 Apr 2026 09:11:05 +1000 Subject: [PATCH 55/70] avoid pae in colabfold collect confidence --- bin/collect_confidence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/collect_confidence.py b/bin/collect_confidence.py index ab0022b..ecb4e21 100755 --- a/bin/collect_confidence.py +++ b/bin/collect_confidence.py @@ -368,7 +368,7 @@ def parse_colabfold_metrics(json_file): data = json.load(f) result = {} - for key in ["iptm", "pae", "ptm", "plddt", "pairwise_iptm"]: + for key in ["iptm", "ptm", "plddt", "pairwise_iptm"]: if key not in data: result[key] = None continue From e5f729bf060f8372af3005edebbb00281c327c4d Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Tue, 21 Apr 2026 11:19:22 +1000 Subject: [PATCH 56/70] update --- conf/gadi.config | 28 +++++++++++++++++++++------- conf/modules.config | 4 ++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/conf/gadi.config b/conf/gadi.config index 5a81ee6..fc2ff7a 100644 --- a/conf/gadi.config +++ b/conf/gadi.config @@ -48,24 +48,38 @@ process { storage = "gdata/li87+gdata/if89+scratch/${params.project}+gdata/${params.project}" withName: 'MMSEQS_COLABFOLDSEARCH' { - memory = 300.GB - time = 24.h - cpus = 24 + memory = 350.GB + time = 48.h + cpus = 16 } + withName: 'RUN_BOLTZ' { - queue = "gpuvolta" + if (params.use_dgxa100){ + queue = "dgxa100" + cpus = 16 + }else{ + queue = "gpuvolta" + cpus = 12 + } time = 48.h memory = 128.GB - cpus = 12 gpus = 1 } + withName: 'COLABFOLD_BATCH' { - queue = "gpuvolta" + if (params.use_dgxa100){ + queue = "dgxa100" + cpus = 16 + }else{ + queue = "gpuvolta" + cpus = 12 + } time = 16.h memory = 128.GB - cpus = 12 + gpus = 1 } + resourceLimits = [ cpus: 1000, memory: '2000.GB', diff --git a/conf/modules.config b/conf/modules.config index f9953fa..028c3f0 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -58,8 +58,8 @@ process { } withName: 'RUN_BOLTZ' { - cpus = 12 - time = 24.h + cpus = 16 + time = 48.h memory = 128.GB ext.args = "--write_full_pae --output_format mmcif" } From c4e02adc3a84c751e112f466881f77341766321a Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 24 Apr 2026 10:54:40 +1000 Subject: [PATCH 57/70] cleaning --- .github/CONTRIBUTING.md | 125 ------------ .github/ISSUE_TEMPLATE/bug_report.yml | 7 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 9 +- .github/workflows/awsfulltest.yml | 2 +- .github/workflows/awstest.yml | 2 +- .github/workflows/branch.yml | 4 +- .github/workflows/ci.yml | 2 +- .github/workflows/fix-linting.yml | 4 +- .nf-core.yml | 23 --- CHANGELOG.md | 6 +- CITATIONS.md | 2 +- CODE_OF_CONDUCT.md | 182 ------------------ README.md | 39 +--- assets/adaptivecard.json | 2 +- assets/email_template.html | 14 +- assets/email_template.txt | 15 +- assets/methods_description_template.yml | 6 +- assets/multiqc_config.yml | 2 +- assets/schema_input.json | 4 +- assets/slackreport.json | 2 +- conf/base.config | 2 +- conf/gadi.config | 99 ---------- conf/test.config | 2 +- conf/test_full.config | 2 +- conf/test_gadi.config | 92 --------- docs/README.md | 5 +- docs/output.md | 2 +- docs/usage.md | 62 ++---- main.nf | 14 +- modules.json | 4 +- modules/local/run_boltz/Dockerfile | 27 +-- modules/local/run_boltz/main.nf | 2 +- nextflow.config | 16 +- nextflow_schema.json | 4 +- .../local/utils_nfcore_wisps_pipeline/main.nf | 2 +- 37 files changed, 100 insertions(+), 691 deletions(-) delete mode 100644 .github/CONTRIBUTING.md delete mode 100644 .nf-core.yml delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 conf/gadi.config delete mode 100644 conf/test_gadi.config diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 8cbfea7..0000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,125 +0,0 @@ -# nf-core/wisps: Contributing Guidelines - -Hi there! -Many thanks for taking an interest in improving nf-core/wisps. - -We try to manage the required tasks for nf-core/wisps using GitHub issues, you probably came to this page when creating one. -Please use the pre-filled template to save time. - -However, don't be put off by this template - other more general issues and suggestions are welcome! -Contributions to the code are even more welcome ;) - -> [!NOTE] -> If you need help using or modifying nf-core/wisps then the best place to ask is on the nf-core Slack [#wisps](https://nfcore.slack.com/channels/wisps) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Contribution workflow - -If you'd like to write some code for nf-core/wisps, the standard workflow is as follows: - -1. Check that there isn't already an issue about your idea in the [nf-core/wisps issues](https://github.com/nf-core/wisps/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this -2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/wisps repository](https://github.com/nf-core/wisps) to your GitHub account -3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) -4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). -5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged - -If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). - -## Tests - -You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: - -```bash -nf-test test --profile debug,test,docker --verbose -``` - -When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. -Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. - -There are typically two types of tests that run: - -### Lint tests - -`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command. - -If any failures or warnings are encountered, please follow the listed URL for more documentation. - -### Pipeline tests - -Each `nf-core` pipeline should be set up with a minimal set of test-data. -`GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. -If there are any failures then the automated tests fail. -These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. - -## Patch - -:warning: Only in the unlikely and regretful event of a release happening with a bug. - -- On your own fork, make a new branch `patch` based on `upstream/master`. -- Fix the bug, and bump version (X.Y.Z+1). -- A PR should be made on `master` from patch to directly this particular bug. - -## Getting help - -For further information/help, please consult the [nf-core/wisps documentation](https://nf-co.re/wisps/usage) and don't hesitate to get in touch on the nf-core Slack [#wisps](https://nfcore.slack.com/channels/wisps) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Pipeline contribution conventions - -To make the nf-core/wisps code and processing logic more understandable for new contributors and to ensure quality, we semi-standardise the way the code and other contributions are written. - -### Adding a new step - -If you wish to contribute a new step, please use the following coding standards: - -1. Define the corresponding input channel into your new process from the expected previous process channel -2. Write the process block (see below). -3. Define the output channel if needed (see below). -4. Add any new parameters to `nextflow.config` with a default (see below). -5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). -6. Add sanity checks and validation for all relevant parameters. -7. Perform local tests to validate that the new code works as expected. -8. If applicable, add a new test command in `.github/workflow/ci.yml`. -9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module. -10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. - -### Default values - -Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope. - -Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. - -### Default processes resource requirements - -Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. - -The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. - -### Naming schemes - -Please use the following naming schemes, to make it easy to understand what is going where. - -- initial process channel: `ch_output_from_` -- intermediate and terminal channels: `ch__for_` - -### Nextflow version bumping - -If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` - -### Images and figures - -For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines). - -## GitHub Codespaces - -This repo includes a devcontainer configuration which will create a GitHub Codespaces for Nextflow development! This is an online developer environment that runs in your browser, complete with VSCode and a terminal. - -To get started: - -- Open the repo in [Codespaces](https://github.com/nf-core/wisps/codespaces) -- Tools installed - - nf-core - - Nextflow - -Devcontainer specs: - -- [DevContainer config](.devcontainer/devcontainer.json) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9a16a99..6a4ff3f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,8 +7,7 @@ body: value: | Before you post this issue, please check the documentation: - - [nf-core website: troubleshooting](https://nf-co.re/usage/troubleshooting) - - [nf-core/wisps pipeline documentation](https://nf-co.re/wisps/usage) + - [Australian-Structural-Biology-Computing/wisps pipeline documentation](https://nf-co.re/wisps/usage) - type: textarea id: description @@ -40,11 +39,11 @@ body: - type: textarea id: system attributes: - label: System information + label: System informationLearn more about contributing: [CONTRIBUTING.md](https://github.com/Australian-Structural-Biology-Computing/wisps/tree/master/.github/CONTRIBUTING.md) description: | * Nextflow version _(eg. 23.04.0)_ * Hardware _(eg. HPC, Desktop, Cloud)_ * Executor _(eg. slurm, local, awsbatch)_ * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, or Apptainer)_ * OS _(eg. CentOS Linux, macOS, Linux Mint)_ - * Version of nf-core/wisps _(eg. 1.1, 1.5, 1.8.2)_ + * Version of Australian-Structural-Biology-Computing/wisps _(eg. 1.1, 1.5, 1.8.2)_ diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 7a2f690..c0f2bae 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,4 +4,4 @@ contact_links: about: Please join the nf-core community here - name: "Slack #wisps channel" url: https://nfcore.slack.com/channels/wisps - about: Discussion about the nf-core/wisps pipeline + about: Discussion about the Australian-Structural-Biology-Computing/wisps pipeline diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 31764c1..0b3504c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,5 +1,5 @@ name: Feature request -description: Suggest an idea for the nf-core/wisps pipeline +description: Suggest an idea for the Australian-Structural-Biology-Computing/wisps pipeline labels: enhancement body: - type: textarea diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b1455da..266657a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,22 +1,21 @@ ## PR checklist - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! -- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/wisps/tree/master/.github/CONTRIBUTING.md) -- [ ] If necessary, also make a PR on the nf-core/wisps _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. +- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/Australian-Structural-Biology-Computing/wisps/tree/master/.github/CONTRIBUTING.md) +- [ ] If necessary, also make a PR on the Australian-Structural-Biology-Computing/wisps _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core pipelines lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index 04cd000..c1a71f2 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -15,7 +15,7 @@ jobs: run-platform: name: Run AWS full tests # run only if the PR is approved by at least 2 reviewers and against the master branch or manually triggered - if: github.repository == 'nf-core/wisps' && github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'master' || github.event_name == 'workflow_dispatch' + if: github.repository == 'Australian-Structural-Biology-Computing/wisps' && github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'master' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: - uses: octokit/request-action@v2.x diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index a6382b8..680f514 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -7,7 +7,7 @@ on: jobs: run-platform: name: Run AWS tests - if: github.repository == 'nf-core/wisps' + if: github.repository == 'Australian-Structural-Biology-Computing/wisps' runs-on: ubuntu-latest steps: # Launch workflow using Seqera Platform CLI tool action diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index c055aeb..46b9278 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -11,9 +11,9 @@ jobs: steps: # PRs to the nf-core repo master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches - name: Check PRs - if: github.repository == 'nf-core/wisps' + if: github.repository == 'Australian-Structural-Biology-Computing/wisps' run: | - { [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/wisps ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] + { [[ ${{github.event.pull_request.head.repo.full_name }} == Australian-Structural-Biology-Computing/wisps ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] # If the above check failed, post a comment on the PR explaining the failure # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf1970d..49ad730 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: test: name: "Run pipeline with test data (${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }})" # Only run on push if this is the nf-core dev branch (merged PRs) - if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/wisps') }}" + if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'Australian-Structural-Biology-Computing/wisps') }}" runs-on: ubuntu-latest strategy: matrix: diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index bdf8461..3b29764 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -9,7 +9,7 @@ jobs: if: > contains(github.event.comment.html_url, '/pull/') && contains(github.event.comment.body, '@nf-core-bot fix linting') && - github.repository == 'nf-core/wisps' + github.repository == 'Australian-Structural-Biology-Computing/wisps' runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later @@ -86,4 +86,4 @@ jobs: issue-number: ${{ github.event.issue.number }} body: | @${{ github.actor }} I tried to fix the linting errors, but it didn't work. Please fix them manually. - See [CI log](https://github.com/nf-core/wisps/actions/runs/${{ github.run_id }}) for more details. + See [CI log](https://github.com/Australian-Structural-Biology-Computing/wisps/actions/runs/${{ github.run_id }}) for more details. diff --git a/.nf-core.yml b/.nf-core.yml deleted file mode 100644 index d6dc0bc..0000000 --- a/.nf-core.yml +++ /dev/null @@ -1,23 +0,0 @@ -bump_version: null -lint: - files_exist: - - conf/igenomes.config - - conf/igenomes_ignored.config - - conf/igenomes.config - - conf/igenomes_ignored.config -nf_core_version: 3.0.2 -org_path: null -repository_type: pipeline -template: - author: Ziad Al-Bkhetan and Thomas Liftin - description: Workflow for Interaction Screening by predicting Structure - force: true - is_nfcore: true - name: wisps - org: nf-core - outdir: . - skip_features: - - igenomes - - fastqc - version: 1.0.0dev -update: null diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f16456..284e6af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ -# nf-core/wisps: Changelog +# Australian-Structural-Biology-Computing/wisps: Changelog The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.0.0dev - [date] +## v1.0.0 - [date] -Initial release of nf-core/wisps, created with the [nf-core](https://nf-co.re/) template. +Initial release of Australian-Structural-Biology-Computing/wisps, created with the [nf-core](https://nf-co.re/) template. ### `Added` diff --git a/CITATIONS.md b/CITATIONS.md index 6c0bab4..28b9de3 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -1,4 +1,4 @@ -# nf-core/wisps: Citations +# Australian-Structural-Biology-Computing/wisps: Citations ## [nf-core](https://pubmed.ncbi.nlm.nih.gov/32055031/) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c089ec7..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,182 +0,0 @@ -# Code of Conduct at nf-core (v1.4) - -## Our Pledge - -In the interest of fostering an open, collaborative, and welcoming environment, we as contributors and maintainers of nf-core pledge to making participation in our projects and community a harassment-free experience for everyone, regardless of: - -- Age -- Ability -- Body size -- Caste -- Familial status -- Gender identity and expression -- Geographical location -- Level of experience -- Nationality and national origins -- Native language -- Neurodiversity -- Race or ethnicity -- Religion -- Sexual identity and orientation -- Socioeconomic status - -Please note that the list above is alphabetised and is therefore not ranked in any order of preference or importance. - -## Preamble - -:::note -This Code of Conduct (CoC) has been drafted by Renuka Kudva, Cris Tuñí, and Michael Heuer, with input from the nf-core Core Team and Susanna Marquez from the nf-core community. "We", in this document, refers to the Safety Officers and members of the nf-core Core Team, both of whom are deemed to be members of the nf-core community and are therefore required to abide by this Code of Conduct. This document will be amended periodically to keep it up-to-date. In case of any dispute, the most current version will apply. -::: - -An up-to-date list of members of the nf-core core team can be found [here](https://nf-co.re/about). - -Our Safety Officers are Saba Nafees, Cris Tuñí, and Michael Heuer. - -nf-core is a young and growing community that welcomes contributions from anyone with a shared vision for [Open Science Policies](https://www.fosteropenscience.eu/taxonomy/term/8). Open science policies encompass inclusive behaviours and we strive to build and maintain a safe and inclusive environment for all individuals. - -We have therefore adopted this CoC, which we require all members of our community and attendees of nf-core events to adhere to in all our workspaces at all times. Workspaces include, but are not limited to, Slack, meetings on Zoom, gather.town, YouTube live etc. - -Our CoC will be strictly enforced and the nf-core team reserves the right to exclude participants who do not comply with our guidelines from our workspaces and future nf-core activities. - -We ask all members of our community to help maintain supportive and productive workspaces and to avoid behaviours that can make individuals feel unsafe or unwelcome. Please help us maintain and uphold this CoC. - -Questions, concerns, or ideas on what we can include? Contact members of the Safety Team on Slack or email safety [at] nf-co [dot] re. - -## Our Responsibilities - -Members of the Safety Team (the Safety Officers) are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behaviour. - -The Safety Team, in consultation with the nf-core core team, have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this CoC, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -Members of the core team or the Safety Team who violate the CoC will be required to recuse themselves pending investigation. They will not have access to any reports of the violations and will be subject to the same actions as others in violation of the CoC. - -## When and where does this Code of Conduct apply? - -Participation in the nf-core community is contingent on following these guidelines in all our workspaces and events, such as hackathons, workshops, bytesize, and collaborative workspaces on gather.town. These guidelines include, but are not limited to, the following (listed alphabetically and therefore in no order of preference): - -- Communicating with an official project email address. -- Communicating with community members within the nf-core Slack channel. -- Participating in hackathons organised by nf-core (both online and in-person events). -- Participating in collaborative work on GitHub, Google Suite, community calls, mentorship meetings, email correspondence, and on the nf-core gather.town workspace. -- Participating in workshops, training, and seminar series organised by nf-core (both online and in-person events). This applies to events hosted on web-based platforms such as Zoom, gather.town, Jitsi, YouTube live etc. -- Representing nf-core on social media. This includes both official and personal accounts. - -## nf-core cares 😊 - -nf-core's CoC and expectations of respectful behaviours for all participants (including organisers and the nf-core team) include, but are not limited to, the following (listed in alphabetical order): - -- Ask for consent before sharing another community member’s personal information (including photographs) on social media. -- Be respectful of differing viewpoints and experiences. We are all here to learn from one another and a difference in opinion can present a good learning opportunity. -- Celebrate your accomplishments! (Get creative with your use of emojis 🎉 🥳 💯 🙌 !) -- Demonstrate empathy towards other community members. (We don’t all have the same amount of time to dedicate to nf-core. If tasks are pending, don’t hesitate to gently remind members of your team. If you are leading a task, ask for help if you feel overwhelmed.) -- Engage with and enquire after others. (This is especially important given the geographically remote nature of the nf-core community, so let’s do this the best we can) -- Focus on what is best for the team and the community. (When in doubt, ask) -- Accept feedback, yet be unafraid to question, deliberate, and learn. -- Introduce yourself to members of the community. (We’ve all been outsiders and we know that talking to strangers can be hard for some, but remember we’re interested in getting to know you and your visions for open science!) -- Show appreciation and **provide clear feedback**. (This is especially important because we don’t see each other in person and it can be harder to interpret subtleties. Also remember that not everyone understands a certain language to the same extent as you do, so **be clear in your communication to be kind.**) -- Take breaks when you feel like you need them. -- Use welcoming and inclusive language. (Participants are encouraged to display their chosen pronouns on Zoom or in communication on Slack) - -## nf-core frowns on 😕 - -The following behaviours from any participants within the nf-core community (including the organisers) will be considered unacceptable under this CoC. Engaging or advocating for any of the following could result in expulsion from nf-core workspaces: - -- Deliberate intimidation, stalking or following and sustained disruption of communication among participants of the community. This includes hijacking shared screens through actions such as using the annotate tool in conferencing software such as Zoom. -- “Doxing” i.e. posting (or threatening to post) another person’s personal identifying information online. -- Spamming or trolling of individuals on social media. -- Use of sexual or discriminatory imagery, comments, jokes, or unwelcome sexual attention. -- Verbal and text comments that reinforce social structures of domination related to gender, gender identity and expression, sexual orientation, ability, physical appearance, body size, race, age, religion, or work experience. - -### Online Trolling - -The majority of nf-core interactions and events are held online. Unfortunately, holding events online comes with the risk of online trolling. This is unacceptable — reports of such behaviour will be taken very seriously and perpetrators will be excluded from activities immediately. - -All community members are **required** to ask members of the group they are working with for explicit consent prior to taking screenshots of individuals during video calls. - -## Procedures for reporting CoC violations - -If someone makes you feel uncomfortable through their behaviours or actions, report it as soon as possible. - -You can reach out to members of the Safety Team (Saba Nafees, Cris Tuñí, and Michael Heuer) on Slack. Alternatively, contact a member of the nf-core core team [nf-core core team](https://nf-co.re/about), and they will forward your concerns to the Safety Team. - -Issues directly concerning members of the Core Team or the Safety Team will be dealt with by other members of the core team and the safety manager — possible conflicts of interest will be taken into account. nf-core is also in discussions about having an ombudsperson and details will be shared in due course. - -All reports will be handled with the utmost discretion and confidentiality. - -You can also report any CoC violations to safety [at] nf-co [dot] re. In your email report, please do your best to include: - -- Your contact information. -- Identifying information (e.g. names, nicknames, pseudonyms) of the participant who has violated the Code of Conduct. -- The behaviour that was in violation and the circumstances surrounding the incident. -- The approximate time of the behaviour (if different than the time the report was made). -- Other people involved in the incident, if applicable. -- If you believe the incident is ongoing. -- If there is a publicly available record (e.g. mailing list record, a screenshot). -- Any additional information. - -After you file a report, one or more members of our Safety Team will contact you to follow up on your report. - -## Who will read and handle reports - -All reports will be read and handled by the members of the Safety Team at nf-core. - -If members of the Safety Team are deemed to have a conflict of interest with a report, they will be required to recuse themselves as per our Code of Conduct and will not have access to any follow-ups. - -To keep this first report confidential from any of the Safety Team members, please submit your first report by direct messaging on Slack/direct email to any of the nf-core members you are comfortable disclosing the information to, and be explicit about which member(s) you do not consent to sharing the information with. - -## Reviewing reports - -After receiving the report, members of the Safety Team will review the incident report to determine whether immediate action is required, for example, whether there is immediate threat to participants’ safety. - -The Safety Team, in consultation with members of the nf-core core team, will assess the information to determine whether the report constitutes a Code of Conduct violation, for them to decide on a course of action. - -In the case of insufficient information, one or more members of the Safety Team may contact the reporter, the reportee, or any other attendees to obtain more information. - -Once additional information is gathered, the Safety Team will collectively review and decide on the best course of action to take, if any. The Safety Team reserves the right to not act on a report. - -## Confidentiality - -All reports, and any additional information included, are only shared with the team of safety officers (and possibly members of the core team, in case the safety officer is in violation of the CoC). We will respect confidentiality requests for the purpose of protecting victims of abuse. - -We will not name harassment victims, beyond discussions between the safety officer and members of the nf-core team, without the explicit consent of the individuals involved. - -## Enforcement - -Actions taken by the nf-core’s Safety Team may include, but are not limited to: - -- Asking anyone to stop a behaviour. -- Asking anyone to leave the event and online spaces either temporarily, for the remainder of the event, or permanently. -- Removing access to the gather.town and Slack, either temporarily or permanently. -- Communicating to all participants to reinforce our expectations for conduct and remind what is unacceptable behaviour; this may be public for practical reasons. -- Communicating to all participants that an incident has taken place and how we will act or have acted — this may be for the purpose of letting event participants know we are aware of and dealing with the incident. -- Banning anyone from participating in nf-core-managed spaces, future events, and activities, either temporarily or permanently. -- No action. - -## Attribution and Acknowledgements - -- The [Contributor Covenant, version 1.4](http://contributor-covenant.org/version/1/4) -- The [OpenCon 2017 Code of Conduct](http://www.opencon2017.org/code_of_conduct) (CC BY 4.0 OpenCon organisers, SPARC and Right to Research Coalition) -- The [eLife innovation sprint 2020 Code of Conduct](https://sprint.elifesciences.org/code-of-conduct/) -- The [Mozilla Community Participation Guidelines v3.1](https://www.mozilla.org/en-US/about/governance/policies/participation/) (version 3.1, CC BY-SA 3.0 Mozilla) - -## Changelog - -### v1.4 - February 8th, 2022 - -- Included a new member of the Safety Team. Corrected a typographical error in the text. - -### v1.3 - December 10th, 2021 - -- Added a statement that the CoC applies to nf-core gather.town workspaces. Corrected typographical errors in the text. - -### v1.2 - November 12th, 2021 - -- Removed information specific to reporting CoC violations at the Hackathon in October 2021. - -### v1.1 - October 14th, 2021 - -- Updated with names of new Safety Officers and specific information for the hackathon in October 2021. - -### v1.0 - March 15th, 2021 - -- Complete rewrite from original [Contributor Covenant](http://contributor-covenant.org/) CoC. diff --git a/README.md b/README.md index fc9a1e4..13eb982 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,9 @@ -

    - - - nf-core/wisps - -

    - -[![GitHub Actions CI Status](https://github.com/nf-core/wisps/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-core/wisps/actions/workflows/ci.yml) -[![GitHub Actions Linting Status](https://github.com/nf-core/wisps/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/wisps/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/wisps/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) -[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) - -[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) -[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) -[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) -[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) -[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/nf-core/wisps) - -[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23wisps-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/wisps)[![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core) +# wisps: *w*orkflow for *i*nteraction *s*creening by *p*redicting *s*tructures ## Introduction -**nf-core/wisps** is a bioinformatics pipeline for interaction screening by structure prediction. It ingests a samplesheet of sequence entries (FASTA format) and generates interaction sets based on all-vs-all or group-based modes. The workflow then runs MSA/search and structure prediction with supported models (Boltz, ColabFold, and/or AlphaFold3), computes confidence/interface metrics (including IPSAE), and produces per-interaction result files alongside run-level reports such as MultiQC. +**Australian-Structural-Biology-Computing/wisps** is a bioinformatics pipeline for interaction screening by structure prediction. It ingests a samplesheet of sequence entries (FASTA format) and generates interaction sets based on all-vs-all or group-based modes. The workflow then runs MSA/search and structure prediction with supported models (Boltz, ColabFold, and/or AlphaFold3), computes confidence/interface metrics (including IPSAE), and produces per-interaction result files alongside run-level reports such as MultiQC. - - Validate and parse sequence inputs from the samplesheet (FASTA). - Build interaction sets in manual, all-vs-all or group-based screening mode. - Generated paired MSAs for each interaction using ColabFold Search powered by MMSeqs2. @@ -33,7 +14,7 @@ ## Usage > [!NOTE] -> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. +> If you are new to Nextflow, please familiarise yourself with nextflow before running the workflow on actual data. Before running the pipeline, several resources must be available on the computing infrastructure: - **All** tools require the ColabFold MMSeqs2 databases which can be set up following the instructions available [here](https://github.com/sokrypton/ColabFold/tree/main?tab=readme-ov-file#generating-msas-for-large-scale-structurecomplex-predictions) @@ -89,28 +70,24 @@ nextflow run Australian-Structural-Biology-Computing/wisps \ ``` > [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files). +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_. -For more details and further functionality, please refer to the [usage documentation](https://nf-co.re/wisps/usage) and the [parameter documentation](https://nf-co.re/wisps/parameters). +For more details and further functionality, please refer to the [usage documentation](docs/usage.md). ## Pipeline output -To see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/wisps/results) tab on the nf-core website pipeline page. For more details about the output files and reports, please refer to the -[output documentation](https://nf-co.re/wisps/output). +[output documentation](docs/output.md). ## Credits -nf-core/wisps was originally written by Ziad Al-Bkhetan and Thomas Liftin. +Australian-Structural-Biology-Computing/wisps was originally written by [Ziad Al-Bkhetan](https://github.com/ziadbkh) and [Thomas Liftin](https://github.com/tlitfin/). We thank the following people for their extensive assistance in the development of this pipeline: - - ## Contributions and Support -If you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md). +If you would like to contribute to this pipeline or for further information/help please reach out to us. -For further information or help, don't hesitate to get in touch on the [Slack `#wisps` channel](https://nfcore.slack.com/channels/wisps) (you can join with [this invite](https://nf-co.re/join/slack)). ## Citations diff --git a/assets/adaptivecard.json b/assets/adaptivecard.json index 4f01087..7f5d661 100644 --- a/assets/adaptivecard.json +++ b/assets/adaptivecard.json @@ -17,7 +17,7 @@ "size": "Large", "weight": "Bolder", "color": "<% if (success) { %>Good<% } else { %>Attention<%} %>", - "text": "nf-core/wisps v${version} - ${runName}", + "text": "Australian-Structural-Biology-Computing/wisps v${version} - ${runName}", "wrap": true }, { diff --git a/assets/email_template.html b/assets/email_template.html index 02329b1..b62c1ac 100644 --- a/assets/email_template.html +++ b/assets/email_template.html @@ -4,21 +4,21 @@ - - nf-core/wisps Pipeline Report + + Australian-Structural-Biology-Computing/wisps Pipeline Report
    -

    nf-core/wisps ${version}

    +

    Australian-Structural-Biology-Computing/wisps ${version}

    Run Name: $runName

    <% if (!success){ out << """
    diff --git a/assets/email_template.txt b/assets/email_template.txt index fab93f1..7aa9cb7 100644 --- a/assets/email_template.txt +++ b/assets/email_template.txt @@ -1,18 +1,13 @@ ---------------------------------------------------- - ,--./,-. - ___ __ __ __ ___ /,-._.--~\\ - |\\ | |__ __ / ` / \\ |__) |__ } { - | \\| | \\__, \\__/ | \\ |___ \\`-._,-`-, - `._,._,' - nf-core/wisps ${version} +Australian-Structural-Biology-Computing/wisps ${version} ---------------------------------------------------- Run Name: $runName <% if (success){ - out << "## nf-core/wisps execution completed successfully! ##" + out << "## Australian-Structural-Biology-Computing/wisps execution completed successfully! ##" } else { out << """#################################################### -## nf-core/wisps execution completed unsuccessfully! ## +## Australian-Structural-Biology-Computing/wisps execution completed unsuccessfully! ## #################################################### The exit status of the task that caused the workflow execution to fail was: $exitStatus. The full error message was: @@ -35,5 +30,5 @@ Pipeline Configuration: <% out << summary.collect{ k,v -> " - $k: $v" }.join("\n") %> -- -nf-core/wisps -https://github.com/nf-core/wisps +Australian-Structural-Biology-Computing/wisps +https://github.com/Australian-Structural-Biology-Computing/wisps diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index c6a93ab..a891019 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -1,13 +1,13 @@ id: "nf-core-wisps-methods-description" description: "Suggested text and references to use when describing pipeline usage within the methods section of a publication." -section_name: "nf-core/wisps Methods Description" -section_href: "https://github.com/nf-core/wisps" +section_name: "Australian-Structural-Biology-Computing/wisps Methods Description" +section_href: "https://github.com/Australian-Structural-Biology-Computing/wisps" plot_type: "html" ## TODO nf-core: Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline ## You inject any metadata in the Nextflow '${workflow}' object data: |

    Methods

    -

    Data was processed using nf-core/wisps v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    +

    Data was processed using Australian-Structural-Biology-Computing/wisps v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

    The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

    ${workflow.commandLine}

    ${tool_citations}

    diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 6bfa4b5..a52a9de 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/wisps + This report has been generated by the Australian-Structural-Biology-Computing/wisps analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: diff --git a/assets/schema_input.json b/assets/schema_input.json index 236decb..30eae77 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/nf-core/wisps/master/assets/schema_input.json", - "title": "nf-core/wisps pipeline - params.input schema", + "$id": "https://raw.githubusercontent.com/Australian-Structural-Biology-Computing/wisps/master/assets/schema_input.json", + "title": "Australian-Structural-Biology-Computing/wisps pipeline - params.input schema", "description": "Schema for the file provided with params.input", "type": "array", "items": { diff --git a/assets/slackreport.json b/assets/slackreport.json index a8f9991..1b3dde0 100644 --- a/assets/slackreport.json +++ b/assets/slackreport.json @@ -3,7 +3,7 @@ { "fallback": "Plain-text summary of the attachment.", "color": "<% if (success) { %>good<% } else { %>danger<%} %>", - "author_name": "nf-core/wisps ${version} - ${runName}", + "author_name": "Australian-Structural-Biology-Computing/wisps ${version} - ${runName}", "author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico", "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>", "fields": [ diff --git a/conf/base.config b/conf/base.config index 2aee722..4aac4e8 100644 --- a/conf/base.config +++ b/conf/base.config @@ -1,6 +1,6 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/wisps Nextflow base config file + Australian-Structural-Biology-Computing/wisps Nextflow base config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A 'blank slate' config file, appropriate for general use on most high performance compute environments. Assumes that all software is installed and available on diff --git a/conf/gadi.config b/conf/gadi.config deleted file mode 100644 index e9bf79d..0000000 --- a/conf/gadi.config +++ /dev/null @@ -1,99 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Nextflow config file for running minimal tests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple pipeline test. - - Use as follows: - nextflow run nf-core/wisps -profile test, --outdir - ----------------------------------------------------------------------------------------- -*/ -includeConfig 'https://raw.githubusercontent.com/nf-core/configs/master/conf/nci_gadi.config' - -singularity.cacheDir = "/g/data/if89/singularity_cache/" -singularity.autoMounts = true -singularity.enabled = true -if (params.use_gpu) { singularity.runOptions = '--nv' } - -params { - config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset to check pipeline function' - - // Input data - outdir = "out-test" - input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - - boltz2_aff = "/g/data/li87/struct_bio/params/boltz/boltz2_aff.ckpt" - boltz2_conf = "/g/data/li87/struct_bio/params/boltz/boltz2_conf.ckpt" - boltz2_mols = "/g/data/li87/struct_bio/params/boltz/mols" - - colabfold_uniref30 = "/g/data/li87/proteinfold_dbs/colabfold_uniref30/" - colabfold_envdb = "/g/data/li87/proteinfold_dbs/colabfold_envdb/" - - colabfold_alphafold2_params = "/g/data/li87/struct_bio/params/alphafold2/" - - alphafold3_params = "/g/data/li87/struct_bio/params/alphafold2" - - use_gpu = true - project = "ll61" - use_dgxa100 = false - -} - -process { - //executor = "local" - storage = "gdata/li87+gdata/if89+scratch/${params.project}+gdata/${params.project}" - - withName: 'MMSEQS_COLABFOLDSEARCH' { - memory = 350.GB - time = 48.h - cpus = 16 - } - - withName: 'RUN_BOLTZ' { - if (params.use_dgxa100){ - queue = "dgxa100" - cpus = 16 - }else{ - queue = "gpuvolta" - cpus = 12 - } - time = 48.h - memory = 128.GB - gpus = 1 - } - - withName: 'COLABFOLD_BATCH' { - if (params.use_dgxa100){ - queue = "dgxa100" - cpus = 16 - }else{ - queue = "gpuvolta" - cpus = 12 - } - time = 16.h - memory = 128.GB - - gpus = 1 - } - - resourceLimits = [ - cpus: 1000, - memory: '2000.GB', - time: '48.h' - ] - -} -executor.pollInterval = '5 sec' -executor.queueStatInterval = '1 min' -executor.submitRateLimit = '20min' - -gadi { - format = 'csv' - output = 'gadi_report.csv' -} - -plugins { - id 'nf-gadi@1.2.0' -} diff --git a/conf/test.config b/conf/test.config index e895b00..1304a59 100644 --- a/conf/test.config +++ b/conf/test.config @@ -5,7 +5,7 @@ Defines input files and everything required to run a fast and simple pipeline test. Use as follows: - nextflow run nf-core/wisps -profile test, --outdir + nextflow run Australian-Structural-Biology-Computing/wisps -profile test, --outdir ---------------------------------------------------------------------------------------- */ diff --git a/conf/test_full.config b/conf/test_full.config index aadfb23..5a973f7 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -5,7 +5,7 @@ Defines input files and everything required to run a full size pipeline test. Use as follows: - nextflow run nf-core/wisps -profile test_full, --outdir + nextflow run Australian-Structural-Biology-Computing/wisps -profile test_full, --outdir ---------------------------------------------------------------------------------------- */ diff --git a/conf/test_gadi.config b/conf/test_gadi.config deleted file mode 100644 index cca3175..0000000 --- a/conf/test_gadi.config +++ /dev/null @@ -1,92 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Nextflow config file for running minimal tests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple pipeline test. - - Use as follows: - nextflow run nf-core/wisps -profile test, --outdir - ----------------------------------------------------------------------------------------- -*/ -singularity.cacheDir = "/g/data/if89/singularity_cache/" -singularity.autoMounts = true -singularity.enabled = true -if (params.use_gpu) { singularity.runOptions = '--nv' } - -params { - config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset to check pipeline function' - - // Input data - outdir = "out-test" - input = "/g/data/ll61/development-space/nf-core-wisps/assets/samplesheet.csv" - - boltz2_aff = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_aff.ckpt" - boltz2_conf = "/g/data/if89/proteinfold_dbs/boltz_dbs/boltz2_conf.ckpt" - boltz2_mols = "/g/data/if89/proteinfold_dbs/boltz_dbs/mols" - colabfold_envdb = "/g/data/if89/proteinfold_dbs/miniature_databases/colabfold_envdb_202108/" - colabfold_uniref30 = "/g/data/za08/tom/colabfold_uniref30" - colabfold_alphafold2_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params/alphafold_params_2022-12-06/" - - alphafold3_params = "/g/data/if89/proteinfold_dbs/colabfold_dbs/params" - - use_gpu = true - project = "ll61" - use_dgxa100 = false - - colabfold_search_args = " --use-env 0 --af3-json --db1 colabfold_uniref30/uniref30_2302_db --db3 colabfold_envdb_202108/colabfold_envdb_202108_db" -} - -process { - executor = "pbspro" - //executor = "local" - storage = "gdata/za08+gdata/if89+scratch/${params.project}+gdata/${params.project}" - module = 'singularity' - cache = 'lenient' - stageInMode = 'symlink' - queue = { task.memory < 128.GB ? 'normalbw' : (task.memory >= 128.GB && task.memory <= 190.GB ? 'normal' : (task.memory > 190.GB && task.memory <= 1020.GB ? 'hugemembw' : '')) } - - withName: 'RUN_BOLTZ' { - cpus = 12 - queue = "gpuvolta" - time = 10.h - memory = 24.GB - cpus = 12 - gpus = 1 - } - withName: 'MMSEQS_COLABFOLDSEARCH' { - time = 1.h - if (params.mmseqs_gpu){ - queue = "dgxa100" - memory = 24.GB - cpus = 16 - gpus = 1 - } - } - - withName: 'COLABFOLD_BATCH' { - queue = "gpuvolta" - time = 10.h - memory = 64.GB - cpus = 12 - gpus = 1 - } - - resourceLimits = [ - cpus: 1, - memory: '4.GB', - time: '1.h' - ] - resourceLimits1 = [ - cpus: 1000, - memory: '2000.GB', - time: '24.h' - ] - resourceLimits = [ - cpus: 16, - memory: '24.GB', - time: '3.h' - ] - -} diff --git a/docs/README.md b/docs/README.md index ad6387e..5474437 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,9 @@ -# nf-core/wisps: Documentation +# Australian-Structural-Biology-Computing/wisps: Documentation -The nf-core/wisps documentation is split into the following pages: +The Australian-Structural-Biology-Computing/wisps documentation is split into the following pages: - [Usage](usage.md) - An overview of how the pipeline works, how to run it and a description of all of the different command-line flags. - [Output](output.md) - An overview of the different results produced by the pipeline and how to interpret them. -You can find a lot more documentation about installing, configuring and running nf-core pipelines on the website: [https://nf-co.re](https://nf-co.re) diff --git a/docs/output.md b/docs/output.md index 316461b..ef62e40 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,4 +1,4 @@ -# nf-core/wisps: Output +# Australian-Structural-Biology-Computing/wisps: Output ## Introduction diff --git a/docs/usage.md b/docs/usage.md index 55c8aba..5f88da8 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,15 +1,13 @@ -# nf-core/wisps: Usage - -## :warning: Please read this documentation on the nf-core website: [https://nf-co.re/wisps/usage](https://nf-co.re/wisps/usage) - -> _Documentation of pipeline parameters is generated automatically from the pipeline schema and can no longer be found in markdown files._ - -## Introduction - - +# Australian-Structural-Biology-Computing/wisps: Usage ## Samplesheet input +tities/chains in a complex. + - Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). + - If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. +Reference: ColabFold input format examples in the official repository README: . + +## Running the pipeline You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. ```bash @@ -42,7 +40,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The interactions generated from the sample sheet are controlled with `--mode`. There are three supported modes: -1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with up to 2 samples before and 2 samples after it. +1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with itself and the next two samples in the sample sheet. 2. Group-based mode (for example, `--mode A-A,A-B`): interactions are generated only for the requested group combinations from the `group` column (comma-separated, no spaces). With groups `A` and `B`, `--mode A-A,A-B` will include all `A-A` pairs plus all `A-B` pairs. @@ -59,7 +57,7 @@ Reference: ColabFold input format examples in the official repository README: ` to specify parameters as this will result in errors. Cust The above pipeline run specified with a params file in yaml format: ```bash -nextflow run nf-core/wisps -profile docker -params-file params.yaml +nextflow run Australian-Structural-Biology-Computing/wisps -profile docker -params-file params.yaml ``` with: @@ -95,21 +93,19 @@ outdir: './results/' <...> ``` -You can also generate such `YAML`/`JSON` files via [nf-core/launch](https://nf-co.re/launch). - ### Updating the pipeline When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: ```bash -nextflow pull nf-core/wisps +nextflow pull Australian-Structural-Biology-Computing/wisps ``` ### Reproducibility It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. -First, go to the [nf-core/wisps releases page](https://github.com/nf-core/wisps/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. +First, go to the [Australian-Structural-Biology-Computing/wisps releases page](https://github.com/Australian-Structural-Biology-Computing/wisps/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. This version number will be logged in reports when you run the pipeline, so that you'll know what you used when you look back in the future. For example, at the bottom of the MultiQC reports. @@ -135,8 +131,6 @@ Several generic profiles are bundled with the pipeline which instruct the pipeli We highly recommend the use of Docker or Singularity containers for full pipeline reproducibility, however when this is not possible, Conda is also supported. ::: -The pipeline also dynamically loads configurations from [https://github.com/nf-core/configs](https://github.com/nf-core/configs) when it runs, making multiple config profiles for various institutional clusters available at run time. For more information and to see if your system is available in these configs please see the [nf-core/configs documentation](https://github.com/nf-core/configs#documentation). - Note that multiple profiles can be loaded, for example: `-profile test,docker` - the order of arguments is important! They are loaded in sequence, so later profiles can overwrite earlier profiles. @@ -170,36 +164,8 @@ You can also supply a run name to resume a specific run: `-resume [run-name]`. U ### `-c` -Specify the path to a specific config file (this is a core Nextflow command). See the [nf-core website documentation](https://nf-co.re/usage/configuration) for more information. - -## Custom configuration - -### Resource requests - -Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the steps in the pipeline, if the job exits with any of the error codes specified [here](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L18) it will automatically be resubmitted with higher requests (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped. - -To change the resource requests, please see the [max resources](https://nf-co.re/docs/usage/configuration#max-resources) and [tuning workflow resources](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources) section of the nf-core website. - -### Custom Containers - -In some cases you may wish to change which container or conda environment a step of the pipeline uses for a particular tool. By default nf-core pipelines use containers and software from the [biocontainers](https://biocontainers.pro/) or [bioconda](https://bioconda.github.io/) projects. However in some cases the pipeline specified version maybe out of date. - -To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/usage/configuration#updating-tool-versions) section of the nf-core website. - -### Custom Tool Arguments - -A pipeline might not always support every possible argument or option of a particular tool used in pipeline. Fortunately, nf-core pipelines provide some freedom to users to insert additional parameters that the pipeline does not include by default. - -To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/usage/configuration#customising-tool-arguments) section of the nf-core website. - -### nf-core/configs - -In most cases, you will only need to create a custom config as a one-off but if you and others within your organisation are likely to be running nf-core pipelines regularly and need to use the same settings regularly it may be a good idea to request that your custom config file is uploaded to the `nf-core/configs` git repository. Before you do this please can you test that the config file works with your pipeline of choice using the `-c` parameter. You can then create a pull request to the `nf-core/configs` repository with the addition of your config file, associated documentation file (see examples in [`nf-core/configs/docs`](https://github.com/nf-core/configs/tree/master/docs)), and amending [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) to include your custom profile. - -See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config.html) for more information about creating your own configuration files. - -If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs). - +Specify the path to a specific config file (this is a core Nextflow command). +Vii ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/main.nf b/main.nf index 7240eb2..4877381 100644 --- a/main.nf +++ b/main.nf @@ -1,11 +1,9 @@ #!/usr/bin/env nextflow /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/wisps + Australian-Structural-Biology-Computing/wisps ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Github : https://github.com/nf-core/wisps - Website: https://nf-co.re/wisps - Slack : https://nfcore.slack.com/channels/wisps + Github : https://github.com/Australian-Structural-Biology-Computing/wisps ---------------------------------------------------------------------------------------- */ /* @@ -24,7 +22,7 @@ include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_wisp // // WORKFLOW: Run main analysis pipeline depending on type of input // -workflow NFCORE_WISPS { +workflow WF_WISPS { take: samplesheet // channel: samplesheet read in from --input main: @@ -56,7 +54,7 @@ workflow NFCORE_WISPS { // // WORKFLOW: Run pipeline // - + WISPS ( ch_samplesheet, params.mode, @@ -107,7 +105,7 @@ workflow { // // WORKFLOW: Run main workflow // - NFCORE_WISPS ( + WF_WISPS ( PIPELINE_INITIALISATION.out.samplesheet ) // @@ -120,7 +118,7 @@ workflow { params.outdir, params.monochrome_logs, params.hook_url, - NFCORE_WISPS.out.multiqc_report + WF_WISPS.out.multiqc_report ) } /* diff --git a/modules.json b/modules.json index b75bd10..96a9beb 100644 --- a/modules.json +++ b/modules.json @@ -1,6 +1,6 @@ { - "name": "nf-core/wisps", - "homePage": "https://github.com/nf-core/wisps", + "name": "Australian-Structural-Biology-Computing/wisps", + "homePage": "https://github.com/Australian-Structural-Biology-Computing/wisps", "repos": { "https://github.com/nf-core/modules.git": { "modules": { diff --git a/modules/local/run_boltz/Dockerfile b/modules/local/run_boltz/Dockerfile index 0ef3a4f..256cf36 100644 --- a/modules/local/run_boltz/Dockerfile +++ b/modules/local/run_boltz/Dockerfile @@ -1,9 +1,11 @@ FROM python:3.12-slim -LABEL authors="Ziad Al-Bkhetan " \ - title="nfcore/proteinfold_boltz" \ - Version="1.2.0dev" \ - description="Docker image containing all software requirements to run boltz using the nf-core/proteinfold pipeline" +LABEL org.opencontainers.image.title="nf-core/proteinfold_boltz" \ + org.opencontainers.image.description="Docker image containing all software requirements to run Boltz using the nf-core/proteinfold pipeline" \ + org.opencontainers.image.version="2.0.0" \ + org.opencontainers.image.authors="Jose Espinosa-Carrasco , Ziad Al-Bkhetan " \ + org.opencontainers.image.source="https://github.com/nf-core/proteinfold" \ + org.opencontainers.image.licenses="MIT" RUN apt-get update && \ apt-get install -y --no-install-recommends \ @@ -12,14 +14,13 @@ RUN apt-get update && \ && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/* -RUN pip install --no-cache-dir boltz==2.0.3 +RUN pip install --no-cache-dir boltz==2.2.1 -## To update to version 2.2.0, uncomment the following lines, though still was complaining -## about triton version, thought the error msg state to be sure of using 3.3.0 -# RUN pip install --no-cache-dir \ -# cuequivariance_ops_cu12==0.5.1\ -# cuequivariance_ops_torch_cu12==0.5.1 \ -# cuequivariance_torch==0.5.1 \ -# triton==3.3.0 +# The update to 2.2.1, was complaining about this missing dependencies +RUN pip install --no-cache-dir \ + cuequivariance_ops_cu12==0.8.1 \ + cuequivariance_ops_torch_cu12==0.8.1 \ + cuequivariance_torch==0.8.1 \ + triton==3.3.0 -CMD ["boltz"] +CMD ["boltz"] \ No newline at end of file diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index b53e5dd..7eb46f3 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -6,7 +6,7 @@ process RUN_BOLTZ { label 'process_medium' label 'process_gpu' - container "nf-core/proteinfold_boltz:dev" + container "nf-core/proteinfold_boltz:2.0.0" input: tuple val(meta), path("fasta/*") diff --git a/nextflow.config b/nextflow.config index c508fdf..8023e1d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -1,6 +1,6 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/wisps Nextflow config file + Australian-Structural-Biology-Computing/wisps Nextflow config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Default config options for all compute environments ---------------------------------------------------------------------------------------- @@ -9,7 +9,6 @@ // Global default params, used in configs params { - // TODO nf-core: Specify your pipeline's command line flags // Input options input = null mode = "all-all" @@ -51,7 +50,7 @@ params { // Boilerplate options outdir = null - publish_dir_mode = 'copy' + publish_dir_mode = 'symlink' email = null email_on_fail = null plaintext_email = false @@ -180,15 +179,12 @@ profiles { } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } - test_gadi { includeConfig 'conf/test_gadi.config' } - gadi { includeConfig 'conf/gadi.config' } } // Load nf-core custom profiles from different Institutions includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" -// Load nf-core/wisps custom profiles from different institutions. -// TODO nf-core: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs +// Load Australian-Structural-Biology-Computing/wisps custom profiles from different institutions. // includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/pipeline/wisps.config" : "/dev/null" // Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile @@ -245,13 +241,13 @@ dag { } manifest { - name = 'nf-core/wisps' + name = 'Australian-Structural-Biology-Computing/wisps' author = """Ziad Al-Bkhetan and Thomas Liftin""" - homePage = 'https://github.com/nf-core/wisps' + homePage = 'https://github.com/Australian-Structural-Biology-Computing/wisps' description = """Workflow for Interaction Screening by predicting Structure""" mainScript = 'main.nf' nextflowVersion = '!>=24.04.2' - version = '1.0.0dev' + version = '1.0.0' doi = '' } diff --git a/nextflow_schema.json b/nextflow_schema.json index fff75a4..11aad88 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/nf-core/wisps/master/nextflow_schema.json", - "title": "nf-core/wisps pipeline parameters", + "$id": "https://raw.githubusercontent.com/Australian-Structural-Biology-Computing/wisps/master/nextflow_schema.json", + "title": "Australian-Structural-Biology-Computing/wisps pipeline parameters", "description": "Workflow for Interaction Screening by predicting Structure", "type": "object", "$defs": { diff --git a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf index 68813d6..81309be 100644 --- a/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_wisps_pipeline/main.nf @@ -1,5 +1,5 @@ // -// Subworkflow with functionality specific to the nf-core/wisps pipeline +// Subworkflow with functionality specific to the Australian-Structural-Biology-Computing/wisps pipeline // /* From 3cb13f88b6fb6b5707e9fc0a2640cbadcdbe5201 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 24 Apr 2026 11:02:49 +1000 Subject: [PATCH 58/70] cleaning --- modules/local/colabfold_batch/main.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/local/colabfold_batch/main.nf b/modules/local/colabfold_batch/main.nf index c45edd0..5d3513b 100644 --- a/modules/local/colabfold_batch/main.nf +++ b/modules/local/colabfold_batch/main.nf @@ -3,7 +3,6 @@ process COLABFOLD_BATCH { label 'process_medium' label 'process_gpu' - //container "nf-core/proteinfold_colabfold:dev" container "ghcr.io/tlitfin/wisps-colabfold-batch:1.1" input: From 23ebd6662db25172f77bef0783622cfd25c4e783 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 24 Apr 2026 11:09:53 +1000 Subject: [PATCH 59/70] cleaning --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 +- README.md | 2 +- conf/dbs.config | 2 +- conf/modules_alphafold3.config | 2 +- conf/modules_boltz.config | 2 +- conf/modules_colabfold.config | 2 +- docs/README.md | 1 - docs/usage.md | 10 +++++++--- main.nf | 2 +- modules/local/run_boltz/Dockerfile | 2 +- workflows/wisps.nf | 2 +- 11 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6a4ff3f..187706b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -39,7 +39,7 @@ body: - type: textarea id: system attributes: - label: System informationLearn more about contributing: [CONTRIBUTING.md](https://github.com/Australian-Structural-Biology-Computing/wisps/tree/master/.github/CONTRIBUTING.md) + label: Learn more about contributing description: | * Nextflow version _(eg. 23.04.0)_ * Hardware _(eg. HPC, Desktop, Cloud)_ diff --git a/README.md b/README.md index 13eb982..788048a 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ > If you are new to Nextflow, please familiarise yourself with nextflow before running the workflow on actual data. Before running the pipeline, several resources must be available on the computing infrastructure: + - **All** tools require the ColabFold MMSeqs2 databases which can be set up following the instructions available [here](https://github.com/sokrypton/ColabFold/tree/main?tab=readme-ov-file#generating-msas-for-large-scale-structurecomplex-predictions) - **ColabFold** requires AlphaFold2 model parameters available from the download [link](https://storage.googleapis.com/alphafold/alphafold_params_2022-12-06.tar). - **Boltz** requires model parameters for the Boltz-2 structure prediction model ([link](https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt)), affinity prediction model ([link](https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt)) and CCD files ([link](https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar)) @@ -89,5 +90,4 @@ We thank the following people for their extensive assistance in the development If you would like to contribute to this pipeline or for further information/help please reach out to us. - ## Citations diff --git a/conf/dbs.config b/conf/dbs.config index f5a2d0e..98fe1fd 100644 --- a/conf/dbs.config +++ b/conf/dbs.config @@ -13,4 +13,4 @@ params { colabfold_uniref30 = "${params.db}/colabfold_uniref30/" colabfold_envdb = "${params.db}/colabfold_envdb/" -} \ No newline at end of file +} diff --git a/conf/modules_alphafold3.config b/conf/modules_alphafold3.config index 51f1efe..c690b69 100644 --- a/conf/modules_alphafold3.config +++ b/conf/modules_alphafold3.config @@ -12,4 +12,4 @@ params { // AlphaFold3 alphafold3_params = "${params.db}/params/af3.bin" -} \ No newline at end of file +} diff --git a/conf/modules_boltz.config b/conf/modules_boltz.config index cd860a7..f4b571f 100644 --- a/conf/modules_boltz.config +++ b/conf/modules_boltz.config @@ -14,4 +14,4 @@ params { boltz2_conf = "${params.db}/params/boltz2_conf.ckpt" boltz2_mols = "${params.db}/params/mols" -} \ No newline at end of file +} diff --git a/conf/modules_colabfold.config b/conf/modules_colabfold.config index 21a8e05..e9bf9a8 100644 --- a/conf/modules_colabfold.config +++ b/conf/modules_colabfold.config @@ -11,4 +11,4 @@ params { colabfold_alphafold2_params = "${params.db}/params/alphafold_params_2022-12-06" -} \ No newline at end of file +} diff --git a/docs/README.md b/docs/README.md index 5474437..c7f5a1b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,4 +6,3 @@ The Australian-Structural-Biology-Computing/wisps documentation is split into th - An overview of how the pipeline works, how to run it and a description of all of the different command-line flags. - [Output](output.md) - An overview of the different results produced by the pipeline and how to interpret them. - diff --git a/docs/usage.md b/docs/usage.md index 5f88da8..1d297d0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,13 +1,16 @@ # Australian-Structural-Biology-Computing/wisps: Usage ## Samplesheet input + tities/chains in a complex. - - Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). - - If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. + +- Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). +- If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. Reference: ColabFold input format examples in the official repository README: . ## Running the pipeline + You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. ```bash @@ -28,7 +31,7 @@ S3,S3.fasta,A,rna | Column | Description | | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | -| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | +| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | | `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | | `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | @@ -166,6 +169,7 @@ You can also supply a run name to resume a specific run: `-resume [run-name]`. U Specify the path to a specific config file (this is a core Nextflow command). Vii + ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/main.nf b/main.nf index 4877381..09a0cfa 100644 --- a/main.nf +++ b/main.nf @@ -54,7 +54,7 @@ workflow WF_WISPS { // // WORKFLOW: Run pipeline // - + WISPS ( ch_samplesheet, params.mode, diff --git a/modules/local/run_boltz/Dockerfile b/modules/local/run_boltz/Dockerfile index 256cf36..9ebd9e4 100644 --- a/modules/local/run_boltz/Dockerfile +++ b/modules/local/run_boltz/Dockerfile @@ -23,4 +23,4 @@ RUN pip install --no-cache-dir \ cuequivariance_torch==0.8.1 \ triton==3.3.0 -CMD ["boltz"] \ No newline at end of file +CMD ["boltz"] diff --git a/workflows/wisps.nf b/workflows/wisps.nf index 7ccfc6b..a9d247e 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -333,7 +333,7 @@ workflow WISPS { .flatten() .map{[["id": it.baseName.split("_model_0")[0].split("confidence_")[1], "model": "boltz"], it]} .set{ch_boltz_confidence} - + RUN_BOLTZ.out.affinity .map{it[1]} .flatten() From 6a341057613881dc20b7b142faa4c279c0b26c1b Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 24 Apr 2026 11:51:44 +1000 Subject: [PATCH 60/70] cleaning --- .nf-core.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nf-core.yml diff --git a/.nf-core.yml b/.nf-core.yml new file mode 100644 index 0000000..3805dc8 --- /dev/null +++ b/.nf-core.yml @@ -0,0 +1 @@ +repository_type: pipeline From b948ab05ead6a5e00f96161f52a1fb2cbd3ee1ce Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Sat, 25 Apr 2026 20:08:10 +1000 Subject: [PATCH 61/70] fixing docs --- LICENSE | 2 +- README.md | 4 ++- docs/images/nf-core-wisps_logo_dark.png | Bin 26192 -> 0 bytes docs/images/nf-core-wisps_logo_light.png | Bin 22628 -> 0 bytes docs/usage.md | 44 +++++++++++++++++++++-- nextflow.config | 2 +- 6 files changed, 46 insertions(+), 6 deletions(-) delete mode 100644 docs/images/nf-core-wisps_logo_dark.png delete mode 100644 docs/images/nf-core-wisps_logo_light.png diff --git a/LICENSE b/LICENSE index 8dd95ca..b46bd78 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) Ziad Al-Bkhetan and Thomas Liftin +Copyright (c) Ziad Al-Bkhetan and Thomas Litfin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 788048a..8aec9c1 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ - Compute confidence and interface metrics, including IPSAE. - Aggregate run metrics and QC summaries in [`MultiQC`](http://multiqc.info/). +![Workflow Diagram](docs/images/wf.jpg) + ## Usage > [!NOTE] @@ -82,7 +84,7 @@ For more details about the output files and reports, please refer to the ## Credits -Australian-Structural-Biology-Computing/wisps was originally written by [Ziad Al-Bkhetan](https://github.com/ziadbkh) and [Thomas Liftin](https://github.com/tlitfin/). +Australian-Structural-Biology-Computing/wisps was originally written by [Ziad Al-Bkhetan](https://github.com/ziadbkh) and [Thomas Litfin](https://github.com/tlitfin/). We thank the following people for their extensive assistance in the development of this pipeline: diff --git a/docs/images/nf-core-wisps_logo_dark.png b/docs/images/nf-core-wisps_logo_dark.png deleted file mode 100644 index 6e3509c3b1afaa8c48e0bf13970fc8fae7ae7695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26192 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 Z!jz8DF)D2iP2lxl2#+!8 diff --git a/docs/usage.md b/docs/usage.md index 1d297d0..b8ef6dc 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -2,13 +2,51 @@ ## Samplesheet input -tities/chains in a complex. +You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. + +```bash +--input '[path to samplesheet file]' +``` -- Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). -- If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. +### Full samplesheet + +An example of the sample sheet used for the pipeline is shown below: + +```csv title="samplesheet.csv" +id,sequence,group,type +S1,S1.fasta,A,protein +S2,Sample2.fasta,B,protein +S3,S3.fasta,A,rna +``` + +| Column | Description | +| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | +| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | +| `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | +| `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | + +A sequence file can contain multiple entities but if the entities are different types, they must adhere to the colabfold standard described below. + +An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. + +## Creating Interactions from sample sheet + +The interactions generated from the sample sheet are controlled with `--mode`. There are three supported modes: + +1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with up to 2 samples before and 2 samples after it. + +2. Group-based mode (for example, `--mode A-A,A-B`): interactions are generated only for the requested group combinations from the `group` column (comma-separated, no spaces). With groups `A` and `B`, `--mode A-A,A-B` will include all `A-A` pairs plus all `A-B` pairs. + +3. `--mode manual`: no interaction pairing is generated from the sample sheet. Instead, each FASTA record is treated as one interaction input directly. In this mode, provide interaction FASTA entries in the required ColabFold format: + - One FASTA record per interaction (`>interaction_id` then one sequence line). + - Use `:` to separate entities/chains in a complex. + - Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). + - If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. Reference: ColabFold input format examples in the official repository README: . + ## Running the pipeline You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. diff --git a/nextflow.config b/nextflow.config index 8023e1d..b7760a0 100644 --- a/nextflow.config +++ b/nextflow.config @@ -242,7 +242,7 @@ dag { manifest { name = 'Australian-Structural-Biology-Computing/wisps' - author = """Ziad Al-Bkhetan and Thomas Liftin""" + author = """Ziad Al-Bkhetan and Thomas Litfin""" homePage = 'https://github.com/Australian-Structural-Biology-Computing/wisps' description = """Workflow for Interaction Screening by predicting Structure""" mainScript = 'main.nf' From 8c769ffcf6527cda1290daba7428ebfb00b9f584 Mon Sep 17 00:00:00 2001 From: Ziad Al-Bkhetan Date: Sat, 25 Apr 2026 20:12:14 +1000 Subject: [PATCH 62/70] Add wf diagram --- docs/wf.jpg | Bin 0 -> 66698 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/wf.jpg diff --git a/docs/wf.jpg b/docs/wf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96ea8928d962acf381f659dba3678fda2af47922 GIT binary patch literal 66698 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 UmH2N5@o#tff4TX Date: Sat, 25 Apr 2026 20:13:30 +1000 Subject: [PATCH 63/70] fixing docs --- docs/{ => images}/wf.jpg | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{ => images}/wf.jpg (100%) diff --git a/docs/wf.jpg b/docs/images/wf.jpg similarity index 100% rename from docs/wf.jpg rename to docs/images/wf.jpg From 2d25a46d1a95f29487e8e54a2880a49d18d52ef7 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Sat, 25 Apr 2026 20:16:25 +1000 Subject: [PATCH 64/70] cleaning --- docs/usage.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index b8ef6dc..ae6a0bd 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -22,7 +22,7 @@ S3,S3.fasta,A,rna | Column | Description | | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | -| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | +| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | | `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | | `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | @@ -46,7 +46,6 @@ The interactions generated from the sample sheet are controlled with `--mode`. T Reference: ColabFold input format examples in the official repository README: . - ## Running the pipeline You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. From d2074c284cffa628c21eddd668a2b5e39702f434 Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Sat, 25 Apr 2026 20:39:46 +1000 Subject: [PATCH 65/70] update docs --- README.md | 2 +- docs/usage.md | 127 +++++++++++++++++++++++++++++++++++++++++++ nextflow_schema.json | 2 +- 3 files changed, 129 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8aec9c1..8d8aaf4 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ nextflow run Australian-Structural-Biology-Computing/wisps \ > [!WARNING] > Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_. -For more details and further functionality, please refer to the [usage documentation](docs/usage.md). +For more details and further functionality and pipeline's pparameters, please refer to the [usage documentation](docs/usage.md). ## Pipeline output diff --git a/docs/usage.md b/docs/usage.md index ae6a0bd..52d26ec 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -92,6 +92,133 @@ The interactions generated from the sample sheet are controlled with `--mode`. T Reference: ColabFold input format examples in the official repository README: . +## Pipeline parameters + +### General Help Options + +- `--help` `[boolean, string]` + Show help for top-level parameters. If a parameter is provided, shows detailed help for that parameter. + +- `--help_full` `[boolean]` + Show help for all non-hidden parameters. + +- `--show_hidden` `[boolean]` + Show hidden parameters (must be used with `--help` or `--help_full`). + +--- + +### Input / Output Options + +- `--input` `[string]` + Path to CSV file describing samples. + +- `--outdir` `[string]` + Output directory for results (must be an absolute path in cloud environments). + +- `--mode` `[string]` + Interaction mode: + + - `all-all` + - `group-group` (uses `group` column in samplesheet) + Multiple group-group combinations allowed (comma-separated, no spaces). + **Default:** `all-all` + +- `--tools` `[string]` + Models to run (comma-separated, no spaces): + `alphafold3`, `colabfold`, `boltz` + **Default:** `boltz,colabfold` + +- `--analysis_batch_size` `[integer]` + Number of samples processed in one batch by boltz and Alphafold3. + **Default:** `20` + +- `--colabfold_batch_size` `[integer]` + Number of samples processed in one batch by ColabFold. + **Default:** `20` + +- `--interaction_neighbours` `[integer]` + Local neighbourhood size for all-by-all mode. + **Default:** `0` which means no limit and all samples will be considered. + +- `--pool` `[boolean]` + Enable interaction pooling mode (uses `--mode` group pairs). + **Default:** `false` + +- `--pool_size` `[integer]` + Max total sequence length per pool (required if pooling). + **Default:** `2000` + +- `--mmseqs_gpu` `[boolean]` + Run mmseqs on GPU. + +- `--use_spire_db` `[boolean]` + Use Spire database. + +--- + +## Database Options + +- `--db` `[string]` + Path to reference data and model parameters. + +- `--colabfold_uniref30` `[string]` + UniRef30 database. + +- `--colabfold_envdb` `[string]` + ColabFold environment database. + +- `--colabfold_uniref30_prefix` `[string]` + Default: `colabfold_uniref30/uniref30_2302_db` + +- `--colabfold_envdb_prefix` `[string]` + Default: `colabfold_envdb/colabfold_envdb_202108_db` + +- `--spire_db` `[string]` + Spire database. + +- `--colabfold_alphafold2_params` `[string]` + AlphaFold2 parameters for ColabFold. + +- `--boltz2_aff` `[string]` + Boltz affinity file. + +- `--boltz2_conf` `[string]` + Boltz-2 config file. + +- `--boltz2_mols` `[string]` + Boltz-2 molecule files. + +- `--alphafold3_params` `[string]` + AlphaFold3 parameters. + +--- + +## tools Options + +- `--colabfold_num_recycles` `[integer]` + Number of recycles. + **Default:** `3` + +- `--ipsae_pae_cutoff` `[integer]` + PAE cutoff. + **Default:** `10` + +- `--ipsae_dist_cutoff` `[integer]` + Distance cutoff. + **Default:** `10` + +--- + +## Generic Options + +- `--version` `[boolean]` + Show version and exit. + +- `--publish_dir_mode` `[string]` + Output method: + `symlink`, `rellink`, `link`, `copy`, `copyNoFollow`, `move` + **Default:** `symlink` + ## Running the pipeline The typical command for running the pipeline is as follows: diff --git a/nextflow_schema.json b/nextflow_schema.json index 11aad88..a719280 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -265,7 +265,7 @@ }, "publish_dir_mode": { "type": "string", - "default": "copy", + "default": "symlink", "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", From d486e9f21c391271aa6fe25df6bb48428ca89d63 Mon Sep 17 00:00:00 2001 From: Ziad Al-Bkhetan Date: Mon, 27 Apr 2026 13:24:42 +1000 Subject: [PATCH 66/70] Update usage.md --- docs/usage.md | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 52d26ec..0e076ec 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -34,52 +34,6 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The interactions generated from the sample sheet are controlled with `--mode`. There are three supported modes: -1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with up to 2 samples before and 2 samples after it. - -2. Group-based mode (for example, `--mode A-A,A-B`): interactions are generated only for the requested group combinations from the `group` column (comma-separated, no spaces). With groups `A` and `B`, `--mode A-A,A-B` will include all `A-A` pairs plus all `A-B` pairs. - -3. `--mode manual`: no interaction pairing is generated from the sample sheet. Instead, each FASTA record is treated as one interaction input directly. In this mode, provide interaction FASTA entries in the required ColabFold format: - - One FASTA record per interaction (`>interaction_id` then one sequence line). - - Use `:` to separate entities/chains in a complex. - - Use `molecule_type|sequence` for non-protein entities (for example `dna|ATCG`, `rna|AUGC`, `ccd|ATP`, `smiles|...`; optional copies like `ccd|ATP|2`). - - If SMILES contains aromatic bonds, replace `:` with `;` as required by ColabFold parsing. - -Reference: ColabFold input format examples in the official repository README: . - -## Running the pipeline - -You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. - -```bash ---input '[path to samplesheet file]' -``` - -### Full samplesheet - -An example of the sample sheet used for the pipeline is shown below: - -```csv title="samplesheet.csv" -id,sequence,group,type -S1,S1.fasta,A,protein -S2,Sample2.fasta,B,protein -S3,S3.fasta,A,rna -``` - -| Column | Description | -| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | The `id` identifiers have to be unique in the sample sheet and **must not** have an underscore or hyphen (`_`, `-`). | -| `sequence` | Full path to FASTA file for sample sequence. File has to have the extension ".fasta", or ".fa" | -| `type` | The sequence type, can be either `protein`, `rna`, `smiles`. It is an optional column; by default, it will be considered as `protein`. | -| `group` | It is a way to group samples together to create custom interactions. It is an optional column and **must not** have a hyphen (`-`). If not provided, the interactions will be `all-all`, which means all samples against all samples, or you can use `group.a-group.b` to only consider the samples from `group.a` against samples from `group.b`. | - -A sequence file can contain multiple entities but if the entities are different types, they must adhere to the colabfold standard described below. - -An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. - -## Creating Interactions from sample sheet - -The interactions generated from the sample sheet are controlled with `--mode`. There are three supported modes: - 1. `--mode all-all` (default): the workflow generates all unique sample pairs (order-independent) across the full sample sheet. This mode does not require the `group` column. You can limit pair generation with `--interaction_neighbours `. The default is `0` (no limit). For any positive `n`, only pairs within `n` neighbours in the sample sheet order are kept. For example, with `--interaction_neighbours 2`, each sample is paired with itself and the next two samples in the sample sheet. 2. Group-based mode (for example, `--mode A-A,A-B`): interactions are generated only for the requested group combinations from the `group` column (comma-separated, no spaces). With groups `A` and `B`, `--mode A-A,A-B` will include all `A-A` pairs plus all `A-B` pairs. From efeb6ffe4ee90ae48eb4b517a42572d672c03123 Mon Sep 17 00:00:00 2001 From: Ziad Al-Bkhetan Date: Mon, 27 Apr 2026 13:26:21 +1000 Subject: [PATCH 67/70] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8d8aaf4..16a935f 100644 --- a/README.md +++ b/README.md @@ -73,9 +73,9 @@ nextflow run Australian-Structural-Biology-Computing/wisps \ ``` > [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_. +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files, including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_. -For more details and further functionality and pipeline's pparameters, please refer to the [usage documentation](docs/usage.md). +For more details, further functionalities, and pipeline parameters, please refer to the [usage documentation](docs/usage.md). ## Pipeline output From 0168c5860b2fadac7b00837c4d2b500893feab96 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 10 May 2026 15:31:19 +1000 Subject: [PATCH 68/70] change publishdir to copy and skip colabfold_search duplication --- conf/modules.config | 3 +++ nextflow.config | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index c73e4e9..123c9f8 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -59,6 +59,9 @@ process { ext.args = args } + publishDir = [ + enabled: false + ] } withName: 'RUN_BOLTZ' { diff --git a/nextflow.config b/nextflow.config index b7760a0..e018619 100644 --- a/nextflow.config +++ b/nextflow.config @@ -50,7 +50,7 @@ params { // Boilerplate options outdir = null - publish_dir_mode = 'symlink' + publish_dir_mode = 'copy' email = null email_on_fail = null plaintext_email = false From f8fe606469c97e9721a75eeae7c708fd0a8d2ba6 Mon Sep 17 00:00:00 2001 From: tlitfin Date: Sun, 10 May 2026 15:31:57 +1000 Subject: [PATCH 69/70] fix boltz to check number of required outputs in case of OOM --- modules/local/run_boltz/main.nf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/local/run_boltz/main.nf b/modules/local/run_boltz/main.nf index 7eb46f3..6cb6418 100644 --- a/modules/local/run_boltz/main.nf +++ b/modules/local/run_boltz/main.nf @@ -40,6 +40,14 @@ process RUN_BOLTZ { boltz predict fasta ${args} --cache ./ + # Fail fast if Boltz silently skipped structures (e.g. OOM). + n_fasta=\$(ls fasta/*.yaml | wc -l) + n_cif=\$(find boltz_results_* -type f -name '*model_0.cif' 2>/dev/null | wc -l) + if [[ "\$n_fasta" -ne "\$n_cif" ]]; then + echo "ERROR: RUN_BOLTZ incomplete batch. yaml files: \$n_fasta, CIF files: \$n_cif" >&2 + exit 1 + fi + cat <<-END_VERSIONS > versions.yml "${task.process}": boltz: $version From 151274b7f65ddefa8ba14d014d5a52e07895de6e Mon Sep 17 00:00:00 2001 From: ziadbkh Date: Fri, 29 May 2026 12:01:49 +1000 Subject: [PATCH 70/70] predictions filteration and output publishing thought workflows --- conf/modules.config | 14 --------- conf/test.config | 11 ++----- main.nf | 72 ++++++++++++++++++++++++++++++++++++++++++-- nextflow.config | 10 +++--- nextflow_schema.json | 6 ++++ workflows/wisps.nf | 38 +++++++++++++++++++++-- 6 files changed, 118 insertions(+), 33 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 123c9f8..ffbfd47 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -12,19 +12,8 @@ singularity.runOptions = params.mmseqs_gpu ? '--nv' : '' process { - publishDir = [ - path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - withName: 'MULTIQC' { ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } - publishDir = [ - path: { "${params.outdir}/multiqc" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] } withName: 'MMSEQS_COLABFOLDSEARCH' { @@ -59,9 +48,6 @@ process { ext.args = args } - publishDir = [ - enabled: false - ] } withName: 'RUN_BOLTZ' { diff --git a/conf/test.config b/conf/test.config index 1304a59..32edac8 100644 --- a/conf/test.config +++ b/conf/test.config @@ -10,13 +10,6 @@ ---------------------------------------------------------------------------------------- */ -process { - resourceLimits = [ - cpus: 4, - memory: '15.GB', - time: '1.h' - ] -} params { config_profile_name = 'Test profile' @@ -25,7 +18,7 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' - + input = "$projectDir/assets/samplesheet.csv" + outdir = "test-output" } diff --git a/main.nf b/main.nf index 09a0cfa..4ff48dd 100644 --- a/main.nf +++ b/main.nf @@ -77,12 +77,23 @@ workflow WF_WISPS { params.colabfold_batch_size, params.interaction_neighbours, params.pool, - params.pool_size + params.pool_size, + params.iptm_threshold ) ch_versions = ch_versions.mix(WISPS.out.versions) emit: - multiqc_report //= WISPS.out.multiqc_report // channel: /path/to/multiqc_report.html + colabfold_predictions = WISPS.out.colabfold_predictions + boltz_predictions = WISPS.out.boltz_predictions + af3_predictions = WISPS.out.af3_predictions + multiqc_report = WISPS.out.multiqc_report + versions = WISPS.out.versions + collated_versions = WISPS.out.collated_versions + ipsae_report = WISPS.out.ipsae_report + msa_a3m = WISPS.out.msa_a3m + msa_json = WISPS.out.msa_json + msa_yaml = WISPS.out.msa_yaml + msa_csv = WISPS.out.msa_csv } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -120,7 +131,64 @@ workflow { params.hook_url, WF_WISPS.out.multiqc_report ) + + publish: + colabfold_predictions = WF_WISPS.out.colabfold_predictions + boltz_predictions = WF_WISPS.out.boltz_predictions + af3_predictions = WF_WISPS.out.af3_predictions + multiqc_report = WF_WISPS.out.multiqc_report // channel: /path/to/multiqc_report.html + //collated_versions = WF_WISPS.out.collated_versions + ipsae_report = WF_WISPS.out.ipsae_report + msa_a3m = WF_WISPS.out.msa_a3m.map{it[1]} + msa_json = WF_WISPS.out.msa_json.ifEmpty([]) + msa_yaml = WF_WISPS.out.msa_yaml.ifEmpty([]) + msa_csv = WF_WISPS.out.msa_csv.ifEmpty([]) } + +output { + colabfold_predictions { + path { sample -> { + sample.pdb >> "colabfold_predictions/pdb/" + sample.confidence >> "colabfold_predictions/confidence/" + } + } + } + boltz_predictions { + path { sample -> { + sample.cif >> "boltz_predictions/cif/${sample.cif.name}" + sample.pae >> "boltz_predictions/pae/${sample.pae.name}" + sample.confidence >> "boltz_predictions/confidence/${sample.confidence.name}" + } + } + } + af3_predictions { + path { sample -> { + sample.cif >> "alphafold3_predictions/cif/${sample.cif.name}" + sample.confidence >> "alphafold3_predictions/confidence/${sample.confidence.name}" + } + } + } + multiqc_report { + path 'multiqc_report.html' + } + ipsae_report { + path "ipsae/" + } + msa_a3m { + path "mmseqs/" + } + msa_json { + path "mmseqs/" + } + msa_yaml { + path 'mmseqs/' + } + msa_csv { + path 'mmseqs/' + } + +} + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END diff --git a/nextflow.config b/nextflow.config index e018619..c717e89 100644 --- a/nextflow.config +++ b/nextflow.config @@ -22,6 +22,7 @@ params { colabfold_num_recycles = 3 tools = "boltz,colabfold" db = null + iptm_threshold = 0.6 ipsae_pae_cutoff = 10 ipsae_dist_cutoff = 10 @@ -73,8 +74,12 @@ params { // Schema validation default options validate_params = true + } +outputDir = params.outdir + + // Load base.config by default for all pipelines includeConfig 'conf/base.config' @@ -265,11 +270,6 @@ validation { showHiddenParameter = "show_hidden" beforeText = """ -\033[2m----------------------------------------------------\033[0m- - \033[0;32m,--.\033[0;30m/\033[0;32m,-.\033[0m -\033[0;34m ___ __ __ __ ___ \033[0;32m/,-._.--~\'\033[0m -\033[0;34m |\\ | |__ __ / ` / \\ |__) |__ \033[0;33m} {\033[0m -\033[0;34m | \\| | \\__, \\__/ | \\ |___ \033[0;32m\\`-._,-`-,\033[0m - \033[0;32m`._,._,\'\033[0m \033[0;35m ${manifest.name} ${manifest.version}\033[0m -\033[2m----------------------------------------------------\033[0m- """ diff --git a/nextflow_schema.json b/nextflow_schema.json index a719280..4eafbfa 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -73,6 +73,12 @@ "description": "Maximum total sequence length per interaction pool (required when --pool is set).", "fa_icon": "fas fa-ruler-horizontal" }, + "iptm_threshold": { + "type": "number", + "default": 0, + "description": "Minimum iptm threshold to filter out predictions. Default is 0, and all predicitons will be ppublished in the output directory.", + "fa_icon": "fas fa-microchip" + }, "use_gpu": { "type": "boolean", "description": "Run on CPUs (default) or GPUs for the models", diff --git a/workflows/wisps.nf b/workflows/wisps.nf index a9d247e..0518647 100644 --- a/workflows/wisps.nf +++ b/workflows/wisps.nf @@ -79,6 +79,7 @@ workflow WISPS { interaction_neighbours pool pool_size + iptm_threshold main: ch_multiqc_files = Channel.empty() @@ -275,7 +276,7 @@ workflow WISPS { ], has_protein] } - ch_interaction_in.count().subscribe{print("total final: ${it}")} + //ch_interaction_in.count().subscribe{print("total final: ${it}")} MMSEQS_COLABFOLDSEARCH ( ch_interaction_raw.map{[["id": "all_run"], it]}, @@ -327,7 +328,6 @@ workflow WISPS { ch_mols ) - RUN_BOLTZ.out.confidence .map{it[1]} .flatten() @@ -770,9 +770,41 @@ workflow WISPS { [] ) + + ch_versions = ch_versions.mix(MULTIQC.out.versions) emit: versions = ch_versions - + collated_versions = ch_collated_versions + multiqc_report = MULTIQC.out.report + ipsae_report = IPSAE.out.txt + msa_a3m = MMSEQS_COLABFOLDSEARCH.out.a3m + msa_json = MMSEQS_COLABFOLDSEARCH.out.json + msa_yaml = MMSEQS_COLABFOLDSEARCH.out.yaml + msa_csv = MMSEQS_COLABFOLDSEARCH.out.msa_csv + + colabfold_predictions = ch_colabfold_scores + .join(ch_colabfold_pdb) + .map { ['score': iptm_threshold > 0 ? new groovy.json.JsonSlurper().parseText(it[1].text).iptm : null, + 'pdb': it[2], + 'confidence': it[1]] } + .filter{iptm_threshold == 0 || it.score >= iptm_threshold} + + boltz_predictions = ch_boltz_pae + .join(ch_boltz_cif) + .join(ch_boltz_confidence) + .map { ['confidence': it[3], + 'cif': it[2], + 'pae': it[1], + 'score': iptm_threshold > 0 ? new groovy.json.JsonSlurper().parseText(it[3].text).iptm : null] } + .filter{iptm_threshold == 0 || it.score >= iptm_threshold} + + af3_predictions = ch_alphafold3_confidence + .join(ch_alphafold3_cif) + .map { ['confidence': it[1], + 'cif': it[2], + 'score': iptm_threshold > 0 ? new groovy.json.JsonSlurper().parseText(it[1].text).iptm : null] } + .filter{iptm_threshold == 0 || it.score >= iptm_threshold} } +