#!/usr/bin/env nextflow

nextflow.enable.dsl=2

```c
/*   
 * Define the input parameters"""Takes as input FASTA file
                                     of cDNA sequences, a CSV/TSV with sequence
                                     counts, and mean and std. dev. of fragment
                                     lengths and 4 nucleotide probabilities
                                     for the cuts. Outputs most terminal
                                     fragment (within desired length range)
                                     for each sequence."""
 */ 
params.fasta_file = "$projectDir/tests/test_files/test,fasta"
params.counts_file = "$projectDir/tests/test_files/test.csv"        
params.sep = "$projectDir/data/yeast/sep/sep.csv"
params.outdir = "results" 


/* Log some information for the user */

log.info """\
         R N A S E Q - N F   P I P E L I N E 
         ===================================       
         fasta_file   : ${params.fasta_file}      
         counts_file  : ${params.counts_file}             
         outdir       : ${params.outdir}          
         """                                        
         .stripIndent() 
         
/* 
 * Define the `file_validation` process:
 * Validate input files exist and are the correct format
 */ 

process file_validation { 

    input:
    path fasta_file
    path counts_file
    path sep 
    
    output:
    tuple: fasta dict and sequence for counts file
    
    script: 
    """
    salmon index --threads $task.cpus -t $transcriptome -i index
    """ 
}    
    

/*
 * Define the get_cut_number process:
 * Get the number of cuts for a particular sequence 
 */

process get_cut_number {

    tag "get_cut_numbern on $n_cuts" 
    publishDir "${params.outdir}/get_cut_number", mode:'copy' 
    
    input:
    path index
    tuple val(n_cuts), path(seq_len, mean)                                                                                   
    
    output:
    path(n_cuts)
    
    script:
    """
      
    """                                                      
}


/* 
 * Define the fragmentation process:
 * Fragment cDNA sequences and select terminal fragment 
 */

process fragmentation {

    tag "fragmentation on $fasta, seq_counts, nuc_probs, mu_length, std"
    
    input:
    dict val(fasta), pd.DataFrame(seq_counts), dict(nuc_probs),int(mu_length),int(std)
    
    output:
    path("term_frags")
    
    script:
    """
    mkdir fastqc_${sample_id}_logs
    
    """
}



/* Start the job:
 * initialize variables
 */
 
Channel
    .fromFilePairs( params.reads, checkIfExists:true ) 
    .set { read_pairs_ch }     


/* The "main" function:
 * Use CLI arguments to fragment sequences and output text file with selected terminal fragments
 */

workflow {
  file_validation_ch=file_validation(params.fasta_file, params.counts_file, params.sep)
  get_cut_number_ch = get_cut_number(seq_len, mean)
  framentation_ch = fregmentation(fasta, seq_counts, nuc_probs, mu_length, std)                                                                           }                                                                                                                     


/* Book keeping upon workflow completion */
workflow.onComplete {
   log.info (workflow.success ? "\nDone! Open the following report in your browser -->     $params.outdir/multiqc/multiqc_report.html\n" : "Oops .. something went wrong") 
   )
}                                                                                                                     
```