Skip to content

Add GCTA modules#10863

Open
lyh970817 wants to merge 6 commits intonf-core:masterfrom
lyh970817:modules/gcta-create
Open

Add GCTA modules#10863
lyh970817 wants to merge 6 commits intonf-core:masterfrom
lyh970817:modules/gcta-create

Conversation

@lyh970817
Copy link

@lyh970817 lyh970817 commented Mar 13, 2026

This PR upstreams 12 gcta modules for GRM construction and manipulation, REML and bivariate REML analyses, LDMS-based REML, LD-score calculation, and fastGWA. The companion shared-data PR is merged upstream: nf-core/test-datasets#1919

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 module conventions in the contribution docs
  • If necessary, include test data in your PR.
  • Remove all TODO statements.
  • Broadcast software version numbers to topic: versions - See version_topics
  • Follow the naming conventions.
  • Follow the parameters requirements.
  • Follow the input/output options guidelines.
  • Add a resource label
  • Use BioConda and BioContainers if possible to fulfil software requirements.
  • Ensure that the test works with either Docker / Singularity. Conda CI tests can be quite flaky:
    • For modules:
      • nf-core modules test <MODULE> --profile docker
      • nf-core modules test <MODULE> --profile singularity
      • nf-core modules test <MODULE> --profile conda
    • For subworkflows:
      • nf-core subworkflows test <SUBWORKFLOW> --profile docker
      • nf-core subworkflows test <SUBWORKFLOW> --profile singularity
      • nf-core subworkflows test <SUBWORKFLOW> --profile conda

@lyh970817 lyh970817 marked this pull request as draft March 13, 2026 15:07
@lyh970817 lyh970817 marked this pull request as ready for review March 14, 2026 07:48
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upstreams a set of new gcta nf-core modules covering GRM construction/manipulation and REML / LDMS / LD-score / fastGWA workflows, including corresponding nf-test coverage and pinned software environments.

