/** Compute Ka, Ks values for each
/** pair of duplicate genes in a TAG
/** and in a gene family
/** */

include { GUNZIP as GUNZIP_CDS } from "./modules/gunzip.nf"
include { KA_KS } from "./modules/ka_ks.nf"

process GENE_PAIRS {
    input:
    path families
    output:
    path 'pairs'
    script:
    """
    cat "${families}" | ${baseDir}/../../rust/pairs/target/release/pairs > 'pairs'
    """
}

workflow {
    families = params.families
    cds_gz = params.cds
    proteome = params.proteome

    cds = GUNZIP_CDS(cds_gz)

    pairs = GENE_PAIRS(families)
            .splitCsv(sep: '\t', header: false)
            .map { row -> tuple(row[0], row[1]) }


    kaks = KA_KS(pairs, proteome, cds)

    // Save to a CSV with collectFile
    header = Channel.value("gene_id_1\tgene_id_2\tKa\tKs")
    header.concat( kaks )
        .collectFile( name: 'test.txt', newLine: true, sort: false )
        .view() 
}
