diff --git a/.configurations/cromwell_no_mysql.conf b/.configurations/cromwell_no_mysql.conf index 01558c6..db4f1a1 100644 --- a/.configurations/cromwell_no_mysql.conf +++ b/.configurations/cromwell_no_mysql.conf @@ -1,5 +1,5 @@ backend { - default = SlurmSingularity + default = Local providers { diff --git a/.dockerfiles/reads2map/Dockerfile b/.dockerfiles/reads2map/Dockerfile index e7406ae..63ea5ca 100644 --- a/.dockerfiles/reads2map/Dockerfile +++ b/.dockerfiles/reads2map/Dockerfile @@ -53,10 +53,11 @@ RUN Rscript -e 'remotes::install_version("gsalib",upgrade="never", version = "2. RUN Rscript -e 'remotes::install_github("tpbilton/GUSbase", ref = "92119b9c57faa7abeede8236d24a4a8e85fb3df7")' RUN Rscript -e 'remotes::install_github("tpbilton/GUSMap", ref = "4d7d4057049819d045750d760a45976c8f30dac6")' -RUN Rscript -e 'remotes::install_github("dcgerard/updog", ref="f1")' +RUN Rscript -e 'remotes::install_github("dcgerard/updog")' RUN Rscript -e 'remotes::install_github("Cristianetaniguti/onemap")' # Still privates RUN Rscript -e 'remotes::install_github("Cristianetaniguti/simuscopR")' RUN Rscript -e 'remotes::install_github("Cristianetaniguti/Reads2MapTools")' +RUN Rscript -e 'remotes::install_github("Cristianetaniguti/MAPpoly")' diff --git a/README.md b/README.md index 5cddbfb..0c234e3 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The Reads2Map workflows perform the SNP and genotype/dosage calling for your com Multiple systems are available to run WDL workflows such as Cromwell, miniWDL, and dxWDL. See further information in the [openwdl documentation](https://github.com/openwdl/wdl#execution-engines). -In addition, we also suggest two wrappers: [cromwell-cli](https://github.com/lmtani/cromwell-cli) and [Caper](https://github.com/ENCODE-DCC/caper). Here is a tutorial on how to setup these tools and one example running the EmpiricalReads2Map: +In addition, we also suggest two wrappers: [pumbaa](https://github.com/lmtani/pumbaa) and [Caper](https://github.com/ENCODE-DCC/caper). Here is a tutorial on how to setup these tools and one example running the EmpiricalReads2Map: * [Setup and run Reads2Map workflows](https://cristianetaniguti.github.io/Tutorials/Reads2Map/Setup_and_run_Reads2Map_workflows.html) @@ -73,6 +73,10 @@ Taniguti, C. H.; Taniguti, L. M.; Amadeu, R. R.; Lau, J.; de Siqueira Gesteira, - [simuscopR](https://github.com/Cristianetaniguti/simuscopR) in [cristaniguti/reads2map:0.0.1](https://hub.docker.com/repository/docker/cristaniguti/reads2map): Wrap-up R package for SimusCop simulations - [MAPpoly](https://github.com/mmollina/MAPpoly) in [cristaniguti/reads2map:0.0.5](https://hub.docker.com/repository/docker/cristaniguti/reads2map): Build linkage maps for autopolyploid species +### How to cite + +Taniguti, C. H.; Taniguti, L. M.; Amadeu, R. R.; Lau, J.; de Siqueira Gesteira, G.; Oliveira, T. de P.; Ferreira, G. C.; Pereira, G. da S.; Byrne, D.; Mollinari, M.; Riera-Lizarazu, O.; Garcia, A. A. F. Developing best practices for genotyping-by-sequencing analysis in the construction of linkage maps. GigaScience, 12, giad092. https://doi.org/10.1093/gigascience/giad092 + ### Funding This work was partially supported by the National Council for Scientific and Technological Development (CNPq - 313269/2021-1); by USDA, National Institute of Food and Agriculture (NIFA), Specialty Crop Research Initiative (SCRI) project “Tools for Genomics Assisted Breeding in Polyploids: Development of a Community Resource” (Award No. 2020-51181-32156); and by the Bill and Melinda Gates Foundation (OPP1213329) project SweetGAINS. \ No newline at end of file diff --git a/pipelines/EmpiricalMaps/EmpiricalMaps.changelog.md b/pipelines/EmpiricalMaps/EmpiricalMaps.changelog.md index 2580c16..1447e70 100644 --- a/pipelines/EmpiricalMaps/EmpiricalMaps.changelog.md +++ b/pipelines/EmpiricalMaps/EmpiricalMaps.changelog.md @@ -1,3 +1,10 @@ +# 1.3.0 + +* Add MAPpoly new functions framework_map and update_framework_map +* Update tests +* Polyploid analysis output compatible with Reads2MapApp v0.0.1 +* Remove LargeList deprecated package as dependency + # 1.2.5 * more flexibility to choose the probability to be used in the HMM: diff --git a/pipelines/EmpiricalMaps/EmpiricalMaps.wdl b/pipelines/EmpiricalMaps/EmpiricalMaps.wdl index 90df7f2..590b780 100644 --- a/pipelines/EmpiricalMaps/EmpiricalMaps.wdl +++ b/pipelines/EmpiricalMaps/EmpiricalMaps.wdl @@ -189,7 +189,8 @@ workflow Maps { max_cores = max_cores, ploidy = ploidy, prob_thres = prob_thres, - filt_segr = filt_segr + filt_segr = filt_segr, + global_errors = global_errors } } @@ -206,7 +207,8 @@ workflow Maps { max_cores = max_cores, ploidy = ploidy, prob_thres = prob_thres, - filt_segr = filt_segr + filt_segr = filt_segr, + global_errors = global_errors } } @@ -223,7 +225,8 @@ workflow Maps { max_cores = max_cores, ploidy = ploidy, prob_thres = prob_thres, - filt_segr = filt_segr + filt_segr = filt_segr, + global_errors = global_errors } } @@ -237,9 +240,10 @@ workflow Maps { parent1 = dataset.parent1, parent2 = dataset.parent2, max_cores = max_cores, - ploidy = ploidy, + ploidy = ploidy, prob_thres = prob_thres, - filt_segr = filt_segr + filt_segr = filt_segr, + global_errors = global_errors } } } diff --git a/pipelines/EmpiricalReads2Map/EmpiricalReads2Map.changelog.md b/pipelines/EmpiricalReads2Map/EmpiricalReads2Map.changelog.md index ae5b43a..b450238 100644 --- a/pipelines/EmpiricalReads2Map/EmpiricalReads2Map.changelog.md +++ b/pipelines/EmpiricalReads2Map/EmpiricalReads2Map.changelog.md @@ -1,3 +1,11 @@ +# 1.5.0 + +* Adapt tassel and stacks tasks also for polyploids +* Update tests +* Add MAPpoly new functions framework_map and update_framework_map +* Polyploid analysis output compatible with Reads2MapApp v0.0.1 +* Remove LargeList deprecated package as dependency + # 1.4.3 * Update example for pair-end reads inputs diff --git a/pipelines/EmpiricalSNPCalling/EmpiricalSNPCalling.changelog.md b/pipelines/EmpiricalSNPCalling/EmpiricalSNPCalling.changelog.md index 07e2c36..cca2626 100644 --- a/pipelines/EmpiricalSNPCalling/EmpiricalSNPCalling.changelog.md +++ b/pipelines/EmpiricalSNPCalling/EmpiricalSNPCalling.changelog.md @@ -1,3 +1,8 @@ +# 1.4.3 + +* Adapt tassel and stacks tasks also for polyploids +* Update tests + # 1.4.2 * Update example for pair-end reads inputs diff --git a/subworkflows/mappoly_maps_empirical.wdl b/subworkflows/mappoly_maps_empirical.wdl index 91dfefa..6c531f6 100644 --- a/subworkflows/mappoly_maps_empirical.wdl +++ b/subworkflows/mappoly_maps_empirical.wdl @@ -17,6 +17,7 @@ workflow MappolyMapsEmp { Int max_cores Int ploidy String? filt_segr + Array[String] global_errors } call utilsR.ReGenotyping { @@ -43,7 +44,8 @@ workflow MappolyMapsEmp { max_cores = max_cores, ploidy = ploidy, prob_thres = prob_thres, - filt_segr = filt_segr + filt_segr = filt_segr, + global_errors = global_errors } output { diff --git a/tasks/JointReports.wdl b/tasks/JointReports.wdl index 0bfa0b7..4c791c6 100644 --- a/tasks/JointReports.wdl +++ b/tasks/JointReports.wdl @@ -33,7 +33,7 @@ task JointAllReports{ supermassaPolyMaps <- str_split("~{sep=';' supermassaPolyMaps}", ";", simplify = TRUE) all_files <- c(SNPCallerPolyMapsEmp, updogPolyMaps, polyradPolyMaps, supermassaPolyMaps) - all_files <- all_files[-which(all_files == "")] + if(length(which(all_files == "")) > 0) all_files <- all_files[-which(all_files == "")] system("mkdir results_all") @@ -64,7 +64,7 @@ task JointAllReports{ list_files <- untar(files[[i]][[j]], exdir = path_dir, list = T) system(paste0("mv ",path_dir, "/",list_files[1], "*_map_report.tsv.gz ", path_dir, "/maps")) system(paste0("mv ",path_dir, "/",list_files[1], "*_times_report.tsv.gz ", path_dir, "/times")) - system(paste0("mv ",path_dir, "/",list_files[1], "*.RData ", path_dir, "/RDatas")) + system(paste0("mv ",path_dir, "/",list_files[1], "*.rds ", path_dir, "/RDatas")) if(!grepl("gusmap", list_files[1])){ system(paste0("mv ",path_dir, "/",list_files[1], "*_filters_report.tsv.gz ", path_dir, "/filters")) system(paste0("mv ",path_dir, "/",list_files[1], "*_errors_report.tsv.gz ", path_dir, "/errors")) @@ -150,7 +150,6 @@ task JointReports{ library(tidyr) library(stringr) library(vroom) - library(largeList) SNPCaller <- str_split("~{sep=";" SNPCaller}", ";", simplify = T) updog <- str_split("~{sep=";" updog}", ";", simplify = T) @@ -168,7 +167,7 @@ task JointReports{ list_files <- untar(files[[i]][[j]], exdir = path_dir, list = T) system(paste0("mv ",path_dir, "/",list_files[1], "*_map_report.tsv.gz ", path_dir, "/maps")) system(paste0("mv ",path_dir, "/",list_files[1], "*_times_report.tsv.gz ", path_dir, "/times")) - system(paste0("mv ",path_dir, "/",list_files[1], "*.RData ", path_dir, "/RDatas")) + system(paste0("mv ",path_dir, "/",list_files[1], "*.rds ", path_dir, "/RDatas")) if(!grepl("gusmap", list_files[1])){ system(paste0("mv ",path_dir, "/",list_files[1], "*_filters_report.tsv.gz ", path_dir, "/filters")) system(paste0("mv ",path_dir, "/",list_files[1], "*_errors_report.tsv.gz ", path_dir, "/errors")) @@ -212,11 +211,11 @@ task JointReports{ class(RDatas[[i]]) <- "list" } - saveList(RDatas, file = "sequences_emp.llo", append=FALSE, compress=TRUE) + saveRDS(RDatas, file = "sequences_emp.rds") new_names <- names(all_RDatas) vroom_write(as.data.frame(new_names), "names.tsv.gz") - save(gusmap_RDatas, file = "gusmap_RDatas.RData") + saveRDS(gusmap_RDatas, file = "gusmap_RDatas.rds") # Outputs vroom_write(errors, "data1_depths_geno_prob.tsv.gz", num_threads = ~{max_cores}) @@ -225,7 +224,7 @@ task JointReports{ vroom_write(times, "data4_times.tsv.gz", num_threads = ~{max_cores}) system("mkdir EmpiricalReads_results") - system("mv gusmap_RDatas.RData sequences_emp.llo data1_depths_geno_prob.tsv.gz data2_maps.tsv.gz data3_filters.tsv.gz data4_times.tsv.gz names.tsv.gz EmpiricalReads_results") + system("mv gusmap_RDatas.rds sequences_emp.rds data1_depths_geno_prob.tsv.gz data2_maps.tsv.gz data3_filters.tsv.gz data4_times.tsv.gz names.tsv.gz EmpiricalReads_results") system("tar -czvf EmpiricalReads_results.tar.gz EmpiricalReads_results") RSCRIPT @@ -275,7 +274,6 @@ task JointReportsSimu { library(tidyr) library(stringr) library(vroom) - library(largeList) library(vcfR) SNPCaller <- str_split("~{sep=";" SNPCaller}", ";", simplify = T) @@ -296,7 +294,7 @@ task JointReportsSimu { list_files <- untar(files[[i]][[j]], exdir = path_dir, list = T) system(paste0("mv ",path_dir, "/",list_files[1], "*_map_report.tsv.gz ", path_dir, "/maps")) system(paste0("mv ",path_dir, "/",list_files[1], "*_times_report.tsv.gz ", path_dir, "/times")) - system(paste0("mv ",path_dir, "/",list_files[1], "*.RData ", path_dir, "/RDatas")) + system(paste0("mv ",path_dir, "/",list_files[1], "*.rds ", path_dir, "/RDatas")) if(!grepl("gusmap", list_files[1])){ system(paste0("mv ",path_dir, "/",list_files[1], "*_filters_report.tsv.gz ", path_dir, "/filters")) system(paste0("mv ",path_dir, "/",list_files[1], "*_errors_report.tsv.gz ", path_dir, "/errors")) @@ -361,11 +359,11 @@ task JointReportsSimu { class(RDatas[[i]]) <- "list" } - saveList(RDatas, file = "data6_RDatas.llo", append=FALSE, compress=TRUE) + saveRDS(RDatas, file = "data6_RDatas.rds") new_names <- names(all_RDatas) vroom_write(as.data.frame(new_names), "names.tsv.gz") - save(gusmap_RDatas, file = "gusmap_RDatas.RData") + saveRDS(gusmap_RDatas, file = "gusmap_RDatas.rds") # Outputs vroom_write(tsvs[[3]], "data1_depths_geno_prob.tsv.gz", num_threads = ~{max_cores}) @@ -401,8 +399,8 @@ task JointReportsSimu { File data3_filters = "data3_filters.tsv.gz" File data4_times = "data4_times.tsv.gz" File data5_SNPCall_efficiency = "data5_SNPCall_efficiency.tsv.gz" - File data6_RDatas = "data6_RDatas.llo" - File data7_gusmap = "gusmap_RDatas.RData" + File data6_RDatas = "data6_RDatas.rds" + File data7_gusmap = "gusmap_RDatas.rds" File data8_names = "names.tsv.gz" File data10_counts = "data10_CountVariants.tsv.gz" } @@ -432,7 +430,6 @@ task JointTablesSimu{ R --vanilla --no-save < tassel_fix.vcf - sed 's/AD,Number=./AD,Number=R/g' tassel_fix.vcf > tassel_fix.vcf - sed 's/AF,Number=./AF,Number=A/g' tassel_fix.vcf > tassel_fix.vcf - sed '/INFO=' tassel_fix.vcf > tassel_fix.vcf + sed -i 's/AD,Number=./AD,Number=R/g' tassel_fix.vcf + sed -i 's/AF,Number=./AF,Number=A/g' tassel_fix.vcf + sed -i '/INFO=' tassel_fix.vcf grep ">" ~{reference} > chrs sed -i 's/>//' chrs @@ -97,6 +97,6 @@ task FixTasselVCF { } output { - File vcf_fixed = "tassel_fix_chr.vcf" + File vcf_fixed = "tassel_fix_chr.vcf.gz" } } \ No newline at end of file diff --git a/tasks/gusmap.wdl b/tasks/gusmap.wdl index 67290d9..2a46381 100644 --- a/tasks/gusmap.wdl +++ b/tasks/gusmap.wdl @@ -39,7 +39,7 @@ task GusmapReport { vroom::vroom_write(info[[2]], "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_map_report.tsv.gz", num_threads = ~{max_cores}) vroom::vroom_write(times, "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_times_report.tsv.gz", num_threads = ~{max_cores}) map_out <- info[[1]] - save(map_out, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.RData") + saveRDS(map_out, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.rds") RSCRIPT @@ -66,7 +66,7 @@ task GusmapReport { output { File maps_report = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_map_report.tsv.gz" - File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.RData" + File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.rds" File times = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_times_report.tsv.gz" } } @@ -94,8 +94,7 @@ task GusmapReportForSimulated { library(GUSMap) library(Reads2MapTools) - simu_onemap_obj <- load("~{simu_onemap_obj}") - simu_onemap_obj <- get(simu_onemap_obj) + simu_onemap_obj <- readRDS("~{simu_onemap_obj}") if(tail(strsplit("~{vcf_file}", "[.]")[[1]],1) =="gz") { vcf.temp <- paste0("~{SNPCall_program}",".vcf") @@ -139,7 +138,7 @@ task GusmapReportForSimulated { RDatas_joint[[2]] <- info_correct[[1]] names(RDatas_joint) <- c("map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_TRUE", "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_FALSE") - save(RDatas_joint, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.RData") + saveRDS(RDatas_joint, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.rds") # Joint times data.frames times_temp <- data.frame(seed = ~{seed}, depth = ~{depth}, SNPCall = "~{SNPCall_program}", @@ -174,7 +173,7 @@ task GusmapReportForSimulated { output { File maps_report = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}_map_report.tsv.gz" - File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.RData" + File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.rds" File times = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}_times_report.tsv.gz" } } diff --git a/tasks/mappoly.wdl b/tasks/mappoly.wdl index 377d2d5..9fbbd83 100644 --- a/tasks/mappoly.wdl +++ b/tasks/mappoly.wdl @@ -12,6 +12,7 @@ task MappolyReport { Int max_cores Int ploidy String filt_segr = "TRUE" + Array[String] global_errors = ["0.05"] } Int disk_size = ceil(size(vcf_file, "GiB") * 2) @@ -22,22 +23,21 @@ task MappolyReport { library(mappoly) - if("~{GenotypeCall_program}" == "supermassa") prob.thres = ~{prob_thres} - 0.3 else prob.thres = ~{prob_thres} + if("~{GenotypeCall_program}" == "supermassa") prob.thres = ~{prob_thres} - ~{prob_thres}*0.3 else prob.thres = ~{prob_thres} dat <- read_vcf(file = "~{vcf_file}", parent.1 = "~{parent1}", parent.2 = "~{parent2}", verbose = FALSE, read.geno.prob = TRUE, - prob.thres = prob.thres, ploidy = ~{ploidy}) - - png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_raw_data.png")) - plot(dat) - dev.off() + prob.thres = prob.thres, + ploidy = ~{ploidy}) dat <- filter_missing(input.data = dat, type = "marker", filter.thres = 0.25, inter = FALSE) + dat <- filter_missing(dat, type = 'individual', filter.thres = 0.1, inter = FALSE) + if("~{filt_segr}"){ pval.bonf <- 0.05/dat[[3]] mrks.chi.filt <- filter_segregation(dat, @@ -48,95 +48,73 @@ task MappolyReport { } else { seq.init <- make_seq_mappoly(dat, "all") } + + # Estimate two-point recombination fraction + tpt <- est_pairwise_rf(input.seq = seq.init, ncpus = ~{max_cores}) + mat <- rf_list_to_matrix(input.twopt = tpt) + + # Filter markers by recombination fraction values + seq.filt <- rf_snp_filter(input.twopt = tpt, diagnostic.plot = FALSE, probs = c(0.05, 0.95)) + mat2 <- make_mat_mappoly(mat, seq.filt) + + # Run MDS for ordering according to recombination fractions + seq_test_mds <- mds_mappoly(mat2) + seq_mds <- make_seq_mappoly(seq_test_mds) + + # Sequence with genomic order + geno_order <- get_genomic_order(seq_mds) + seq_geno_order <- make_seq_mappoly(geno_order) + + init.map.list <- framework_map(input.seq = seq_geno_order, + twopt = tpt, + start.set = 5, + inflation.lim.p1 = 10, + inflation.lim.p2 = 10, + verbose = FALSE) + + res <- update_framework_map(input.map.list = init.map.list, + input.seq = seq_geno_order, + twopt = tpt, + thres.twopt = 5, + init.LOD = 100, + max.rounds = 3, + size.rem.cluster = 3, + gap.threshold = 20, + verbose = FALSE) + + # Get last interaction + iter <- length(res[[2]][[1]]) + + global_errors <- unlist(strsplit("~{sep="," global_errors}", ",")) + map_error <- list() + for(i in 1:length(global_errors)){ + map_error[[i]] <- est_full_hmm_with_global_error(res[[2]][[1]][[iter]], error = as.numeric(global_errors[i]), verbose = FALSE) + saveRDS(map_error, file= paste0("~{SNPCall_program}_~{GenotypeCall_program}",global_errors[i], "_~{CountsFrom}_map.rds")) + } + map_prob <- est_full_hmm_with_prior_prob(res[[2]][[1]][[iter]], dat.prob = dat, verbose = FALSE) - png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_","filters.png")) - plot(seq.init) - dev.off() - - all.rf.pairwise <- est_pairwise_rf(input.seq = seq.init, ncpus = ~{max_cores}) - mat <- rf_list_to_matrix(input.twopt = all.rf.pairwise) - - id<-get_genomic_order(seq.init) - s.o <- make_seq_mappoly(id) - - png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_","rf.png")) - plot(mat, ord = s.o[[3]]) - dev.off() - - tpt <- make_pairs_mappoly(all.rf.pairwise, input.seq = s.o) - temp2 <- rf_snp_filter(input.twopt = tpt, diagnostic.plot = FALSE) - lgtemp <- get_genomic_order(temp2) - s.o <- make_seq_mappoly(lgtemp) - - png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_","rf.filt.png")) - plot(mat, ord = s.o[[3]]) - dev.off() - - # est.map <- est_rf_hmm_sequential(input.seq = s.o, - # start.set = 5, - # thres.twopt = 10, - # thres.hmm = 50, - # extend.tail = 30, - # twopt = all.rf.pairwise, - # verbose = F, - # phase.number.limit = 20, - # sub.map.size.diff.limit = 5) - - # map.err <- est_full_hmm_with_global_error(input.map = est.map, error = 0.05) - # map.prob <- est_full_hmm_with_prior_prob(input.map = est.map, dat.prob = dat) - - # png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_no_error_cMbyMb.png")) - # plot_genome_vs_map(est.map, same.ch.lg = TRUE) - # dev.off() - - # png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"global_error_cMbyMb.png")) - # plot_genome_vs_map(map.err, same.ch.lg = TRUE) - # dev.off() - - # png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_probs_cMbyMb.png")) - # plot_genome_vs_map(map.prob, same.ch.lg = TRUE) - # dev.off() - - # summary <- summary_maps(list(est.map, map.err, map.prob)) - # summary <- cbind(method = c("no_error", "global_error", "probs", "-"), summary) - - # write.csv(summary, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_map_summary.csv")) - - # export_map_list(est.map, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_no_error_","map_file.csv")) - # export_map_list(map.err, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_global_error_","map_file.csv")) - # export_map_list(map.prob, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_probs_","map_file.csv")) - - # png(paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"_map_draw.png")) - # plot_map_list(list(default = est.map, - # global = map.err, - # probs = map.prob), col = "ggstyle") - # dev.off() - - # genoprob <- calc_genoprob_error(input.map = est.map, error = 0) - # genoprob.err <- calc_genoprob_error(input.map = map.err, error = 0.05) - # genoprob.prob <- calc_genoprob_dist(input.map = map.prob, dat.prob = dat) - - # homoprobs = calc_homologprob(genoprob) - # homoprobs.err = calc_homologprob(genoprob.err) - # homoprobs.prob = calc_homologprob(genoprob.prob) + # Diagnostic graphics - overall from plot(dat) + # Heatmap of mds with plot(mat2, ord=seq_mds) + # Heatmap of genomic order order plot(mat2, ord = map_error$info$mk.names) + # Relation between mds and genome plot(seq_mds$genome.pos) - # save(homoprobs, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"homoprobs.RData")) - # save(homoprobs.err, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"homoprobs.err.RData")) - # save(homoprobs.prob, file = paste0("~{SNPCall_program}", "_","~{GenotypeCall_program}", "_", "~{CountsFrom}" ,"homoprobs.prob.RData")) + saveRDS(dat, file= "~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_dat.rds") + saveRDS(mat2, file="~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_mat2.rds") + saveRDS(seq_mds, file="~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_seq_mds.rds") + saveRDS(map_prob, file= "~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_map.rds") system("mkdir results") - #system("mv *.png *.RData *csv results") - system("mv *.png results") + system("mv *.rds results") - system(paste0("tar -czvf ", "~{SNPCall_program}", "_", "~{GenotypeCall_program}", "_", "~{CountsFrom}","_results.tar.gz results")) + system(paste0("tar -czvf ", "~{SNPCall_program}", "_", "~{GenotypeCall_program}", "_", "~{CountsFrom}","_poly_results.tar.gz results")) RSCRIPT >>> runtime { - docker:"cristaniguti/reads2map:0.0.5" - singularity: "docker://cristaniguti/reads2map:0.0.5" + docker:"cristaniguti/reads2map:0.1.0" + singularity: "docker://cristaniguti/reads2map:0.1.0" cpu: max_cores # Cloud memory:"~{memory_size} MiB" @@ -154,6 +132,6 @@ task MappolyReport { } output { - File results = "~{SNPCall_program}_~{GenotypeCall_program}Poly_~{CountsFrom}_results.tar.gz" + File results = "~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_poly_results.tar.gz" } } \ No newline at end of file diff --git a/tasks/tassel.wdl b/tasks/tassel.wdl index bf8b28a..baf4c0c 100644 --- a/tasks/tassel.wdl +++ b/tasks/tassel.wdl @@ -167,7 +167,11 @@ task BarcodeFaker { file_names <- "~{sep=',' fastq}" file_names <- unlist(strsplit(file_names, ",")) is_gz <- basename(file_names[1]) - if(grepl("gz", is_gz)) system(paste("gunzip", file_names)) + if(grepl(".gz", is_gz)) { + for(i in 1:length(file_names)){ + system(paste("gunzip", file_names[i])) + } + } dir_name <- dirname(file_names[1]) sample_names <- "~{sep=',' FullSampleName}" @@ -188,7 +192,7 @@ task BarcodeFaker { # Slurm job_name: "BarcodeFaker" mem:"2G" - time: 4 + time: 24 } meta { @@ -212,8 +216,8 @@ task TasselBeforeAlign { } Int disk_size = ceil(size(fastq, "GiB")) - Int memory_min = ceil(max_ram/2) - Int memory_max = max_ram - 5000 + Int memory_min = ceil(max_ram/3) + Int memory_max = max_ram command <<< @@ -266,8 +270,8 @@ task TasselAfterAlign { } Int disk_size = ceil(size(tassel_database, "GiB")) - Int memory_min = ceil(max_ram/2) - Int memory_max = max_ram - 5000 + Int memory_min = ceil(max_ram/3) + Int memory_max = max_ram command <<< diff --git a/tasks/utilsR.wdl b/tasks/utilsR.wdl index c5503c6..3105971 100644 --- a/tasks/utilsR.wdl +++ b/tasks/utilsR.wdl @@ -29,7 +29,7 @@ task vcf2onemap { ## READING VCF FROM PIPELINE vcfR.obj <- read.vcfR("~{vcf_file}") - save(vcfR.obj, file="vcfR_obj.RData") + saveRDS(vcfR.obj, file="vcfR_obj.rds") onemap.obj <- onemap_read_vcfR(vcfR.object= vcfR.obj, cross= cross, @@ -37,7 +37,7 @@ task vcf2onemap { parent2="~{parent2}", f1 = f1) - save(onemap.obj, file=paste0("vcf_onemap.obj.RData")) + saveRDS(onemap.obj, file=paste0("vcf_onemap.obj.rds")) RSCRIPT @@ -63,8 +63,8 @@ task vcf2onemap { } output { - File onemap_obj = "vcf_onemap.obj.RData" - File vcfR_obj = "vcfR_obj.RData" + File onemap_obj = "vcf_onemap.obj.rds" + File vcfR_obj = "vcfR_obj.rds" } } @@ -86,13 +86,12 @@ task FiltersReport { library(onemap) library(Reads2MapTools) - temp <- load("~{onemap_obj}") - temp.obj <- get(temp) + temp.obj <- readRDS("~{onemap_obj}") onemap_obj_filtered <- create_filters_report_simu(temp.obj, "~{SNPCall_program}", "~{CountsFrom}", "~{GenotypeCall_program}", ~{seed}, ~{depth}, threshold = NULL) # Threshold define the genotype probability filter - save(onemap_obj_filtered, file="onemap_obj_filtered.RData") + saveRDS(onemap_obj_filtered, file="onemap_obj_filtered.rds") RSCRIPT @@ -119,7 +118,7 @@ task FiltersReport { output { File filters_report = "~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_~{seed}_~{depth}_filters_report.tsv.gz" - File onemap_obj_filtered = "onemap_obj_filtered.RData" + File onemap_obj_filtered = "onemap_obj_filtered.rds" } } @@ -140,12 +139,12 @@ task FiltersReportEmp { library(onemap) library(Reads2MapTools) - temp <- load("~{onemap_obj}") - temp.obj <- get(temp) + temp.obj <- readRDS("~{onemap_obj}") + onemap_obj_filtered <- create_filters_report_emp(temp.obj, "~{SNPCall_program}", "~{CountsFrom}", "~{GenotypeCall_program}", "~{chromosome}", threshold = NULL) - save(onemap_obj_filtered, file="onemap_obj_filtered.RData") + saveRDS(onemap_obj_filtered, file="onemap_obj_filtered.rds") RSCRIPT @@ -172,7 +171,7 @@ task FiltersReportEmp { output { File filters_report = "~{SNPCall_program}_~{GenotypeCall_program}_~{CountsFrom}_filters_report.tsv.gz" - File onemap_obj_filtered = "onemap_obj_filtered.RData" + File onemap_obj_filtered = "onemap_obj_filtered.rds" } } @@ -200,11 +199,10 @@ task MapsReport { if(~{max_cores} > 4) cores = 4 else cores = ~{max_cores} - filtered_onemap <- load("~{onemap_obj}") - filtered_onemap <- get(filtered_onemap) - - simu_onemap_obj <- load("~{simu_onemap_obj}") - simu_onemap_obj <- get(simu_onemap_obj) + filtered_onemap <- readRDS("~{onemap_obj}") + + simu_onemap_obj <- readRDS("~{simu_onemap_obj}") + ref_alt_alleles <- read.table("~{ref_alt_alleles}") simulated_phases <- read.table("~{simulated_phases}") @@ -244,7 +242,7 @@ task MapsReport { RDatas_joint[[2]] <- info_correct[[1]] names(RDatas_joint) <- c("map_~{seed}_~{depth}_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_TRUE", "map_~{seed}_~{depth}_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_FALSE") - save(RDatas_joint, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.RData") + saveRDS(RDatas_joint, file= "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.rds") # Joint times data.frames times_temp <- data.frame(seed = ~{seed}, depth = ~{depth}, SNPCall = "~{SNPCall_program}", @@ -279,7 +277,7 @@ task MapsReport { output { File maps_report = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}_map_report.tsv.gz" - File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.RData" + File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}.rds" File times = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_~{seed}_~{depth}_times_report.tsv.gz" } } @@ -306,12 +304,10 @@ task ErrorsReport { library(onemap) library(tidyverse) - temp <- load("~{onemap_obj}") - df <- get(temp) - - temp <- load("~{vcfR_obj}") - vcf <- get(temp) - + df <- readRDS("~{onemap_obj}") + + vcf <- readRDS("~{vcfR_obj}") + p <- create_depths_profile(onemap.obj = df, vcfR.object = vcf, parent1 = "P1", parent2 = "P2", vcf.par = "AD",recovering = FALSE, GTfrom = "onemap", alpha=0.1, @@ -321,8 +317,7 @@ task ErrorsReport { df <- cbind(seed = "~{seed}" , depth = "~{depth}", SNPCall = "~{SNPCall_program}", CountsFrom = "~{CountsFrom}", GenoCall="~{GenotypeCall_program}", df) - simu <- load("~{simu_vcfR}") - vcf_simu <- get(simu) + vcf_simu <- readRDS("~{simu_vcfR}") gt.simu <- vcf_simu@gt[,-1] gt.simu <- as.data.frame(cbind(mks = vcf_simu@fix[,3], gt.simu)) @@ -393,12 +388,10 @@ task CheckDepths { R --vanilla --no-save < 4) cores = 4 else cores = ~{max_cores} times_temp <- system.time(df <- create_map_report_emp(input.seq = sequence, CountsFrom = "~{CountsFrom}", @@ -465,7 +457,7 @@ task MapsReportEmp { vroom::vroom_write(df[[2]], "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_map_report.tsv.gz", num_threads = ~{max_cores}) map_out <- df[[1]] - save(map_out, file = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.RData") + saveRDS(map_out, file = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.rds") times <- data.frame(SNPCall = "~{SNPCall_program}", CountsFrom = "~{CountsFrom}", @@ -498,7 +490,7 @@ task MapsReportEmp { output { File maps_report = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_map_report.tsv.gz" - File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.RData" + File maps_RData = "map_~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}.rds" File times = "~{SNPCall_program}_~{CountsFrom}_~{GenotypeCall_program}_times_report.tsv.gz" } } @@ -637,7 +629,7 @@ task SetProbs { } vcf <- read.vcfR("~{vcf_file}") - save(vcf, file = "vcfR.RData") + saveRDS(vcf, file = "vcfR.rds") if("~{multiallelics}") only_biallelic = FALSE else only_biallelic = TRUE @@ -698,8 +690,8 @@ task SetProbs { for(i in 1:length(probs_onemap_obj)){ probs_onemap <- probs_onemap_obj[[i]] - save(probs_onemap, file= paste0("probs_onemap_", - names(probs_onemap_obj)[i], ".RData")) + saveRDS(probs_onemap, file= paste0("probs_onemap_", + names(probs_onemap_obj)[i], ".rds")) } cat(names(probs_onemap_obj)) @@ -733,9 +725,9 @@ task SetProbs { } output { - Array[File] probs_onemap_obj = glob("probs_onemap_*.RData") + Array[File] probs_onemap_obj = glob("probs_onemap_*.rds") Array[String] probs_onemap_obj_names = read_lines("names.txt") - File vcfR_obj = "vcfR.RData" + File vcfR_obj = "vcfR.rds" } } @@ -770,7 +762,7 @@ task SetProbsDefault { } if(as.logical("~{mchap}") & "~{SNPCall_program}" == "gatk") vcf <- read.vcfR("~{multiallelics_mchap}") else vcf <- read.vcfR("~{vcf_file}") - save(vcf, file = "vcfR.RData") + saveRDS(vcf, file = "vcfR.rds") if("~{multiallelics}") only_biallelic = FALSE else only_biallelic = TRUE @@ -798,9 +790,9 @@ task SetProbsDefault { globalerror_onemap_obj <- create_probs(input.obj = onemap.obj, global_error = 0.05) default_onemap_obj <- create_probs(input.obj = onemap.obj, global_error = 10^(-5)) - save(default_onemap_obj, file="default_onemap_obj.RData") - save(probs_onemap_obj, file="probs_onemap_obj.RData") - save(globalerror_onemap_obj, file="globalerror_onemap_obj.RData") + saveRDS(default_onemap_obj, file="default_onemap_obj.rds") + saveRDS(probs_onemap_obj, file="probs_onemap_obj.rds") + saveRDS(globalerror_onemap_obj, file="globalerror_onemap_obj.rds") RSCRIPT @@ -825,10 +817,10 @@ task SetProbsDefault { } output { - File probs_onemap_obj = "probs_onemap_obj.RData" - File globalerror_onemap_obj = "globalerror_onemap_obj.RData" - File default_onemap_obj = "default_onemap_obj.RData" - File vcfR_obj = "vcfR.RData" + File probs_onemap_obj = "probs_onemap_obj.rds" + File globalerror_onemap_obj = "globalerror_onemap_obj.rds" + File default_onemap_obj = "default_onemap_obj.rds" + File vcfR_obj = "vcfR.rds" } } diff --git a/tests/data/polyploid/fastq/samples_info.txt b/tests/data/polyploid/fastq/samples_info.txt deleted file mode 100644 index 9e13e9d..0000000 --- a/tests/data/polyploid/fastq/samples_info.txt +++ /dev/null @@ -1,4 +0,0 @@ -tests/data/polyploid/fastq/1.fastq.gz 1 1 -tests/data/polyploid/fastq/98.fastq.gz 98 98 -tests/data/polyploid/fastq/P1.fastq.gz P1 P1 -tests/data/polyploid/fastq/P2.fastq.gz P2 P2 diff --git a/tests/data/polyploid/fastq/1.fastq.gz b/tests/data/polyploid/fastq/single_end/1.fastq.gz similarity index 100% rename from tests/data/polyploid/fastq/1.fastq.gz rename to tests/data/polyploid/fastq/single_end/1.fastq.gz diff --git a/tests/data/polyploid/fastq/98.fastq.gz b/tests/data/polyploid/fastq/single_end/98.fastq.gz similarity index 100% rename from tests/data/polyploid/fastq/98.fastq.gz rename to tests/data/polyploid/fastq/single_end/98.fastq.gz diff --git a/tests/data/polyploid/fastq/P1.fastq.gz b/tests/data/polyploid/fastq/single_end/P1.fastq.gz similarity index 100% rename from tests/data/polyploid/fastq/P1.fastq.gz rename to tests/data/polyploid/fastq/single_end/P1.fastq.gz diff --git a/tests/data/polyploid/fastq/P2.fastq.gz b/tests/data/polyploid/fastq/single_end/P2.fastq.gz similarity index 100% rename from tests/data/polyploid/fastq/P2.fastq.gz rename to tests/data/polyploid/fastq/single_end/P2.fastq.gz diff --git a/tests/data/polyploid/fastq/single_end/samples_info.txt b/tests/data/polyploid/fastq/single_end/samples_info.txt new file mode 100644 index 0000000..76f3bec --- /dev/null +++ b/tests/data/polyploid/fastq/single_end/samples_info.txt @@ -0,0 +1,4 @@ +tests/data/polyploid/fastq/single_end/1.fastq.gz 1 1 +tests/data/polyploid/fastq/single_end/98.fastq.gz 98 98 +tests/data/polyploid/fastq/single_end/P1.fastq.gz P1 P1 +tests/data/polyploid/fastq/single_end/P2.fastq.gz P2 P2 diff --git a/tests/data/polyploid/vcfs/stacks_norm_example_single_end.vcf.gz b/tests/data/polyploid/vcfs/stacks_norm_example_single_end.vcf.gz new file mode 100644 index 0000000..21df4ad Binary files /dev/null and b/tests/data/polyploid/vcfs/stacks_norm_example_single_end.vcf.gz differ diff --git a/tests/data/polyploid/vcfs/tassel_norm_example_single_end.vcf.gz b/tests/data/polyploid/vcfs/tassel_norm_example_single_end.vcf.gz new file mode 100644 index 0000000..ff40068 Binary files /dev/null and b/tests/data/polyploid/vcfs/tassel_norm_example_single_end.vcf.gz differ diff --git a/tests/pipelines/EmpiricalMaps/polyploid/EmpiricalMaps_inputs.json b/tests/pipelines/EmpiricalMaps/polyploid/EmpiricalMaps_inputs.json index e4210cf..4c82856 100644 --- a/tests/pipelines/EmpiricalMaps/polyploid/EmpiricalMaps_inputs.json +++ b/tests/pipelines/EmpiricalMaps/polyploid/EmpiricalMaps_inputs.json @@ -9,11 +9,14 @@ "multiallelics": "false" }, "Maps.max_cores": "2", - "Maps.gatk_mchap": "false", + "Maps.run_supermassa":true, + "Maps.run_updog":true, + "Maps.run_polyrad":true, + "Maps.gatk_mchap": "FALSE", "Maps.vcfs_counts_source": ["vcf"], "Maps.vcfs_software": ["gatk"], "Maps.filter_noninfo": "true", - "Maps.vcfs": ["gatk_Chr04_filt_example.vcf.gz"], - "Maps.replaceADbyMissing": "TRUE", - "Maps.prob_thres": 0.8 -} \ No newline at end of file + "Maps.vcfs": ["tests/data/polyploid/vcfs_norm/gatk_Chr04_filt_example.vcf.gz"], + "Maps.replaceADbyMissing": "TRUE", + "Maps.global_errors":["0.05"] +} diff --git a/tests/pipelines/EmpiricalSNPCalling/inputs_poly.json b/tests/pipelines/EmpiricalSNPCalling/inputs_poly.json index 2298a04..d219225 100644 --- a/tests/pipelines/EmpiricalSNPCalling/inputs_poly.json +++ b/tests/pipelines/EmpiricalSNPCalling/inputs_poly.json @@ -1,14 +1,18 @@ { "SNPCalling.max_cores": 2, + "SNPCalling.max_ram": 2000, "SNPCalling.ploidy": 4, + "SNPCalling.enzyme": "NgoMIV", "SNPCalling.rm_dupli": false, "SNPCalling.replaceAD": false, - "SNPCalling.run_gatk": true, - "SNPCalling.run_freebayes": true, + "SNPCalling.run_tassel": true, + "SNPCalling.run_stacks": true, + "SNPCalling.run_gatk": false, + "SNPCalling.run_freebayes": false, "SNPCalling.hardfilters": true, "SNPCalling.n_chrom": 1, - "SNPCalling.chunk_size": 2, - "SNPCalling.samples_info": "tests/data/polyploid/fastq/samples_info.txt", + "SNPCalling.chunk_size": 1, + "SNPCalling.samples_info": "tests/data/polyploid/fastq/single_end/samples_info.txt", "SNPCalling.gatk_mchap": false, "SNPCalling.references": { "ref_fasta": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta", diff --git a/tests/subworkflows/create_alignment_from_families_files/inputs_poly_pair_end.json b/tests/subworkflows/create_alignment_from_families_files/inputs_poly_pair_end.json index 0312143..261f9a6 100644 --- a/tests/subworkflows/create_alignment_from_families_files/inputs_poly_pair_end.json +++ b/tests/subworkflows/create_alignment_from_families_files/inputs_poly_pair_end.json @@ -4,6 +4,7 @@ "CreateAlignmentFromFamilies.gatk_mchap": false, "CreateAlignmentFromFamilies.families_info": "tests/data/polyploid/fastq/pair_end/samples_info.txt", "CreateAlignmentFromFamilies.chunk_size": 2, + "CreateAlignmentFromFamilies.pair_end": false, "CreateAlignmentFromFamilies.references": { "ref_fasta": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta", "ref_dict": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.dict", @@ -14,4 +15,4 @@ "ref_fasta_index": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.fai", "ref_pac": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.pac" } - } \ No newline at end of file + } diff --git a/tests/subworkflows/create_alignment_from_families_files/inputs_poly_single_end.json b/tests/subworkflows/create_alignment_from_families_files/inputs_poly_single_end.json new file mode 100644 index 0000000..7a43de0 --- /dev/null +++ b/tests/subworkflows/create_alignment_from_families_files/inputs_poly_single_end.json @@ -0,0 +1,18 @@ +{ + "CreateAlignmentFromFamilies.max_cores": 2, + "CreateAlignmentFromFamilies.rm_dupli": false, + "CreateAlignmentFromFamilies.gatk_mchap": false, + "CreateAlignmentFromFamilies.families_info": "tests/data/polyploid/fastq/single_end/samples_info.txt", + "CreateAlignmentFromFamilies.chunk_size": 2, + "CreateAlignmentFromFamilies.pair_end": false, + "CreateAlignmentFromFamilies.references": { + "ref_fasta": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta", + "ref_dict": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.dict", + "ref_ann": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.ann", + "ref_sa": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.sa", + "ref_amb": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.amb", + "ref_bwt": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.bwt", + "ref_fasta_index": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.fai", + "ref_pac": "tests/data/polyploid/RchinensisV1.0/Chr04_sub.fasta.pac" + } + } diff --git a/tests/subworkflows/create_alignment_from_families_files/test_poly_single_end.yaml b/tests/subworkflows/create_alignment_from_families_files/test_poly_single_end.yaml new file mode 100644 index 0000000..36d539d --- /dev/null +++ b/tests/subworkflows/create_alignment_from_families_files/test_poly_single_end.yaml @@ -0,0 +1,4 @@ +- name: Align empirical FASTQ reads to a reference genome + tags: + - create_alignment_from_families_files + command: miniwdl run -i tests/subworkflows/create_alignment_from_families_files/inputs_poly_single_end.json subworkflows/create_alignment_from_families_files.wdl