Changes:

  • Added 12 new modules/nf-core/gcta/* module implementations (main.nf) with containers/conda envs and topic: versions emission.
  • Added module metadata (meta.yml) and conda environments (environment.yml) for each module.
  • Added nf-test configs, tests, and snapshots for each new module.

Reviewed changes

Copilot reviewed 72 out of 72 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
modules/nf-core/gcta/addgrms/main.nf New module process implementation for combining GRMs via MGRM.
modules/nf-core/gcta/addgrms/meta.yml Module interface/IO metadata for gcta_addgrms.
modules/nf-core/gcta/addgrms/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/addgrms/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/addgrms/tests/main.nf.test nf-test definitions for gcta/addgrms.
modules/nf-core/gcta/addgrms/tests/main.nf.test.snap Snapshots for gcta/addgrms tests.
modules/nf-core/gcta/adjustgrm/main.nf New module process implementation for GRM adjustment.
modules/nf-core/gcta/adjustgrm/meta.yml Module interface/IO metadata for gcta_adjustgrm.
modules/nf-core/gcta/adjustgrm/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/adjustgrm/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/adjustgrm/tests/main.nf.test nf-test definitions for gcta/adjustgrm.
modules/nf-core/gcta/adjustgrm/tests/main.nf.test.snap Snapshots for gcta/adjustgrm tests.
modules/nf-core/gcta/bivariatereml/main.nf New module process implementation for bivariate REML with dense GRM.
modules/nf-core/gcta/bivariatereml/meta.yml Module interface/IO metadata for gcta_bivariatereml.
modules/nf-core/gcta/bivariatereml/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/bivariatereml/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/bivariatereml/tests/main.nf.test nf-test definitions for gcta/bivariatereml.
modules/nf-core/gcta/bivariatereml/tests/main.nf.test.snap Snapshots for gcta/bivariatereml tests.
modules/nf-core/gcta/bivariateremlldms/main.nf New module process implementation for bivariate REML-LDMS with MGRM.
modules/nf-core/gcta/bivariateremlldms/meta.yml Module interface/IO metadata for gcta_bivariateremlldms.
modules/nf-core/gcta/bivariateremlldms/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/bivariateremlldms/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/bivariateremlldms/tests/main.nf.test nf-test definitions for gcta/bivariateremlldms.
modules/nf-core/gcta/bivariateremlldms/tests/main.nf.test.snap Snapshots for gcta/bivariateremlldms tests.
modules/nf-core/gcta/calculateldscores/main.nf New module process implementation for LD-score calculation + SNP grouping.
modules/nf-core/gcta/calculateldscores/meta.yml Module interface/IO metadata for gcta_calculateldscores.
modules/nf-core/gcta/calculateldscores/environment.yml Conda environment pinning gcta + r-base.
modules/nf-core/gcta/calculateldscores/tests/nextflow.config Test config (incl. CPU override) + test-datasets base path.
modules/nf-core/gcta/calculateldscores/tests/main.nf.test nf-test definitions for gcta/calculateldscores.
modules/nf-core/gcta/calculateldscores/tests/main.nf.test.snap Snapshots for gcta/calculateldscores tests.
modules/nf-core/gcta/fastgwa/main.nf New module process implementation for GCTA fastGWA (MLM/LR).
modules/nf-core/gcta/fastgwa/meta.yml Module interface/IO metadata for gcta_fastgwa.
modules/nf-core/gcta/fastgwa/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/fastgwa/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/fastgwa/tests/main.nf.test nf-test definitions for gcta/fastgwa.
modules/nf-core/gcta/fastgwa/tests/main.nf.test.snap Snapshots for gcta/fastgwa tests.
modules/nf-core/gcta/filtergrmwithkeep/main.nf New module process implementation for filtering GRM using keep file.
modules/nf-core/gcta/filtergrmwithkeep/meta.yml Module interface/IO metadata for gcta_filtergrmwithkeep.
modules/nf-core/gcta/filtergrmwithkeep/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/filtergrmwithkeep/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/filtergrmwithkeep/tests/main.nf.test nf-test definitions for gcta/filtergrmwithkeep.
modules/nf-core/gcta/filtergrmwithkeep/tests/main.nf.test.snap Snapshots for gcta/filtergrmwithkeep tests.
modules/nf-core/gcta/makebksparse/main.nf New module process implementation for converting dense GRM to sparse GRM.
modules/nf-core/gcta/makebksparse/meta.yml Module interface/IO metadata for gcta_makebksparse.
modules/nf-core/gcta/makebksparse/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/makebksparse/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/makebksparse/tests/main.nf.test nf-test definitions for gcta/makebksparse.
modules/nf-core/gcta/makebksparse/tests/main.nf.test.snap Snapshots for gcta/makebksparse tests.
modules/nf-core/gcta/makegrmpart/main.nf New module process implementation for GRM partition construction.
modules/nf-core/gcta/makegrmpart/meta.yml Module interface/IO metadata for gcta_makegrmpart.
modules/nf-core/gcta/makegrmpart/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/makegrmpart/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/makegrmpart/tests/main.nf.test nf-test definitions for gcta/makegrmpart.
modules/nf-core/gcta/makegrmpart/tests/main.nf.test.snap Snapshots for gcta/makegrmpart tests.
modules/nf-core/gcta/reml/main.nf New module process implementation for univariate REML with dense GRM.
modules/nf-core/gcta/reml/meta.yml Module interface/IO metadata for gcta_reml.
modules/nf-core/gcta/reml/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/reml/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/reml/tests/main.nf.test nf-test definitions for gcta/reml.
modules/nf-core/gcta/reml/tests/main.nf.test.snap Snapshots for gcta/reml tests.
modules/nf-core/gcta/remlldms/main.nf New module process implementation for REML-LDMS with MGRM.
modules/nf-core/gcta/remlldms/meta.yml Module interface/IO metadata for gcta_remlldms.
modules/nf-core/gcta/remlldms/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/remlldms/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/remlldms/tests/main.nf.test nf-test definitions for gcta/remlldms.
modules/nf-core/gcta/remlldms/tests/main.nf.test.snap Snapshots for gcta/remlldms tests.
modules/nf-core/gcta/removerelatedsubjects/main.nf New module process implementation for removing related subjects (GRM cutoff).
modules/nf-core/gcta/removerelatedsubjects/meta.yml Module interface/IO metadata for gcta_removerelatedsubjects.
modules/nf-core/gcta/removerelatedsubjects/environment.yml Conda environment pinning gcta.
modules/nf-core/gcta/removerelatedsubjects/tests/nextflow.config Test config wiring test-datasets base path.
modules/nf-core/gcta/removerelatedsubjects/tests/main.nf.test nf-test definitions for gcta/removerelatedsubjects.
modules/nf-core/gcta/removerelatedsubjects/tests/main.nf.test.snap Snapshots for gcta/removerelatedsubjects tests.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

output:
tuple val(meta), path("${meta.id}.hsq"), emit: bivariate_results
tuple val(meta), path("${meta.id}.log"), emit: log_file
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions
output:
tuple val(meta), path("${meta.id}_gcta_ld.score.ld"), emit: ld_scores
tuple val(meta), path("${meta.id}_snp_group1.txt"), path("${meta.id}_snp_group2.txt"), path("${meta.id}_snp_group3.txt"), path("${meta.id}_snp_group4.txt"), emit: snp_group_files
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}.hsq"), emit: reml_results
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}.hsq"), emit: reml_results
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}.grm.id"), path("${meta.id}.grm.bin"), path("${meta.id}.grm.N.bin"), emit: combined_grm
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}_unrel.grm.id"), path("${meta.id}_unrel.grm.bin"), path("${meta.id}_unrel.grm.N.bin"), emit: filtered_grm
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}_sp.grm.id"), path("${meta.id}_sp.grm.sp"), emit: sparse_grm_files
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}.part_${meta.nparts_gcta}_${meta.part_gcta_job}.grm.id"), path("${meta.id}.part_${meta.nparts_gcta}_${meta.part_gcta_job}.grm.bin"), path("${meta.id}.part_${meta.nparts_gcta}_${meta.part_gcta_job}.grm.N.bin"), emit: grm_files
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions
output:
tuple val(meta), path("${meta.id}_unrel05.grm.id"), path("${meta.id}_unrel05.grm.bin"), path("${meta.id}_unrel05.grm.N.bin"), emit: grm_files
tuple val(meta), path("${meta.id}_unrel05.grm.id"), emit: keep_file
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions

output:
tuple val(meta), path("${meta.id}_adj.grm.id"), path("${meta.id}_adj.grm.bin"), path("${meta.id}_adj.grm.N.bin"), emit: grm_files
tuple val("${task.process}"), val("gcta"), eval("gcta --version 2>&1 | head -n 1"), emit: versions_gcta, topic: versions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants