#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?ms)(?P<file_number>\d+)\.\s+(?P<filepath>.*?)\n(?P<file_contents>```(.*?)```)(?=\d+\.\s+|$)"
Local $sString = "1. nextflow.config" & @CRLF & _
"```" & @CRLF & _
"params {" & @CRLF & _
" inputDir = "data/raw"" & @CRLF & _
" outputDir = "results"" & @CRLF & _
"}" & @CRLF & _
"" & @CRLF & _
"process {" & @CRLF & _
" executor = "local"" & @CRLF & _
" memory = "8 GB"" & @CRLF & _
" cpus = 4" & @CRLF & _
"}" & @CRLF & _
"```" & @CRLF & _
"" & @CRLF & _
"2. main.nf" & @CRLF & _
"```" & @CRLF & _
"#!/usr/bin/env nextflow" & @CRLF & _
"" & @CRLF & _
"params.inputDir = "./data/raw"" & @CRLF & _
"params.outputDir = "./results"" & @CRLF & _
"" & @CRLF & _
"include { preprocess, qualityControl, differentialExpression } from "./scripts"" & @CRLF & _
"" & @CRLF & _
"workflow {" & @CRLF & _
" input:" & @CRLF & _
" path(inputDir) from params.inputDir" & @CRLF & _
"" & @CRLF & _
" output:" & @CRLF & _
" path(outputDir) into results" & @CRLF & _
"" & @CRLF & _
" preprocess_output, quality_control_output, differential_expression_output = script {" & @CRLF & _
" preprocess(inputDir)" & @CRLF & _
" } " & @CRLF & _
"" & @CRLF & _
" quality_control_output = script {" & @CRLF & _
" qualityControl(preprocess_output)" & @CRLF & _
" }" & @CRLF & _
"" & @CRLF & _
" differential_expression_output = script {" & @CRLF & _
" differentialExpression(preprocess_output)" & @CRLF & _
" }" & @CRLF & _
"}" & @CRLF & _
"```" & @CRLF & _
"" & @CRLF & _
"3. scripts/preprocess.sh" & @CRLF & _
"```" & @CRLF & _
"#!/bin/bash" & @CRLF & _
"" & @CRLF & _
"inputDir=$1" & @CRLF & _
"" & @CRLF & _
"# Trim reads using Trimmomatic" & @CRLF & _
"trimmomatic PE ${inputDir}/sample_R1.fastq.gz ${inputDir}/sample_R2.fastq.gz ${inputDir}/sample_R1.trimmed.fastq.gz ${inputDir}/sample_R1.unpaired.fastq.gz ${inputDir}/sample_R2.trimmed.fastq.gz ${inputDir}/sample_R2.unpaired.fastq.gz ILLUMINACLIP:adapters.fa:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36" & @CRLF & _
"" & @CRLF & _
"# Align trimmed reads using HISAT2" & @CRLF & _
"hisat2 -x genome_index -1 ${inputDir}/sample_R1.trimmed.fastq.gz -2 ${inputDir}/sample_R2.trimmed.fastq.gz -S ${inputDir}/sample.sam" & @CRLF & _
"" & @CRLF & _
"# Convert SAM to BAM" & @CRLF & _
"samtools view -bS ${inputDir}/sample.sam > ${inputDir}/sample.bam" & @CRLF & _
"" & @CRLF & _
"# Sort BAM file" & @CRLF & _
"samtools sort ${inputDir}/sample.bam -o ${inputDir}/sample.sorted.bam" & @CRLF & _
"" & @CRLF & _
"# Index sorted BAM file" & @CRLF & _
"samtools index ${inputDir}/sample.sorted.bam" & @CRLF & _
"" & @CRLF & _
"# Remove intermediate files" & @CRLF & _
"rm ${inputDir}/sample.sam ${inputDir}/sample.bam" & @CRLF & _
"```" & @CRLF & _
"" & @CRLF & _
"4. scripts/quality_control.sh" & @CRLF & _
"```" & @CRLF & _
"#!/bin/bash" & @CRLF & _
"" & @CRLF & _
"inputDir=$1" & @CRLF & _
"" & @CRLF & _
"# Run FastQC on trimmed reads" & @CRLF & _
"fastqc ${inputDir}/sample_R1.trimmed.fastq.gz ${inputDir}/sample_R2.trimmed.fastq.gz -o ${inputDir}" & @CRLF & _
"" & @CRLF & _
"# Move FastQC output to results directory" & @CRLF & _
"mv ${inputDir}/*.html ${inputDir}/*.zip ${inputDir}/../results/logs" & @CRLF & _
"```" & @CRLF & _
"" & @CRLF & _
"5. scripts/differential_expression.sh" & @CRLF & _
"```" & @CRLF & _
"#!/bin/bash" & @CRLF & _
"" & @CRLF & _
"inputDir=$1" & @CRLF & _
"" & @CRLF & _
"# Count reads using featureCounts" & @CRLF & _
"featureCounts -T 4 -a annotation.gtf -o ${inputDir}/counts.txt ${inputDir}/sample.sorted.bam" & @CRLF & _
"" & @CRLF & _
"# Perform differential expression analysis using DESeq2" & @CRLF & _
"Rscript differential_expression.R ${inputDir}/counts.txt ${inputDir}/../results/differential_expression_results.txt" & @CRLF & _
"```" & @CRLF & _
"" & @CRLF & _
"Note: The contents of the `data/` and `results/` directories are not provided as they would depend on the specific input data and expected output structure." & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm