Codebase list bio-tradis / upstream/1.3.1+dfsg
New upstream version 1.3.1+dfsg Andreas Tille 7 years ago
148 changed file(s) with 11284 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 blib/
1 .build/
2 _build/
3 cover_db/
4 inc/
5 Build
6 !Build/
7 Build.bat
8 .last_cover_stats
9 Makefile
10 Makefile.old
11 MANIFEST.bak
12 META.yml
13 MYMETA.yml
14 nytprof.out
15 pm_to_blib
16 Bio-Tradis-*
17 .DS_Store
18 *.tar.gz
19 *.swp
0 language: perl
1 addons:
2 apt:
3 packages:
4 - zlib1g-dev
5 perl:
6 - "5.14"
7 sudo: false
8 install:
9 - "source ./install_dependencies.sh"
10 script: "dzil test"
0 Carla Cummins (cc21@sanger.ac.uk)
1 Andrew J. Page (ap13@sanger.ac.uk)
2 Lars Barquist (lars.barquist@uni-wuerzburg.de)
0 Bio-Tradis
1 ==========
2 Bio-Tradis contains a set of tools to analyse the output from TraDIS analyses. For command-line usage instructions, please see the tutorial in the file "BioTraDISTutorial.pdf". Note that default parameters are for comparative experiments, and will need to be modified for gene essentiality studies.
3
4 For more information on the TraDIS method, see http://bioinformatics.oxfordjournals.org/content/32/7/1109 and http://genome.cshlp.org/content/19/12/2308
5
6 [![Build Status](https://travis-ci.org/sanger-pathogens/Bio-Tradis.svg?branch=master)](https://travis-ci.org/sanger-pathogens/Bio-Tradis)
7
8 Bio-Tradis provides functionality to:
9 * detect TraDIS tags in a BAM file
10 * add the tags to the reads
11 * filter reads in a FastQ file containing a user defined tag
12 * remove tags
13 * map to a reference genome
14 * create an insertion site plot file
15 available as standalone scripts or as perl modules.
16
17 Installation
18 =======
19
20 ####HomeBrew/LinuxBrew
21 To install the dependancies, the easiest way is through [HomeBrew](http://brew.sh/) (OSX) or [LinuxBrew](http://brew.sh/linuxbrew/) (Linux).
22 ```
23 brew tap homebrew/science
24 brew install r smalt samtools cpanm
25 sudo cpanm -f Bio::Tradis
26
27 R
28 source("http://bioconductor.org/biocLite.R")
29 biocLite()
30 biocLite(c("edgeR","getopt", "MASS"))
31 ````
32
33 ####Without Homebrew
34 Install [SMALT](https://www.sanger.ac.uk/resources/software/smalt/) version 0.7.6 or greater, [Samtools](http://www.htslib.org/) version 1.3 or greater and [R](https://cran.r-project.org/) version 3.2 or greater. Ensure they are in your PATH.
35
36 ```
37 sudo cpanm -f Bio::Tradis
38 R
39 source("http://bioconductor.org/biocLite.R")
40 biocLite()
41 biocLite(c("edgeR","getopt", "MASS"))
42 ```
43
44 ####Windows
45 Install Linux.
46
47 Objects and Methods
48 ===================
49 ####Bio::Tradis::DetectTags
50 * Required parameters:
51 * `bamfile` - path to/name of file to check
52 * Methods:
53 * `tags_present` - returns true if TraDIS tags are detected in `bamfile`
54
55 ####Bio::Tradis::AddTagsToSeq
56 * Required parameters:
57 * `bamfile` - path to/name of file containing reads and tags
58 * Optional parameters:
59 * `outfile` - defaults to `file.tr.bam` for an input file named `file.bam`
60 * Methods:
61 * `add_tags_to_seq` - add TraDIS tags to reads. For unmapped reads, the tag
62 is added to the start of the read sequence and quality
63 strings. For reads where the flag indicates that it is
64 mapped and reverse complemented, the reverse complemented
65 tags are added to the end of the read strings.
66 This is because many conversion tools (e.g. picard) takes
67 the read orientation into account and will re-reverse the
68 mapped/rev comp reads during conversion, leaving all tags
69 in the correct orientation at the start of the sequences
70 in the resulting FastQ file.
71
72 ####Bio::Tradis::FilterTags
73 * Required parameters:
74 * `fastqfile` - path to/name of file to filter. This may be a gzipped fastq file, in which case a temporary unzipped version is used and removed on completion.
75 * `tag` - TraDIS tag to match
76 * Optional parameters:
77 * `mismatch` - number of mismatches to allow when matching the tag. Default = 0
78 * `outfile` - defaults to `file.tag.fastq` for an input file named `file.fastq`
79 * Methods:
80 * `filter_tags` - output all reads containing the tag to `outfile`
81
82 ####Bio::Tradis::RemoveTags
83 * Required parameters:
84 * `fastqfile` - path to/name of file to filter.
85 * `tag` - TraDIS tag to remove
86 * Optional parameters:
87 * `mismatch` - number of mismatches to allow when removing the tag. Default = 0
88 * `outfile` - defaults to `file.rmtag.fastq` for and input file named `file.fastq`
89 * Methods:
90 * `remove_tags` - output all reads with the tags removed from both sequence and
91 quality strings to `outfile`
92
93 ####Bio::Tradis::Map
94 * Required parameters:
95 * `fastqfile` - path to/name of file to map to the reference
96 * `reference` - path to/name of reference genome in fasta format (.fa)
97 * Optional parameters:
98 * `refname` - name to assign to the reference index files. Default = ref.index
99 * `outfile` - name to assign the mapped SAM file. Default = mapped.sam
100 * Methods:
101 * `index_ref` - create index files of the reference genome. These are required
102 for the mapping step. Only skip this step if index files already
103 exist. -k and -s options for referencing are calculated based
104 on the length of the reads being mapped:
105 * <70 : `-k 13 -s 4`
106 * >70 & <100 : `-k 13 -s 6`
107 * >100 : `-k 20 -s 13`
108 * `do_mapping` - map `fastqfile` to `reference`. Options used for mapping are:
109 `-r -1, -x and -y 0.96`
110
111 For more information on the mapping and indexing options discussed here, see the SMALT manual (ftp://ftp.sanger.ac.uk/pub4/resources/software/smalt/smalt-manual-0.7.4.pdf)
112
113 ####Bio::Tradis::TradisPlot
114 * Required parameters:
115 * `mappedfile` - mapped and sorted BAM file
116 * Optional parameters:
117 * `outfile` - base name to assign to the resulting insertion site plot. Default = tradis.plot
118 * `mapping_score` - cutoff value for mapping score. Default = 30
119 * Methods:
120 * `plot` - create insertion site plots for reads in `mappedfile`. This file will be readable by the Artemis genome browser (http://www.sanger.ac.uk/resources/software/artemis/)
121
122 ####Bio::Tradis::RunTradis
123 * Required parameters:
124 * `fastqfile` - file containing a list of fastqs (gzipped or raw) to run the
125 complete analysis on. This includes all (including
126 intermediary format conversion and sorting) steps starting from
127 filtering and, finally, producing an insertion site plot and a
128 statistical summary of the analysis.
129 * `tag` - TraDIS tag to filter for and then remove
130 * `reference` - path to/name of reference genome in fasta format (.fa)
131 * Optional parameters:
132 * `mismatch` - number of mismatches to allow when filtering/removing the tag. Default = 0
133 * `tagdirection` - direction of the tag, 5' or 3'. Default = 3
134 * `mapping_score` - cutoff value for mapping score. Default = 30
135 * Methods:
136 * `run_tradis` - run complete analysis
137
138 Examples
139 ========
140 Check whether `file.bam` contains TraDIS tag fields and, if so, adds the tags
141 to the reads' sequence and quality strings.
142
143 ```Perl
144 my $detector = Bio::Tradis::DetectTags(bamfile => 'file.bam');
145 if($detector->tags_present){
146 Bio::Tradis::AddTagsToSeq(bamfile => 'file.bam', outfile => 'tradis.bam')->add_tags_to_seq;
147 }
148 ```
149 Filter a FastQ file with TraDIS tags attached for those matching the given tag.
150 Then, remove the same tag from the start of all sequences in preparation for mapping.
151
152 ```Perl
153 Bio::Tradis::FilterTags(
154 fastqfile => 'tradis.fastq',
155 tag => 'TAAGAGTGAC',
156 outfile => 'filtered.fastq'
157 )->filter_tags;
158 Bio::Tradis::RemoveTags(
159 fastqfile => 'filtered.fastq',
160 tag => 'TAAGAGTGAC',
161 outfile => 'notags.fastq'
162 )->remove_tags;
163 ```
164 Create mapping object, index the given reference file and then map the
165 fastq file to the reference. This will produce index files for the reference and a mapped SAM file named `tradis_mapped.sam`.
166
167 ```Perl
168 my $mapping = Bio::Tradis::Map(
169 fastqfile => 'notags.fastq',
170 reference => 'path/to/reference.fa',
171 outfile => 'tradis_mapped.sam'
172 );
173 $mapping->index_ref;
174 $mapping->do_mapping;
175 ```
176 Generate insertion site plot for only reads with a mapping score >= 50
177
178 ```Perl
179 Bio::Tradis::TradisPlot(mappedfile => 'mapped.bam', mapping_score => 50)->plot;
180 ```
181 Run complete analysis on fastq files listed in `file.list`. This includes filtering and removing the tags allowing one mismatch to the given tag, mapping, BAM sorting and creation of an insertion site plot and stats file for each file listed in `file.list`.
182
183 ```Perl
184 Bio::Tradis::RunTradis(
185 fastqfile => 'file.list',
186 tag => 'GTTGAGGCCA',
187 reference => 'path/to/reference.fa',
188 mismatch => 1
189 )->run_tradis;
190 ```
191 Scripts
192 =======
193 Executable scripts to carry out most of the listed functions are available in the `bin`:
194
195 * `check_tradis_tags` - Prints 1 if tags are present, prints 0 if not.
196 * `add_tradis_tags` - Generates a BAM file with tags added to read strings.
197 * `filter_tradis_tags` - Create a fastq file containing reads that match the supplied tag
198 * `remove_tradis_tags` - Creates a fastq file containing reads with the supplied tag removed from the sequences
199 * `tradis_plot` - Creates an gzipped insertion site plot
200 * `bacteria_tradis` - Runs complete analysis, starting with a fastq file and produces mapped BAM files and plot files for each file in the given file list and a statistical summary of all files. Note that the -f option expects a text file containing a list of fastq files, one per line.
201
202 A help menu for each script can be accessed by running the script with no parameters
203
204 Analysis Scripts
205 ================
206 Three scripts are provided to perform basic analysis of TraDIS results in `bin`:
207
208 * `tradis_gene_insert_sites` - Takes genome annotation in embl format along with plot files produced by bacteria_tradis and generates tab-delimited files containing gene-wise annotations of insert sites and read counts.
209 * `tradis_essentiality.R` - Takes a single tab-delimited file from tradis_gene_insert_sites to produce calls of gene essentiality. Also produces a number of diagnostic plots.
210 * `tradis_comparison.R` - Takes tab files to compare two growth conditions using edgeR. This analysis requires experimental replicates.
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::DetectTags;
3
4 # ABSTRACT: check if tr tag is present
5 # PODNAME: check_tags
6
7 =head1 SYNOPSIS
8
9 Checks the presence of tr/tq tags in a given BAM file
10
11 =cut
12
13 BEGIN { unshift( @INC, '../lib' ) }
14 BEGIN { unshift( @INC, './lib' ) }
15 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
16
17 use Bio::Tradis::CommandLine::AddTags;
18
19 Bio::Tradis::CommandLine::AddTags->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::RunTradis;
3
4 # ABSTRACT: Perform full tradis analysis
5 # PODNAME: run_tradis
6
7 =head1 SYNOPSIS
8
9 Take a fastq, reference and a tag and generates insertion
10 site plots for use in Artemis
11
12 =cut
13
14 BEGIN { unshift( @INC, '../lib' ) }
15 BEGIN { unshift( @INC, './lib' ) }
16 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
17
18 use Bio::Tradis::CommandLine::TradisAnalysis;
19
20 Bio::Tradis::CommandLine::TradisAnalysis->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::DetectTags;
3
4 # ABSTRACT: check if tr tag is present
5 # PODNAME: check_tags
6
7 =head1 SYNOPSIS
8
9 Checks the presence of tr/tq tags in a given BAM file
10
11 =cut
12
13 BEGIN { unshift( @INC, '../lib' ) }
14 BEGIN { unshift( @INC, './lib' ) }
15 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
16
17 use Bio::Tradis::CommandLine::CheckTags;
18
19 Bio::Tradis::CommandLine::CheckTags->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::CombineTradisPlots;
3
4 # ABSTRACT: Combine multiple plotfiles and generate updated statistics for the combined files
5
6 # PODNAME: combine_tradis_plot
7
8 =head1 SYNOPSIS
9
10 Takes a tab-delimited file with an ID as the first column followed by
11 a list of plotfiles to combine per row. The ID will be used to name the new
12 plotfile and as an identifier in the stats file, so ensure these are unique.
13
14 =cut
15
16 BEGIN { unshift( @INC, '../lib' ) }
17 BEGIN { unshift( @INC, './lib' ) }
18 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
19
20 use Bio::Tradis::CommandLine::PlotCombine;
21
22 Bio::Tradis::CommandLine::PlotCombine->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::FilterTags;
3
4 # ABSTRACT: filter tags at start of fastq sequences
5 # PODNAME: filter_tags
6
7 =head1 SYNOPSIS
8
9 Checks tags at the start of the fastq sequence and returns a file containing those that
10 match the tag provided
11
12 =cut
13
14 BEGIN { unshift( @INC, '../lib' ) }
15 BEGIN { unshift( @INC, './lib' ) }
16 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
17
18 use Bio::Tradis::CommandLine::FilterFastqTags;
19
20 Bio::Tradis::CommandLine::FilterFastqTags->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::RemoveTags;
3
4 # ABSTRACT: remove user specified tags from start of fastq sequences
5 # PODNAME: remove_tags
6
7 =head1 SYNOPSIS
8
9 Removes tags from the sequence and quality strings based on user input
10
11 =cut
12
13 BEGIN { unshift( @INC, '../lib' ) }
14 BEGIN { unshift( @INC, './lib' ) }
15 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
16
17 use Bio::Tradis::CommandLine::RemoveFastqTags;
18
19 Bio::Tradis::CommandLine::RemoveFastqTags->new(args => \@ARGV, script_name => $0)->run;
0 #!/usr/bin/env Rscript
1
2 # PODNAME: tradis_comparison.R
3 # ABSTRACT: tradis_comparison.R
4
5 library("edgeR")
6 library("getopt")
7
8 options(width=80)
9
10 opt = getopt(matrix( c('help', 'h', 0, "logical",
11 'verbose', 'v', 0, "integer",
12 'controls', 'c', 1, "character",
13 'conditions', 'm', 1, "character",
14 'output', 'o', 1, "character",
15 'plot', 'p', 1, "character",
16 'filter', 'f', 0, "logical",
17 'mincount', 't', 1, "integer"
18 ), ncol=4, byrow=TRUE ) );
19
20 if(! is.null(opt$help) || is.null(opt$controls ) || is.null(opt$conditions ) )
21 {
22 cat(paste("Usage: tradis_comparison.R [-h] [-f] [-t read cutoff] [-o outputfile.csv] [-p outputplot.pdf] --controls controls.txt --conditions conditions.txt\n\n"));
23 writeLines(c(strwrap("Compares two experimental conditions using the method of Dembek et al. mBio 2015. Read counts per gene are compared using edgeR. This analysis requires experimental replicates."),
24 "\n\nRequired Arguments:\n",
25 strwrap("--controls : 'control' libraries, generally growth in a permissive condition"),
26 strwrap("--conditions : libraries exposed to the experimental condition being compared"),
27 "\nOptional Arguments:\n",
28 strwrap("-o : output filename"),
29 strwrap("-p : output filename for diagnostic plots"),
30 strwrap("-f : enable filtering on minimum read counts"),
31 strwrap("-t : if --filter is enabled, sets minimum read count necessary in one condition for a gene to be included in the comparison."),"\n"))
32 q(status=1);
33 }
34
35 if( is.null(opt$filter)) {opt$filter=FALSE}
36 if( is.null(opt$mincount)) {opt$mincount = 0}
37
38 # parse contols and conditions files to lists
39 control_files <- scan(opt$controls, what="", sep="\n")
40 condition_files <- scan(opt$conditions, what="", sep="\n")
41
42 if(length(control_files) < 2 || length(condition_files) < 2){
43 print("2 or more controls/conditions must be provided")
44 }
45 if(length(control_files) != length(condition_files)){
46 print("Unequal number of conditions and controls provided")
47 }
48
49 control_list = list()
50 for(i in 1:length(control_files)){
51 control_list[[i]] <- read.table(control_files[i], sep="\t",header=TRUE, quote="\"", stringsAsFactors=F)
52 }
53 condition_list = list()
54 for(i in 1:length(condition_files)){
55 condition_list[[i]] <- read.table(condition_files[i], sep="\t",header=TRUE, quote="\"", stringsAsFactors=F)
56 }
57
58 # set default output filename
59 if ( is.null(opt$output ) ) { opt$output = paste(opt$condition1,opt$control1, ".output.csv",sep = "")}
60
61 #only look at genes with counts > 0 (or input alternative) in some condition
62 all_list <- c(control_list, condition_list)
63
64 # make list of rows where read count > 0 (or input alternative) in all controls and conditions
65 read_counts = do.call(cbind, lapply(all_list, function(x){ x$read_count }))
66
67 #old case for only 0.
68 if(! opt$filter){
69 zeros = apply( apply(read_counts, 1, ">", 0), 2, any )
70 } else {
71 zeros_cont = apply( apply(read_counts[,1:length(control_files)], 1, ">", opt$mincount), 2, all )
72 zeros_cond = apply( apply(read_counts[,(length(control_files) + 1):(length(control_files) + length(condition_files))], 1, ">", opt$mincount), 2, all )
73 zeros = (zeros_cont | zeros_cond)
74 }
75
76
77 # remove these rows
78 noness_list = lapply(all_list, function(x){ x[zeros,] } )
79
80 #build count matrix
81 count_mat <- do.call(cbind, lapply(noness_list, function(x){x[,7]}))
82 conds = c()
83 for(i in 1:length(control_files)){
84 conds <- c(conds, "ctrl")
85 }
86 for(i in 1:length(condition_files)){
87 conds <- c(conds, "cond")
88 }
89 conds <- as.factor(conds)
90
91
92 if( is.null(opt$plot) ){ opt$plot = paste(opt$condition1,opt$control1,".output.pdf",sep = "") }
93 pdf( opt$plot )
94
95 #edgeR
96 d <- DGEList(counts = count_mat, group=conds)
97 plotMDS.DGEList(d, labels=conds)
98 d <- calcNormFactors(d)
99 d <- estimateCommonDisp(d)
100 d <- estimateTagwiseDisp(d)
101 de.tgw <- exactTest(d,pair=c("ctrl","cond"))
102
103 ctrl1_noness <- noness_list[[1]]
104 diff <- cbind(ctrl1_noness[,1:2],ctrl1_noness[,11],de.tgw$table,q.value=p.adjust(de.tgw$table$PValue,"BH"))
105
106
107 #volcano plot
108 plot(diff$logFC, -log(diff$q.value, base=2), xlim=range(c(-6,6)),xlab="Log2 Fold-Change, cond - Ctrl",ylab="-Log2 Q-value", cex = .5, pch=20)
109 abline(h=-log(0.01), col="red")
110 abline(v=-2, col="red")
111 abline(v=2, col="red")
112
113
114 #write results
115 write.table(diff,file=opt$output,append=FALSE, quote=TRUE, sep=",", row.names=FALSE, col.names=c("locus_tag","gene_name","function","logFC","logCPM","PValue","q.value"))
0 #!/usr/bin/env Rscript
1
2 # PODNAME: tradis_essentiality.R
3 # ABSTRACT: tradis_essentiality.R
4
5 library("MASS")
6 options(warn=-1)
7 options(width=80)
8
9 args <- commandArgs(trailingOnly = TRUE)
10 input = args[1]
11
12 if( is.na(input) ){
13 cat(paste("Usage: tradis_essentiality.R data.tab\n\n"))
14 cat(strwrap("Produces calls of gene essentiality using an adaptation of the method described in Langridge et al. Genome Research 2009 and Barquist et al. NAR 2013. A loess curve is fit to the distribution of insertion indices, and used to identify the minima between the 'essential' and 'non-essential' distributions. These distributions are then used to fit gamma distributions, which are then used to calculate log-odds ratios, which are used to determine an insertion-index threshold for gene essentiality. Note that this analysis requires a saturated mutant library, and is not suitable for the analysis of data sets with low insertion density. The script produces a number of diagnostic plots which can be used to verify that this condition has been met.\n"), fill=80)
15 q(status=1)
16 }
17
18 STM_baseline <- read.table(input, sep="\t",header=TRUE,stringsAsFactors=F, quote="\"")
19
20 ii <- STM_baseline$ins_index
21
22 #identify second maxima
23 h <- hist(ii, breaks=100,plot=FALSE)
24 maxindex <- which.max(h$density[3:length(h$density)])
25 maxval <- h$mids[maxindex+2]
26
27 # print pdf of loess curve and later on, histogram
28 pdf(paste(input, "QC_and_changepoint_plots", "pdf", sep = "."))
29
30 #find inter-mode minima with loess
31 nG <- length(STM_baseline$read_count)
32 r <- floor(maxval *1000)
33 I = ii < r / 1000
34 h1 = hist(ii[I],breaks=(0:r/1000))
35 lo <- loess(h1$density ~ c(1:length(h1$density))) #loess smothing over density
36 plot(h1$density, main="Density")
37 lines(predict(lo),col='red',lwd=2)
38 m = h1$mids[which.min(predict(lo))]
39 I1 = ((ii < m)&(ii >= 0))
40
41 h = hist(ii, breaks=100,plot=FALSE)
42 I2 = ((ii >= m)&(ii < h$mids[max(which(h$counts>5))]))
43 f1 = (sum(I1) + sum(ii == 0))/nG
44 f2 = (sum(I2))/nG
45
46 d1 = fitdistr(ii[I1], "exponential")
47 d2 = fitdistr(ii[I2], "gamma") #fit curves
48
49 # print pdf of histogram
50 #pdf("Loess_and_changepoint_estimation.pdf")
51
52 #plots
53 hist(ii,breaks=200, xlim=c(0,0.1), freq=FALSE,xlab="Insertion index", main="Gamma fits")
54 lines(0:50/500, f1*dgamma(0:50/500, 1, d1$estimate[1])) # was [2]
55 lines(0:50/500, f2*dgamma(0:50/500, d2$estimate[1], d2$estimate[2]))
56 # print changepoint
57
58 #calculate log-odds ratios to choose thresholds
59 lower <- max(which(log((pgamma(1:500/10000, d2$e[1],d2$e[2])*(1-pgamma(1:500/10000, 1,d1$e[1], lower.tail=FALSE)))/(pgamma(1:500/10000, 1,d1$e[1], lower.tail=FALSE)*(1-pgamma(1:500/10000, d2$e[1],d2$e[2]))) , base=2) < -2))
60 upper <- min(which(log((pgamma(1:500/10000, d2$e[1],d2$e[2])*(1-pgamma(1:500/10000, 1,d1$e[1], lower.tail=FALSE)))/(pgamma(1:500/10000, 1,d1$e[1], lower.tail=FALSE)*(1-pgamma(1:500/10000, d2$e[1],d2$e[2]))) , base=2) > 2))
61
62 essen <- lower/10000
63 ambig <- upper/10000
64
65 lines(c(lower/10000, lower/10000), c(0,20), col="red")
66 lines(c(upper/10000, upper/10000), c(0,20), col="red")
67
68 mtext(paste(essen, ":", "Essential changepoint"), side=3, adj=1, padj=2)
69 mtext(paste(ambig, ":", "Ambiguous changepoint"), side=3, adj=1, padj=3.75)
70 dev.off()
71
72
73 write.csv(STM_baseline, file=paste(input, "all", "csv", sep="."), row.names = FALSE, col.names= TRUE, quote=FALSE)
74 write.csv(STM_baseline[STM_baseline$ins_index < essen,], file=paste(input, "essen", "csv", sep="."), row.names = FALSE, col.names= TRUE, quote=FALSE)
75 write.csv(STM_baseline[STM_baseline$ins_index >= essen & STM_baseline$ins_index < ambig,], file=paste(input, "ambig", "csv", sep="."), row.names = FALSE, col.names= TRUE, quote=FALSE)
76
77
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::GeneInsertSites;
3
4 # ABSTRACT: Generate insertion site details from TraDIS pipeline plots
5
6 # PODNAME: tradis_gene_insert_sites
7
8 =head1 NAME
9
10 tradis_gene_insert_sites.pl
11
12 =head1 SYNOPSIS
13
14 =head1 DESCRIPTION
15
16 This script is for TRADIS analysis. It takes in a plot file created by the TRADIS pathogen informatics pipeline, and an embl file of
17 annotation.
18 It then outputs a tab delimited file with the insert site details. This is then used as input to an R script to calculate essentialit
19 y.
20
21 =head1 CONTACT
22
23 path-help@sanger.ac.uk
24 Original author: Lars Barquist
25
26 =head1 METHODS
27
28 =cut
29
30 use strict;
31 use warnings;
32 no warnings 'uninitialized';
33 use Bio::SeqIO;
34 use Getopt::Long;
35 use Text::CSV;
36 use File::Basename;
37 use Data::Dumper;
38
39 my ($help,$output_suffix,$trim5,$trim3,$joined_output);
40
41 GetOptions(
42 'o|output_suffix=s' => \$output_suffix,
43 'trim5=f' => \$trim5,
44 'trim3=f' => \$trim3,
45 'j|joined_output' => \$joined_output,
46 'h|help' => \$help,
47 );
48
49 my $usage = qq[
50 Take in a plot file(s) and an embl file and produce a tab delimited file with insert site details to use as input to an R script to t
51 est for essentiality.
52
53 Usage: tradis_gene_insert_sites
54 -o|output_suffix <suffix to add to output files (optional, default = tradis_gene_insert_sites.csv)>
55 -trim5 <trim insertion sites from 5' end of gene (optional, default = 0)>
56 -trim3 <trim insertion sites from 3' end of gene (optional, default = 0)>
57 -j|joined_output <output a single file with all info. default = one file per input file>
58 -h|help <display this message>
59
60 tradis_gene_insert_sites my_annotation.embl my_insert_site_plot.gz
61
62 tradis_gene_insert_sites my_annotation.embl my_insert_site_plot
63
64 # multiple plot files
65 tradis_gene_insert_sites my_annotation.embl plot1.gz plot2.gz plot3.gz plot4.gz
66
67 # specifiy an output suffix
68 # this will result in a file named my_insert_site_plot1.my_output.csv
69 tradis_gene_insert_sites -o my_output.csv my_annotation.embl my_insert_site_plot1
70
71 # Trim insertion sites from start or end of gene
72 tradis_gene_insert_sites my_annotation.embl -trim5 0.1 -trim3 0.1 my_annotation.embl my_insert_site_plot.gz
73
74 The trim parameter is the fraction of the gene length trimmed.
75
76 # place all info into a single file
77 tradis_gene_insert_sites -o output_suffix.csv -j my_annotation.embl plot1.gz plot2.gz plot3.gz
78
79 Resulting file: joined_output.output_suffix.csv
80
81 ];
82
83
84 $output_suffix ||= "tradis_gene_insert_sites.csv";
85 $trim5 ||= 0;
86 $trim3 ||= 0;
87
88 ( !$help
89 && scalar( @ARGV ) >= 2
90 && $trim5 >= 0 && $trim5 < 1
91 && $trim3 >= 0 && $trim3 < 1 ) or die $usage;
92
93 my $embl_file = shift @ARGV;
94 my $cds_coordinates = cds_locations($embl_file);
95 my $annotation_file = Bio::SeqIO->new(-file => $embl_file, -format => 'EMBL') or die "Error: Couldnt open the annotation file\n";
96
97
98 my @out_list = create_output_files( \@ARGV, $joined_output, $output_suffix );
99 my @ins_list = prepare_inputs( \@ARGV, $joined_output );
100
101 my $loop_index = 0;
102 for my $insert_sites ( @ins_list ){
103 my $output_filename = $out_list[$loop_index];
104 open(my $out_fh, "+>", $output_filename) or die "Couldnt open output file\n";
105 my $csv = Text::CSV->new ( { binary => 1, sep_char => "\t" } ) or die "";
106 $csv->eol("\n");
107 $csv->print($out_fh, output_header());
108
109 while (my $sequence_annotation = $annotation_file->next_seq())
110 {
111 for my $feature ($sequence_annotation->get_SeqFeatures())
112 {
113 next if($feature->primary_tag eq 'gene' && ( is_gene_within_cds($cds_coordinates, $feature) == 1) );
114
115 next if !($feature->primary_tag eq 'CDS' || $feature->primary_tag eq 'polypeptide' || $feature->primary_tag eq 'gene');
116 my $feature_id = get_feature_id($feature);
117 my $gene_name = get_gene_name($feature);
118 my $product_value = get_product_value($feature);
119 my $rna_value = get_rna_value($feature);
120
121 # Trim insertion sites from start or end of gene
122 # Number of bases trimmed are -trim5 or -trim3 parameters multiplied by gene length.
123 my ($read_start,$read_end);
124 if($feature->strand == 1){
125 $read_start = $feature->start + int($trim5 * ($feature->end - $feature->start + 1));
126 $read_end = $feature->end - int($trim3 * ($feature->end - $feature->start + 1));
127 }else {
128 $read_start = $feature->start + int($trim3 * ($feature->end - $feature->start + 1));
129 $read_end = $feature->end - int($trim5 * ($feature->end - $feature->start + 1));
130 }
131
132 my $count = 0;
133 my $inserts = 0;
134 for(my $j=$read_start;$j < $read_end; $j++){
135 $count += $insert_sites->[$j];
136 $inserts += 1 if $insert_sites->[$j] > 0;
137 }
138 my $ins_index = $inserts / ($read_end - $read_start + 1);
139
140 my $row = [$feature_id,$gene_name,$rna_value,$feature->start,$feature->end,$feature->strand,$count,$ins_index, ($feature->end - $
141 feature->start + 1),$inserts,$product_value];
142 $csv->print($out_fh, $row);
143 }
144 }
145 close($out_fh);
146 $loop_index++;
147 }
148
149 sub prepare_inputs {
150 my ( $files, $joined_output ) = @_;
151
152 if( $joined_output ){
153 my $insert_sites;
154 for my $f ( @{ $files } ) {
155 $insert_sites = read_in_plot_file( $f, $insert_sites );
156 }
157 return ($insert_sites);
158 }
159 else {
160 my @ins_list;
161 for my $f ( @{ $files } ){
162 push( @ins_list, read_in_plot_file( $f, [] ) );
163 }
164 return @ins_list;
165 }
166 }
167
168 sub create_output_files {
169 my ( $files, $joined_output, $output_suffix ) = @_;
170
171 return ("joined_output.$output_suffix") if ( $joined_output );
172
173 my @outfiles;
174 for my $f ( @{ $files } ){
175 my $basename = fileparse( $f, '.gz' );
176 $basename =~ s/\.insert_site_plot//;
177 push( @outfiles, "$basename.$output_suffix" );
178 }
179 return @outfiles;
180 }
181
182 sub is_gene_within_cds
183 {
184 my($cds_coordinates, $gene_feature) = @_;
185 for my $current_coords(@{$cds_coordinates})
186 {
187 next if( $current_coords->[0] > $gene_feature->start);
188 next if( $current_coords->[1] < $gene_feature->end);
189 return 1;
190 }
191
192 return 0;
193 }
194
195 sub cds_locations
196 {
197 my($embl_file) = @_;
198 my @cds_coordinates;
199
200 my $annotation_file = Bio::SeqIO->new(-file => $embl_file, -format => 'EMBL') or die "Error: Couldnt open the annotation file\n";
201 while (my $sequence_annotation = $annotation_file->next_seq())
202 {
203 for my $feature ($sequence_annotation->get_SeqFeatures())
204 {
205 next if !($feature->primary_tag eq 'CDS');
206 push(@cds_coordinates, [$feature->start,$feature->end]);
207 }
208 }
209 return \@cds_coordinates;
210 }
211
212
213 sub get_feature_id
214 {
215 my($feature) = @_;
216 my $feature_id = int(rand(10000));
217 my @junk;
218 if($feature->has_tag('locus_tag'))
219 {
220 ($feature_id, @junk) = $feature->get_tag_values('locus_tag');
221 }
222 elsif($feature->has_tag('ID'))
223 {
224 ($feature_id, @junk) = $feature->get_tag_values('ID');
225 }
226 elsif($feature->has_tag('systematic_id'))
227 {
228 ($feature_id, @junk) = $feature->get_tag_values('systematic_id');
229 }
230 else
231 {
232 $feature_id = join("_",($feature->seq_id(), $feature->strand, $feature->start, $feature->end ));
233 }
234 $feature_id =~ s/^"|"$//g;
235 return $feature_id ;
236 }
237
238 sub get_gene_name
239 {
240 my($feature) = @_;
241 my $gene_name;
242 my @junk;
243 if($feature->has_tag('gene'))
244 {
245 ($gene_name, @junk) = $feature->get_tag_values('gene');
246 }
247 else
248 {
249 $gene_name = get_feature_id($feature);
250 }
251 $gene_name =~ s/\W//g;
252 return $gene_name;
253 }
254
255 sub get_product_value
256 {
257 my($feature) = @_;
258 my $product = "";
259 my @junk;
260 if($feature->has_tag('product'))
261 {
262 ($product, @junk) = $feature->get_tag_values('product');
263 }
264 my $pseudo_gene = get_pseudo_gene_value($feature);
265 if(defined($pseudo_gene))
266 {
267 return $pseudo_gene;
268 }
269
270 return $product;
271 }
272
273 sub read_in_plot_file
274 {
275 my($plot_filename,$read_ar) = @_;
276
277 my $fh;
278
279 if($plot_filename =~ m/gz$/)
280 {
281 open($fh, "-|",'gunzip -c '.$plot_filename) or die "Couldnt open plot file\n";
282 }
283 else
284 {
285 open($fh, $plot_filename) or die "Couldnt open plot file\n";
286 }
287 my $i = 0;
288 while(<$fh>)
289 {
290 chomp;
291 my @inserts_per_base = split /\s/, $_;
292 my $combined_insert_for_base = $inserts_per_base[0] + $inserts_per_base[1];
293 if(defined($read_ar->[$i]))
294 {
295 $read_ar->[$i] += $combined_insert_for_base;
296 }
297 else
298 {
299 push(@{$read_ar}, $combined_insert_for_base);
300 }
301 $i++;
302 }
303 close($fh);
304 return $read_ar;
305 }
306
307 sub get_rna_value
308 {
309 my($feature) = @_;
310
311 return 1 if($feature->has_tag('ncRNA'));
312 return 0;
313 }
314
315 sub get_pseudo_gene_value
316 {
317 my($feature) = @_;
318 if($feature->has_tag('pseudo'))
319 {
320 return "pseudogene";
321 }
322 return undef;
323 }
324
325 sub output_header
326 {
327 ['locus_tag','gene_name','ncrna','start','end','strand','read_count','ins_index','gene_length','ins_count','fcn'];
328 }
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::MergePlots;
3
4 # ABSTRACT:
5
6 # PODNAME: tradis_merge_plots
7
8 =head1 NAME
9
10 tradis_merge_plots
11
12 =head1 SYNOPSIS
13
14 tradis_merge_plots - Given a study name or ID, group by sample and tag, and generate tab files for input to R.
15
16 =head1 DESCRIPTION
17
18 Given a study name or ID, group by sample and tag, and generate tab files for input to R.
19
20 =head1 CONTACT
21
22 path-help@sanger.ac.uk
23
24 =head1 METHODS
25
26 =cut
27
28 package TraDISMergePlots::Main;
29
30 use Moose;
31 use Getopt::Long;
32 use File::Basename;
33 my ( $study, $help );
34
35 GetOptions(
36 'h|help' => \$help,
37 );
38
39
40 ( defined($ARGV[0]) && !$help ) or die <<USAGE;
41 Usage: tradis_merge_plots [options]
42 Given a study name or ID, group by sample and tag, and generate tab files for input to R.
43
44 # run over sequencescape study 1234
45 tradis_merge_plots 1234
46
47 # Provide a name instead of a study ID
48 tradis_merge_plots "My Study"
49
50 # This help message
51 tradis_merge_plots -h
52
53 USAGE
54 $study = $ARGV[0];
55
56
57 open(my $coverage_plots_fh, '-|', 'tradisfind -t study -i "'.$study.'" -d');
58
59 my %coverage_plots;
60 while(<$coverage_plots_fh>)
61 {
62 my $line = $_;
63 chomp($line);
64 my @full_details = split("\t", $line);
65 my @file_path_details = split('/', $full_details[0]);
66 my @lane_details = split('#',$file_path_details[14]);
67 $full_details[1] =~ s!\.gff!.embl!i;
68
69 # library name, path to annotation, tag number => path
70 if(! defined($coverage_plots{$file_path_details[13]}{$full_details[1]}{$lane_details[1]}) )
71 {
72 my @plots;
73 push(@plots, $full_details[0]);
74 $coverage_plots{$file_path_details[13]}{$full_details[1]}{$lane_details[1]} = \@plots;
75 }
76 else
77 {
78 push(@{$coverage_plots{$file_path_details[13]}{$full_details[1]}{$lane_details[1]}},$full_details[0]);
79 }
80 }
81
82 for my $library_name (keys %coverage_plots)
83 {
84 for my $path_to_annotation (keys %{$coverage_plots{$library_name}})
85 {
86 my $annotation_name = fileparse( $path_to_annotation );
87 for my $tag (keys %{$coverage_plots{$library_name}{$path_to_annotation}})
88 {
89 my $joined_plots = join(' ', @{$coverage_plots{$library_name}{$path_to_annotation}{$tag}});
90
91 my $outputfilename = join("_",($library_name, $tag,$annotation_name));
92 my $cmd = join(" ", ("tradis_gene_insert_sites", '-o', $outputfilename.'.csv', $path_to_annotation, $joined_plots ));
93 `bsub -M1000 -R 'select[mem>1000] rusage[mem=1000]' '$cmd'`;
94 print "Output from bsub will be in: ".$outputfilename.'.csv'."\n";
95 }
96 }
97 }
0 #!/usr/bin/env perl
1
2 package Bio::Tradis::Bin::TradisPlot;
3
4 # ABSTRACT: Generate plots as part of a tradis analysis
5 # PODNAME: tradis_plot
6
7 =head1 SYNOPSIS
8
9 Generate insertion plots for Artemis from a mapped fastq file and
10 a reference in GFF format
11
12 =cut
13
14 BEGIN { unshift( @INC, '../lib' ) }
15 BEGIN { unshift( @INC, './lib' ) }
16 BEGIN { unshift( @INC, '/software/pathogen/internal/prod/lib/' ) }
17
18 use Bio::Tradis::CommandLine::PlotTradis;
19
20 Bio::Tradis::CommandLine::PlotTradis->new(args => \@ARGV, script_name => $0)->run;
0 name = Bio-Tradis
1 author = Carla Cummins <path-help@sanger.ac.uk>
2 license = GPL_3
3 copyright_holder = Wellcome Trust Sanger Institute
4 copyright_year = 2013
5 version = 1.3.1
6
7 [MetaResources]
8 homepage = http://www.sanger.ac.uk/
9 repository.web = https://github.com/sanger-pathogens/Bio-Tradis
10 repository.url = https://github.com/sanger-pathogens/Bio-Tradis.git
11 repository.type = git
12
13 [RequiresExternal]
14 requires = awk
15 requires = samtools
16 requires = gunzip
17 requires = gzip
18 requires = smalt
19 requires = tabix
20
21 [@Git]
22 [@Starter]
23 [RunExtraTests]
24 [AutoPrereqs]
25
26 [FileFinder::ByName / BinNotR]
27 dir = bin
28 skip = .*\.R$
29
30 [PodWeaver]
31 finder = :InstallModules
32 finder = BinNotR
33
34 [PkgVersion]
35
36 [Encoding]
37 filename = t/data/AddTags/expected_tradis.bam
38 filename = t/data/AddTags/sample_sm_tr.bam
39 filename = t/data/AddTags/sample_sm_no_tr.bam
40 filename = t/data/CombinePlots/sample1.sm.plot.gz
41 filename = t/data/CombinePlots/sample2.sm.plot.gz
42 filename = t/data/DetectTags/sample_sm_tr.bam
43 filename = t/data/DetectTags/sample_sm_no_tr.bam
44 filename = t/data/FilterTags/sample.fastq.gz
45 filename = t/data/InsertSite/small_multi_sequence.bam
46 filename = t/data/Parsers/test.bam
47 filename = t/data/RunTradis/expected.1mm.plot.gz
48 filename = t/data/RunTradis/expected.plot.gz
49 filename = t/data/RunTradis/test.tagged.fastq.gz
50 filename = t/data/RunTradis/test2.tagged.fastq.gz
51 filename = t/data/TradisPlot/expected.plot.gz
52 filename = t/data/TradisPlot/test.mapped.bam
53 filename = t/data/AddTags/expected_tradis.cram
54 filename = t/data/DetectTags/sample_sm_tr.cram
55 filename = t/data/AddTags/sample_sm_tr.cram
56 filename = t/data/CombinePlots/tabix_sorted.insert_site_plot.gz.tbi
57 filename = t/data/CombinePlots/tabix_sorted.insert_site_plot.gz
58 filename = t/data/InsertSite/2_reads.bam
59 encoding = bytes
0 #!/bin/bash
1
2 set -x
3 set -e
4
5 start_dir=$(pwd)
6
7 SMALT_VERSION="0.7.6"
8 TABIX_VERSION="master"
9 SAMTOOLS_VERSION="1.3"
10
11 SMALT_DOWNLOAD_URL="http://downloads.sourceforge.net/project/smalt/smalt-${SMALT_VERSION}-bin.tar.gz"
12 TABIX_DOWNLOAD_URL="https://github.com/samtools/tabix/archive/${TABIX_VERSION}.tar.gz"
13 SAMTOOLS_DOWNLOAD_URL="https://github.com/samtools/samtools/releases/download/${SAMTOOLS_VERSION}/samtools-${SAMTOOLS_VERSION}.tar.bz2"
14
15 # Make an install location
16 if [ ! -d 'build' ]; then
17 mkdir build
18 fi
19 cd build
20 build_dir=$(pwd)
21
22 # DOWNLOAD ALL THE THINGS
23 download () {
24 url=$1
25 download_location=$2
26
27 if [ -e $download_location ]; then
28 echo "Skipping download of $url, $download_location already exists"
29 else
30 echo "Downloading $url to $download_location"
31 wget $url -O $download_location
32 fi
33 }
34
35 download $SMALT_DOWNLOAD_URL "smalt-${SMALT_VERSION}.tgz"
36 download $TABIX_DOWNLOAD_URL "tabix-${TABIX_VERSION}.tgz"
37 download $SAMTOOLS_DOWNLOAD_URL "samtools-${SAMTOOLS_VERSION}.tbz"
38
39 # Update dependencies
40 if [ "$TRAVIS" = 'true' ]; then
41 echo "Using Travis's apt plugin"
42 else
43 sudo apt-get update -q
44 sudo apt-get install -y -q zlib1g-dev
45 fi
46
47 # Build all the things
48 ## smalt
49 cd $build_dir
50 smalt_dir=$(pwd)/"smalt-${SMALT_VERSION}-bin"
51 if [ ! -d $smalt_dir ]; then
52 tar xzfv smalt-${SMALT_VERSION}.tgz
53 fi
54 cd $smalt_dir
55 if [ ! -e "$smalt_dir/smalt" ]; then
56 ln "$smalt_dir/smalt_x86_64" "$smalt_dir/smalt"
57 fi
58
59 ## tabix
60 cd $build_dir
61 tabix_dir=$(pwd)/"tabix-$TABIX_VERSION"
62 if [ ! -d $tabix_dir ]; then
63 tar xzfv "${build_dir}/tabix-${TABIX_VERSION}.tgz"
64 fi
65 cd $tabix_dir
66 if [ -e ${tabix_dir}/tabix ]; then
67 echo "Already built tabix"
68 else
69 echo "Building tabix"
70 make
71 fi
72
73 ## samtools
74 cd $build_dir
75 samtools_dir=$(pwd)/"samtools-$SAMTOOLS_VERSION"
76 if [ ! -d $samtools_dir ]; then
77 tar xjfv "${build_dir}/samtools-${SAMTOOLS_VERSION}.tbz"
78 fi
79 cd $samtools_dir
80 if [ -e ${samtools_dir}/samtools ]; then
81 echo "Already built samtools"
82 else
83 echo "Building samtools"
84 sed -i 's/^\(DFLAGS=.\+\)-D_CURSES_LIB=1/\1-D_CURSES_LIB=0/' Makefile
85 sed -i 's/^\(LIBCURSES=\)/#\1/' Makefile
86 make prefix=${samtools_dir} install
87 fi
88
89 # Setup environment variables
90 update_path () {
91 new_dir=$1
92 if [[ ! "$PATH" =~ (^|:)"${new_dir}"(:|$) ]]; then
93 export PATH=${new_dir}:${PATH}
94 fi
95 }
96
97 update_path ${smalt_dir}
98 update_path "${tabix_dir}"
99 update_path "${samtools_dir}"
100
101 cd $start_dir
102
103 # Install perl dependencies
104 cpanm Dist::Zilla
105 dzil authordeps --missing | cpanm
106 dzil listdeps --missing | cpanm
107
108 set +x
109 set +e
0 package Bio::Tradis::AddTagsToSeq;
1
2 # ABSTRACT: Takes a BAM file and creates a new BAM with tr and tq tags added to the sequence and quality strings.
3
4 =head1 NAME
5
6 Bio::Tradis::AddTagsToSeq
7
8 =head1 SYNOPSIS
9
10 Bio::Tradis::AddTagsToSeq parses BAM files, adds given tags to the start of the sequence and creates temporary SAM file,
11 which is then converted to BAM
12
13 use Bio::Tradis::AddTagsToSeq;
14
15 my $pipeline = Bio::Tradis::AddTagsToSeq->new(bamfile => 'abc');
16 $pipeline->add_tags_to_seq();
17
18 =head1 PARAMETERS
19
20 =head2 Required
21
22 C<bamfile> - path to/name of file containing reads and tags
23
24 =head2 Optional
25
26 C<outfile> - name to assign to output BAM. Defaults to C<file.tr.bam> for an input file named C<file.bam>
27
28 =head1 METHODS
29
30 C<add_tags_to_seq> - add TraDIS tags to reads. For unmapped reads, the tag
31 is added to the start of the read sequence and quality
32 strings. For reads where the flag indicates that it is
33 mapped and reverse complemented, the reverse complemented
34 tags are added to the end of the read strings.
35 This is because many conversion tools (e.g. picard) takes
36 the read orientation into account and will re-reverse the
37 mapped/rev comp reads during conversion, leaving all tags
38 in the correct orientation at the start of the sequences
39 in the resulting FastQ file.
40
41 =cut
42
43 use Moose;
44 use Bio::Seq;
45 use Bio::Tradis::Parser::Bam;
46 use File::Basename;
47
48 no warnings qw(uninitialized);
49
50 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
51 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
52 has 'bamfile' => ( is => 'rw', isa => 'Str', required => 1 );
53 has 'outfile' => (
54 is => 'rw',
55 isa => 'Str',
56 required => 0,
57 default => sub {
58 my ($self) = @_;
59 my $o = $self->bamfile;
60 $o =~ s/\.bam/\.tr\.bam/;
61 $o =~ s/\.cram/\.tr\.cram/;
62 return $o;
63 }
64 );
65
66 has '_file_extension' => ( is => 'rw', isa => 'Str', lazy => 1, builder => '_build__file_extension' );
67 has 'extension_to_output_switch' => ( is => 'rw', isa => 'HashRef', default => sub{ {cram => '-C', bam => '-b'} } );
68
69 sub _build__file_extension
70 {
71 my ($self) = @_;
72 my($filename, $dirs, $suffix) = fileparse($self->bamfile,qr/[^.]*/);
73 return lc($suffix);
74 }
75
76 sub add_tags_to_seq {
77 my ($self) = @_;
78
79 #set up BAM parser
80 my $filename = $self->bamfile;
81 my $outfile = $self->outfile;
82
83 #open temp file in SAM format and output headers from current BAM to it
84 print STDERR "Reading ".uc($self->_file_extension)." header\n" if($self->verbose);
85 system($self->samtools_exec." view -H $filename > tmp.sam");
86 open( TMPFILE, '>>tmp.sam' );
87
88 #open BAM file
89 print STDERR "Reading ".uc($self->_file_extension)." file\n" if($self->verbose);
90 my $pars = Bio::Tradis::Parser::Bam->new( file => $filename, samtools_exec => $self->samtools_exec );
91 my $read_info = $pars->read_info;
92
93 while ( $pars->next_read ) {
94 my $read_info = $pars->read_info;
95 my $line = ${$read_info}{READ};
96
97 # get tags, seq, qual and cigar str
98 my $trtag = ${$read_info}{tr};
99 my $tqtag = ${$read_info}{tq};
100
101 my $seq_tagged = ${$read_info}{SEQ};
102 my $qual_tagged = ${$read_info}{QUAL};
103 my $cigar_update = ${$read_info}{CIGAR};
104
105 #Check if seq is mapped & rev complement. If so, reformat.
106 my $mapped = $pars->is_mapped;
107 my $rev = $pars->is_reverse;
108 if ( $mapped && $rev ) {
109
110 # The transposon is not reverse complimented but the genomic read is
111
112 # reverse the genomic quality scores.
113 $qual_tagged = reverse($qual_tagged);
114
115 # Add the transposon quality score on the beginning
116 $qual_tagged = $tqtag . $qual_tagged;
117
118 # Reverse the whole quality string.
119 $qual_tagged = reverse($qual_tagged);
120
121 # Reverse the genomic sequence
122 my $genomic_seq_obj =
123 Bio::Seq->new( -seq => $seq_tagged, -alphabet => 'dna' );
124 my $reversed_genomic_seq_obj = $genomic_seq_obj->revcom;
125
126 # Add on the tag sequence
127 $seq_tagged = $trtag . $reversed_genomic_seq_obj->seq;
128
129 # Reverse the tag+genomic sequence to get it back into the correct orentation.
130 my $genomic_and_tag_seq_obj =
131 Bio::Seq->new( -seq => $seq_tagged, -alphabet => 'dna' );
132 $seq_tagged = $genomic_and_tag_seq_obj->revcom->seq;
133
134 }
135 else {
136 #print STDERR "$line\n" if(!defined($tqtag));
137 $seq_tagged = $trtag . $seq_tagged;
138 $qual_tagged = $tqtag . $qual_tagged;
139 }
140
141 if ($mapped) {
142 my $cigar = length($seq_tagged);
143 $cigar_update = $cigar . 'M';
144 }
145 else {
146 $cigar_update = '*';
147 }
148
149 # replace updated fields and print to TMPFILE
150 my @cols = split( " ", $line );
151 $cols[5] = $cigar_update;
152 $cols[9] = $seq_tagged;
153 $cols[10] = $qual_tagged;
154
155 print TMPFILE join( "\t", @cols ) . "\n";
156 }
157 $pars->close_file_handle;
158 close TMPFILE;
159
160 #convert tmp.sam to bam
161 print STDERR "Convert SAM to ".uc($self->_file_extension)."\n" if($self->verbose);
162
163
164 system($self->samtools_exec." view -h -S ".$self->_output_switch." -o $outfile tmp.sam");
165
166 if ( $self->_number_of_lines_in_bam_file($outfile) !=
167 $self->_number_of_lines_in_bam_file($filename) )
168 {
169 die
170 "The number of lines in the input and output files don't match, so something's gone wrong\n";
171 }
172
173 #remove tmp file
174 unlink("tmp.sam");
175 return 1;
176 }
177
178 sub _output_switch
179 {
180 my ( $self ) = @_;
181 if(defined($self->extension_to_output_switch->{$self->_file_extension}))
182 {
183 return $self->extension_to_output_switch->{$self->_file_extension};
184 }
185 else
186 {
187 return '';
188 }
189 }
190
191 sub _number_of_lines_in_bam_file {
192 my ( $self, $filename ) = @_;
193 open( my $fh, '-|', $self->samtools_exec." view $filename | wc -l" )
194 or die "Couldn't open file :" . $filename;
195 my $number_of_lines_in_file = <$fh>;
196 $number_of_lines_in_file =~ s!\W!!gi;
197 return $number_of_lines_in_file;
198 }
199
200 __PACKAGE__->meta->make_immutable;
201 no Moose;
202 1;
0 package Bio::Tradis::Analysis::Exceptions;
1 # ABSTRACT: Custom exceptions
2
3 =head1 SYNOPSIS
4
5 Basic exception catcher
6
7 =cut
8
9 use Exception::Class (
10 Bio::Tradis::Analysis::Exceptions::FailedToOpenAlignmentSlice => { description => 'Couldnt get reads from alignment slice. Error with Samtools or BAM' },
11 Bio::Tradis::Analysis::Exceptions::FailedToOpenExpressionResultsSpreadsheetForWriting => { description => 'Couldnt write out the results for expression' },
12 Bio::Tradis::Analysis::Exceptions::InvalidInputFiles => { description => 'Invalid inputs, sequence names or lengths are incorrect' },
13 Bio::Tradis::Analysis::Exceptions::FailedToCreateNewBAM => { description => 'Couldnt create a new bam file' },
14 Bio::Tradis::Analysis::Exceptions::FailedToCreateMpileup => { description => 'Couldnt create an mpileup' },
15 Bio::Tradis::Analysis::Exceptions::FailedToOpenFeaturesTabFileForWriting => { description => 'Couldnt write tab file' },
16 Bio::Tradis::Analysis::Exceptions::FileNotFound => { description => 'Couldnt find file' },
17 );
18
19 1;
0 package Bio::Tradis::Analysis::InsertSite;
1 # ABSTRACT: Take in a bam file and plot the start position of each read
2
3 =head1 NAME
4
5 InsertSite.pm - Take in a bam file and plot the start position of each read
6
7 =head1 SYNOPSIS
8
9 Takes in a mapped BAM file and plot the start position of each read
10
11 use Bio::Tradis::Analysis::InsertSite;
12 my $insertsite_plots_from_bam = Bio::Tradis::Analysis::InsertSite->new(
13 filename => 'my_file.bam',
14 output_base_filename => 'my_output_file'
15 );
16 $insertsite_plots_from_bam->create_plots();
17
18
19 =cut
20
21
22 use Moose;
23 use Bio::Tradis::Parser::Bam;
24 use Bio::Tradis::Parser::Cigar;
25
26 has 'filename' => ( is => 'rw', isa => 'Str', required => 1 );
27 has 'output_base_filename' => ( is => 'rw', isa => 'Str', required => 1 );
28 has 'mapping_score' => ( is => 'ro', isa => 'Int', required => 1 );
29 has 'samtools_exec' => ( is => 'ro', isa => 'Str', default => 'samtools' );
30 has '_output_file_handles' => ( is => 'rw', isa => 'HashRef', lazy_build => 1 );
31 has '_sequence_names' => ( is => 'rw', isa => 'ArrayRef', lazy_build => 1 );
32 has '_sequence_base_counters' =>
33 ( is => 'rw', isa => 'HashRef', lazy_build => 1 );
34 has '_sequence_information' =>
35 ( is => 'rw', isa => 'HashRef', lazy_build => 1 );
36
37 has '_frequency_of_read_start' => (
38 is => 'rw',
39 isa => 'HashRef',
40 lazy => 1,
41 builder => '_build__frequency_of_read_start'
42 );
43
44 sub _build__sequence_information {
45 my ($self) = @_;
46 my %all_sequences_info =
47 Bio::Tradis::Parser::Bam->new( file => $self->filename, samtools_exec => $self->samtools_exec )->seq_info;
48 return \%all_sequences_info;
49 }
50
51 sub _build__sequence_names {
52 my ($self) = @_;
53 my @sequence_names = keys %{ $self->_sequence_information };
54 return \@sequence_names;
55 }
56
57 sub _build__sequence_base_counters {
58 my ($self) = @_;
59 my %sequence_base_counters;
60 for my $sequence_name ( @{ $self->_sequence_names } ) {
61 $sequence_base_counters{$sequence_name} = 0;
62 }
63 return \%sequence_base_counters;
64 }
65
66 sub _build__output_file_handles {
67 my ($self) = @_;
68 my $out = $self->output_base_filename;
69 chomp $out;
70
71 my %output_file_handles;
72 for my $sequence_name ( @{ $self->_sequence_names } ) {
73 my $file_sequence_name = $sequence_name;
74 $file_sequence_name =~ s/[^\w\d\.]/_/g;
75 my $cmd = "gzip > $out.$file_sequence_name.insert_site_plot.gz";
76 open( $output_file_handles{$sequence_name}, '|-', $cmd )
77 || Bio::Tradis::Analysis::Exceptions::FailedToCreateOutputFileHandle
78 ->throw( error =>
79 "Couldnt create output file handle for saving insertsite plot results for "
80 . $sequence_name . " in "
81 . $self->filename
82 . " and output base "
83 . $self->output_base_filename );
84 }
85
86 return \%output_file_handles;
87 }
88
89 sub _number_of_forward_reads {
90 my ( $self, $sequence_name, $read_coord ) = @_;
91 return $self->_number_of_reads( $sequence_name, $read_coord, 1 );
92 }
93
94 sub _number_of_reverse_reads {
95 my ( $self, $sequence_name, $read_coord ) = @_;
96 return $self->_number_of_reads( $sequence_name, $read_coord, -1 );
97 }
98
99 sub _number_of_reads {
100 my ( $self, $sequence_name, $read_coord, $direction ) = @_;
101 if (
102 defined(
103 $self->_frequency_of_read_start->{$sequence_name}{$read_coord}
104 )
105 && defined(
106 $self->_frequency_of_read_start->{$sequence_name}{$read_coord}
107 {$direction}
108 )
109 )
110 {
111 return $self->_frequency_of_read_start->{$sequence_name}{$read_coord}
112 {$direction};
113 }
114 return 0;
115 }
116
117 # work out if padding is needed and return it as a formatted string
118 sub _create_padding_string {
119 my ( $self, $previous_counter, $current_counter ) = @_;
120 my $padding_string = "";
121 for ( my $i = $previous_counter + 1 ; $i < $current_counter ; $i++ ) {
122 $padding_string .= "0 0\n";
123 }
124 return $padding_string;
125 }
126
127 sub _print_padding_at_end_of_sequence {
128 my ($self) = @_;
129 for my $sequence_name ( @{ $self->_sequence_names } ) {
130 my $sequence_length =
131 $self->_sequence_information->{$sequence_name}->{'LN'};
132 next unless ( $sequence_length =~ /^[\d]+$/ );
133 $sequence_length++;
134 my $padding_string =
135 $self->_create_padding_string(
136 $self->_sequence_base_counters->{$sequence_name},
137 $sequence_length );
138 $self->_sequence_base_counters->{$sequence_name} = $sequence_length;
139 print { $self->_output_file_handles->{$sequence_name} } $padding_string;
140 }
141 }
142
143 sub _close_output_file_handles {
144 my ($self) = @_;
145 for my $output_file_handle ( values %{ $self->_output_file_handles } ) {
146 close($output_file_handle);
147 }
148 return;
149 }
150
151 sub _build__frequency_of_read_start {
152 my ($self) = @_;
153 my %frequency_of_read_start;
154 my $samtools_command = join(' ', ($self->samtools_exec, 'view', '-F', 4, '-q', $self->mapping_score, $self->filename));
155
156 open(my $samtools_view_fh,"-|" ,$samtools_command);
157 while(<$samtools_view_fh>)
158 {
159 my $sam_line = $_;
160
161 my @read_details = split("\t", $sam_line);
162 my $seqid = $read_details[2];
163 my $cigar_parser = Bio::Tradis::Parser::Cigar->new(cigar => $read_details[5], coordinate => $read_details[3]);
164 my $strand = 1;
165 $strand = -1 if(($read_details[1] & 0x10) == 0x10);
166
167 if ( $strand == 1 ) {
168 $frequency_of_read_start{$seqid}{ $cigar_parser->start }
169 { $strand }++;
170 }
171 else {
172 $frequency_of_read_start{$seqid}{ $cigar_parser->end }
173 { $strand }++;
174 }
175 }
176 return \%frequency_of_read_start;
177 }
178
179 sub create_plots {
180 my ($self) = @_;
181 my %read_starts = %{ $self->_frequency_of_read_start };
182 for my $sequence_name ( keys %read_starts ) {
183 my %sequence_read_coords = %{ $read_starts{$sequence_name} };
184 for my $read_coord ( sort { $a <=> $b } ( keys %sequence_read_coords ) )
185 {
186 my $padding_string =
187 $self->_create_padding_string(
188 $self->_sequence_base_counters->{$sequence_name}, $read_coord );
189 $self->_sequence_base_counters->{$sequence_name} = $read_coord;
190
191 my $forward_reads =
192 $self->_number_of_forward_reads( $sequence_name, $read_coord );
193 my $reverse_reads =
194 $self->_number_of_reverse_reads( $sequence_name, $read_coord );
195
196 print { $self->_output_file_handles->{$sequence_name} }
197 $padding_string . $forward_reads . " " . $reverse_reads . "\n";
198 }
199 }
200
201 $self->_print_padding_at_end_of_sequence;
202 $self->_close_output_file_handles;
203 return 1;
204 }
205
206 1;
0 package Bio::Tradis::CombinePlots;
1
2 # ABSTRACT: Combine multiple plotfiles and generate updated statistics for the combined files
3
4 =head1 SYNOPSIS
5
6 Takes a tab-delimited file with an ID as the first column followed by
7 a list of plotfiles to combine per row. The ID will be used to name the new
8 plotfile and as an identifier in the stats file, so ensure these are unique.
9
10 For example, an input file named plots_to_combine.txt:
11
12 tradis1 plot1.1.gz plot1.2.gz plot1.3.gz
13 tradis2 plot2.1.gz plot2.2.gz
14 tradis3 plot3.1.gz plot3.2.gz plot3.3.gz plot3.4.gz
15
16 will produce
17 =over
18
19 =item 1. a directory named combined with 3 files - tradis1.insertion_site_plot.gz,
20 tradis2.insertion_site_plot.gz, tradis3.insertion_site_plot.gz
21 =item 2. a stats file named plots_to_combine.stats
22
23 =back
24
25 =head1 USAGE
26
27 use Bio::Tradis::CombinePlots;
28
29 my $pipeline = Bio::Tradis::CombinePlots->new(plotfile => 'abc');
30 $pipeline->combine;
31
32 =cut
33
34 use Moose;
35 use strict;
36 use warnings;
37 use File::Temp;
38 use File::Path qw( remove_tree );
39 use Data::Dumper;
40 use Cwd;
41 use Bio::Tradis::Analysis::Exceptions;
42
43 has 'plotfile' => ( is => 'rw', isa => 'Str', required => 1 );
44 has 'combined_dir' => ( is => 'rw', isa => 'Str', default => 'combined' );
45 has '_plot_handle' => (
46 is => 'ro',
47 isa => 'FileHandle',
48 required => 0,
49 lazy => 1,
50 builder => '_build__plot_handle'
51 );
52 has '_stats_handle' => (
53 is => 'ro',
54 isa => 'FileHandle',
55 required => 0,
56 lazy => 1,
57 builder => '_build__stats_handle'
58 );
59 has '_ordered_plot_ids' => (
60 is => 'rw',
61 isa => 'ArrayRef',
62 required => 0,
63 lazy => 1,
64 builder => '_build__ordered_plot_ids'
65 );
66 has '_destination' => (
67 is => 'rw',
68 isa => 'Str',
69 required => 0,
70 lazy => 1,
71 builder => '_build__destination'
72 );
73
74 sub _build__destination {
75 my $tmp_dir = File::Temp->newdir( DIR=> getcwd, CLEANUP => 0 );
76 return $tmp_dir->dirname;
77 }
78
79 sub _build__stats_handle {
80 my ($self) = @_;
81 my $filelist = $self->plotfile;
82 $filelist =~ s/([^\/]+$)//;
83 my $filename = $1;
84 $filename =~ s/[^\.]+$/stats/;
85 open( my $stats, ">", $filename );
86 return $stats;
87 }
88
89 sub _build__plot_handle {
90 my ($self) = @_;
91 my $plot = $self->plotfile;
92 open( my $plot_h, "<", $plot );
93 return $plot_h;
94 }
95
96 sub _build__ordered_plot_ids {
97 my ($self) = @_;
98 my $filelist = $self->plotfile;
99
100 my @id_order = `awk '{print \$1}' $filelist`;
101 foreach my $id (@id_order) {
102 chomp($id);
103 }
104 return \@id_order;
105 }
106
107 sub combine {
108 my ($self) = @_;
109 my $ordered_keys = $self->_ordered_plot_ids;
110 my $plot_handle = $self->_plot_handle;
111 my $combined_dir = $self->combined_dir;
112
113 $self->_write_stats_header;
114
115
116 system("mkdir $combined_dir") unless ( -d "$combined_dir" );
117 my @tabix_plot;
118
119 while ( my $line = <$plot_handle> ) {
120 #parse line into hash. keys = id, len, files. unzips files if needed.
121 my %plothash = $self->_parse_line($line);
122 my $id = $plothash{'id'};
123
124 #create output plot file
125 my $comb_plot_name = "$combined_dir/$id.insert_site_plot";
126 my $filelen = $plothash{'len'};
127 my ( @currentlines, $this_line );
128
129 my @full_plot;
130 foreach my $i ( 0 .. $filelen ) {
131 @currentlines = ();
132
133 foreach my $curr_fh ( @{ $plothash{'files'} } ) {
134 $this_line = <$curr_fh>;
135 push( @currentlines, $this_line ) if( defined $line && $line ne "");
136 }
137
138 my $comb_line = $self->_combine_lines( \@currentlines );
139
140 my $plot_values_tabix = $comb_line;
141 $plot_values_tabix =~ s/\s/\t/ if(defined $plot_values_tabix && $plot_values_tabix ne "");
142
143 my $tabix_line;
144 if ($id !~ m/^zip_combined/) {
145 my $tabix_line = "$id\t$i\t" . $plot_values_tabix if( defined $plot_values_tabix && $plot_values_tabix ne "");
146 push( @tabix_plot, $tabix_line ) if( $comb_line ne "");
147 }
148
149 push(@full_plot, $comb_line) if ( $comb_line ne '' );
150 }
151
152 open( CPLOT, '>', $comb_plot_name );
153 print CPLOT join("\n", @full_plot);
154 close(CPLOT);
155
156 $self->_write_stats($id, $filelen);
157 system("gzip -f $comb_plot_name");
158 }
159
160
161 if (@tabix_plot) {
162 $self->_prepare_and_create_tabix_for_combined_plots(\@tabix_plot);
163 }
164
165 File::Temp::cleanup();
166 # double check tmp dir is deleted. cleanup not working properly
167 remove_tree($self->_destination);
168 return 1;
169 }
170
171 sub _prepare_and_create_tabix_for_combined_plots {
172
173 my ($self, $tabix_plot) = @_;
174
175 my $tabix_plot_name = "combined/tabix.insert_site_plot.gz";
176 my $sorted_tabix_plot_name = "combined/tabix_sorted.insert_site_plot.gz";
177
178 open(my $tabix_plot_fh , '|-', " gzip >". $tabix_plot_name) or warn "Couldn't create the initial plot file for tabix";
179 print $tabix_plot_fh join( "\n", @{ $tabix_plot } );
180 close($tabix_plot_fh);
181
182 `cat $tabix_plot_name | gunzip - | sort -k1,1 -k2,2n | bgzip > $sorted_tabix_plot_name && tabix -b 2 -e 2 $sorted_tabix_plot_name`;
183 unlink($tabix_plot_name);
184
185 }
186
187
188 sub _parse_line {
189 my ( $self, $line ) = @_;
190 chomp $line;
191 my @fields = split( /\s+/, $line );
192 my $id = shift @fields;
193 my @files = @{ $self->_unzip_plots(\@fields) };
194 my $len = $self->_get_file_len( \@files );
195 if ( $len == 0 ){
196 die "\nPlots with ID $id not of equal length.\n";
197 }
198 #build file handles for each file
199 my @file_hs;
200 foreach my $f (@files){
201 open(my $fh, "<", $f);
202 push(@file_hs, $fh);
203 }
204 return ( id => $id, len => $len, files => \@file_hs );
205 }
206
207 sub _get_file_len {
208 my ( $self, $files ) = @_;
209
210 #check all files are of equal lens and return len if true
211 #wc misses last line - return $l++
212 my @lens;
213 for my $f ( @{$files} ) {
214 my $wc = `wc $f | awk '{print \$1}'`;
215 chomp $wc;
216 push( @lens, $wc );
217 }
218
219 my $l = shift @lens;
220 for my $x (@lens) {
221 return 0 if ( $x != $l );
222 }
223 return $l+1;
224 }
225
226 sub _combine_lines {
227 my ( $self, $lines ) = @_;
228
229 my @totals = ( 0, 0 );
230 foreach my $l ( @{$lines} ) {
231 if(!defined($l)){
232 return "";
233 next;
234 }
235 my @cols = split( /\s+/, $l );
236 $totals[0] += $cols[0];
237 $totals[1] += $cols[1];
238 }
239 return join( " ", @totals );
240 }
241
242 sub _write_stats_header {
243 my ($self) = @_;
244 my @fields =
245 ( "ID", "Sequence Length", "Unique Insertion Sites", "Seq Len/UIS" );
246 print { $self->_stats_handle } join( ",", @fields ) . "\n";
247 return 1;
248 }
249
250 sub _write_stats {
251 my ( $self, $id, $seq_len ) = @_;
252 my $combined_dir = $self->combined_dir;
253 my $comb_plot = "$combined_dir/$id.insert_site_plot";
254
255 #my $seq_len = `wc $comb_plot | awk '{print \$1}'`;
256 #chomp($seq_len);
257 my $uis = `grep -c -v "0 0" $comb_plot`;
258 chomp($uis);
259 my $sl_per_uis = "NaN";
260 $sl_per_uis = $seq_len / $uis if($uis > 0);
261
262 my $stats = "$id,$seq_len,$uis,$sl_per_uis\n";
263 print { $self->_stats_handle } $stats;
264
265 return 1;
266 }
267
268 sub _abs_path_list {
269 my ( $self, $files ) = @_;
270 my $plot_path = $self->_get_plotfile_path;
271
272 my @pathlist;
273 foreach my $f ( @{$files} ) {
274 if ( $f =~ /^\// ) { push( @pathlist, $f ); }
275 else { push( @pathlist, $plot_path . $f ); }
276 }
277 return \@pathlist;
278 }
279
280 sub _get_plotfile_path {
281 my ($self) = @_;
282 my $plotfile = $self->plotfile;
283
284 my @dirs = split( '/', $plotfile );
285 pop(@dirs);
286 my $path2plot = join( '/', @dirs );
287 return "$path2plot/";
288 }
289
290 sub _is_gz {
291 my ( $self, $plotname ) = @_;
292
293 if ( $plotname =~ /\.gz$/ ) {
294 return 1;
295 }
296 else {
297 return 0;
298 }
299 }
300
301 sub _unzip_plots {
302 my ( $self, $files ) = @_;
303 my $destination_directory = $self->_destination;
304
305 my @filelist = @{ $self->_abs_path_list($files) };
306 my @unz_plots;
307 foreach my $plotname ( @filelist ) {
308 Bio::Tradis::Analysis::Exceptions::FileNotFound->throw("Cannot find $plotname\n") unless ( -e $plotname );
309 if ( $self->_is_gz($plotname) ) {
310 $plotname =~ /([^\/]+$)/;
311 my $unz = $1;
312 $unz =~ s/\.gz//;
313 my $unzip_cmd = "gunzip -c $plotname > $destination_directory/$unz";
314 system($unzip_cmd);
315 push(@unz_plots, "$destination_directory/$unz");
316 }
317 else {
318 push(@unz_plots, $plotname);
319 }
320 }
321 return \@unz_plots;
322 }
323
324 __PACKAGE__->meta->make_immutable;
325 no Moose;
326 1;
0 package Bio::Tradis::CommandLine::AddTags;
1
2 # ABSTRACT: Add given tags to the start of the sequence
3
4 =head1 SYNOPSIS
5
6 Adds given tags to the start of the sequence
7
8 =cut
9
10 use Moose;
11 use Getopt::Long qw(GetOptionsFromArray);
12 use Cwd 'abs_path';
13 use Bio::Tradis::AddTagsToSeq;
14
15 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
16 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
17 has 'bamfile' => ( is => 'rw', isa => 'Str', required => 0 );
18 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
19 has 'outfile' => ( is => 'rw', isa => 'Str', required => 0 );
20
21 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
22 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
23
24 sub BUILD {
25 my ($self) = @_;
26
27 my ( $bamfile, $outfile, $help, $verbose, $samtools_exec);
28
29 GetOptionsFromArray(
30 $self->args,
31 'b|bamfile=s' => \$bamfile,
32 'o|outfile=s' => \$outfile,
33 'h|help' => \$help,
34 'v|verbose' => \$verbose,
35 'samtools_exec=s' => \$samtools_exec,
36 );
37
38 $self->bamfile( abs_path($bamfile) ) if ( defined($bamfile) );
39 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
40 $self->help($help) if ( defined($help) );
41 $self->verbose($verbose) if ( defined($verbose) );
42 $self->samtools_exec($samtools_exec) if ( defined($samtools_exec) );
43
44 # print usage text if required parameters are not present
45 ($bamfile) or die $self->usage_text;
46 }
47
48 sub run {
49 my ($self) = @_;
50
51 if ( defined( $self->help ) ) {
52 #if ( scalar( @{ $self->args } ) == 0 ) {
53 $self->usage_text;
54 }
55
56 my $tagadd = Bio::Tradis::AddTagsToSeq->new(
57 bamfile => $self->bamfile,
58 outfile => $self->outfile,
59 verbose => $self->verbose,
60 samtools_exec => $self->samtools_exec
61 );
62 $tagadd->add_tags_to_seq;
63 }
64
65 sub usage_text {
66 print <<USAGE;
67 Adds transposon sequence and quality tags to the read strings and
68 outputs a BAM.
69
70 Usage: add_tags -b file.bam [options]
71
72 Options:
73 -b : bam file with tradis tags
74 -o : output BAM name (optional. default: <file>.tr.bam)
75 -v : verbose debugging output
76
77 USAGE
78 exit;
79 }
80
81 __PACKAGE__->meta->make_immutable;
82 no Moose;
83 1;
0 package Bio::Tradis::CommandLine::CheckTags;
1
2 # ABSTRACT: Check for presence of tr tag in BAM file
3
4 =head1 SYNOPSIS
5
6 Check for presence of tr tag in BAM file
7
8 =cut
9
10 use Moose;
11 use Getopt::Long qw(GetOptionsFromArray);
12 use Cwd 'abs_path';
13 use Bio::Tradis::DetectTags;
14
15 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
16 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
17 has 'bamfile' => ( is => 'rw', isa => 'Str', required => 0 );
18 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
19 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
20
21 sub BUILD {
22 my ($self) = @_;
23
24 my (
25 $bamfile, $help, $samtools_exec
26 );
27
28 GetOptionsFromArray(
29 $self->args,
30 'b|bamfile=s' => \$bamfile,
31 'h|help' => \$help,
32 'samtools_exec=s' => \$samtools_exec,
33 );
34
35 $self->bamfile(abs_path($bamfile)) if ( defined($bamfile) );
36 $self->help($help) if ( defined($help) );
37 $self->samtools_exec($samtools_exec) if ( defined($samtools_exec) );
38
39 # print usage text if required parameters are not present
40 ($bamfile) or die $self->usage_text;
41 }
42
43 sub run {
44 my ($self) = @_;
45
46 if ( defined( $self->help ) ) {
47 $self->usage_text;
48 }
49
50 my $tagcheck = Bio::Tradis::DetectTags->new(bamfile => $self->bamfile, samtools_exec => $self->samtools_exec );
51 print $tagcheck->tags_present . "\n";
52 }
53
54 sub usage_text {
55 print <<USAGE;
56 Check for the existence of tradis tags in a bam
57
58 Usage: check_tags -b file.bam
59
60 Options:
61 -b : bam file with tradis tags
62
63 USAGE
64 exit;
65 }
66
67 __PACKAGE__->meta->make_immutable;
68 no Moose;
69 1;
0 package Bio::Tradis::CommandLine::FilterFastqTags;
1
2 # ABSTRACT: Remove given tags from the start of the sequence
3
4 =head1 SYNOPSIS
5
6 Removes tags from the sequence and quality strings
7
8 =cut
9
10 use Moose;
11 use Getopt::Long qw(GetOptionsFromArray);
12 use Cwd 'abs_path';
13 use Bio::Tradis::FilterTags;
14
15 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
16 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
17 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 0 );
18 has 'tag' => ( is => 'rw', isa => 'Str', required => 0 );
19 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 0, default => 0 );
20 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
21 has 'outfile' => ( is => 'rw', isa => 'Str', required => 0 );
22
23 sub BUILD {
24 my ($self) = @_;
25
26 my ( $fastqfile, $tag, $mismatch, $outfile, $help );
27
28 GetOptionsFromArray(
29 $self->args,
30 'f|fastqfile=s' => \$fastqfile,
31 't|tag=s' => \$tag,
32 'm|mismatch=i' => \$mismatch,
33 'o|outfile=s' => \$outfile,
34 'h|help' => \$help
35 );
36
37 $self->fastqfile( abs_path($fastqfile) ) if ( defined($fastqfile) );
38 $self->tag($tag) if ( defined($tag) );
39 $self->mismatch($mismatch) if ( defined($mismatch) );
40 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
41 $self->help($help) if ( defined($help) );
42
43 # print usage text if required parameters are not present
44 ($fastqfile && $tag) or die $self->usage_text;
45 }
46
47 sub run {
48 my ($self) = @_;
49
50 if ( defined( $self->help ) ) {
51
52 #if ( scalar( @{ $self->args } ) == 0 ) {
53 $self->usage_text;
54 }
55
56 my $tag_filter = Bio::Tradis::FilterTags->new(
57 fastqfile => $self->fastqfile,
58 tag => $self->tag,
59 mismatch => $self->mismatch,
60 outfile => $self->outfile
61 );
62 $tag_filter->filter_tags;
63 }
64
65 sub usage_text {
66 print <<USAGE;
67 Filters a BAM file and outputs reads with tag matching -t option
68
69 Usage: filter_tags -b file.bam -t tag [options]
70
71 Options:
72 -f : fastq file with tradis tags attached
73 -t : tag to search for
74 -m : number of mismatches to allow when matching tag (optional. default = 0)
75 -o : output file name (optional. default: <file>.tag.fastq)
76
77 USAGE
78 exit;
79 }
80
81 __PACKAGE__->meta->make_immutable;
82 no Moose;
83 1;
0 package Bio::Tradis::CommandLine::PlotCombine;
1
2 # ABSTRACT: Combine multiple plotfiles and generate updated statistics for the combined files
3
4 =head1 SYNOPSIS
5
6 Takes a tab-delimited file with an ID as the first column followed by
7 a list of plotfiles to combine per row. The ID will be used to name the new
8 plotfile and as an identifier in the stats file, so ensure these are unique.
9
10 For example, an input file named plots_to_combine.txt:
11
12 tradis1 plot1.1.gz plot1.2.gz plot1.3.gz
13 tradis2 plot2.1.gz plot2.2.gz
14 tradis3 plot3.1.gz plot3.2.gz plot3.3.gz plot3.4.gz
15
16 will produce:
17
18 =over
19
20 =item 1. a directory named combined with 3 files - tradis1.insertion_site_plot.gz,
21 tradis2.insertion_site_plot.gz, tradis3.insertion_site_plot.gz
22
23 =item 2. a stats file named plots_to_combine.stats
24
25 =back
26
27 =cut
28
29 use Moose;
30 use Getopt::Long qw(GetOptionsFromArray);
31 use Cwd 'abs_path';
32 use Bio::Tradis::CombinePlots;
33
34 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
35 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
36 has 'plotfile' => ( is => 'rw', isa => 'Str', required => 0 );
37 has 'output_dir' => ( is => 'rw', isa => 'Str', default => 'combined' );
38 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
39
40 sub BUILD {
41 my ($self) = @_;
42
43 my ( $plotfile, $output_dir, $help );
44
45 GetOptionsFromArray(
46 $self->args,
47 'p|plotfile=s' => \$plotfile,
48 'o|output_dir' => \$output_dir,
49 'h|help' => \$help
50 );
51
52 $self->plotfile( abs_path($plotfile) ) if ( defined($plotfile) );
53 $self->help($help) if ( defined($help) );
54
55 # print usage text if required parameters are not present
56 ($plotfile) or die $self->usage_text;
57 }
58
59 sub run {
60 my ($self) = @_;
61
62 $self->usage_text if ( defined( $self->help ) );
63
64 Bio::Tradis::CombinePlots->new(
65 plotfile => $self->plotfile,
66 combined_dir => $self->output_dir,
67 )->combine;
68 }
69
70 sub usage_text {
71 print <<USAGE;
72 Combine multiple plotfiles and generate updated statistics for the combined
73 files. Takes a tab-delimited file with an ID as the first column followed by
74 a list of plotfiles to combine per row. The ID will be used to name the new
75 plotfile and as an identifier in the stats file, so ensure these are unique.
76
77 For example, an input file named plots_to_combine.txt:
78
79 tradis1 plot1.1.gz plot1.2.gz plot1.3.gz
80 tradis2 plot2.1.gz plot2.2.gz
81 tradis3 plot3.1.gz plot3.2.gz plot3.3.gz plot3.4.gz
82
83 will produce
84 1. a directory named combined with 3 files - tradis1.insertion_site_plot.gz,
85 tradis2.insertion_site_plot.gz, tradis3.insertion_site_plot.gz
86 2. a stats file named plots_to_combine.stats
87
88 Usage: combine_tradis_plots -p plots.txt
89
90 Options:
91 -p|plotfile : file with plots to be combined
92 -o|output_dir : name of directory for output (default: combined)
93
94 USAGE
95 exit;
96 }
97
98 __PACKAGE__->meta->make_immutable;
99 no Moose;
100 1;
0 package Bio::Tradis::CommandLine::PlotTradis;
1
2 # ABSTRACT: Generate plots as part of a tradis analysis
3
4 =head1 SYNOPSIS
5
6 Generate insertion plots for Artemis from a mapped fastq file and
7 a reference in GFF format
8
9 =cut
10
11 use Moose;
12 use Getopt::Long qw(GetOptionsFromArray);
13 use Cwd 'abs_path';
14 use Bio::Tradis::TradisPlot;
15
16 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
17 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
18 has 'mappedfile' => ( is => 'rw', isa => 'Str', required => 0 );
19 has 'mapping_score' => ( is => 'rw', isa => 'Int', required => 0, default => 30);
20 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
21 has 'outfile' => ( is => 'rw', isa => 'Str', required => 0, default => 'tradis.plot' );
22
23 sub BUILD {
24 my ($self) = @_;
25
26 my ( $mappedfile, $outfile, $mapping_score, $help );
27
28 GetOptionsFromArray(
29 $self->args,
30 'f|mappedfile=s' => \$mappedfile,
31 'o|outfile=s' => \$outfile,
32 'm|mapping_score=i' => \$mapping_score,
33 'h|help' => \$help
34 );
35
36 $self->mappedfile( abs_path($mappedfile) ) if ( defined($mappedfile) );
37 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
38 $self->mapping_score($mapping_score) if ( defined($mapping_score) );
39 $self->help($help) if ( defined($help) );
40
41 # print usage text if required parameters are not present
42 ($mappedfile) or die $self->usage_text;
43 }
44
45 sub run {
46 my ($self) = @_;
47
48 if ( defined( $self->help ) ) {
49 #if ( scalar( @{ $self->args } ) == 0 ) {
50 $self->usage_text;
51 }
52
53 my $plot = Bio::Tradis::TradisPlot->new(
54 mappedfile => $self->mappedfile,
55 outfile => $self->outfile,
56 mapping_score => $self->mapping_score
57 );
58 $plot->plot;
59 }
60
61 sub usage_text {
62 print <<USAGE;
63 Create insertion site plot for Artemis
64
65 Usage: tradis_plot -f file.bam [options]
66
67 Options:
68 -f : mapped, sorted bam file
69 -m : mapping quality must be greater than X (optional. default: 30)
70 -o : output base name for plot (optional. default: tradis.plot)
71
72 USAGE
73 exit;
74 }
75
76 __PACKAGE__->meta->make_immutable;
77 no Moose;
78 1;
0 package Bio::Tradis::CommandLine::RemoveFastqTags;
1
2 # ABSTRACT: Remove given tags from the start of the sequence
3
4 =head1 SYNOPSIS
5
6 Removes tags from the sequence and quality strings
7
8 =cut
9
10 use Moose;
11 use Getopt::Long qw(GetOptionsFromArray);
12 use Cwd 'abs_path';
13 use Bio::Tradis::RemoveTags;
14
15 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
16 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
17 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 0 );
18 has 'tag' => ( is => 'rw', isa => 'Str', required => 0 );
19 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 0, default => 0 );
20 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
21 has 'outfile' => ( is => 'rw', isa => 'Str', required => 0 );
22
23 sub BUILD {
24 my ($self) = @_;
25
26 my ( $fastqfile, $tag, $mismatch, $outfile, $help );
27
28 GetOptionsFromArray(
29 $self->args,
30 'f|fastqfile=s' => \$fastqfile,
31 't|tag=s' => \$tag,
32 'm|mismatch=i' => \$mismatch,
33 'o|outfile=s' => \$outfile,
34 'h|help' => \$help
35 );
36
37 $self->fastqfile( abs_path($fastqfile) ) if ( defined($fastqfile) );
38 $self->tag($tag) if ( defined($tag) );
39 $self->mismatch($mismatch) if ( defined($mismatch) );
40 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
41 $self->help($help) if ( defined($help) );
42
43 # print usage text if required parameters are not present
44 ($fastqfile && $tag) or die $self->usage_text;
45 }
46
47 sub run {
48 my ($self) = @_;
49
50 if ( defined( $self->help ) ) {
51
52 #if ( scalar( @{ $self->args } ) == 0 ) {
53 $self->usage_text;
54 }
55
56 my $tag_rm = Bio::Tradis::RemoveTags->new(
57 fastqfile => $self->fastqfile,
58 tag => $self->tag,
59 mismatch => $self->mismatch,
60 outfile => $self->outfile
61 );
62 $tag_rm->remove_tags;
63 }
64
65 sub usage_text {
66 print <<USAGE;
67 Removes transposon sequence and quality tags from the read strings
68
69 Usage: remove_tags -f file.fastq [options]
70
71 Options:
72 -f : fastq file with tradis tags
73 -t : tag to remove
74 -m : number of mismatches to allow when matching tag (optional. default = 0)
75 -o : output file name (optional. default: <file>.rmtag.fastq)
76
77 USAGE
78 exit;
79 }
80
81 __PACKAGE__->meta->make_immutable;
82 no Moose;
83 1;
0 package Bio::Tradis::CommandLine::RunMapping;
1
2 # ABSTRACT: Perform mapping
3
4 =head1 SYNOPSIS
5
6 Takes a reference genome and indexes it.
7 Maps given fastq files to ref.
8
9 =cut
10
11 use Moose;
12 use Getopt::Long qw(GetOptionsFromArray);
13 use Cwd 'abs_path';
14 use Bio::Tradis::Map;
15
16 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
17 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
18 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 0 );
19 has 'reference' => ( is => 'rw', isa => 'Str', required => 0 );
20 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
21 has 'refname' =>
22 ( is => 'rw', isa => 'Str', required => 0, default => 'ref.index' );
23 has 'outfile' =>
24 ( is => 'rw', isa => 'Str', required => 0, default => 'mapped.sam' );
25 has 'smalt_k' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
26 has 'smalt_s' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
27 has 'smalt_y' => ( is => 'rw', isa => 'Maybe[Num]', required => 0, default => 0.96 );
28 has 'smalt_r' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => -1 );
29 has 'smalt_n' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => 1 );
30
31 sub BUILD {
32 my ($self) = @_;
33
34 my ( $fastqfile, $ref, $refname, $outfile, $smalt_k, $smalt_s, $smalt_y, $smalt_r,$smalt_n, $help );
35
36 GetOptionsFromArray(
37 $self->args,
38 'f|fastqfile=s' => \$fastqfile,
39 'r|reference=s' => \$ref,
40 'rn|refname=s' => \$refname,
41 'o|outfile=s' => \$outfile,
42 'sk|smalt_k=i' => \$smalt_k,
43 'ss|smalt_s=i' => \$smalt_s,
44 'sy|smalt_y=f' => \$smalt_y,
45 'sr|smalt_r=i' => \$smalt_r,
46 'n|smalt_n=i' => \$smalt_n,
47 'h|help' => \$help
48 );
49
50 $self->fastqfile( abs_path($fastqfile) ) if ( defined($fastqfile) );
51 $self->reference( abs_path($ref) ) if ( defined($ref) );
52 $self->refname($refname) if ( defined($refname) );
53 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
54 $self->smalt_k( $smalt_k ) if ( defined($smalt_k) );
55 $self->smalt_s( $smalt_s ) if ( defined($smalt_s) );
56 $self->smalt_y( $smalt_y ) if ( defined($smalt_y) );
57 $self->smalt_r( $smalt_r ) if ( defined($smalt_r) );
58 $self->smalt_n( $smalt_n ) if ( defined($smalt_n) );
59 $self->help($help) if ( defined($help) );
60
61 # print usage text if required parameters are not present
62 ($fastqfile && $ref) or die $self->usage_text;
63 }
64
65 sub run {
66 my ($self) = @_;
67
68 if ( defined( $self->help ) ) {
69 #if ( scalar( @{ $self->args } ) == 0 ) {
70 $self->usage_text;
71 }
72
73 my $mapping = Bio::Tradis::Map->new(
74 fastqfile => $self->fastqfile,
75 reference => $self->reference,
76 refname => $self->refname,
77 outfile => $self->outfile,
78 smalt_k => $self->smalt_k,
79 smalt_s => $self->smalt_s,
80 smalt_y => $self->smalt_y,
81 smalt_r => $self->smalt_r
82 );
83 $mapping->index_ref;
84 $mapping->do_mapping;
85 }
86
87 sub usage_text {
88 print <<USAGE;
89 Indexes the reference genome and maps the given fastq file.
90 -k and -s options for indexing are calculated for the length of
91 the read as follows unless otherwise specified ( --smalt_k &
92 --smalt_s options )
93 Read length | k | s
94 ---------------+----+-----
95 <70 | 13 | 4
96 >70 & <100 | 13 | 6
97 >100 | 20 | 13
98
99 Usage: run_mapping -f file.fastq -r ref.fa [options]
100
101 Options:
102 -f : fastq file to map
103 -r : reference in fasta format
104 -rn : reference index name (optional. default: ref.index)
105 -o : mapped SAM output name (optional. default: mapped.sam)
106 --smalt_k : custom k-mer value for SMALT mapping
107 --smalt_s : custom step size for SMALT mapping
108 --smalt_r : custom r value for SMALT mapping
109 -n : number of threads to use for SMALT and samtools sort (optional. default = 1)
110
111 USAGE
112 exit;
113 }
114
115 __PACKAGE__->meta->make_immutable;
116 no Moose;
117 1;
0 package Bio::Tradis::CommandLine::TradisAnalysis;
1
2 # ABSTRACT: Perform full tradis analysis
3
4 =head1 SYNOPSIS
5
6 Takes a fastq, reference and a tag and generates insertion
7 site plots for use in Artemis
8
9 =cut
10
11 use Moose;
12 use Getopt::Long qw(GetOptionsFromArray);
13 use Cwd qw(abs_path cwd);
14 use Bio::Tradis::RunTradis;
15 use TryCatch;
16
17 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
18 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
19 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 0 );
20 has 'tag' => ( is => 'rw', isa => 'Str', required => 0 );
21 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 0, default => 0 );
22 has 'tagdirection' =>
23 ( is => 'rw', isa => 'Str', required => 0, default => '3' );
24 has 'reference' => ( is => 'rw', isa => 'Str', required => 0 );
25 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
26 has 'mapping_score' =>
27 ( is => 'rw', isa => 'Int', required => 0, default => 30 );
28 has 'smalt_k' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
29 has 'smalt_s' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
30 has 'smalt_y' => ( is => 'rw', isa => 'Maybe[Num]', required => 0, default => 0.96 );
31 has 'smalt_r' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => -1 );
32 has 'smalt_n' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => 1 );
33 has 'essentiality' => ( is => 'rw', isa => 'Bool', required => 0, default => 0);
34
35 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
36 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
37
38 has '_output_directory' => (
39 is => 'rw',
40 isa => 'Str',
41 required => 0,
42 lazy => 1,
43 builder => '_build__output_directory'
44 );
45
46 has '_stats_handle' => (
47 is => 'ro',
48 isa => 'FileHandle',
49 required => 0,
50 lazy => 1,
51 builder => '_build__stats_handle'
52 );
53
54 sub BUILD {
55 my ($self) = @_;
56
57 my (
58 $fastqfile, $tag, $td, $mismatch, $ref,$smalt_n, $essentiality,
59 $map_score, $smalt_k, $smalt_s, $smalt_y, $smalt_r, $help, $verbose,$samtools_exec
60 );
61
62 GetOptionsFromArray(
63 $self->args,
64 'f|fastqfile=s' => \$fastqfile,
65 't|tag=s' => \$tag,
66 'td|tagdirection=i' => \$td,
67 'mm|mismatch=i' => \$mismatch,
68 'r|reference=s' => \$ref,
69 'm|mapping_score=i' => \$map_score,
70 'sk|smalt_k=i' => \$smalt_k,
71 'ss|smalt_s=i' => \$smalt_s,
72 'sy|smalt_y=f' => \$smalt_y,
73 'n|smalt_n=i' => \$smalt_n,
74 'sr|smalt_r=i' => \$smalt_r,
75 'v|verbose' => \$verbose,
76 'samtools_exec=s' => \$samtools_exec,
77 'e|essentiality' => \$essentiality,
78 'h|help' => \$help
79 );
80
81 #Essentiality analysis requires different defaults.
82 if(!defined($smalt_r) && !defined($map_score) && defined($essentiality))
83 {
84 $self->essentiality($essentiality) if ( defined($essentiality));
85 $smalt_r = 0;
86 $map_score = 0;
87 }
88
89 $self->fastqfile( abs_path($fastqfile) ) if ( defined($fastqfile) );
90 $self->tag( uc($tag) ) if ( defined($tag) );
91 $self->tagdirection($td) if ( defined($td) );
92 $self->mismatch($mismatch) if ( defined($mismatch) );
93 $self->reference( abs_path($ref) ) if ( defined($ref) );
94 $self->mapping_score($map_score) if ( defined($map_score) );
95 $self->smalt_k($smalt_k) if ( defined($smalt_k) );
96 $self->smalt_s($smalt_s) if ( defined($smalt_s) );
97 $self->smalt_y($smalt_y) if ( defined($smalt_y) );
98 $self->smalt_r($smalt_r) if ( defined($smalt_r) );
99 $self->smalt_n($smalt_n) if ( defined($smalt_n) );
100 $self->help($help) if ( defined($help) );
101 $self->verbose($verbose) if ( defined($verbose));
102 $self->samtools_exec($samtools_exec) if ( defined($samtools_exec) );
103
104 # print usage text if required parameters are not present
105 ( $fastqfile && $tag && $ref ) or die $self->usage_text;
106 }
107
108 sub run {
109 my ($self) = @_;
110
111 if ( defined( $self->help ) ) {
112
113 #if ( scalar( @{ $self->args } ) == 0 ) {
114 $self->usage_text;
115 }
116
117 #parse list of files and run pipeline for each one if they all exist
118 my $fq = $self->fastqfile;
119 open( FILES, "<", $fq ) or die "Cannot find $fq";
120 my @filelist = <FILES>;
121 my $file_dir = $self->get_file_dir;
122
123 #check files exist before running
124 my $line_no = 0;
125 my $full_path;
126 foreach my $f1 (@filelist) {
127 chomp($f1);
128 $line_no++;
129 if ( $f1 =~ /^\// ) { $full_path = $f1; }
130 else { $full_path = "$file_dir/$f1"; }
131 unless ( -e $full_path ) {
132 die "File $full_path does not exist ($fq, line $line_no)\n";
133 }
134 }
135
136 #if all files exist, continue with analysis
137 my $at_least_one_good_fastq = 0;
138 foreach my $f2 (@filelist) {
139 chomp($f2);
140 if ( $f2 =~ /^\// ) { $full_path = $f2; }
141 else { $full_path = "$file_dir/$f2"; }
142 my $analysis = Bio::Tradis::RunTradis->new(
143 fastqfile => $full_path,
144 tag => $self->tag,
145 tagdirection => $self->tagdirection,
146 mismatch => $self->mismatch,
147 reference => $self->reference,
148 mapping_score => $self->mapping_score,
149 output_directory => $self->_output_directory,
150 _stats_handle => $self->_stats_handle,
151 smalt_k => $self->smalt_k,
152 smalt_s => $self->smalt_s,
153 smalt_y => $self->smalt_y,
154 smalt_r => $self->smalt_r,
155 smalt_n => $self->smalt_n,
156 verbose => $self->verbose,
157 samtools_exec => $self->samtools_exec
158 );
159 try {
160 $analysis->run_tradis;
161 $at_least_one_good_fastq = 1;
162 }
163 catch (Bio::Tradis::Exception::TagFilterError $e) {
164 my $tag = $self->tag;
165 warn "There was a problem filtering '$full_path' by '$tag'; it looks like the tag was not found in any read\n";
166 }
167 }
168 if ( ! $at_least_one_good_fastq ) {
169 Bio::Tradis::Exception::TagFilterError->throw( error => "None of the input files contained the specified tag. Please check that your inputs are valid fastq files and that at least one read in one of them starts with the specified tag\n" );
170 }
171
172 $self->_tidy_stats;
173 close(FILES);
174
175 #$self->_combine_plots;
176 }
177
178 sub _build__output_directory {
179 return cwd();
180 }
181
182 sub _stats_filename {
183 my ($self) = @_;
184 my $dir = $self->get_file_dir;
185 my $output_directory = $self->_output_directory;
186 my $stats_filename = $self->fastqfile;
187 $stats_filename =~ s/$dir\///;
188 $stats_filename =~ s/[^\.]+$/stats/;
189 return "$output_directory/$stats_filename";
190 }
191
192 sub _build__stats_handle {
193 my ($self) = @_;
194 my $stats_filename = $self->_stats_filename();
195 open( my $stats, ">", $stats_filename );
196 return $stats;
197 }
198
199 sub _tidy_stats {
200 my ($self) = @_;
201 my $output_directory = $self->_output_directory;
202 my $stats_filename = $self->_stats_filename();
203 open( STATS, '<', $stats_filename );
204 open( TMP, '>', "$output_directory/tmp.stats" );
205
206 my $header = 0;
207 while ( my $line = <STATS> ) {
208 if ( $line =~ /^File/ ) {
209 if ( $header == 0 ) {
210 print TMP "$line";
211 $header = 1;
212 }
213 }
214 else {
215 print TMP "$line";
216 }
217 }
218 close(TMP);
219 close(STATS);
220 system("mv $output_directory/tmp.stats $stats_filename");
221 }
222
223 sub _combine_plots {
224 my ($self) = @_;
225 my $filelist = $self->fastqfile;
226
227 return 1;
228 }
229
230 sub get_file_dir {
231 my ($self) = @_;
232 my $fq = $self->fastqfile;
233
234 my @dirs = split( '/', $fq );
235 pop(@dirs);
236 return join( '/', @dirs );
237 }
238
239 sub usage_text {
240 print <<USAGE;
241 Run a TraDIS analysis. This involves:
242 1: filtering the data with tags matching that passed via -t option
243 2: removing the tags from the sequences
244 3: mapping
245 4: creating an insertion site plot
246 5: creating a stats summary
247
248 Usage: bacteria_tradis [options]
249
250 Options:
251 -f : text file listing fastq files with tradis tags attached
252 -t : tag to search for
253 -r : reference genome in fasta format (.fa)
254 -td : tag direction - 3 or 5 (optional. default = 3)
255 -mm : number of mismatches allowed when matching tag (optional. default = 0)
256 -m : mapping quality cutoff score (optional. default = 30)
257 --smalt_k : custom k-mer value for SMALT mapping (optional)
258 --smalt_s : custom step size for SMALT mapping (optional)
259 --smalt_y : custom y parameter for SMALT (optional. default = 0.96)
260 --smalt_r : custom r parameter for SMALT (optional. default = -1)
261 -n : number of threads to use for SMALT and samtools sort (optional. default = 1)
262 -e : set defaults for essentiality experiment (smalt_r = 0, -m = 0)
263 -v : verbose debugging output
264 USAGE
265 exit;
266 }
267
268 __PACKAGE__->meta->make_immutable;
269 no Moose;
270 1;
0 package Bio::Tradis::CommandLine::TradisBam;
1
2 # ABSTRACT: Adds tags to sequences if tags are present
3
4 =head1 SYNOPSIS
5
6 Checks for tradis tags in the BAM and outputs processed TraDIS BAM file
7 with tags attached
8
9 =cut
10
11 use Moose;
12 use Getopt::Long qw(GetOptionsFromArray);
13 use Cwd 'abs_path';
14 use Bio::Tradis::DetectTags;
15 use Bio::Tradis::AddTagsToSeq;
16
17 has 'args' => ( is => 'ro', isa => 'ArrayRef', required => 1 );
18 has 'script_name' => ( is => 'ro', isa => 'Str', required => 1 );
19 has 'bamfile' => ( is => 'rw', isa => 'Str', required => 1 );
20 has 'outfile' => (
21 is => 'rw',
22 isa => 'Str',
23 required => 0,
24 default => sub {
25 my $o = $self->bamfile;
26 $o =~ s/\.bam/\.tr\.bam/;
27 return $o;
28 }
29 );
30 has 'help' => ( is => 'rw', isa => 'Bool', required => 0 );
31 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
32 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
33
34 sub BUILD {
35 my ($self) = @_;
36
37 my ( $bamfile, $help, $outfile, $verbose, $samtools_exec );
38
39 GetOptionsFromArray(
40 $self->args,
41 'b|bamfile=s' => \$bamfile,
42 'o|outfile=s' => \$outfile,
43 'h|help' => \$help,
44 'v|verbose' => \$verbose,
45 'samtools_exec=s' => \$samtools_exec,
46 );
47
48 $self->bamfile( abs_path($bamfile) ) if ( defined($bamfile) );
49 $self->outfile( abs_path($outfile) ) if ( defined($outfile) );
50 $self->help($help) if ( defined($help) );
51 $self->verbose($verbose) if ( defined($verbose) );
52 $self->samtools_exec($samtools_exec) if ( defined($samtools_exec) );
53
54 # print usage text if required parameters are not present
55 ($bamfile) or die $self->usage_text;
56 }
57
58 sub run {
59 my ($self) = @_;
60
61 if ( defined( $self->help ) ) {
62 $self->usage_text;
63 }
64
65 my $is_tradis =
66 Bio::Tradis::DetectTags->new(
67 bamfile => $self->bamfile,
68 samtools_exec => $self->samtools_exec
69 )->tags_present;
70 if ( defined($is_tradis) && $is_tradis == 1 ) {
71 my $add_tag_obj = Bio::Tradis::AddTagsToSeq->new(
72 bamfile => $self->bamfile,
73 outfile => $self->outfile,
74 verbose => $self->verbose,
75 samtools_exec => $self->samtools_exec
76 );
77 $add_tag_obj->add_tags_to_seq;
78 }
79 }
80
81 sub usage_text {
82 print <<USAGE;
83 Checks for tradis tags in the BAM and outputs processed TraDIS BAM file
84 with tags attached
85
86 Usage: bam_to_tradis_bam -b file.bam [options]
87
88 Options:
89 -b : bam file
90 -o : output BAM name (optional. default: <file>.tr.bam)
91 -v : verbose debugging output
92 USAGE
93 exit;
94 }
95
96 __PACKAGE__->meta->make_immutable;
97 no Moose;
98 1;
0 package Bio::Tradis::DetectTags;
1
2 # ABSTRACT: Detect tr tags in BAM file
3
4 =head1 NAME
5
6 Bio::Tradis::DetectTags
7
8 =head1 SYNOPSIS
9
10 Detects presence of tr/tq tags in BAM files from Tradis analyses
11 use Bio::Tradis::DetectTags;
12
13 my $pipeline = Bio::Tradis::DetectTags->new(bamfile => 'abc');
14 $pipeline->tags_present();
15
16 =head1 PARAMETERS
17
18 =head2 Required
19
20 C<bamfile> - path to/name of file to check
21
22 =head1 METHODS
23
24 C<tags_present> - returns true if TraDIS tags are detected in C<bamfile>
25
26 =cut
27
28 use Moose;
29 use Bio::Tradis::Parser::Bam
30
31 has 'bamfile' => ( is => 'ro', isa => 'Str', required => 1 );
32 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
33
34 sub tags_present {
35 my ($self) = @_;
36 my $pars = Bio::Tradis::Parser::Bam->new( file => $self->bamfile, samtools_exec => $self->samtools_exec );
37 my $read_info = $pars->read_info;
38 $pars->next_read;
39 $read_info = $pars->read_info;
40 if(defined(${$read_info}{tr}))
41 {
42 return 1;
43 }
44 else
45 {
46 return 0;
47 }
48
49 }
50
51 __PACKAGE__->meta->make_immutable;
52 no Moose;
53 1;
0 package Bio::Tradis::Exception;
1 # ABSTRACT: Exceptions for input data
2
3 =head1 SYNOPSIS
4
5 Exceptions for input data
6
7 =cut
8
9
10 use Exception::Class (
11 Bio::Tradis::Exception::RefNotFound => { description => 'Cannot find the reference file' },
12 Bio::Tradis::Exception::TagFilterError => { description => 'Problem filtering the Fastq by tag' }
13 );
14
15 1;
0 package Bio::Tradis::FilterTags;
1
2 # ABSTRACT: Filter tags in a fastq file
3
4 =head1 SYNOPSIS
5
6 Reads in a fastq file with tradis tags already attached to the start of the sequence
7 Filters reads that contain the provided tag
8 Outputs a file *.tag.fastq unless an alternative outfile name is specified
9
10 use Bio::Tradis::FilterTags;
11
12 my $pipeline = Bio::Tradis::FilterTags->new(fastqfile => 'abc', tag => 'abc');
13 $pipeline->filter_tags();
14
15 =head1 PARAMETERS
16
17 =head2 Required
18
19 =over
20
21 =item * C<fastqfile> - path to/name of file to filter. This may be a gzipped fastq file, in which case a temporary unzipped version is used and removed on completion.
22
23 =item * C<tag> - TraDIS tag to match
24
25 =back
26
27 =head2 Optional
28
29 =over
30
31 =item * C<mismatch> - number of mismatches to allow when matching the tag. Default = 0
32
33 =item * C<outfile> - output file name. Defaults to C<file.tag.fastq> for an input file named C<file.fastq>
34
35 =back
36
37 =head1 METHODS
38
39 C<filter_tags> - outputs all reads containing the provided tag to C<outfile>
40
41 =cut
42
43 use Moose;
44 use Bio::Tradis::Parser::Fastq;
45
46 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 1 );
47 has '_unzipped_fastq' =>
48 ( is => 'rw', isa => 'Str', lazy => 1, builder => '_build__unzipped_fastq' );
49 has 'tag' => ( is => 'rw', isa => 'Str', required => 1 );
50 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 0 );
51 has 'outfile' => (
52 is => 'rw',
53 isa => 'Str',
54 required => 0,
55 default => sub {
56 my ($self) = @_;
57 my $o = $self->fastqfile;
58 $o =~ s/\.fastq/\.tag\.fastq/;
59 return $o;
60 }
61 );
62 has '_currentread' => (
63 is => 'rw',
64 isa => 'ArrayRef',
65 required => 0,
66 writer => '_set_currentread'
67 );
68
69 sub _is_gz {
70 my ($self) = @_;
71 my $fq = $self->fastqfile;
72
73 if ( $fq =~ /\.gz/ ) {
74 return 1;
75 }
76 else {
77 return 0;
78 }
79 }
80
81 sub _build__unzipped_fastq {
82 my ($self) = @_;
83 my $fq = $self->fastqfile;
84
85 if ( $self->_is_gz ) {
86 $fq =~ /([^\/]+)$/;
87 my $newfq = $1;
88 $newfq =~ s/\.gz//;
89 if ( !-e $newfq ) {
90 `gunzip -c $fq > $newfq`;
91 }
92 return $newfq;
93 }
94 else {
95 return $fq;
96 }
97 }
98
99 sub filter_tags {
100 my ($self) = @_;
101 my $tag = uc( $self->tag );
102 my $outfile = $self->outfile;
103
104 #set up fastq parser
105 my $filename = $self->_unzipped_fastq;
106 my $pars = Bio::Tradis::Parser::Fastq->new( file => $filename );
107
108 open( OUTFILE, ">$outfile" );
109
110 while ( $pars->next_read ) {
111 my @read = $pars->read_info;
112 $self->_set_currentread( \@read );
113 my $id = $read[0];
114 my $seq_string = $read[1];
115 my $qual_string = $read[2];
116
117 my $print_out = 0;
118 if ( $self->mismatch == 0 ) {
119 if ( $seq_string =~ /^$tag/ ) {
120 $print_out = 1;
121 }
122 }
123 else {
124 my $mm = $self->_tag_mismatch($seq_string);
125 if ( $mm <= $self->mismatch ) {
126 $print_out = 1;
127 }
128 }
129
130 if ($print_out) {
131 print OUTFILE "\@$id\n";
132 print OUTFILE $seq_string . "\n+\n";
133 print OUTFILE $qual_string . "\n";
134 }
135 }
136 if ( $self->_is_gz ) {
137 unlink( $self->_unzipped_fastq );
138 }
139 close OUTFILE;
140 return 1;
141 }
142
143 sub _tag_mismatch {
144 my ($self) = @_;
145 my $tag_len = length( $self->tag );
146 my $seq_string = ${ $self->_currentread }[1];
147
148 my @tag = split( "", $self->tag );
149 my @seq = split( "", substr( $seq_string, 0, $tag_len ) );
150 my $mismatches = 0;
151 foreach my $i ( 0 .. ( $tag_len - 1 ) ) {
152 if ( $tag[$i] ne $seq[$i] ) {
153 $mismatches++;
154 }
155 }
156 return $mismatches;
157 }
158
159 __PACKAGE__->meta->make_immutable;
160 no Moose;
161 1;
0 package Bio::Tradis::Map;
1
2 # ABSTRACT: Perform mapping
3
4 =head1 SYNOPSIS
5
6 Takes a reference genome and indexes it.
7 Maps given fastq files to ref.
8
9 use Bio::Tradis::Map;
10
11 my $pipeline = Bio::Tradis::Map->new(fastqfile => 'abc', reference => 'abc');
12 $pipeline->index_ref();
13 $pipeline->do_mapping();
14
15 =head1 PARAMETERS
16
17 =head2 Required
18
19 =over
20
21 =item * C<fastqfile> - path to/name of file containing reads to map to the reference
22
23 =item * C<reference> - path to/name of reference genome in fasta format (.fa)
24
25 =back
26
27 =head2 Optional
28
29 =over
30
31 =item * C<refname> - name to assign to the reference index files. Default = ref.index
32
33 =item * C<outfile> - name to assign to the mapped SAM file. Default = mapped.sam
34
35 =back
36
37 =head1 METHODS
38
39 =over
40
41 =item * C<index_ref> - create index files of the reference genome. These are required
42 for the mapping step. Only skip this step if index files already
43 exist. -k and -s options for referencing are calculated based
44 on the length of the reads being mapped as per table:
45
46 =begin html
47
48 <table>
49 <tr><th>Read length</th><th>k</th><th>s</th></tr>
50 <tr><td><70</td><td>13</td><td>4<td></tr>
51 <tr><td>>70 and <100</td><td>13</td><td>6<td></tr>
52 <tr><td>>100</td><td>20</td><td>6<td></tr>
53 </table>
54
55 =end html
56
57 =item * C<do_mapping> - map C<fastqfile> to C<reference>. Options used for mapping are: C<-r -1 -x -y 0.96>
58
59 =back
60
61 For more information on the mapping and indexing options discussed here, see the L<SMALT manual|ftp://ftp.sanger.ac.uk/pub4/resources/software/smalt/smalt-manual-0.7.4.pdf>
62
63 =cut
64
65 use Moose;
66 use Bio::Tradis::Parser::Fastq;
67
68 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 1 );
69 has 'reference' => ( is => 'rw', isa => 'Str', required => 1 );
70 has 'refname' =>
71 ( is => 'rw', isa => 'Str', required => 0, default => 'ref.index' );
72 has 'outfile' =>
73 ( is => 'rw', isa => 'Str', required => 0, default => 'mapped.sam' );
74 has 'smalt_k' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
75 has 'smalt_s' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
76 has 'smalt_y' => ( is => 'rw', isa => 'Maybe[Num]', required => 0, default => 0.96 );
77 has 'smalt_r' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => -1 );
78 has 'smalt_n' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => 1 );
79
80 sub index_ref {
81 my ($self) = @_;
82 my $ref = $self->reference;
83 my $refname = $self->refname;
84
85 # Calculate index parameters
86 my $pars = Bio::Tradis::Parser::Fastq->new( file => $self->fastqfile );
87 $pars->next_read;
88 my @read = $pars->read_info;
89 my $read_len = length($read[1]);
90 my ( $k, $s ) = $self->_calculate_index_parameters($read_len);
91
92 my $cmd = "smalt index -k $k -s $s $refname $ref > /dev/null 2>&1";
93 system($cmd);
94 return $cmd;
95 }
96
97 sub _calculate_index_parameters {
98 my ($self, $read_len) = @_;
99 my ( $k, $s );
100
101 if( defined $self->smalt_k ){ $k = $self->smalt_k; }
102 else{ $k = $self->_smalt_k_default($read_len); }
103
104 if( defined $self->smalt_s ){ $s = $self->smalt_s; }
105 else{ $s = $self->_smalt_s_default($read_len); }
106
107 return ( $k, $s );
108 }
109
110 sub _smalt_k_default {
111 my ($self, $read_len) = @_;
112 if($read_len < 100){ return 13; }
113 else{ return 20; }
114 }
115
116 sub _smalt_s_default {
117 my ( $self, $read_len ) = @_;
118 if( $read_len < 70 ){ return 4; }
119 elsif( $read_len > 100 ){ return 13; }
120 else{ return 6; }
121 }
122
123 sub do_mapping {
124 my ($self) = @_;
125 my $fqfile = $self->fastqfile;
126 my $refname = $self->refname;
127 my $outfile = $self->outfile;
128 my $y = $self->smalt_y;
129 my $r = $self->smalt_r;
130 my $n = $self->smalt_n;
131
132 my $smalt = "smalt map -n $n -x -r $r -y $y $refname $fqfile 1> $outfile 2> smalt.stderr";
133
134 system($smalt);
135 unlink('smalt.stderr');
136
137 return $smalt;
138 }
139
140 __PACKAGE__->meta->make_immutable;
141 no Moose;
142 1;
0 package Bio::Tradis::Parser::Bam;
1
2 # ABSTRACT: Very basic BAM parser. Limited functionality.
3
4 =head1 SYNOPSIS
5
6 Parses BAM files and gives access to basic info in them.
7
8 use Bio::Tradis::Parser::Bam;
9
10 my $pipeline = Bio::Tradis::Parser::Bam->new(file => 'abc');
11 $pipeline->read_info;
12 $pipeline->next_read;
13 $pipeline->seq_info;
14 $pipeline->is_mapped;
15 $pipeline->is_reverse;
16
17 =cut
18
19 use Moose;
20
21 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
22 has 'file' => ( is => 'rw', isa => 'Str', required => 1 );
23 has '_bam_handle' => (
24 is => 'ro',
25 isa => 'FileHandle',
26 required => 0,
27 lazy => 1,
28 builder => '_build__bam_handle'
29 );
30 has '_currentread' => (
31 is => 'rw',
32 isa => 'HashRef',
33 required => 0,
34 writer => '_set_currentread'
35 );
36
37 ### Private methods ###
38
39 sub _build__bam_handle {
40 my ($self) = @_;
41 my $bamfile = $self->file;
42
43 open( my $bamh, "-|", $self->samtools_exec." view $bamfile" )
44 or die "Cannot open $bamfile";
45 return $bamh;
46 }
47
48 sub _binary_flag {
49 my ( $self, $flag ) = @_;
50 my $bin_flag = sprintf( "%b", int($flag) );
51 return $bin_flag;
52 }
53
54 sub _parse_read {
55 my ( $self, $line ) = @_;
56 chomp($line);
57
58 # Parse and return as a hash ref
59 my @fields = qw(QNAME FLAG RNAME POS MAPQ CIGAR RNEXT PNEXT TLEN SEQ QUAL);
60 my @cols = split( '\t', $line );
61 my %read;
62 $read{'READ'} = $line;
63 foreach my $i ( 0 .. ( scalar(@cols) - 1 ) ) {
64 if ( $i < scalar(@fields) ) {
65 $read{ $fields[$i] } = $cols[$i];
66 if ( $fields[$i] eq 'FLAG' ) {
67 $read{'BINARY_FLAG'} = $self->_binary_flag( int( $cols[$i] ) );
68 }
69 }
70 else {
71 $cols[$i] =~ /^([^:]+):[AifZHB]:(.+)/;
72 #my @tagged = split( ':', $cols[$i] );
73 #my $tag_key = shift @tagged;
74 #shift @tagged;
75 #$read{ $tag_key } = join(':', @tagged);
76 $read{ $1 } = $2;
77 }
78 }
79 return \%read;
80 }
81
82 ### Public methods ###
83
84 =seq_info
85 Reads BAM header and returns a hash (keys are sequence ids, values are hash
86 refs with keys as tags (like LN and M5))
87 =cut
88
89 sub seq_info {
90 my ($self) = @_;
91 my $bamfile = $self->file;
92
93 my ( %all_seq_info, $seq_name, %this_seq_info );
94 open( SINFO, "-|", $self->samtools_exec." view -H $bamfile | grep ^\@SQ | cut -f 2-" );
95 while ( my $line = <SINFO> ) {
96 chomp($line);
97 my @fields = split( '\t', $line );
98 $seq_name = shift(@fields);
99 $seq_name =~ s/SN://;
100 foreach my $item (@fields) {
101 my @parts = split( ':', $item );
102 my $tag = shift(@parts);
103 $this_seq_info{$tag} = join( ':', @parts );
104 foreach my $k (keys %this_seq_info){
105 $all_seq_info{$seq_name}->{$k} = $this_seq_info{$k};
106 }
107 }
108
109 }
110 return %all_seq_info;
111 }
112
113 =next_read
114 Moves _currentread to the next entry in the BAM. Returns 0 if EOF.
115 =cut
116
117 sub next_read {
118 my ($self) = @_;
119 my $bh = $self->_bam_handle;
120 my $line = <$bh>;
121 if ( defined($line) ) {
122 chomp($line);
123 my $read = $self->_parse_read($line);
124 $self->_set_currentread($read);
125 return 1;
126 }
127 else {
128 return 0;
129 }
130 }
131
132 sub close_file_handle{
133 my ($self) = @_;
134 close $self->_bam_handle;
135 }
136
137 =read_info
138 Returns info from _currentread = hash reference with field name as key.
139 Standard fields are named as per the SAM format specification:
140 1 : QNAME
141 2 : FLAG
142 3 : RNAME
143 4 : POS
144 5 : MAPQ
145 6 : CIGAR
146 7 : RNEXT
147 8 : PNEXT
148 9 : TLEN
149 10 : SEQ
150 11 : QUAL
151 Additional fields will use their tag names.
152 Complete line is returned with key READ
153 =cut
154
155 sub read_info {
156 my ($self) = @_;
157 return $self->_currentread;
158 }
159
160 =is_mapped
161 Parses the flag for the current read and determines if mapped.
162 Returns 0 or 1.
163 =cut
164
165 sub is_mapped {
166 my ($self) = @_;
167 my $flag = ${ $self->_currentread }{BINARY_FLAG};
168 my @flag_array = split( '', $flag );
169 my $resl;
170 if ( $flag_array[-3] ) { $resl = 0; }
171 else { $resl = 1; }
172 return $resl;
173 }
174
175 =is_reverse
176 Parses the flag for the current read and determines if reverse
177 complemented. Returns 0 or 1.
178 =cut
179
180 sub is_reverse {
181 my ($self) = @_;
182 my $flag = ${ $self->_currentread }{BINARY_FLAG};
183 my @flag_array = split( '', $flag );
184
185 #print @flag_array;
186 return $flag_array[-5];
187 }
188
189 __PACKAGE__->meta->make_immutable;
190 no Moose;
191 1;
0 package Bio::Tradis::Parser::Cigar;
1
2 # ABSTRACT: Take in a cigar string and output start and end relative to the reference sequence
3
4 =head1 SYNOPSIS
5
6 Take in a cigar string and output start and end relative to the reference sequence
7
8 use Bio::Tradis::Parser::Cigar;
9
10 my $cigar = Bio::Tradis::Parser::Cigar->new(coordinate => 123, cigar => '10S90M');
11 $cigar->start;
12 $cigar->end;
13
14 =cut
15
16 use Moose;
17
18 has 'cigar' => ( is => 'ro', isa => 'Str', required => 1 );
19 has 'coordinate' => ( is => 'ro', isa => 'Num', required => 1 );
20
21 has '_results' => (is => 'ro', isa => 'HashRef', lazy => 1, builder => '_build__results');
22
23 sub _build__results
24 {
25 my($self) = @_;
26 my %results = ( start => 0, end => 0);
27 my $current_coordinate = $self->coordinate;
28
29 my @cigar_parts = $self->cigar =~ /(\d+[MIDNSHP=X])/g;
30 for my $cigar_item (@cigar_parts)
31 {
32 if( $cigar_item =~ /(\d+)([MIDNSHP=X])/)
33 {
34 my $number = $1;
35 my $action = $2;
36
37 if($action eq 'M' || $action eq 'X' || $action eq '=' )
38 {
39 $results{start} = $current_coordinate if($results{start} == 0);
40 $current_coordinate += $number;
41 $results{end} = $current_coordinate -1 if($results{end} < $current_coordinate);
42 }
43 elsif($action eq 'S' || $action eq 'D' || $action eq 'N')
44 {
45 $current_coordinate += $number;
46 }
47 elsif($action eq 'I' )
48 {
49 # do nothing
50 }
51 }
52 }
53
54 return \%results;
55 }
56
57 sub start
58 {
59 my($self) = @_;
60 return $self->_results->{start};
61 }
62
63 sub end
64 {
65 my($self) = @_;
66 return $self->_results->{end};
67 }
68 __PACKAGE__->meta->make_immutable;
69 no Moose;
70 1;
0 package Bio::Tradis::Parser::Fastq;
1
2 # ABSTRACT: Basic FastQ parser.
3
4 =head1 SYNOPSIS
5
6 Parses fastq files.
7
8 use Bio::Tradis::Parser::Fastq;
9
10 my $pipeline = Bio::Tradis::Parser::Fastq->new(file => 'abc');
11 $pipeline->next_read;
12 $pipeline->read_info;
13
14 =cut
15
16 use Moose;
17
18 has 'file' => ( is => 'rw', isa => 'Str', required => 1 );
19 has '_fastq_handle' => (
20 is => 'ro',
21 isa => 'FileHandle',
22 required => 0,
23 lazy => 1,
24 builder => '_build__fastq_handle'
25 );
26 has '_currentread' => (
27 is => 'rw',
28 isa => 'Str',
29 required => 0,
30 writer => '_set_currentread'
31 );
32 ### Private methods ###
33
34 sub _build__fastq_handle {
35 my ($self) = @_;
36 my $fastqfile = $self->file;
37
38 open( my $fqh, "<", $fastqfile ) or die "Cannot open $fastqfile";
39 return $fqh;
40 }
41
42 ### Public methods ###
43
44 =next_read
45 Moves to the next read. Returns 1 if read exists, returns 0
46 if EOF
47 =cut
48
49 sub next_read {
50 my ($self) = @_;
51 my $fqh = $self->_fastq_handle;
52
53 my $read = <$fqh>;
54 if ( defined($read) ) {
55 $self->_set_currentread($read);
56 return 1;
57 }
58 else {
59 return 0;
60 }
61 }
62
63 =read_info
64 Returns an array of info for the read in an array.
65 0 = id
66 1 = sequence
67 2 = quality string
68 =cut
69 sub read_info {
70 my ($self) = @_;
71 my $fqh = $self->_fastq_handle;
72
73 my @fastq_read;
74
75 # get id
76 my $id = $self->_currentread;
77 chomp($id);
78 $id =~ s/^\@//;
79 push( @fastq_read, $id );
80
81 # get sequence
82 my $seq = <$fqh>;
83 chomp($seq);
84 push( @fastq_read, $seq );
85
86 # skip + line
87 my $skip = <$fqh>;
88
89 # get quality
90 my $qual = <$fqh>;
91 chomp($qual);
92 push( @fastq_read, $qual );
93
94 return @fastq_read;
95
96 }
97
98 __PACKAGE__->meta->make_immutable;
99 no Moose;
100 1;
0 package Bio::Tradis::RemoveTags;
1
2 # ABSTRACT: Remove tags from seqs a fastq file
3
4 =head1 SYNOPSIS
5
6 Reads in a fastq file with tradis tags already attached to the start of the sequence
7 Removes tags from the sequence and quality strings
8 Outputs a file *.rmtag.fastq unless an out file is specified
9
10 use Bio::Tradis::RemoveTags;
11
12 my $pipeline = Bio::Tradis::RemoveTags->new(fastqfile => 'abc', tag => 'abc');
13 $pipeline->remove_tags();
14
15 =head1 PARAMETERS
16
17 =head2 Required
18
19 =over
20
21 =item * C<fastqfile> - path to/name of file to filter
22
23 =item * C<tag> - TraDIS tag to remove
24
25 =back
26
27 =head2 Optional
28
29 =over
30
31 =item * C<mismatch> - number of mismatches to allow when removing the tag. Default = 0
32
33 =item * C<outfile> - defaults to C<file.rmtag.fastq> for and input file named C<file.fastq>
34
35 =back
36
37 =head1 METHODS
38
39 C<remove_tags> - output all reads with the tags removed to C<outfile>
40
41 =cut
42
43 use Moose;
44 use Bio::Tradis::Parser::Fastq;
45
46 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 1 );
47 has 'tag' => ( is => 'rw', isa => 'Str', required => 1 );
48 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 0 );
49 has 'outfile' => (
50 is => 'rw',
51 isa => 'Str',
52 required => 0,
53 default => sub {
54 my ($self) = @_;
55 my $o = $self->bamfile;
56 $o =~ s/\.fastq/\.rmtag\.fastq/;
57 return $o;
58 }
59 );
60
61 sub remove_tags {
62 my ($self) = @_;
63 my $tag = uc( $self->tag );
64 my $outfile = $self->outfile;
65
66 #set up fastq parser
67 my $filename = $self->fastqfile;
68 my $pars = Bio::Tradis::Parser::Fastq->new( file => $filename );
69
70 # create file handle for output
71 open( OUTFILE, ">$outfile" );
72
73 # loop through fastq
74 while ( $pars->next_read ) {
75 my @read = $pars->read_info;
76 my $id = $read[0];
77 my $seq_string = $read[1];
78 my $qual_string = $read[2];
79
80 # remove the tag
81 my $rm = 0;
82 if ( $self->mismatch == 0 ) {
83 if ( $seq_string =~ m/^$tag/ ) { $rm = 1; }
84 }
85 else {
86 my $mm = $self->_tag_mismatch($seq_string);
87 if ( $mm <= $self->mismatch ) { $rm = 1; }
88 }
89
90 if ($rm) {
91 my $l = length($tag);
92 $seq_string = substr( $seq_string, $l );
93 $qual_string = substr( $qual_string, $l );
94 }
95
96 print OUTFILE "\@$id\n";
97 print OUTFILE $seq_string . "\n+\n";
98 print OUTFILE $qual_string . "\n";
99 }
100 close OUTFILE;
101 return 1;
102 }
103
104 sub _tag_mismatch {
105 my ( $self, $seq_string ) = @_;
106 my $tag_len = length( $self->tag );
107
108 my @tag = split( "", $self->tag );
109 my @seq = split( "", substr( $seq_string, 0, $tag_len ) );
110 my $mismatches = 0;
111 foreach my $i ( 0 .. ( $tag_len - 1 ) ) {
112 if ( $tag[$i] ne $seq[$i] ) {
113 $mismatches++;
114 }
115 }
116 return $mismatches;
117 }
118
119 __PACKAGE__->meta->make_immutable;
120 no Moose;
121 1;
0 package Bio::Tradis::RunTradis;
1
2 # ABSTRACT: Perform all steps required for a tradis analysis
3
4 =head1 SYNOPSIS
5
6 Takes a fastq file with tags already attached, filters the tags matching user input,
7 removes the tags, maps to a reference (.fa) and generates insertion site plots for use in
8 Artemis (or other genome browsers), mapped BAM files for each lane and a statistical summary of the analysis.
9
10 use Bio::Tradis::RunTradis;
11
12 my $pipeline = Bio::Tradis::RunTradis->new(
13 fastqfile => 'abc',
14 reference => 'abc',
15 tag => 'abc',
16 tagdirection => '5'|'3'
17 );
18 $pipeline->run_tradis();
19
20 =head1 PARAMETERS
21
22 =head2 Required
23
24 =over
25
26 =item * C<fastqfile> - file containing a list of fastqs (gzipped or raw) to run the
27 complete analysis on. This includes all (including
28 intermediary format conversion and sorting) steps starting from
29 filtering.
30
31 =item * C<tag> - TraDIS tag to filter and then remove
32
33 =item * C<reference> - path to/name of reference genome in fasta format (.fa)
34
35 =back
36
37 =head2 Optional
38
39 =over
40
41 =item * C<mismatch> - number of mismatches to allow when filtering/removing the tag. Default = 0
42
43 =item * C<tagdirection> - direction of the tag, 5' or 3'. Default = 3
44
45 =item * C<mapping_score> - cutoff value for mapping score when creating insertion site plots. Default = 30
46
47 =back
48
49 =head1 METHODS
50
51 C<run_tradis> - run complete analysis with given parameters
52
53 =cut
54
55 use Cwd;
56 use Moose;
57 use File::Temp;
58 use File::Path 'rmtree';
59 use Bio::Tradis::FilterTags;
60 use Bio::Tradis::RemoveTags;
61 use Bio::Tradis::Map;
62 use Bio::Tradis::TradisPlot;
63 use Bio::Tradis::Exception;
64 use Bio::Tradis::Samtools;
65
66 has 'verbose' => ( is => 'rw', isa => 'Bool', default => 0 );
67 has 'fastqfile' => ( is => 'rw', isa => 'Str', required => 1 );
68 has '_unzipped_fastq' =>
69 ( is => 'rw', isa => 'Str', lazy => 1, builder => '_build__unzipped_fastq' );
70 has 'tag' => ( is => 'ro', isa => 'Str', required => 1 );
71 has 'tagdirection' =>
72 ( is => 'ro', isa => 'Str', required => 1, default => '3' );
73 has 'mismatch' => ( is => 'rw', isa => 'Int', required => 1, default => 0 );
74 has 'mapping_score' =>
75 ( is => 'ro', isa => 'Int', required => 1, default => 30 );
76 has 'reference' => ( is => 'rw', isa => 'Str', required => 1 );
77 has 'outfile' => (
78 is => 'rw',
79 isa => 'Str',
80 required => 0,
81 default => sub {
82 my ($self) = @_;
83 my @dirs = split( '/', $self->fastqfile );
84 my $o = pop(@dirs);
85 $o =~ s/fastq/out/;
86 return $o;
87 }
88 );
89 has 'smalt_k' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
90 has 'smalt_s' => ( is => 'rw', isa => 'Maybe[Int]', required => 0 );
91 has 'smalt_y' => ( is => 'rw', isa => 'Maybe[Num]', required => 0, default => 0.96 );
92 has 'smalt_r' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => -1);
93 has 'smalt_n' => ( is => 'rw', isa => 'Maybe[Int]', required => 0, default => 1);
94 has 'samtools_exec' => ( is => 'rw', isa => 'Str', default => 'samtools' );
95
96 has '_temp_directory' => (
97 is => 'rw',
98 isa => 'Str',
99 required => 0,
100 lazy => 1,
101 builder => '_build__temp_directory'
102 );
103 has 'output_directory' => (
104 is => 'rw',
105 isa => 'Str',
106 required => 0,
107 lazy => 1,
108 builder => '_build_output_directory'
109 );
110 has '_stats_handle' => ( is => 'ro', isa => 'FileHandle', required => 1 );
111 has '_sequence_info' => (
112 is => 'rw',
113 isa => 'HashRef',
114 required => 0,
115 lazy => 1,
116 builder => '_build__sequence_info'
117 );
118 has '_current_directory' => (
119 is => 'rw',
120 isa => 'Str',
121 required => 0,
122 lazy => 1,
123 builder => '_build__current_directory'
124 );
125
126 sub _is_gz {
127 my ($self) = @_;
128 my $fq = $self->fastqfile;
129
130 if ( $fq =~ /\.gz/ ) {
131 return 1;
132 }
133 else {
134 return 0;
135 }
136 }
137
138 sub _build__unzipped_fastq {
139 my ($self) = @_;
140 my $fq = $self->fastqfile;
141 my $temporary_directory = $self->_temp_directory;
142
143 if ( $self->_is_gz ) {
144 $fq =~ /([^\/]+)$/;
145 my $newfq = $1;
146 $newfq =~ s/\.gz//;
147 if ( !-e "$temporary_directory/$newfq" ) {
148 `gunzip -c $fq > $temporary_directory/$newfq`;
149 }
150 return "$temporary_directory/$newfq";
151 }
152 else {
153 return $fq;
154 }
155 }
156
157 sub _build__stats_handle {
158 my ($self) = @_;
159 my $outfile = $self->outfile;
160
161 open( my $stats, ">", "$outfile.stats" );
162 return $stats;
163 }
164
165 sub _build__sequence_info {
166 my ($self) = @_;
167 my $temporary_directory = $self->_temp_directory;
168 open( GREP,
169 "grep \@SQ $temporary_directory/mapped.sam | awk '{print \$2, \$3}' |"
170 );
171 my %sns = ();
172 while ( my $sn = <GREP> ) {
173 chomp($sn);
174 $sn =~ /SN:(\S+)\s+LN:(\d+)/;
175 $sns{$1} = $2;
176 }
177 return \%sns;
178 }
179
180 sub _build__temp_directory {
181 my ($self) = @_;
182 my $tmp_dir = File::Temp->newdir( 'tmp_run_tradis_XXXXX',
183 CLEANUP => 0,
184 DIR => $self->output_directory );
185 return $tmp_dir->dirname;
186 }
187
188 sub _build_output_directory {
189 return cwd();
190 }
191
192 sub _build__current_directory {
193 my ($self) = @_;
194 my $fq = $self->fastqfile;
195
196 my @dirs = split( '/', $fq );
197 pop(@dirs);
198 return join( '/', @dirs );
199 }
200
201 sub run_tradis {
202 my ($self) = @_;
203 my $temporary_directory = $self->_temp_directory;
204 my $fq = $self->fastqfile;
205
206 my $ref = $self->reference;
207 Bio::Tradis::Exception::RefNotFound->throw( error => "$ref not found\n" ) unless( -e $ref );
208
209 print STDERR "::::::::::::::::::\n$fq\n::::::::::::::::::\n\n" if($self->verbose);
210
211 # Step 1: Filter tags that match user input tag
212 print STDERR "..........Step 1: Filter tags that match user input tag\n" if($self->verbose);
213 $self->_filter;
214
215 print STDERR "..........Step 1.1: Check that at least one read started with the tag\n" if($self->verbose);
216 $self->_check_filter;
217
218 # Step 2: Remove the tag from the sequence and quality strings
219 print STDERR
220 "..........Step 2: Remove the tag from the sequence and quality strings\n" if($self->verbose);
221 $self->_remove;
222
223 # Step 3: Map file to reference
224 print STDERR "..........Step 3: Map file to reference\n" if($self->verbose);
225 $self->_map;
226
227 # Step 4: Convert output from SAM to BAM, sort and index
228 print STDERR
229 "..........Step 3.5: Convert output from SAM to BAM and sort\n" if($self->verbose);
230 $self->_sam2bam;
231 $self->_sort_bam;
232 $self->_bamcheck;
233
234 # Step 5: Generate plot
235 print STDERR "..........Step 4: Generate plot\n" if($self->verbose);
236 $self->_make_plot;
237
238 # Step 6: Generate statistics
239 print STDERR "..........Step 5: Generate statistics\n" if($self->verbose);
240 $self->_stats;
241
242 # Step 7: Move files to current directory
243 print STDERR "..........Step 6: Move files to current directory\n" if($self->verbose);
244 my $outfile = $self->outfile;
245 my $output_directory = $self->output_directory;
246 system("mv $temporary_directory/$outfile* $output_directory");
247 system("mv $temporary_directory/mapped.sort.bam $output_directory/$outfile.mapped.bam");
248 system("mv $temporary_directory/mapped.sort.bam.bai $output_directory/$outfile.mapped.bam.bai");
249 system("mv $temporary_directory/mapped.bamcheck $output_directory/$outfile.mapped.bamcheck");
250
251 # Clean up
252 print STDERR "..........Clean up\n" if($self->verbose);
253
254 rmtree($temporary_directory);
255
256 return 1;
257 }
258
259 sub _filter {
260 my ($self) = @_;
261 my $temporary_directory = $self->_temp_directory;
262 my $fqfile = $self->_unzipped_fastq;
263 my $tag = $self->tag;
264 my $mm = $self->mismatch;
265
266 my $filter = Bio::Tradis::FilterTags->new(
267 fastqfile => $fqfile,
268 tag => $tag,
269 mismatch => $mm,
270 outfile => "$temporary_directory/filter.fastq"
271 )->filter_tags;
272 }
273
274 sub _check_filter {
275 my ($self) = @_;
276 my $temporary_directory = $self->_temp_directory;
277 my $filtered_file_filename = "$temporary_directory/filter.fastq";
278 open my $filtered_file, '<', $filtered_file_filename or
279 Bio::Tradis::Exception::TagFilterError->throw( error => "There was a problem filtering reads by the specified tag. Please check all input files are Fastq formatted and that at least one read in each starts with the specified tag\n" );
280 my @first_read_data;
281 while( my $line = <$filtered_file> ) {
282 last if $. > 4;
283 chomp($line);
284 push @first_read_data, $line;
285 }
286 my $number_of_read_lines = scalar @first_read_data;
287 if ( $number_of_read_lines ne 4) {
288 # There wasn't enough data for a complete read
289 Bio::Tradis::Exception::TagFilterError->throw( error => "There was a problem filtering reads by the specified tag. Please check all input files are Fastq formatted and that at least one read in each starts with the specified tag\n" );
290 }
291 my $read_plus_sign = $first_read_data[2];
292 if ( $read_plus_sign ne '+' ) {
293 # The first 'read' didn't have a '+' on the third line, suspicious
294 Bio::Tradis::Exception::TagFilterError->throw( error => "There was a problem filtering reads by the specified tag. Please check all input files are Fastq formatted and that at least one read in each starts with the specified tag\n" );
295 }
296 # I'm not proposing further (more detailed) validation here
297 close $filtered_file;
298 }
299
300 sub _remove {
301 my ($self) = @_;
302 my $temporary_directory = $self->_temp_directory;
303 my $tag = $self->tag;
304 my $mm = $self->mismatch;
305
306 my $rm_tags = Bio::Tradis::RemoveTags->new(
307 fastqfile => "$temporary_directory/filter.fastq",
308 tag => $tag,
309 mismatch => $mm,
310 outfile => "$temporary_directory/tags_removed.fastq"
311 )->remove_tags;
312 }
313
314 sub _map {
315 my ($self) = @_;
316 my $temporary_directory = $self->_temp_directory;
317
318 my $ref = $self->reference;
319
320 my $mapping = Bio::Tradis::Map->new(
321 fastqfile => "$temporary_directory/tags_removed.fastq",
322 reference => "$ref",
323 refname => "$temporary_directory/ref.index",
324 outfile => "$temporary_directory/mapped.sam",
325 smalt_k => $self->smalt_k,
326 smalt_s => $self->smalt_s,
327 smalt_y => $self->smalt_y,
328 smalt_r => $self->smalt_r,
329 smalt_n => $self->smalt_n
330 );
331 $mapping->index_ref;
332 $mapping->do_mapping;
333 }
334
335 sub _sam2bam {
336 my ($self) = @_;
337 my $temporary_directory = $self->_temp_directory;
338
339 system(
340 $self->samtools_exec." view -b -o $temporary_directory/mapped.bam -S $temporary_directory/mapped.sam"
341 );
342 return 1;
343 }
344
345 sub _sort_bam {
346 my ($self) = @_;
347 my $temporary_directory = $self->_temp_directory;
348
349 my $samtools_obj = Bio::Tradis::Samtools->new(exec => $self->samtools_exec, threads => $self->smalt_n);
350 $samtools_obj->run_sort("$temporary_directory/mapped.bam","$temporary_directory/mapped.sort.bam");
351 $samtools_obj->run_index("$temporary_directory/mapped.sort.bam");
352 return 1;
353 }
354
355 sub _bamcheck {
356 my ($self) = @_;
357 my $temporary_directory = $self->_temp_directory;
358
359 system(
360 $self->samtools_exec." stats $temporary_directory/mapped.sort.bam > $temporary_directory/mapped.bamcheck"
361 );
362 return 1;
363 }
364
365 sub _make_plot {
366 my ($self) = @_;
367 my $temporary_directory = $self->_temp_directory;
368 my $ref = $self->reference;
369 my $outfile = $self->outfile;
370 my $tr_d = $self->tagdirection;
371
372 my $plot = Bio::Tradis::TradisPlot->new(
373 mappedfile => "$temporary_directory/mapped.sort.bam",
374 mapping_score => $self->mapping_score,
375 outfile => "$temporary_directory/$outfile"
376 )->plot;
377
378 # if tag direction is 5, reverse plot columns
379 if ( $self->tagdirection eq '5' ) {
380 print STDERR "Tag direction = 5. Reversing plot..\n" if($self->verbose);
381 $self->_reverse_plots;
382 }
383 return 1;
384 }
385
386 sub _reverse_plots {
387 my ($self) = @_;
388 my $temporary_directory = $self->_temp_directory;
389 my $outfile = $self->outfile;
390 my @seqnames = keys %{ $self->_sequence_info };
391
392 my @current_plots =
393 glob("$temporary_directory/$outfile.*.insert_site_plot.gz");
394
395 foreach my $plotname (@current_plots) {
396 print STDERR "Reversing $plotname\n" if($self->verbose);
397
398 #my $plotname = $self->_plotname($sn);
399 system("gunzip -c $plotname > $temporary_directory/tmp.plot");
400 system(
401 "awk '{ t = \$1; \$1 = \$2; \$2 = t; print; }' $temporary_directory/tmp.plot > rv_plot"
402 );
403 system("gzip -c rv_plot > $plotname");
404 }
405 unlink("$temporary_directory/tmp.plot");
406 unlink("rv_plot");
407 }
408
409 sub _stats {
410 my ($self) = @_;
411 my $outfile = $self->outfile;
412 my $temporary_directory = $self->_temp_directory;
413 my $fq = $self->_unzipped_fastq;
414 my $seq_info = $self->_sequence_info;
415
416 #write header to stats file
417 $self->_write_stats_header;
418
419 # Add file name and number of reads in it
420 my @fql = split( "/", $fq );
421 my $stats = "$fql[-1],";
422 my $total_reads = `wc $fq | awk '{print \$1/4}'`;
423 chomp($total_reads);
424 $stats .= "$total_reads,";
425
426 # Matching reads
427 my $matching =
428 `wc $temporary_directory/filter.fastq | awk '{print \$1/4}'`;
429 chomp($matching);
430 $stats .= "$matching,";
431 $stats .= ( $matching / $total_reads ) * 100 . ",";
432
433 # Mapped reads
434 my $mapped = $self->_number_of_mapped_reads;
435 $stats .= "$mapped,";
436 $stats .= ( $mapped / $matching ) * 100 . ",";
437
438 # Unique insertion sites
439 my ( $total_uis, $total_seq_len );
440 foreach my $si ( keys %{$seq_info} ) {
441 my $plotname = $self->_plotname($si);
442 system(
443 "gunzip -c $temporary_directory/$plotname > $temporary_directory/tmp.plot"
444 );
445 my $uis = `grep -c -v "0 0" $temporary_directory/tmp.plot`;
446 chomp($uis);
447 $total_uis += $uis;
448 $stats .= "$uis,";
449 my $seqlen = ${$seq_info}{$si};
450 $total_seq_len += $seqlen;
451 my $uis_per_seqlen = "NaN";
452 $uis_per_seqlen = $seqlen / $uis if ( $uis > 0 );
453 chomp($uis_per_seqlen);
454 $stats .= "$uis_per_seqlen,";
455 }
456 $stats .= "$total_uis,";
457 my $t_uis_p_l = "NaN";
458 $t_uis_p_l = $total_seq_len / $total_uis if ( $total_uis > 0 );
459 $stats .= "$t_uis_p_l\n";
460 print { $self->_stats_handle } $stats;
461 }
462
463 sub _write_stats_header {
464 my ($self) = @_;
465 my @seqnames = keys %{ $self->_sequence_info };
466 my @fields = (
467 "File",
468 "Total Reads",
469 "Reads Matched",
470 "\% Matched",
471 "Reads Mapped",
472 "\% Mapped"
473 );
474 print { $self->_stats_handle } join( ",", @fields ) . ",";
475 foreach my $sn (@seqnames) {
476 print { $self->_stats_handle } "Unique Insertion Sites : $sn,";
477 print { $self->_stats_handle } "Seq Len/UIS : $sn,";
478 }
479 print { $self->_stats_handle } "Total Unique Insertion Sites,";
480 print { $self->_stats_handle } "Total Seq Len/Total UIS\n";
481 }
482
483 sub _plotname {
484 my ( $self, $seq_name ) = @_;
485 my $outfile = $self->outfile;
486
487 $seq_name =~ s/[^\w\d\.]/_/g;
488 my $plotfile_name = "$outfile.$seq_name.insert_site_plot.gz";
489 return $plotfile_name;
490 }
491
492 sub _number_of_mapped_reads {
493 my ($self) = @_;
494 my $temporary_directory = $self->_temp_directory;
495
496 my $pars =
497 Bio::Tradis::Parser::Bam->new(
498 file => "$temporary_directory/mapped.bam" );
499 my $c = 0;
500 while ( $pars->next_read ) {
501 if ( $pars->is_mapped ) {
502 $c++;
503 }
504 }
505 return $c;
506 }
507
508 __PACKAGE__->meta->make_immutable;
509 no Moose;
510 1;
0 package Bio::Tradis::Samtools;
1
2 # ABSTRACT: Change samtools syntax depending on version found
3
4 =head1 SYNOPSIS
5
6 Change samtools syntax depending on version found
7 use Bio::Tradis::Samtools;
8
9 my $obj = Bio::Tradis::Samtools->new(
10 exec => 'samtools'
11 );
12
13 $obj->run_sort();
14
15 =cut
16
17 use Moose;
18 use File::Spec;
19
20 has 'exec' => ( is => 'ro', isa => 'Str', default => 'samtools' );
21 has 'threads' => ( is => 'ro', isa => 'Int', default => 1 );
22 has 'exec_version' => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_build_exec_version' );
23
24 sub _build_exec_version {
25 my ($self) = @_;
26
27 my $fp = $self->find_exe($self->exec);
28 if(!$fp)
29 {
30 exit("ERROR: Can't find required ".$self->exec." in your \$PATH");
31 }
32 my $cmd_version = $self->exec." 2>&1 | grep Version";
33 my ($version_string) = qx($cmd_version);
34
35 if(defined($version_string))
36 {
37 #Version: 0.1.19-44428cd
38 #Version: 1.2 (using htslib 1.2)
39 # we dont use 3rd number in version so just look for 0.1, 1.2
40 if($version_string =~ /Version:[\t\s]+(\d+)\.(\d+)/)
41 {
42 return $1.'.'.$2;
43 }
44 else
45 {
46 print STDERR "ERROR: Couldn't identify samtools version";
47 }
48 }
49 else
50 {
51 print STDERR "ERROR: Couldn't identify samtools version";
52 }
53 # reasonable fallback
54 return '0.1';
55 }
56
57 sub find_exe {
58 my ( $self, $bin ) = @_;
59 for my $dir ( File::Spec->path ) {
60 my $exe = File::Spec->catfile( $dir, $bin );
61 return $exe if -x $exe;
62 }
63 return;
64 }
65
66 sub _is_version_less_than_1 {
67 my ($self) = @_;
68 if($self->exec_version < 1.0)
69 {
70 return 1;
71 }
72 else
73 {
74 return 0;
75 }
76 }
77
78 sub run_sort {
79 my ( $self, $input_file, $output_file ) = @_;
80
81 my $cmd;
82 if ( $self->_is_version_less_than_1 ) {
83 $output_file =~ s/\.bam//i;
84 $cmd = join( ' ', ( $self->exec, 'sort', $input_file, $output_file) );
85 }
86 else {
87 $cmd = join( ' ', ( $self->exec, 'sort', '-@', $self->threads, '-O', 'bam', '-T', $input_file.'.tmp', '-o', $output_file, $input_file ) );
88 }
89 system($cmd);
90 }
91
92 sub run_index {
93 my ( $self, $input_file ) = @_;
94 system( $self->exec . " index $input_file" );
95 }
96
97 no Moose;
98 __PACKAGE__->meta->make_immutable;
99
100 1;
101
0 package Bio::Tradis::TradisPlot;
1
2 # ABSTRACT: Generate plots as part of a tradis analysis
3
4 =head1 SYNOPSIS
5
6 Generate insertion plots for Artemis from a mapped fastq file and a reference
7 in GFF format
8
9 use Bio::Tradis::TradisPlot;
10
11 my $pipeline = Bio::Tradis::TradisPlot->new(mappedfile => 'abc');
12 $pipeline->plot();
13
14 =head1 PARAMETERS
15
16 =head2 Required
17
18 C<mappedfile> - mapped and sorted BAM file
19
20 =head2 Optional
21
22 =over
23
24 =item * C<outfile> - base name to assign to the resulting insertion site plot. Default = tradis.plot
25
26 =item * C<mapping_score> - cutoff value for mapping score. Default = 30
27
28 =back
29
30 =head1 METHODS
31
32 C<plot> - create insertion site plots for reads in `mappedfile`. This file will be readable by the L<Artemis genome browser|http://www.sanger.ac.uk/resources/software/artemis/>
33
34 =cut
35
36 use Moose;
37 use Bio::Tradis::Analysis::InsertSite;
38
39 has 'mappedfile' => ( is => 'rw', isa => 'Str', required => 1 );
40 has 'outfile' =>
41 ( is => 'rw', isa => 'Str', required => 1, default => 'tradis.plot' );
42 has 'mapping_score' =>
43 ( is => 'rw', isa => 'Int', required => 1, default => 30 );
44
45 sub plot {
46 my ($self) = @_;
47
48 Bio::Tradis::Analysis::InsertSite->new(
49 filename => $self->mappedfile,
50 output_base_filename => $self->outfile,
51 mapping_score => $self->mapping_score
52 )->create_plots;
53
54 return 1;
55 }
56
57 __PACKAGE__->meta->make_immutable;
58 no Moose;
59 1;
0 use strict;
1 use warnings;
2 package Bio::Tradis;
3
4 # ABSTRACT: Bio-Tradis contains a set of tools to analyse the output from TraDIS analyses. For more information on the TraDIS method, see http://genome.cshlp.org/content/19/12/2308
5
6 =head1 SYNOPSIS
7
8 Bio-Tradis provides functionality to:
9
10 =over
11
12 =item * detect TraDIS tags in a BAM file - L<Bio::Tradis::DetectTags>
13
14 =item * add the tags to the reads - L<Bio::Tradis::AddTagsToSeq>
15
16 =item * filter reads in a FastQ file containing a user defined tag - L<Bio::Tradis::FilterTags>
17
18 =item * remove tags - L<Bio::Tradis::RemoveTags>
19
20 =item * map to a reference genome - L<Bio::Tradis::Map>
21
22 =item * create an insertion site plot file - L<Bio::Tradis::TradisPlot>
23
24 =back
25
26 Most of these functions are available as standalone scripts or as perl modules.
27
28
29 =cut
30 1;
0 <?xml version="1.0"?>
1 <RecipeFile xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2 <Protocol>
3 <ChemistryRef Description="Cluster Generation SR" ChemistryName="ClusterGenerationSR" />
4 <ChemistryRef Description="Skip Base 1" ChemistryName="FirstBase"/>
5 <ChemistryRef Description="Skip Base 2" ChemistryName="CompleteCycle_Low"/>
6 <ChemistryRef Description="Skip Base 3" ChemistryName="CompleteCycle_Low"/>
7 <ChemistryRef Description="Skip Base 4" ChemistryName="CompleteCycle_Low"/>
8 <ChemistryRef Description="Skip Base 5" ChemistryName="CompleteCycle_Low"/>
9 <ChemistryRef Description="Skip Base 6" ChemistryName="CompleteCycle_Low"/>
10 <ChemistryRef Description="Skip Base 7" ChemistryName="CompleteCycle_Low"/>
11 <ChemistryRef Description="Skip Base 8" ChemistryName="CompleteCycle_Low"/>
12 <ChemistryRef Description="Skip Base 9" ChemistryName="CompleteCycle_Low"/>
13 <ChemistryRef Description="Skip Base 10" ChemistryName="CompleteCycle_Low"/>
14 <ChemistryRef Description="Skip Base 11" ChemistryName="CompleteCycle_Low"/>
15 <ChemistryRef Description="Skip Base 12" ChemistryName="CompleteCycle_Low"/>
16 <ChemistryRef Description="End Deblock" ChemistryName="EndDeblock" />
17 <ReadRef Description="Read #1" ReadName="Read1" />
18 <ChemistryRef Description="Rehyb Read1 Primer" ChemistryName="RehybRead1Primer"/>
19 <ReadRef Description="Read initial 12" ReadName="ReadInitial" />
20 <ChemistryRef Description="Index Preparation i7" ChemistryName="IndexPreparation-i7" />
21 <ReadRef Description="IndexRead i7" ReadName="IndexRead-i7" />
22 <ChemistryRef Description="End Deblock" ChemistryName="EndDeblock" />
23 <ChemistryRef Description="Post Run Step" ChemistryName="PostRunForOnBoardClustering" />
24 </Protocol>
25 <ChemistryDefinitions>
26 <ChemistryDefinition Name="CompleteCycle">
27 <ChemistryStep Description="Deblock" Repeat="1">
28 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
29 <Temp Temperature="60" Duration="0" />
30 <PumpToFlowcell Solution="0" ReagentName="CRM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
31 <Wait Duration="5000" />
32 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
33 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
34 <Wait Duration="5000" />
35 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="5000" ToPosition="0" />
36 </ChemistryStep>
37 <ChemistryStep Description="Buffer Wash" Repeat="1">
38 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="250" Duration="0" ToPosition="0" />
39 </ChemistryStep>
40 <ChemistryStep Description="Incorporation" Repeat="1">
41 <PumpToFlowcell Solution="0" ReagentName="IMM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
42 <Temp Temperature="65" Duration="0" />
43 <Wait Duration="25000" />
44 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
45 <Wait Duration="5000" />
46 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="15000" ToPosition="0" />
47 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
48 <Temp Temperature="20" Duration="15000" />
49 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="750" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
50 <Wait Duration="5000" />
51 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
52 </ChemistryStep>
53 </ChemistryDefinition>
54 <ChemistryDefinition Name="FirstBase">
55 <ChemistryStep Description="Incorporation" Repeat="1">
56 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="1" ToPosition="0" />
57 <Temp Temperature="60" Duration="0" />
58 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
59 <PumpToFlowcell Solution="0" ReagentName="IMM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
60 <Temp Temperature="65" Duration="0" />
61 <Wait Duration="5000" />
62 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="20000" ToPosition="0" />
63 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
64 <Wait Duration="5000" />
65 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="15000" ToPosition="0" />
66 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
67 <Temp Temperature="20" Duration="15000" />
68 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="750" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
69 <Wait Duration="5000" />
70 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
71 </ChemistryStep>
72 </ChemistryDefinition>
73 <ChemistryDefinition Name="EndDeblock">
74 <ChemistryStep Description="Deblock" Repeat="1">
75 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
76 <Temp Temperature="60" Duration="0" />
77 <PumpToFlowcell Solution="0" ReagentName="CRM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
78 <Wait Duration="5000" />
79 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="40000" ToPosition="0" />
80 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
81 <Wait Duration="5000" />
82 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="35000" ToPosition="0" />
83 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
84 <TempOff />
85 </ChemistryStep>
86 </ChemistryDefinition>
87 <ChemistryDefinition Name="CompleteCycle_Low">
88 <ChemistryStep Description="Deblock" Repeat="1">
89 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
90 <Temp Temperature="60" Duration="0" />
91 <PumpToFlowcell Solution="0" ReagentName="CRM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
92 <Wait Duration="5000" />
93 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
94 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
95 <Wait Duration="5000" />
96 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="5000" ToPosition="0" />
97 </ChemistryStep>
98 <ChemistryStep Description="Buffer Wash" Repeat="1">
99 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="250" Duration="0" ToPosition="0" />
100 </ChemistryStep>
101 <ChemistryStep Description="Incorporation" Repeat="1">
102 <PumpToFlowcell Solution="0" ReagentName="IMM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
103 <Temp Temperature="65" Duration="0" />
104 <Wait Duration="25000" />
105 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
106 <Wait Duration="5000" />
107 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="15000" ToPosition="0" />
108 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
109 <Temp Temperature="20" Duration="15000" />
110 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="1500" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
111 <Wait Duration="5000" />
112 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
113 </ChemistryStep>
114 </ChemistryDefinition>
115 <ChemistryDefinition Name="FirstBase_Low">
116 <ChemistryStep Description="Incorporation" Repeat="1">
117 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="1" ToPosition="0" />
118 <Temp Temperature="60" Duration="0" />
119 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
120 <PumpToFlowcell Solution="0" ReagentName="IMM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
121 <Temp Temperature="65" Duration="0" />
122 <Wait Duration="5000" />
123 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="20000" ToPosition="0" />
124 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
125 <Wait Duration="5000" />
126 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="15000" ToPosition="0" />
127 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
128 <Temp Temperature="20" Duration="15000" />
129 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="1500" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
130 <Wait Duration="5000" />
131 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="10000" ToPosition="0" />
132 </ChemistryStep>
133 </ChemistryDefinition>
134 <ChemistryDefinition Name="EndDeblock_Low">
135 <ChemistryStep Description="Deblock" Repeat="1">
136 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
137 <Temp Temperature="60" Duration="0" />
138 <PumpToFlowcell Solution="0" ReagentName="CRM" AspirationRate="1000" DispenseRate="2500" Volume="110" Duration="0" ToPosition="0" />
139 <Wait Duration="5000" />
140 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="40000" ToPosition="0" />
141 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1000" DispenseRate="2500" Volume="24" Duration="0" ToPosition="0" />
142 <Wait Duration="5000" />
143 <DispenseAndWait Solution="0" AspirationRate="0" DispenseRate="0" Volume="0" Duration="35000" ToPosition="0" />
144 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
145 <TempOff />
146 </ChemistryStep>
147 </ChemistryDefinition>
148 <ChemistryDefinition Name="ResumeChemistry">
149 <ChemistryStep Description="Prepare for scanning" Repeat="1">
150 <Temp Temperature="20" Duration="0" />
151 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="750" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
152 <Temp Temperature="20" Duration="15000" />
153 </ChemistryStep>
154 </ChemistryDefinition>
155 <ChemistryDefinition Name="PauseChemistry">
156 <ChemistryStep Description="Pause flowcell" Repeat="1">
157 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
158 <Temp Temperature="20" Duration="0" />
159 </ChemistryStep>
160 </ChemistryDefinition>
161 <ChemistryDefinition Name="PostRun">
162 <ChemistryStep Description="Post-Run Flush" Repeat="1">
163 <Temp Temperature="20" Duration="0" />
164 <PumpToFlowcell Solution="2" ReagentName="PW1" AspirationRate="1500" DispenseRate="2500" Volume="2250" Duration="0" ToPosition="0" />
165 </ChemistryStep>
166 </ChemistryDefinition>
167 <ChemistryDefinition Name="PostRunForOnBoardClustering">
168 <ChemistryStep Description="Post-Run Flush" Repeat="1">
169 <Temp Temperature="20" Duration="0" />
170 <PumpToFlowcell Solution="2" ReagentName="PW1" AspirationRate="1000" DispenseRate="2500" Volume="2250" Duration="0" ToPosition="0" />
171 <PumpToValvePosition Solution="2" ReagentName="PW1" AspirationRate="1000" DispenseRate="250" Volume="250" Duration="0" ToPosition="20" />
172 <PumpToFlowcell Solution="0" ReagentName="TMP" AspirationRate="1000" DispenseRate="2500" Volume="250" Duration="0" ToPosition="0" />
173 <PumpToFlowcell Solution="2" ReagentName="PW1" AspirationRate="1000" DispenseRate="2500" Volume="1000" Duration="0" ToPosition="0" />
174 <PumpToValvePosition Solution="2" ReagentName="PW1" AspirationRate="1000" DispenseRate="250" Volume="250" Duration="0" ToPosition="20" />
175 </ChemistryStep>
176 </ChemistryDefinition>
177 <ChemistryDefinition Name="IndexPreparation-i7">
178 <ChemistryStep Description="IndexPreparation-i7" Repeat="1">
179 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="240" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
180 <Temp Temperature="65" Duration="60000" />
181 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
182 <PumpToFlowcell Solution="0" ReagentName="HP12" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
183 <PumpToFlowcell Solution="0" ReagentName="HP12" AspirationRate="60" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
184 <Temp Temperature="40" Duration="60000" />
185 <PumpToFlowcell Solution="0" ReagentName="HP12" AspirationRate="60" DispenseRate="2500" Volume="25" Duration="0" ToPosition="0" />
186 <Wait Duration="300000" />
187 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
188 <Temp Temperature="20" Duration="0" />
189 </ChemistryStep>
190 </ChemistryDefinition>
191 <ChemistryDefinition Name="IndexPreparation-i5-SR">
192 <ChemistryStep Description="IndexPreparation-i5-SR" Repeat="1">
193 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="240" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
194 <Temp Temperature="65" Duration="60000" />
195 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
196 <PumpToFlowcell Solution="0" ReagentName="HP9" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
197 <PumpToFlowcell Solution="0" ReagentName="HP9" AspirationRate="60" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
198 <Temp Temperature="40" Duration="60000" />
199 <PumpToFlowcell Solution="0" ReagentName="HP9" AspirationRate="60" DispenseRate="2500" Volume="25" Duration="0" ToPosition="0" />
200 <Wait Duration="300000" />
201 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
202 <Temp Temperature="20" Duration="0" />
203 </ChemistryStep>
204 </ChemistryDefinition>
205 <ChemistryDefinition Name="ClusterGenerationSR">
206 <ChemistryStep Description="Prime" Repeat="1">
207 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="1000" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
208 <Temp Temperature="40" Duration="30000" />
209 <PumpToFlowcell Solution="0" ReagentName="FPM" AspirationRate="1000" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
210 <PumpToFlowcell Solution="0" ReagentName="AMS" AspirationRate="1000" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
211 <PumpToFlowcell Solution="5" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
212 <PumpToFlowcell Solution="6" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
213 <PumpToFlowcell Solution="0" ReagentName="TMP" AspirationRate="1000" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
214 </ChemistryStep>
215 <ChemistryStep Description="TemplateHyb" Repeat="15">
216 <PumpToFlowcell Solution="0" ReagentName="TMP" AspirationRate="250" DispenseRate="2500" Volume="5" Duration="0" ToPosition="0" />
217 <Wait Duration="3000" />
218 </ChemistryStep>
219 <ChemistryStep Description="TemplateTemp" Repeat="1">
220 <Temp Temperature="85" Duration="60000" />
221 <Wait Duration="30000" />
222 <Temp Temperature="40" Duration="60000" />
223 </ChemistryStep>
224 <ChemistryStep Description="TemplateWash" Repeat="15">
225 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="250" DispenseRate="2500" Volume="5" Duration="0" ToPosition="0" />
226 <Wait Duration="18000" />
227 </ChemistryStep>
228 <ChemistryStep Description="FE" Repeat="15">
229 <PumpToFlowcell Solution="0" ReagentName="AMS" AspirationRate="250" DispenseRate="2500" Volume="5" Duration="0" ToPosition="0" />
230 <Wait Duration="3000" />
231 </ChemistryStep>
232 <ChemistryStep Description="FEWait" Repeat="1">
233 <Wait Duration="90000" />
234 </ChemistryStep>
235 <ChemistryStep Description="Amp-TempRamp" Repeat="1">
236 <Temp Temperature="55" Duration="0" />
237 </ChemistryStep>
238 <ChemistryStep Description="Amplification1" Repeat="28">
239 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="120" DispenseRate="2500" Volume="28" Duration="0" ToPosition="0" />
240 <PumpToFlowcell Solution="0" ReagentName="FPM" AspirationRate="120" DispenseRate="2500" Volume="28" Duration="0" ToPosition="0" />
241 <PumpToFlowcell Solution="0" ReagentName="AMS" AspirationRate="120" DispenseRate="2500" Volume="72" Duration="0" ToPosition="0" />
242 </ChemistryStep>
243 <ChemistryStep Description="Postamplificationwash" Repeat="1">
244 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
245 <Temp Temperature="20" Duration="0" />
246 </ChemistryStep>
247 <ChemistryStep Description="LinearizationSR" Repeat="1">
248 <Temp Temperature="20" Duration="0" />
249 <PumpToFlowcell Solution="0" ReagentName="FLS" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
250 <PumpToFlowcell Solution="0" ReagentName="FLS" AspirationRate="15" DispenseRate="2500" Volume="125" Duration="0" ToPosition="0" />
251 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
252 </ChemistryStep>
253 <ChemistryStep Description="SBS Prime" Repeat="1">
254 <Temp Temperature="20" Duration="0" />
255 <PumpToFlowcell Solution="0" ReagentName="IMM" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
256 <PumpToFlowcell Solution="0" ReagentName="SRM" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
257 <PumpToFlowcell Solution="0" ReagentName="CRM" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
258 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
259 </ChemistryStep>
260 <ChemistryStep Description="Denaturation-Hybridization" Repeat="1">
261 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="240" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
262 <Temp Temperature="65" Duration="60000" />
263 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
264 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
265 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="60" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
266 <Temp Temperature="40" Duration="60000" />
267 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="60" DispenseRate="2500" Volume="25" Duration="0" ToPosition="0" />
268 <Wait Duration="300000" />
269 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
270 <Temp Temperature="20" Duration="0" />
271 </ChemistryStep>
272 </ChemistryDefinition>
273 <ChemistryDefinition Name="RehybRead1Primer">
274 <ChemistryStep Description="Denaturation-Hybridization" Repeat="1">
275 <PumpToFlowcell Solution="0" ReagentName="FDR" AspirationRate="240" DispenseRate="2500" Volume="100" Duration="0" ToPosition="0" />
276 <Temp Temperature="65" Duration="60000" />
277 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
278 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="1500" DispenseRate="2500" Volume="500" Duration="0" ToPosition="0" />
279 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="60" DispenseRate="2500" Volume="75" Duration="0" ToPosition="0" />
280 <Temp Temperature="40" Duration="60000" />
281 <PumpToFlowcell Solution="0" ReagentName="HP10" AspirationRate="60" DispenseRate="2500" Volume="25" Duration="0" ToPosition="0" />
282 <Wait Duration="300000" />
283 <PumpToFlowcell Solution="0" ReagentName="USB" AspirationRate="1500" DispenseRate="2500" Volume="120" Duration="0" ToPosition="0" />
284 <Temp Temperature="20" Duration="0" />
285 </ChemistryStep>
286 </ChemistryDefinition>
287
288 </ChemistryDefinitions>
289 <PumpDefinitions>
290 <PumpDefinition Name="Default">
291 <BeforeImagingEachLane Enabled="false">
292 <Lane Solution="3" AspirationRate="120" DispenseRate="2500" Volume="12" Duration="0" ToPosition="0" Num="1" Surface="Bottom" />
293 <Lane Solution="3" AspirationRate="120" DispenseRate="2500" Volume="12" Duration="0" ToPosition="0" Num="5" />
294 </BeforeImagingEachLane>
295 </PumpDefinition>
296 </PumpDefinitions>
297 <ReadDefinitions>
298 <ReadDefinition Name="Read1" IsIndex="false" ForTemplateOnly="false">
299 <Imaging ChemistryName="FirstBase" VariabilityName="Read1" Cycles="1" />
300 <Imaging ChemistryName="CompleteCycle" VariabilityName="Read1" Cycles="41" />
301 <Chemistry ChemistryName="End" />
302 </ReadDefinition>
303
304 <ReadDefinition Name="ReadInitial" IsIndex="true" ForTemplateOnly="false">
305 <Imaging ChemistryName="FirstBase" VariabilityName="Read1" Cycles="1" />
306 <Imaging ChemistryName="CompleteCycle" VariabilityName="Read1" Cycles="11" />
307 <Chemistry ChemistryName="End" />
308 </ReadDefinition>
309
310 <ReadDefinition Name="IndexRead-i7" IsIndex="true" ForTemplateOnly="false">
311 <Imaging ChemistryName="FirstBase" VariabilityName="IndexRead" Cycles="1" />
312 <Imaging ChemistryName="CompleteCycle" VariabilityName="IndexRead" Cycles="7" />
313 <Chemistry ChemistryName="End" />
314 </ReadDefinition>
315 <ReadDefinition Name="IndexRead-i5" IsIndex="true" ForTemplateOnly="false">
316 <Imaging ChemistryName="FirstBase" VariabilityName="IndexRead" Cycles="1" />
317 <Imaging ChemistryName="CompleteCycle" VariabilityName="IndexRead" Cycles="7" />
318 <Chemistry ChemistryName="End" />
319 </ReadDefinition>
320 </ReadDefinitions>
321 <PrimeDefinitions />
322 <ReagentDefinitions>
323 <ReagentDefinition Name="SbsReagents" IsPairedEnd="false">
324 <Reagent Name="IMM" Description="Incorporation Mix Reagent" ViciPosition="1">
325 <Sample>false</Sample>
326 </Reagent>
327 <Reagent Name="PW1" Description="25mL bottle with laboratory grade water" ViciPosition="2">
328 <Sample>false</Sample>
329 </Reagent>
330 <Reagent Name="SRM" Description="Scanning Mix Reagent" ViciPosition="3">
331 <Sample>false</Sample>
332 </Reagent>
333 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="4">
334 <Sample>false</Sample>
335 </Reagent>
336 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="5">
337 <Sample>false</Sample>
338 </Reagent>
339 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="6">
340 <Sample>false</Sample>
341 </Reagent>
342 <Reagent Name="CRM" Description="Cleavage Buffer" ViciPosition="7">
343 <Sample>false</Sample>
344 </Reagent>
345 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="8">
346 <Sample>false</Sample>
347 </Reagent>
348 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="10">
349 <Sample>false</Sample>
350 </Reagent>
351 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="11">
352 <Sample>false</Sample>
353 </Reagent>
354 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="12">
355 <Sample>false</Sample>
356 </Reagent>
357 <Reagent Name="AMS" Description="Amplification Mix" ViciPosition="13">
358 <Sample>false</Sample>
359 </Reagent>
360 <Reagent Name="FPM" Description="PreMix" ViciPosition="14">
361 <Sample>false</Sample>
362 </Reagent>
363 <Reagent Name="FDR" Description="Formamide" ViciPosition="15">
364 <Sample>false</Sample>
365 </Reagent>
366 <Reagent Name="HP9" Description="Sequencing Primer Mix 2" ViciPosition="16">
367 <Sample>false</Sample>
368 </Reagent>
369 <Reagent Name="HP12" Description="Index Primer" ViciPosition="17">
370 <Sample>false</Sample>
371 </Reagent>
372 <Reagent Name="HP10" Description="Sequencing Primer Mix 1" ViciPosition="18">
373 <Sample>false</Sample>
374 </Reagent>
375 <Reagent Name="FLS" Description="Linearization Mix 1" ViciPosition="19">
376 <Sample>false</Sample>
377 </Reagent>
378 <Reagent Name="TMP" Description="Template" ViciPosition="20">
379 <Sample>true</Sample>
380 </Reagent>
381 </ReagentDefinition>
382 <ReagentDefinition Name="SbsReagents" IsPairedEnd="true">
383 <Reagent Name="IMM" Description="Incorporation Mix Reagent" ViciPosition="1">
384 <Sample>false</Sample>
385 </Reagent>
386 <Reagent Name="PW1" Description="25mL bottle with laboratory grade water" ViciPosition="2">
387 <Sample>false</Sample>
388 </Reagent>
389 <Reagent Name="SRM" Description="Scanning Mix Reagent" ViciPosition="3">
390 <Sample>false</Sample>
391 </Reagent>
392 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="4">
393 <Sample>false</Sample>
394 </Reagent>
395 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="5">
396 <Sample>false</Sample>
397 </Reagent>
398 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="6">
399 <Sample>false</Sample>
400 </Reagent>
401 <Reagent Name="CRM" Description="Cleavage Buffer" ViciPosition="7">
402 <Sample>false</Sample>
403 </Reagent>
404 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="8">
405 <Sample>false</Sample>
406 </Reagent>
407 <Reagent Name="FRM" Description="Resynthesis Mix" ViciPosition="10">
408 <Sample>false</Sample>
409 </Reagent>
410 <Reagent Name="FLM2" Description="Linearization Mix 2" ViciPosition="11">
411 <Sample>false</Sample>
412 </Reagent>
413 <Reagent Name="FLM1" Description="Linearization Mix 1" ViciPosition="12">
414 <Sample>false</Sample>
415 </Reagent>
416 <Reagent Name="AMS" Description="Amplification Mix" ViciPosition="13">
417 <Sample>false</Sample>
418 </Reagent>
419 <Reagent Name="FPM" Description="PreMix" ViciPosition="14">
420 <Sample>false</Sample>
421 </Reagent>
422 <Reagent Name="FDR" Description="Formamide" ViciPosition="15">
423 <Sample>false</Sample>
424 </Reagent>
425 <Reagent Name="HP11" Description="Sequencing Primer Mix 2" ViciPosition="16">
426 <Sample>false</Sample>
427 </Reagent>
428 <Reagent Name="HP12" Description="Index Primer" ViciPosition="17">
429 <Sample>false</Sample>
430 </Reagent>
431 <Reagent Name="HP10" Description="Sequencing Primer Mix 1" ViciPosition="18">
432 <Sample>false</Sample>
433 </Reagent>
434 <Reagent Name="PW1" Description="10mL bottle with laboratory grade water" ViciPosition="19">
435 <Sample>false</Sample>
436 </Reagent>
437 <Reagent Name="TMP" Description="Template" ViciPosition="20">
438 <Sample>false</Sample>
439 </Reagent>
440 </ReagentDefinition>
441 <ReagentDefinition Name="IndexingReagents-SR" IsPairedEnd="false">
442 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="5">
443 <Sample>false</Sample>
444 </Reagent>
445 <Reagent Name="USB" Description="Incorporation Buffer" ViciPosition="6">
446 <Sample>false</Sample>
447 </Reagent>
448 <Reagent Name="FDR" Description="Formamide" ViciPosition="15">
449 <Sample>false</Sample>
450 </Reagent>
451 <Reagent Name="HP12" Description="Indexing Sequencing Primer i7" ViciPosition="17">
452 <Sample>false</Sample>
453 </Reagent>
454 <Reagent Name="HP9" Description="Indexing Sequencing Primer i5" ViciPosition="16">
455 <Sample>false</Sample>
456 </Reagent>
457 </ReagentDefinition>
458 </ReagentDefinitions>
459 <CycleWaitDefinitions />
460 </RecipeFile>
0 <?xml version="1.0"?>
1 <ChemistryDefinitions Version="Calvados + AutoWashv4">
2
3 <ChemistryDefinition Name="CompleteCycle">
4 <ChemistryStep Description="Deblock" Repeat="1">
5 <Temp Duration="0" Temperature="60" />
6 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
7 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
8 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="22" />
9 <Wait Duration="10000" />
10 </ChemistryStep>
11 <ChemistryStep Description="Buffer Wash" Repeat="1">
12 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
13 </ChemistryStep>
14 <ChemistryStep Description="Incorporation" Repeat="1" IsIncorporation="true">
15 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="45" />
16 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
17 <Temp Duration="0" Temperature="65" />
18 <Wait Duration="20000" />
19 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
20 <DispenseAndWait Duration="20000" />
21 <Temp Duration="0" Temperature="22" />
22 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
23 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
24 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
25 <DispenseAndWait DispenseRate="7500" Duration="15000" />
26 </ChemistryStep>
27 </ChemistryDefinition>
28 <ChemistryDefinition Name="FirstBase">
29 <ChemistryStep Description="Incorporation" Repeat="1" IsIncorporation="true">
30 <Temp Duration="0" Temperature="60" />
31 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
32 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="45" />
33 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
34 <Temp Duration="0" Temperature="65" />
35 <Wait Duration="20000" />
36 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
37 <DispenseAndWait Duration="20000" />
38 <Temp Duration="0" Temperature="22" />
39 <Wait Duration="60000" />
40 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
41 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
42 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
43 <DispenseAndWait DispenseRate="7500" Duration="15000" />
44 </ChemistryStep>
45 </ChemistryDefinition>
46 <ChemistryDefinition Name="EndRead">
47 <ChemistryStep Description="Safe State" Repeat="1">
48 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
49 </ChemistryStep>
50 </ChemistryDefinition>
51 <ChemistryDefinition Name="End">
52 <ChemistryStep Description="Safe State" Repeat="1">
53 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="7500" Volume="750" />
54 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" DispenseRate="7500" Volume="750" />
55 </ChemistryStep>
56 </ChemistryDefinition>
57 <ChemistryDefinition Name="EndDeblock">
58 <ChemistryStep Description="Deblock" Repeat="1">
59 <Temp Duration="0" Temperature="60" />
60 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
61 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
62 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
63 <Wait Duration="40000" />
64 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
65 <Wait Duration="35000" />
66 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
67 <TempOff />
68 </ChemistryStep>
69 <ChemistryStep Description="Buffer Wash" Repeat="1">
70 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
71 </ChemistryStep>
72 </ChemistryDefinition>
73 <ChemistryDefinition Name="TemplateRinse">
74 <ChemistryStep Description="EmptyTemplate">
75 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="500" />
76 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="750" />
77 </ChemistryStep>
78 <ChemistryStep Description="STRPR2TemplateFirst InitialPrime">
79 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="500" />
80 <Dispense DispenseRate="2500" />
81 </ChemistryStep>
82 <ChemistryStep Description="STRPR2TemplateFirst DispenseToTemplate" Repeat="9">
83 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
84 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
85 </ChemistryStep>
86 <ChemistryStep Description="STRPR2TemplateFirst EmptyTube">
87 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
88 </ChemistryStep>
89 <ChemistryStep Description="STRPWTemplate InitialPrime">
90 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
91 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
92 <Dispense DispenseRate="2500" />
93 </ChemistryStep>
94 <ChemistryStep Description="STRPW1Template DispenseToTemplate" Repeat="4">
95 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="250" />
96 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
97 </ChemistryStep>
98 <ChemistryStep Description="STRPW2Template DispenseToTemplate" Repeat="4">
99 <Aspirate ReagentName="PW2" AspirationRate="2000" Volume="250" />
100 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
101 </ChemistryStep>
102 <ChemistryStep Description="STRPWTemplate EmptyTube">
103 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
104 </ChemistryStep>
105 <ChemistryStep Description="PR2 InitialPrime">
106 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="2500" Volume="2000" />
107 <Dispense DispenseRate="2500" />
108 </ChemistryStep>
109 <ChemistryStep Description="PR2 Reverse Flush">
110 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
111 <DispenseToFlowcell ReagentName="IMS" DispenseRate="2000" Volume="250" />
112 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
113 <DispenseToFlowcell ReagentName="LMX2" DispenseRate="2000" Volume="250" />
114 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
115 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="250" />
116 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
117 <DispenseToFlowcell ReagentName="RMF" DispenseRate="2000" Volume="250" />
118 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
119 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="250" />
120 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
121 <DispenseToFlowcell ReagentName="HP10" DispenseRate="2000" Volume="250" />
122 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
123 <DispenseToFlowcell ReagentName="AMS1" DispenseRate="2000" Volume="250" />
124 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
125 <DispenseToFlowcell ReagentName="HP12" DispenseRate="2000" Volume="250" />
126 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
127 <DispenseToFlowcell ReagentName="AMS2" DispenseRate="2000" Volume="250" />
128 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
129 <DispenseToFlowcell ReagentName="HP11" DispenseRate="2000" Volume="250" />
130 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
131 <DispenseToFlowcell ReagentName="LPM" DispenseRate="2000" Volume="250" />
132 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
133 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
134 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
135 <DispenseToFlowcell ReagentName="LDR" DispenseRate="500" Volume="250" />
136 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
137 <DispenseToFlowcell ReagentName="C1" DispenseRate="2000" Volume="250" />
138 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
139 <DispenseToFlowcell ReagentName="LMX1" DispenseRate="2000" Volume="250" />
140 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
141 <DispenseToFlowcell ReagentName="C2" DispenseRate="2000" Volume="250" />
142 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
143 <DispenseToFlowcell ReagentName="C3" DispenseRate="2000" Volume="250" />
144 </ChemistryStep>
145 <ChemistryStep Description="PW3 InitialPrime">
146 <PumpToFlowcell ReagentName="PW3" AspirationRate="2000" DispenseRate="2500" Volume="500" />
147 <Dispense DispenseRate="2500" />
148 </ChemistryStep>
149 <ChemistryStep Description="PW3 Reverse Flush">
150 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
151 <DispenseToFlowcell ReagentName="IMS" DispenseRate="2000" Volume="80" />
152 <DispenseToFlowcell ReagentName="RMF" DispenseRate="2000" Volume="80" />
153 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="80" />
154 <Dispense DispenseRate="2000" Volume="10"/>
155 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
156 <DispenseToFlowcell ReagentName="HP10" DispenseRate="2000" Volume="80" />
157 <DispenseToFlowcell ReagentName="PR2" DispenseRate="2000" Volume="80" />
158 <DispenseToFlowcell ReagentName="HP12" DispenseRate="2000" Volume="80" />
159 <Dispense DispenseRate="2000" Volume="10"/>
160 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
161 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="80" />
162 <DispenseToFlowcell ReagentName="HP11" DispenseRate="2000" Volume="80" />
163 <DispenseToFlowcell ReagentName="AMS1" DispenseRate="2000" Volume="80" />
164 <Dispense DispenseRate="2000" Volume="10"/>
165 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
166 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="80" />
167 <DispenseToFlowcell ReagentName="AMS2" DispenseRate="2000" Volume="80" />
168 <DispenseToFlowcell ReagentName="C1" DispenseRate="2000" Volume="80" />
169 <Dispense DispenseRate="2000" Volume="10"/>
170 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
171 <DispenseToFlowcell ReagentName="LPM" DispenseRate="2000" Volume="80" />
172 <DispenseToFlowcell ReagentName="C2" DispenseRate="2000" Volume="80" />
173 <DispenseToFlowcell ReagentName="LDR" DispenseRate="2000" Volume="80" />
174 <Dispense DispenseRate="2000" Volume="10"/>
175 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
176 <DispenseToFlowcell ReagentName="C3" DispenseRate="2000" Volume="80" />
177 <DispenseToFlowcell ReagentName="LMX1" DispenseRate="2000" Volume="80" />
178 <DispenseToFlowcell ReagentName="PR2" DispenseRate="2000" Volume="80" />
179 <Dispense DispenseRate="2000" Volume="10"/>
180 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
181 <DispenseToFlowcell ReagentName="LMX2" DispenseRate="2000" Volume="80" />
182 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="80" />
183 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="80" />
184 <Dispense DispenseRate="2000" Volume="10"/>
185 </ChemistryStep>
186 <ChemistryStep Description="ValveMotions" Repeat="8">
187 <PumpToFlowcell ReagentName="HP12" AspirationRate="2000" DispenseRate="2500" Volume="0" />
188 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" DispenseRate="2500" Volume="0" />
189 <PumpToFlowcell ReagentName="HP12" AspirationRate="2000" DispenseRate="2500" Volume="0" />
190 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" DispenseRate="2500" Volume="0" />
191 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="2500" Volume="0" />
192 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" DispenseRate="2500" Volume="0" />
193 </ChemistryStep>
194 </ChemistryDefinition>
195 <ChemistryDefinition Name="ResumeChemistry">
196 <ChemistryStep Description="Prepare for scanning" Repeat="1">
197 <Temp Duration="0" Temperature="22" />
198 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
199 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
200 <Wait Duration="15000" />
201 </ChemistryStep>
202 </ChemistryDefinition>
203 <ChemistryDefinition Name="PauseChemistry">
204 <ChemistryStep Description="Pause flowcell" Repeat="1">
205 <Temp Duration="0" Temperature="22" />
206 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
207 </ChemistryStep>
208 </ChemistryDefinition>
209 <ChemistryDefinition Name="OnBoardClusterGeneration">
210 <ChemistryStep Description="Flow Check" Repeat="1">
211 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
212 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
213 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="750" />
214 </ChemistryStep>
215 <ChemistryStep Description="Prime PR2 Bypass" Repeat="3">
216 <Dispense DispenseRate="2500" Volume="250" />
217 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
218 <Dispense DispenseRate="2500" Volume="250" />
219 </ChemistryStep>
220 <ChemistryStep Description="Initial Prime" Repeat="1">
221 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="300" />
222 <Temp Duration="30000" Temperature="40" />
223 <PumpToFlowcell ReagentName="AMS1" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
224 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
225 <PumpToFlowcell ReagentName="LPM" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
226 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
227 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
228 <Temp Duration="30000" Temperature="75" />
229 </ChemistryStep>
230 <ChemistryStep Description="TMP RampDown" Repeat="1">
231 <Wait Duration="300000" />
232 <Temp Duration="150000" Temperature="40" />
233 </ChemistryStep>
234 <ChemistryStep Description="TMP Buffer Wash" Repeat="15">
235 <PumpToFlowcell ReagentName="PR2" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="5" />
236 <Wait Duration="18000" />
237
238 </ChemistryStep>
239 <ChemistryStep Description="First Extension" Repeat="15">
240
241 <PumpToFlowcell ReagentName="AMS1" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="5" />
242 <Wait Duration="3000" />
243
244 </ChemistryStep>
245
246
247 <ChemistryStep Description="FE Wait Amp-TempRamp" Repeat="1">
248 <Wait Duration="90000" />
249 <Temp Duration="0" Temperature="50" />
250 </ChemistryStep>
251 <ChemistryStep Description="Amplification 1" Repeat="26">
252 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="28" />
253 <PumpToFlowcell ReagentName="LPM" AspirationRate="250" DispenseRate="7500" Volume="28" />
254 <PumpToFlowcell ReagentName="AMS1" AspirationRate="250" DispenseRate="7500" Volume="72" />
255 <Wait Duration="15000" />
256 </ChemistryStep>
257 <ChemistryStep Description="Amplification-Wash">
258 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
259 <Temp Temperature="20" />
260 </ChemistryStep>
261 <ChemistryStep Description="Linearisation">
262 <PumpToFlowcell ReagentName="LMX1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
263 <PumpToFlowcell ReagentName="LMX1" AspirationRate="250" DispenseRate="7500" Volume="75" />
264 <Temp Temperature="46" />
265 <Wait Duration="300000" />
266 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
267 </ChemistryStep>
268 <ChemistryStep Description="SBS Prime">
269 <Temp Temperature="20" />
270 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" DispenseRate="7500" Volume="300" />
271 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" DispenseRate="7500" Volume="300" />
272 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" DispenseRate="7500" Volume="300" />
273 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
274 </ChemistryStep>
275 </ChemistryDefinition>
276 <ChemistryDefinition Name="PairedEndTurnaround">
277 <ChemistryStep Description="Pre-resynthesis_tempramp">
278 <Temp Temperature="50" />
279 </ChemistryStep>
280 <ChemistryStep Description="Resynthesis" Repeat="8" >
281 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="28" />
282 <PumpToFlowcell ReagentName="LPM" AspirationRate="250" DispenseRate="7500" Volume="28" />
283 <PumpToFlowcell ReagentName="AMS2" AspirationRate="250" DispenseRate="7500" Volume="72" />
284 <Wait Duration="15000" />
285 </ChemistryStep>
286 <ChemistryStep Description="Post-resynthesis_wash">
287 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
288 <Temp Temperature="20" Duration="45000" />
289 </ChemistryStep>
290 <ChemistryStep Description="Linearisation 2">
291 <PumpToFlowcell ReagentName="LMX2" AspirationRate="2000" DispenseRate="7500" Volume="300" />
292 <PumpToFlowcell ReagentName="LMX2" AspirationRate="250" DispenseRate="7500" Volume="75" />
293 <Temp Temperature="38" />
294 <Wait Duration="300000"/>
295 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
296 </ChemistryStep>
297 </ChemistryDefinition>
298 <ChemistryDefinition Name="FirstReadPreparation">
299 <ChemistryStep Description="FirstReadPreparation">
300 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
301 <Temp Temperature="65" Duration="60000" />
302 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
303 <PumpToFlowcell ReagentName="C1" AspirationRate="250" DispenseRate="7500" Volume="75" />
304 <Temp Temperature="40" Duration="60000" />
305 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
306 <TempOff />
307 </ChemistryStep>
308 </ChemistryDefinition>
309 <ChemistryDefinition Name="SecondReadPreparation">
310 <ChemistryStep Description="SecondReadPreparation">
311 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
312 <Temp Temperature="65" Duration="60000" />
313 <PumpToFlowcell ReagentName="C3" AspirationRate="2000" DispenseRate="7500" Volume="300" />
314 <PumpToFlowcell ReagentName="C3" AspirationRate="250" DispenseRate="7500" Volume="75" />
315 <Temp Temperature="40" Duration="60000" />
316 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
317 <TempOff />
318 </ChemistryStep>
319 </ChemistryDefinition>
320 <ChemistryDefinition Name="Index1Preparation">
321 <ChemistryStep Description="Index1Preparation">
322 <Temp Temperature="20" Duration="25000" />
323 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
324 <Temp Temperature="65" Duration="60000" />
325 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
326 <PumpToFlowcell ReagentName="C1" AspirationRate="250" DispenseRate="7500" Volume="75" />
327 <Temp Temperature="40" Duration="60000" />
328 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
329 <TempOff />
330 </ChemistryStep>
331 </ChemistryDefinition>
332 <ChemistryDefinition Name="Deprotection">
333 <ChemistryStep Description="Deprotection">
334 <Temp Temperature="20" />
335 <Wait Duration="120000" />
336 <PumpToFlowcell ReagentName="RMF" AspirationRate="2000" DispenseRate="7500" Volume="300" />
337 <PumpToFlowcell ReagentName="RMF" AspirationRate="250" DispenseRate="7500" Volume="75" />
338 <Temp Temperature="38" />
339 <Wait Duration="300000"/>
340 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
341 </ChemistryStep>
342 <ChemistryStep Description="Denaturation">
343 <Temp Temperature="20" Duration="25000" />
344 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
345 <Temp Temperature="65" Duration="60000" />
346 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="300" />
347 <PumpToFlowcell ReagentName="PR2" AspirationRate="250" DispenseRate="7500" Volume="75" />
348 <Temp Temperature="40" Duration="60000" />
349 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
350 <TempOff />
351 </ChemistryStep>
352 </ChemistryDefinition>
353
354 <ChemistryDefinition Name="Index2Preparation">
355 <ChemistryStep Description="Index2Preparation">
356 <Temp Temperature="20" Duration="25000" />
357 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="2500" Volume="75" />
358 <Temp Temperature="65" Duration="60000" />
359 <PumpToFlowcell ReagentName="C2" AspirationRate="2000" DispenseRate="2500" Volume="300" />
360 <PumpToFlowcell ReagentName="C2" AspirationRate="250" DispenseRate="2500" Volume="75" />
361 <Temp Temperature="40" Duration="60000" />
362 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="2500" Volume="120" />
363 <TempOff />
364 </ChemistryStep>
365 </ChemistryDefinition>
366
367 <ChemistryDefinition Name="Index2FirstBaseDark">
368 <ChemistryStep Description="Incorporation" Repeat="1">
369 <Temp Temperature="60" Duration="0" />
370 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
371 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
372 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
373 <Temp Temperature="65" Duration="0" />
374 <Wait Duration="45000" />
375 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
376 <DispenseAndWait Duration="40000" />
377 <Temp Temperature="22" Duration="0" />
378 <Wait Duration="60000" />
379 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
380 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
381 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
382 <DispenseAndWait Duration="15000" />
383 </ChemistryStep>
384 </ChemistryDefinition>
385 <ChemistryDefinition Name="Index2CompleteCycleDark2">
386 <ChemistryStep Description="Deblock" Repeat="1">
387 <Temp Temperature="60" Duration="0" />
388 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
389 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
390 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
391 <Wait Duration="35000" />
392 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
393 <DispenseAndWait DispenseRate="7500" Duration="30000" />
394 </ChemistryStep>
395 <ChemistryStep Description="Buffer Wash" Repeat="1">
396 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
397 </ChemistryStep>
398 <ChemistryStep Description="Incorporation" Repeat="1">
399 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
400 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
401 <Temp Temperature="65" Duration="0" />
402 <Wait Duration="45000" />
403 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
404 <DispenseAndWait Duration="40000" />
405 <Temp Temperature="22" Duration="0" />
406 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
407 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
408 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
409 <DispenseAndWait DispenseRate="7500" Duration="15000" />
410 </ChemistryStep>
411 </ChemistryDefinition>
412 </ChemistryDefinitions>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Exposures>
2 <Exposure Name="A" Start="1037" Ramp="0" />
3 <Exposure Name="T" Start="500" Ramp="0" />
4 <Exposure Name="C" Start="1037" Ramp="0" />
5 <Exposure Name="G" Start="500" Ramp="0" />
6 </Exposures>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Exposures>
2 <Exposure Name="A" Start="260" IsIndexed="false" Ramp="5.2" />
3 <Exposure Name="A" Start="1037" IsIndexed="true" Ramp="0" />
4 <Exposure Name="T" Start="125" IsIndexed="false" Ramp="2.5" />
5 <Exposure Name="T" Start="500" IsIndexed="true" Ramp="0" />
6 <Exposure Name="C" Start="260" IsIndexed="false" Ramp="5.2" />
7 <Exposure Name="C" Start="1037" IsIndexed="true" Ramp="0" />
8 <Exposure Name="G" Start="125" IsIndexed="false" Ramp="2.5" />
9 <Exposure Name="G" Start="500" IsIndexed="true" Ramp="0" />
10 </Exposures>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="EndDeblock" />
15 <ReadRef ReadName="FirstRead" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ChemistryRef ChemistryName="Index1Preparation" />
18 <ReadRef ReadName="IndexRead1" />
19 <ChemistryRef ChemistryName="EndDeblock" />
20 <ChemistryRef ChemistryName="TemplateRinse" />
21 <ChemistryRef ChemistryName="End" />
22
23 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="EndDeblock" />
15 <ReadRef ReadName="FirstRead" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ChemistryRef ChemistryName="Index1Preparation" />
18 <ReadRef ReadName="IndexRead1" />
19 <ChemistryRef ChemistryName="EndDeblock" />
20 <ChemistryRef ChemistryName="Index2Preparation" />
21 <ReadRef ReadName="IndexRead2" />
22 <ChemistryRef ChemistryName="TemplateRinse" />
23 <ChemistryRef ChemistryName="End" />
24 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="EndDeblock" />
15 <ReadRef ReadName="FirstRead" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ChemistryRef ChemistryName="Index1Preparation" />
18 <ReadRef ReadName="IndexRead1" />
19 <ChemistryRef ChemistryName="EndDeblock" />
20 <ChemistryRef ChemistryName="Deprotection" />
21 <ChemistryRef ChemistryName="PairedEndTurnaround" />
22 <ChemistryRef ChemistryName="SecondReadPreparation" />
23 <ReadRef ReadName="SecondRead" />
24 <ChemistryRef ChemistryName="EndDeblock" />
25 <ChemistryRef ChemistryName="TemplateRinse" />
26 <ChemistryRef ChemistryName="End" />
27 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="EndDeblock" />
15 <ReadRef ReadName="FirstRead" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ChemistryRef ChemistryName="Index1Preparation" />
18 <ReadRef ReadName="IndexRead1" />
19 <ChemistryRef ChemistryName="EndDeblock" />
20 <ChemistryRef ChemistryName="Index2Preparation" />
21 <ReadRef ReadName="IndexRead2" />
22 <ChemistryRef ChemistryName="EndDeblock" />
23 <ChemistryRef ChemistryName="Deprotection" />
24 <ChemistryRef ChemistryName="PairedEndTurnaround" />
25 <ChemistryRef ChemistryName="SecondReadPreparation" />
26 <ReadRef ReadName="SecondRead" />
27 <ChemistryRef ChemistryName="EndDeblock" />
28 <ChemistryRef ChemistryName="TemplateRinse" />
29 <ChemistryRef ChemistryName="End" />
30 </Protocol>
0 <?xml version="1.0"?>
1 <ReadDefinitions Version="Fraise 0.7.1 Amplicon v1.1">
2 <ReadDefinition Name="FirstRead">
3 <FirstBase ChemistryName="FirstBase" Cycles="1" />
4 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
5 <End ChemistryName="EndRead" />
6 </ReadDefinition>
7 <ReadDefinition Name="IndexRead1" IsIndexed="True" >
8 <FirstBase ChemistryName="FirstBase" Cycles="1" />
9 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
10 <End ChemistryName="EndRead" />
11 </ReadDefinition>
12 <ReadDefinition Name="SecondRead" IsIndexed="false">
13 <FirstBase ChemistryName="FirstBase" Cycles="1" />
14 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
15 <End ChemistryName="EndRead" />
16 </ReadDefinition>
17 <ReadDefinition Name="IndexRead2" IsIndexed="true">
18 <FirstBase ChemistryName="FirstBase" Cycles="1" />
19 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
20 <End ChemistryName="EndRead" />
21 </ReadDefinition>
22 </ReadDefinitions>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Bolt Avocado Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="1" />
3 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="2" />
4 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="3" />
5 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="4" />
6 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="5" />
7 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="6" />
8 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="7" />
9 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="8" />
10 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="9" />
11 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="10" />
12 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="11" />
13 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="12" />
14 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="13" />
15 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="15" />
17 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="16" />
18 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="17" />
19 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="18" />
20 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="19" />
21 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="20" />
22 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="21" />
23 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="22" />
24 </Reagents>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Bolt Avocado Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="1" />
3 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="2" />
4 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="3" />
5 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="4" />
6 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="5" />
7 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="6" />
8 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="7" />
9 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="8" />
10 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="9" />
11 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="10" />
12 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="11" />
13 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="12" />
14 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="13" />
15 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="15" />
17 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="16" />
18 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="17" />
19 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="18" />
20 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="19" />
21 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="20" />
22 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="21" />
23 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="22" />
24 </Reagents>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Shock Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="IMS" Description="Incorporation Mix" SelectorValvePosition="1" />
3 <Reagent Name="SRE" Description="Scan Mix" SelectorValvePosition="2" />
4 <Reagent Name="PR2" Description="Incorporation Buffer" SelectorValvePosition="3" />
5 <Reagent Name="CMS" Description="Cleavage Mix" SelectorValvePosition="4" />
6 <Reagent Name="AMS1" Description="Amplification Mix 1" SelectorValvePosition="5" />
7 <Reagent Name="AMS2" Description="Amplification Mix 2" SelectorValvePosition="6" />
8 <Reagent Name="LPM" Description="Lin Pre Mix" SelectorValvePosition="7" />
9 <Reagent Name="LDR" Description="Formamide" SelectorValvePosition="8" />
10 <Reagent Name="LMX1" Description="Linearization Mix" SelectorValvePosition="9" />
11 <Reagent Name="LMX2" Description="R2 Lin Mix" SelectorValvePosition="10" />
12 <Reagent Name="RMF" Description="Resynthesis Mix" SelectorValvePosition="11" />
13 <Reagent Name="HP10" Description="R1 Primer Mix" SelectorValvePosition="12" />
14 <Reagent Name="HP12" Description="Index Primer Mix" SelectorValvePosition="13" />
15 <Reagent Name="HP11" Description="R2 Primer Mix" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="Water" SelectorValvePosition="15" />
17 <Reagent Name="PW2" Description="Water" SelectorValvePosition="16" />
18 <Reagent Name="TMP" Description="Template" SelectorValvePosition="17" />
19 <Reagent Name="C1" Description="Custom 1 Primer Mix" SelectorValvePosition="18" />
20 <Reagent Name="C2" Description="Custom 2 Primer Mix" SelectorValvePosition="19" />
21 <Reagent Name="C3" Description="Custom 3 Primer Mix" SelectorValvePosition="20" />
22 <Reagent Name="PW3" Description="Water" SelectorValvePosition="21" />
23 </Reagents>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LineWash_v0.3">
2
3 <Protocol Version="LineWash">
4 <ChemistryRef ChemistryName="LineWash" Repeat="1" />
5 </Protocol>
6
7 <ChemistryDefinitions Version="LineWash_v0.3">
8 <ChemistryDefinition Name="CleanSyringe">
9 <ChemistryStep Description="CleanSyringe" Repeat="1"> <!--run water through syringe to reduce carryover since about to backflush-->
10 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="1000" />
11 <Wait Duration="10000" />
12 <AspirateFromBypass ReagentName="PW1" AspirationRate="500" DispenseRate="1000" Volume="500" />
13 <Wait Duration="10000" />
14 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="500" />
15 </ChemistryStep>
16 </ChemistryDefinition>
17 <ChemistryDefinition Name="Oscillate">
18 <ChemistryStep Description="Oscillate" Repeat="1">
19 <!--add airbubble, fill syringe, and slowly pump back and forth increasing pressure-->
20 <PumpToFlowcell Solution="23" AspirationRate="1000" DispenseRate="2500" Volume="15" />
21 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
22 </ChemistryStep>
23 <ChemistryStep Description="OscillateSubStep" Repeat="49">
24 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="5"/>
25 <Wait Duration="1000" />
26 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="5" />
27 <Wait Duration="1000" />
28 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="10"/>
29 <Wait Duration="1000" />
30 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="5" />
31 <Wait Duration="6000" />
32 </ChemistryStep>
33 </ChemistryDefinition>
34 <ChemistryDefinition Name="Reprime">
35 <ChemistryStep Description="Reprime" Repeat="1"> <!--prime line with 500uL-->
36 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="500" />
37 </ChemistryStep>
38 </ChemistryDefinition>
39 <ChemistryDefinition Name="Flush">
40 <ChemistryStep Description="Flush" Repeat="1"> <!--empty tube and refill from bypass-->
41 <PumpToFlowcell ReagentName="PW1" AspirationRate="5000" DispenseRate="5000" Volume="3000" />
42 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
43 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
44 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
45 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
46 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
47 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
48 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
49 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
50 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
51 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
52 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
53 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
54 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
55 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
56 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
57 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
58 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
59 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
60 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
61 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
62 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
63 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
64 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
65 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
66 </ChemistryStep>
67 </ChemistryDefinition>
68 <ChemistryDefinition Name="Wait180000">
69 <ChemistryStep Description="Wait180000" Repeat="1">
70 <Wait Duration="180000" />
71 </ChemistryStep>
72 </ChemistryDefinition>
73 </ChemistryDefinitions>
74
75 - <Reagents Name="ClogWashReagents" Version="Selector Valve Positions v2.2">
76 <Reagent Name="PW1" Description="Water" SelectorValvePosition="1" />
77 <Reagent Name="PW1" Description="Water" SelectorValvePosition="2" />
78 <Reagent Name="PW1" Description="Water" SelectorValvePosition="3" />
79 <Reagent Name="PW1" Description="Water" SelectorValvePosition="4" />
80 <Reagent Name="PW1" Description="Water" SelectorValvePosition="5" />
81 <Reagent Name="PW1" Description="Water" SelectorValvePosition="6" />
82 <Reagent Name="PW1" Description="Water" SelectorValvePosition="7" />
83 <Reagent Name="PW1" Description="Water" SelectorValvePosition="8" />
84 <Reagent Name="PW1" Description="Water" SelectorValvePosition="9" />
85 <Reagent Name="PW1" Description="Water" SelectorValvePosition="10" />
86 <Reagent Name="PW1" Description="Water" SelectorValvePosition="11" />
87 <Reagent Name="PW1" Description="Water" SelectorValvePosition="12" />
88 <Reagent Name="PW1" Description="Water" SelectorValvePosition="13" />
89 <Reagent Name="PW1" Description="Water" SelectorValvePosition="14" />
90 <Reagent Name="PW1" Description="Water" SelectorValvePosition="15" />
91 <Reagent Name="PW1" Description="Water" SelectorValvePosition="16" />
92 <Reagent Name="PW1" Description="Water" SelectorValvePosition="17" />
93 <Reagent Name="PW1" Description="Water" SelectorValvePosition="18" />
94 <Reagent Name="PW1" Description="Water" SelectorValvePosition="19" />
95 <Reagent Name="PW1" Description="Water" SelectorValvePosition="20" />
96 <Reagent Name="PW1" Description="Water" SelectorValvePosition="21" />
97 <Reagent Name="PW1" Description="Water" SelectorValvePosition="22" />
98 </Reagents>
99
100 <Name>LineWash_v0.3</Name>
101 </Recipe>
0 <?xml version="1.0" ?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="Maintenance Wash Recipe">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5 <ChemistryDefinitions>
6 <ChemistryDefinition Name="Wash">
7 <ChemistryStep Description="Wash">
8 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
10 <Dispense DispenseRate="2500" Volume="250" />
11 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
12 <Dispense DispenseRate="2500" Volume="250" />
13 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
14 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
15 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
18 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
19 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <Dispense DispenseRate="2500" Volume="250" />
40 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
41 <Dispense DispenseRate="2500" Volume="250" />
42 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
43 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
44 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
45 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
46 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
47 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
48 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
49 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
50 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
51 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
52 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
53 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
54 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
55 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
56 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
57 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
58 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
59 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
60 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
61 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
62 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
63 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
64 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
65 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
66 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
67 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
68 <Dispense DispenseRate="2500" Volume="250" />
69 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
70 <Dispense DispenseRate="2500" Volume="250" />
71 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
72 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
73 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
74 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
75 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
76 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
77 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
78 <Dispense DispenseRate="2500" Volume="250" />
79 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
80 <Dispense DispenseRate="2500" Volume="250" />
81 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
82 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
83 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
84 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
85 </ChemistryStep>
86 </ChemistryDefinition>
87 </ChemistryDefinitions>
88 <Reagents>
89 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
90 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
91 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
92 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
93 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
94 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
95 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
96 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
97 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
98 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
99 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
100 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
101 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
102 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
103 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
104 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
105 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
106 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
107 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
108 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
109 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
110 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
111
112 </Reagents>
113 <Name>PostRunWash_v1.0.1</Name>
114 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="PostRunWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5
6 <ChemistryDefinitions>
7 <ChemistryDefinition Name="Wash">
8 <ChemistryStep Description="TemplateNaOClAspirate">
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
10 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="1250" />
11 </ChemistryStep>
12 <ChemistryStep Description="Prime">
13 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
14 <Dispense DispenseRate="7500" />
15 </ChemistryStep>
16 <ChemistryStep Description="Wash1" Repeat="8">
17 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
18 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
19 </ChemistryStep>
20 <ChemistryStep Description="EmptyTube">
21 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
22 </ChemistryStep>
23 <ChemistryStep Description="Prime">
24 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
25 <Dispense DispenseRate="7500" />
26 </ChemistryStep>
27 <ChemistryStep Description="Wash2" Repeat="8">
28 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
29 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
30 </ChemistryStep>
31 <ChemistryStep Description="EmptyTube">
32 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
33 </ChemistryStep>
34 <ChemistryStep Description="Prime">
35 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
36 <Dispense DispenseRate="7500" />
37 </ChemistryStep>
38 <ChemistryStep Description="Wash3" Repeat="8">
39 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
40 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
41 </ChemistryStep>
42 <ChemistryStep Description="Wash">
43 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
44 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
45 <Dispense DispenseRate="7500" Volume="250" />
46 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
47 <Dispense DispenseRate="7500" Volume="250" />
48 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
49 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
50 <Dispense DispenseRate="7500" />
51 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="7500" Volume="250" />
52 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="7500" Volume="250" />
53 <Dispense DispenseRate="7500" />
54 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="7500" Volume="250" />
55 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
56 <Dispense DispenseRate="7500" />
57 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
58 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
59 <Dispense DispenseRate="7500" />
60 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
61 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="7500" Volume="250" />
62 <Dispense DispenseRate="7500" />
63 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="7500" Volume="250" />
64 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="7500" Volume="250" />
65 <Dispense DispenseRate="7500" />
66 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="7500" Volume="250" />
67 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="7500" Volume="250" />
68 <Dispense DispenseRate="7500" />
69 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="7500" Volume="250" />
70 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="7500" Volume="250" />
71 <Dispense DispenseRate="7500" />
72 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
73 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
74 <Dispense DispenseRate="7500" />
75 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
76 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
77 <Dispense DispenseRate="7500" />
78 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="7500" Volume="250" />
79 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="7500" Volume="250" />
80 <Dispense DispenseRate="7500" />
81 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="7500" Volume="250" />
82 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="7500" Volume="250" />
83 <Dispense DispenseRate="7500" />
84 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
85 <Dispense DispenseRate="7500" Volume="250" />
86 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
87 <Dispense DispenseRate="7500" Volume="250" />
88 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
89 <Dispense DispenseRate="7500" Volume="250" />
90 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
91 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
92 <Dispense DispenseRate="7500" />
93 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="7500" Volume="250" />
94 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="7500" Volume="250" />
95 <Dispense DispenseRate="7500" />
96 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="7500" Volume="250" />
97 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
98 <Dispense DispenseRate="7500" />
99 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
100 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
101 <Dispense DispenseRate="7500" />
102 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
103 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="7500" Volume="250" />
104 <Dispense DispenseRate="7500" />
105 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="7500" Volume="250" />
106 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="7500" Volume="250" />
107 <Dispense DispenseRate="7500" />
108 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="7500" Volume="250" />
109 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="7500" Volume="250" />
110 <Dispense DispenseRate="7500" />
111 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="7500" Volume="250" />
112 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="7500" Volume="250" />
113 <Dispense DispenseRate="7500" />
114 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
115 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
116 <Dispense DispenseRate="7500" />
117 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
118 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
119 <Dispense DispenseRate="7500" />
120 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
121 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
122 <Dispense DispenseRate="7500" />
123 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
124 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
125 <Dispense DispenseRate="7500" />
126 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
127 <Dispense DispenseRate="7500" Volume="250" />
128 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
129 <Dispense DispenseRate="7500" Volume="250" />
130 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
131 <Dispense DispenseRate="7500" Volume="250" />
132 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
133 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
134 <Dispense DispenseRate="7500" />
135 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
136 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
137 <Dispense DispenseRate="7500" />
138 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
139 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
140 <Dispense DispenseRate="7500" />
141 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
142 <Dispense DispenseRate="7500" Volume="250" />
143 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
144 <Dispense DispenseRate="7500" Volume="250" />
145 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="7500" Volume="250" />
146 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="7500" Volume="250" />
147 <Dispense DispenseRate="7500" />
148 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="7500" Volume="250" />
149 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="7500" Volume="250" />
150 </ChemistryStep>
151 </ChemistryDefinition>
152 </ChemistryDefinitions>
153 <Reagents>
154 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
155 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
156 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
157 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
158 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
159 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
160 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
161 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
162 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
163 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
164 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
165 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
166 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
167 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
168 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
169 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
170 <Reagent Name="PW1" Description="DiluteNaOCl" ViciPosition="17" />
171 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
172 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
173 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
174 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
175 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
176
177 </Reagents>
178 <Name>PostRunWash_v1.0.1</Name>
179 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="PostRunWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5 <ChemistryDefinitions>
6 <ChemistryDefinition Name="Wash">
7 <ChemistryStep Description="Wash">
8 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
10 <Dispense DispenseRate="2500" Volume="250" />
11 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
12 <Dispense DispenseRate="2500" Volume="250" />
13 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
14 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
15 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
18 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
19 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <Dispense DispenseRate="2500" Volume="250" />
40 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
41 <Dispense DispenseRate="2500" Volume="250" />
42 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
43 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
44 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
45 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
46 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
47 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
48 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
49 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
50 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
51 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
52 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
53 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
54 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
55 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
56 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
57 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
58 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
59 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
60 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
61 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
62 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
63 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
64 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
65 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
66 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
67 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
68 <Dispense DispenseRate="2500" Volume="250" />
69 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
70 <Dispense DispenseRate="2500" Volume="250" />
71 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
72 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
73 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
74 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
75 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
76 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
77 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
78 <Dispense DispenseRate="2500" Volume="250" />
79 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
80 <Dispense DispenseRate="2500" Volume="250" />
81 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
82 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
83 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
84 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
85 </ChemistryStep>
86 </ChemistryDefinition>
87 </ChemistryDefinitions>
88 <Reagents>
89 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
90 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
91 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
92 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
93 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
94 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
95 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
96 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
97 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
98 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
99 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
100 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
101 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
102 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
103 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
104 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
105 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
106 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
107 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
108 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
109 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
110 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
111
112 </Reagents>
113 <Name>PostRunWash_v1.0.1</Name>
114 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="StandbyWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="Standby Wash 1 of 8" ChemistryName="Wash" />
4 <ChemistryRef Description="Standby Wash 2 of 8" ChemistryName="Wash" />
5 <ChemistryRef Description="Standby Wash 3 of 8" ChemistryName="Wash" />
6 <ChemistryRef Description="Standby Wash 4 of 8" ChemistryName="Wash" />
7 <ChemistryRef Description="Standby Wash 5 of 8" ChemistryName="Wash" />
8 <ChemistryRef Description="Standby Wash 6 of 8" ChemistryName="Wash" />
9 <ChemistryRef Description="Standby Wash 7 of 8" ChemistryName="Wash" />
10 <ChemistryRef Description="Standby Wash 8 of 8" ChemistryName="Wash" />
11 </Protocol>
12 <ChemistryDefinitions>
13 <ChemistryDefinition Name="Wash">
14 <ChemistryStep Description="Wash">
15 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <Dispense DispenseRate="2500" Volume="250" />
18 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
19 <Dispense DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
40 </ChemistryStep>
41 </ChemistryDefinition>
42 </ChemistryDefinitions>
43 <Reagents>
44 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
45 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
46 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
47 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
48 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
49 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
50 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
51 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
52 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
53 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
54 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
55 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
56 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
57 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
58 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
59 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
60 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
61 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
62 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
63 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
64 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
65 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
66
67 </Reagents>
68 <Name>StandbyWash_v1.0.0</Name>
69 </Recipe>
0 <?xml version="1.0"?>
1 <ChemistryDefinitions Version="Calvados + AutoWashv4">
2
3 <ChemistryDefinition Name="CompleteCycle">
4 <ChemistryStep Description="Deblock" Repeat="1">
5 <Temp Duration="0" Temperature="60" />
6 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
7 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
8 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="22" />
9 <Wait Duration="10000" />
10 </ChemistryStep>
11 <ChemistryStep Description="Buffer Wash" Repeat="1">
12 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
13 </ChemistryStep>
14 <ChemistryStep Description="Incorporation" Repeat="1" IsIncorporation="true">
15 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="45" />
16 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
17 <Temp Duration="0" Temperature="65" />
18 <Wait Duration="20000" />
19 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
20 <DispenseAndWait Duration="20000" />
21 <Temp Duration="0" Temperature="22" />
22 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
23 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
24 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
25 <DispenseAndWait DispenseRate="7500" Duration="15000" />
26 </ChemistryStep>
27 </ChemistryDefinition>
28 <ChemistryDefinition Name="FirstBase">
29 <ChemistryStep Description="Incorporation" Repeat="1" IsIncorporation="true">
30 <Temp Duration="0" Temperature="60" />
31 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
32 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="45" />
33 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
34 <Temp Duration="0" Temperature="65" />
35 <Wait Duration="20000" />
36 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
37 <DispenseAndWait Duration="20000" />
38 <Temp Duration="0" Temperature="22" />
39 <Wait Duration="60000" />
40 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
41 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
42 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
43 <DispenseAndWait DispenseRate="7500" Duration="15000" />
44 </ChemistryStep>
45 </ChemistryDefinition>
46 <ChemistryDefinition Name="EndRead">
47 <ChemistryStep Description="Safe State" Repeat="1">
48 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
49 </ChemistryStep>
50 </ChemistryDefinition>
51 <ChemistryDefinition Name="End">
52 <ChemistryStep Description="Safe State" Repeat="1">
53 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="7500" Volume="750" />
54 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" DispenseRate="7500" Volume="750" />
55 </ChemistryStep>
56 </ChemistryDefinition>
57 <ChemistryDefinition Name="EndDeblock">
58 <ChemistryStep Description="Deblock" Repeat="1">
59 <Temp Duration="0" Temperature="60" />
60 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
61 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
62 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
63 <Wait Duration="40000" />
64 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
65 <Wait Duration="35000" />
66 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
67 <TempOff />
68 </ChemistryStep>
69 <ChemistryStep Description="Buffer Wash" Repeat="1">
70 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
71 </ChemistryStep>
72 </ChemistryDefinition>
73 <ChemistryDefinition Name="TemplateRinse">
74 <ChemistryStep Description="EmptyTemplate">
75 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="500" />
76 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="750" />
77 </ChemistryStep>
78 <ChemistryStep Description="STRPR2TemplateFirst InitialPrime">
79 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="500" />
80 <Dispense DispenseRate="2500" />
81 </ChemistryStep>
82 <ChemistryStep Description="STRPR2TemplateFirst DispenseToTemplate" Repeat="9">
83 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
84 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
85 </ChemistryStep>
86 <ChemistryStep Description="STRPR2TemplateFirst EmptyTube">
87 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
88 </ChemistryStep>
89 <ChemistryStep Description="STRPWTemplate InitialPrime">
90 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
91 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
92 <Dispense DispenseRate="2500" />
93 </ChemistryStep>
94 <ChemistryStep Description="STRPW1Template DispenseToTemplate" Repeat="4">
95 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="250" />
96 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
97 </ChemistryStep>
98 <ChemistryStep Description="STRPW2Template DispenseToTemplate" Repeat="4">
99 <Aspirate ReagentName="PW2" AspirationRate="2000" Volume="250" />
100 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
101 </ChemistryStep>
102 <ChemistryStep Description="STRPWTemplate EmptyTube">
103 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
104 </ChemistryStep>
105 <ChemistryStep Description="PR2 InitialPrime">
106 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="2500" Volume="2000" />
107 <Dispense DispenseRate="2500" />
108 </ChemistryStep>
109 <ChemistryStep Description="PR2 Reverse Flush">
110 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
111 <DispenseToFlowcell ReagentName="IMS" DispenseRate="2000" Volume="250" />
112 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
113 <DispenseToFlowcell ReagentName="LMX2" DispenseRate="2000" Volume="250" />
114 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
115 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="250" />
116 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
117 <DispenseToFlowcell ReagentName="RMF" DispenseRate="2000" Volume="250" />
118 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
119 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="250" />
120 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
121 <DispenseToFlowcell ReagentName="HP10" DispenseRate="2000" Volume="250" />
122 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
123 <DispenseToFlowcell ReagentName="AMS1" DispenseRate="2000" Volume="250" />
124 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
125 <DispenseToFlowcell ReagentName="HP12" DispenseRate="2000" Volume="250" />
126 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
127 <DispenseToFlowcell ReagentName="AMS2" DispenseRate="2000" Volume="250" />
128 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
129 <DispenseToFlowcell ReagentName="HP11" DispenseRate="2000" Volume="250" />
130 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
131 <DispenseToFlowcell ReagentName="LPM" DispenseRate="2000" Volume="250" />
132 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
133 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="250" />
134 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
135 <DispenseToFlowcell ReagentName="LDR" DispenseRate="500" Volume="250" />
136 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
137 <DispenseToFlowcell ReagentName="C1" DispenseRate="2000" Volume="250" />
138 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
139 <DispenseToFlowcell ReagentName="LMX1" DispenseRate="2000" Volume="250" />
140 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
141 <DispenseToFlowcell ReagentName="C2" DispenseRate="2000" Volume="250" />
142 <Aspirate ReagentName="PR2" AspirationRate="2000" Volume="250" />
143 <DispenseToFlowcell ReagentName="C3" DispenseRate="2000" Volume="250" />
144 </ChemistryStep>
145 <ChemistryStep Description="PW3 InitialPrime">
146 <PumpToFlowcell ReagentName="PW3" AspirationRate="2000" DispenseRate="2500" Volume="500" />
147 <Dispense DispenseRate="2500" />
148 </ChemistryStep>
149 <ChemistryStep Description="PW3 Reverse Flush">
150 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
151 <DispenseToFlowcell ReagentName="IMS" DispenseRate="2000" Volume="80" />
152 <DispenseToFlowcell ReagentName="RMF" DispenseRate="2000" Volume="80" />
153 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="80" />
154 <Dispense DispenseRate="2000" Volume="10"/>
155 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
156 <DispenseToFlowcell ReagentName="HP10" DispenseRate="2000" Volume="80" />
157 <DispenseToFlowcell ReagentName="PR2" DispenseRate="2000" Volume="80" />
158 <DispenseToFlowcell ReagentName="HP12" DispenseRate="2000" Volume="80" />
159 <Dispense DispenseRate="2000" Volume="10"/>
160 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
161 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="80" />
162 <DispenseToFlowcell ReagentName="HP11" DispenseRate="2000" Volume="80" />
163 <DispenseToFlowcell ReagentName="AMS1" DispenseRate="2000" Volume="80" />
164 <Dispense DispenseRate="2000" Volume="10"/>
165 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
166 <DispenseToFlowcell ReagentName="TMP" DispenseRate="2000" Volume="80" />
167 <DispenseToFlowcell ReagentName="AMS2" DispenseRate="2000" Volume="80" />
168 <DispenseToFlowcell ReagentName="C1" DispenseRate="2000" Volume="80" />
169 <Dispense DispenseRate="2000" Volume="10"/>
170 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
171 <DispenseToFlowcell ReagentName="LPM" DispenseRate="2000" Volume="80" />
172 <DispenseToFlowcell ReagentName="C2" DispenseRate="2000" Volume="80" />
173 <DispenseToFlowcell ReagentName="LDR" DispenseRate="2000" Volume="80" />
174 <Dispense DispenseRate="2000" Volume="10"/>
175 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
176 <DispenseToFlowcell ReagentName="C3" DispenseRate="2000" Volume="80" />
177 <DispenseToFlowcell ReagentName="LMX1" DispenseRate="2000" Volume="80" />
178 <DispenseToFlowcell ReagentName="PR2" DispenseRate="2000" Volume="80" />
179 <Dispense DispenseRate="2000" Volume="10"/>
180 <Aspirate ReagentName="PW3" AspirationRate="2000" Volume="250" />
181 <DispenseToFlowcell ReagentName="LMX2" DispenseRate="2000" Volume="80" />
182 <DispenseToFlowcell ReagentName="SRE" DispenseRate="2000" Volume="80" />
183 <DispenseToFlowcell ReagentName="CMS" DispenseRate="2000" Volume="80" />
184 <Dispense DispenseRate="2000" Volume="10"/>
185 </ChemistryStep>
186 <ChemistryStep Description="ValveMotions" Repeat="8">
187 <PumpToFlowcell ReagentName="HP12" AspirationRate="2000" DispenseRate="2500" Volume="0" />
188 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" DispenseRate="2500" Volume="0" />
189 <PumpToFlowcell ReagentName="HP12" AspirationRate="2000" DispenseRate="2500" Volume="0" />
190 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" DispenseRate="2500" Volume="0" />
191 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="2500" Volume="0" />
192 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" DispenseRate="2500" Volume="0" />
193 </ChemistryStep>
194 </ChemistryDefinition>
195 <ChemistryDefinition Name="ResumeChemistry">
196 <ChemistryStep Description="Prepare for scanning" Repeat="1">
197 <Temp Duration="0" Temperature="22" />
198 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
199 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
200 <Wait Duration="15000" />
201 </ChemistryStep>
202 </ChemistryDefinition>
203 <ChemistryDefinition Name="PauseChemistry">
204 <ChemistryStep Description="Pause flowcell" Repeat="1">
205 <Temp Duration="0" Temperature="22" />
206 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
207 </ChemistryStep>
208 </ChemistryDefinition>
209 <ChemistryDefinition Name="OnBoardClusterGeneration">
210 <ChemistryStep Description="Flow Check" Repeat="1">
211 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
212 <PumpToFlowcell ReagentName="PW2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
213 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="750" />
214 </ChemistryStep>
215 <ChemistryStep Description="Prime PR2 Bypass" Repeat="3">
216 <Dispense DispenseRate="2500" Volume="250" />
217 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
218 <Dispense DispenseRate="2500" Volume="250" />
219 </ChemistryStep>
220 <ChemistryStep Description="Initial Prime" Repeat="1">
221 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="300" />
222 <Temp Duration="30000" Temperature="40" />
223 <PumpToFlowcell ReagentName="AMS1" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
224 <PumpToFlowcell ReagentName="AMS2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
225 <PumpToFlowcell ReagentName="LPM" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
226 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
227 <PumpToFlowcell ReagentName="TMP" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="300" />
228 <Temp Duration="30000" Temperature="75" />
229 </ChemistryStep>
230 <ChemistryStep Description="TMP RampDown" Repeat="1">
231 <Wait Duration="300000" />
232 <Temp Duration="150000" Temperature="40" />
233 </ChemistryStep>
234 <ChemistryStep Description="TMP Buffer Wash" Repeat="15">
235 <PumpToFlowcell ReagentName="PR2" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="5" />
236 <Wait Duration="18000" />
237
238 </ChemistryStep>
239 <ChemistryStep Description="First Extension" Repeat="15">
240
241 <PumpToFlowcell ReagentName="AMS1" AspirationRate="250" Solution="0" DispenseRate="7500" Volume="5" />
242 <Wait Duration="3000" />
243
244 </ChemistryStep>
245
246
247 <ChemistryStep Description="FE Wait Amp-TempRamp" Repeat="1">
248 <Wait Duration="90000" />
249 <Temp Duration="0" Temperature="50" />
250 </ChemistryStep>
251 <ChemistryStep Description="Amplification 1" Repeat="26">
252 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="28" />
253 <PumpToFlowcell ReagentName="LPM" AspirationRate="250" DispenseRate="7500" Volume="28" />
254 <PumpToFlowcell ReagentName="AMS1" AspirationRate="250" DispenseRate="7500" Volume="72" />
255 <Wait Duration="15000" />
256 </ChemistryStep>
257 <ChemistryStep Description="Amplification-Wash">
258 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
259 <Temp Temperature="20" />
260 </ChemistryStep>
261 <ChemistryStep Description="Linearisation">
262 <PumpToFlowcell ReagentName="LMX1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
263 <PumpToFlowcell ReagentName="LMX1" AspirationRate="250" DispenseRate="7500" Volume="75" />
264 <Temp Temperature="46" />
265 <Wait Duration="300000" />
266 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
267 </ChemistryStep>
268 <ChemistryStep Description="SBS Prime">
269 <Temp Temperature="20" />
270 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" DispenseRate="7500" Volume="300" />
271 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" DispenseRate="7500" Volume="300" />
272 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" DispenseRate="7500" Volume="300" />
273 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
274 </ChemistryStep>
275 </ChemistryDefinition>
276 <ChemistryDefinition Name="PairedEndTurnaround">
277 <ChemistryStep Description="Pre-resynthesis_tempramp">
278 <Temp Temperature="50" />
279 </ChemistryStep>
280 <ChemistryStep Description="Resynthesis" Repeat="8" >
281 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="28" />
282 <PumpToFlowcell ReagentName="LPM" AspirationRate="250" DispenseRate="7500" Volume="28" />
283 <PumpToFlowcell ReagentName="AMS2" AspirationRate="250" DispenseRate="7500" Volume="72" />
284 <Wait Duration="15000" />
285 </ChemistryStep>
286 <ChemistryStep Description="Post-resynthesis_wash">
287 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
288 <Temp Temperature="20" Duration="45000" />
289 </ChemistryStep>
290 <ChemistryStep Description="Linearisation 2">
291 <PumpToFlowcell ReagentName="LMX2" AspirationRate="2000" DispenseRate="7500" Volume="300" />
292 <PumpToFlowcell ReagentName="LMX2" AspirationRate="250" DispenseRate="7500" Volume="75" />
293 <Temp Temperature="38" />
294 <Wait Duration="300000"/>
295 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
296 </ChemistryStep>
297 </ChemistryDefinition>
298 <ChemistryDefinition Name="FirstReadPreparation">
299 <ChemistryStep Description="FirstReadPreparation">
300 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
301 <Temp Temperature="65" Duration="60000" />
302 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
303 <PumpToFlowcell ReagentName="C1" AspirationRate="250" DispenseRate="7500" Volume="75" />
304 <Temp Temperature="40" Duration="60000" />
305 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
306 <TempOff />
307 </ChemistryStep>
308 </ChemistryDefinition>
309 <ChemistryDefinition Name="SecondReadPreparation">
310 <ChemistryStep Description="SecondReadPreparation">
311 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
312 <Temp Temperature="65" Duration="60000" />
313 <PumpToFlowcell ReagentName="C3" AspirationRate="2000" DispenseRate="7500" Volume="300" />
314 <PumpToFlowcell ReagentName="C3" AspirationRate="250" DispenseRate="7500" Volume="75" />
315 <Temp Temperature="40" Duration="60000" />
316 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
317 <TempOff />
318 </ChemistryStep>
319 </ChemistryDefinition>
320 <ChemistryDefinition Name="Index1Preparation">
321 <ChemistryStep Description="Index1Preparation">
322 <Temp Temperature="20" Duration="25000" />
323 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
324 <Temp Temperature="65" Duration="60000" />
325 <PumpToFlowcell ReagentName="C1" AspirationRate="2000" DispenseRate="7500" Volume="300" />
326 <PumpToFlowcell ReagentName="C1" AspirationRate="250" DispenseRate="7500" Volume="75" />
327 <Temp Temperature="40" Duration="60000" />
328 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
329 <TempOff />
330 </ChemistryStep>
331 </ChemistryDefinition>
332 <ChemistryDefinition Name="Deprotection">
333 <ChemistryStep Description="Deprotection">
334 <Temp Temperature="20" />
335 <Wait Duration="120000" />
336 <PumpToFlowcell ReagentName="RMF" AspirationRate="2000" DispenseRate="7500" Volume="300" />
337 <PumpToFlowcell ReagentName="RMF" AspirationRate="250" DispenseRate="7500" Volume="75" />
338 <Temp Temperature="38" />
339 <Wait Duration="300000"/>
340 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
341 </ChemistryStep>
342 <ChemistryStep Description="Denaturation">
343 <Temp Temperature="20" Duration="25000" />
344 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="7500" Volume="75" />
345 <Temp Temperature="65" Duration="60000" />
346 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="300" />
347 <PumpToFlowcell ReagentName="PR2" AspirationRate="250" DispenseRate="7500" Volume="75" />
348 <Temp Temperature="40" Duration="60000" />
349 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="7500" Volume="120" />
350 <TempOff />
351 </ChemistryStep>
352 </ChemistryDefinition>
353
354 <ChemistryDefinition Name="Index2Preparation">
355 <ChemistryStep Description="Index2Preparation">
356 <Temp Temperature="20" Duration="25000" />
357 <PumpToFlowcell ReagentName="LDR" AspirationRate="250" DispenseRate="2500" Volume="75" />
358 <Temp Temperature="65" Duration="60000" />
359 <PumpToFlowcell ReagentName="C2" AspirationRate="2000" DispenseRate="2500" Volume="300" />
360 <PumpToFlowcell ReagentName="C2" AspirationRate="250" DispenseRate="2500" Volume="75" />
361 <Temp Temperature="40" Duration="60000" />
362 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" DispenseRate="2500" Volume="120" />
363 <TempOff />
364 </ChemistryStep>
365 </ChemistryDefinition>
366
367 <ChemistryDefinition Name="Index2FirstBaseDark">
368 <ChemistryStep Description="Incorporation" Repeat="1">
369 <Temp Temperature="60" Duration="0" />
370 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
371 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
372 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
373 <Temp Temperature="65" Duration="0" />
374 <Wait Duration="45000" />
375 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
376 <DispenseAndWait Duration="40000" />
377 <Temp Temperature="22" Duration="0" />
378 <Wait Duration="60000" />
379 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
380 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
381 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
382 <DispenseAndWait Duration="15000" />
383 </ChemistryStep>
384 </ChemistryDefinition>
385 <ChemistryDefinition Name="Index2CompleteCycleDark2">
386 <ChemistryStep Description="Deblock" Repeat="1">
387 <Temp Temperature="60" Duration="0" />
388 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
389 <PumpToFlowcell ReagentName="CMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
390 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
391 <Wait Duration="35000" />
392 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
393 <DispenseAndWait DispenseRate="7500" Duration="30000" />
394 </ChemistryStep>
395 <ChemistryStep Description="Buffer Wash" Repeat="1">
396 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="250" />
397 </ChemistryStep>
398 <ChemistryStep Description="Incorporation" Repeat="1">
399 <PumpToFlowcell ReagentName="IMS" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
400 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
401 <Temp Temperature="65" Duration="0" />
402 <Wait Duration="45000" />
403 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="5" />
404 <DispenseAndWait Duration="40000" />
405 <Temp Temperature="22" Duration="0" />
406 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="120" />
407 <PumpToFlowcell ReagentName="SRE" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="60" />
408 <PumpToFlowcell ReagentName="PR2" AspirationRate="2000" Solution="0" DispenseRate="7500" Volume="20" />
409 <DispenseAndWait DispenseRate="7500" Duration="15000" />
410 </ChemistryStep>
411 </ChemistryDefinition>
412 </ChemistryDefinitions>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Exposures>
2 <Exposure Name="A" Start="1037" Ramp="0" />
3 <Exposure Name="T" Start="500" Ramp="0" />
4 <Exposure Name="C" Start="1037" Ramp="0" />
5 <Exposure Name="G" Start="500" Ramp="0" />
6 </Exposures>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Exposures>
2 <Exposure Name="A" Start="260" IsIndexed="false" Ramp="5.2" />
3 <Exposure Name="A" Start="1037" IsIndexed="true" Ramp="0" />
4 <Exposure Name="T" Start="125" IsIndexed="false" Ramp="2.5" />
5 <Exposure Name="T" Start="500" IsIndexed="true" Ramp="0" />
6 <Exposure Name="C" Start="260" IsIndexed="false" Ramp="5.2" />
7 <Exposure Name="C" Start="1037" IsIndexed="true" Ramp="0" />
8 <Exposure Name="G" Start="125" IsIndexed="false" Ramp="2.5" />
9 <Exposure Name="G" Start="500" IsIndexed="true" Ramp="0" />
10 </Exposures>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
15 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ReadRef ReadName="FirstRead" />
18 <ChemistryRef ChemistryName="EndDeblock" />
19 <ChemistryRef ChemistryName="Index1Preparation" />
20 <ReadRef ReadName="IndexRead1" />
21 <ChemistryRef ChemistryName="EndDeblock" />
22 <ChemistryRef ChemistryName="TemplateRinse" />
23 <ChemistryRef ChemistryName="End" />
24
25 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
15 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ReadRef ReadName="FirstRead" />
18 <ChemistryRef ChemistryName="EndDeblock" />
19 <ChemistryRef ChemistryName="Index1Preparation" />
20 <ReadRef ReadName="IndexRead1" />
21 <ChemistryRef ChemistryName="EndDeblock" />
22 <ChemistryRef ChemistryName="Index2Preparation" />
23 <ReadRef ReadName="IndexRead2" />
24 <ChemistryRef ChemistryName="TemplateRinse" />
25 <ChemistryRef ChemistryName="End" />
26 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
15 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ReadRef ReadName="FirstRead" />
18 <ChemistryRef ChemistryName="EndDeblock" />
19 <ChemistryRef ChemistryName="Index1Preparation" />
20 <ReadRef ReadName="IndexRead1" />
21 <ChemistryRef ChemistryName="EndDeblock" />
22 <ChemistryRef ChemistryName="Deprotection" />
23 <ChemistryRef ChemistryName="PairedEndTurnaround" />
24 <ChemistryRef ChemistryName="SecondReadPreparation" />
25 <ReadRef ReadName="SecondRead" />
26 <ChemistryRef ChemistryName="EndDeblock" />
27 <ChemistryRef ChemistryName="TemplateRinse" />
28 <ChemistryRef ChemistryName="End" />
29 </Protocol>
0 <?xml version="1.0"?>
1 <Protocol Version="Fraise 0.7.1 Amplicon v1.1">
2 <ChemistryRef ChemistryName="OnBoardClusterGeneration" />
3 <ChemistryRef ChemistryName="FirstReadPreparation" />
4 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
5 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
6 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
7 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
8 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
9 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
10 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
11 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
12 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
13 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
14 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
15 <ChemistryRef ChemistryName="Index2CompleteCycleDark2" />
16 <ChemistryRef ChemistryName="EndDeblock" />
17 <ReadRef ReadName="FirstRead" />
18 <ChemistryRef ChemistryName="EndDeblock" />
19 <ChemistryRef ChemistryName="Index1Preparation" />
20 <ReadRef ReadName="IndexRead1" />
21 <ChemistryRef ChemistryName="EndDeblock" />
22 <ChemistryRef ChemistryName="Index2Preparation" />
23 <ReadRef ReadName="IndexRead2" />
24 <ChemistryRef ChemistryName="EndDeblock" />
25 <ChemistryRef ChemistryName="Deprotection" />
26 <ChemistryRef ChemistryName="PairedEndTurnaround" />
27 <ChemistryRef ChemistryName="SecondReadPreparation" />
28 <ReadRef ReadName="SecondRead" />
29 <ChemistryRef ChemistryName="EndDeblock" />
30 <ChemistryRef ChemistryName="TemplateRinse" />
31 <ChemistryRef ChemistryName="End" />
32 </Protocol>
0 <?xml version="1.0"?>
1 <ReadDefinitions Version="Fraise 0.7.1 Amplicon v1.1">
2 <ReadDefinition Name="FirstRead">
3 <FirstBase ChemistryName="FirstBase" Cycles="1" />
4 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
5 <End ChemistryName="EndRead" />
6 </ReadDefinition>
7 <ReadDefinition Name="IndexRead1" IsIndexed="True" >
8 <FirstBase ChemistryName="FirstBase" Cycles="1" />
9 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
10 <End ChemistryName="EndRead" />
11 </ReadDefinition>
12 <ReadDefinition Name="SecondRead" IsIndexed="false">
13 <FirstBase ChemistryName="FirstBase" Cycles="1" />
14 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
15 <End ChemistryName="EndRead" />
16 </ReadDefinition>
17 <ReadDefinition Name="IndexRead2" IsIndexed="true">
18 <FirstBase ChemistryName="FirstBase" Cycles="1" />
19 <Imaging ChemistryName="CompleteCycle" Cycles="NumCycles - 1" />
20 <End ChemistryName="EndRead" />
21 </ReadDefinition>
22 </ReadDefinitions>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Bolt Avocado Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="1" />
3 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="2" />
4 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="3" />
5 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="4" />
6 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="5" />
7 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="6" />
8 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="7" />
9 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="8" />
10 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="9" />
11 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="10" />
12 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="11" />
13 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="12" />
14 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="13" />
15 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="15" />
17 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="16" />
18 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="17" />
19 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="18" />
20 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="19" />
21 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="20" />
22 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="21" />
23 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="22" />
24 </Reagents>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Bolt Avocado Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="1" />
3 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="2" />
4 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="3" />
5 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="4" />
6 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="5" />
7 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="6" />
8 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="7" />
9 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="8" />
10 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="9" />
11 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="10" />
12 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="11" />
13 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="12" />
14 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="13" />
15 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="15" />
17 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="16" />
18 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="17" />
19 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="18" />
20 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="19" />
21 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="20" />
22 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="21" />
23 <Reagent Name="PW1" Description="PW1" SelectorValvePosition="22" />
24 </Reagents>
0 <?xml version="1.0" encoding="utf-8" ?>
1 <Reagents Name="Shock Reagents" Version="Selector Valve Positions v2.2">
2 <Reagent Name="IMS" Description="Incorporation Mix" SelectorValvePosition="1" />
3 <Reagent Name="SRE" Description="Scan Mix" SelectorValvePosition="2" />
4 <Reagent Name="PR2" Description="Incorporation Buffer" SelectorValvePosition="3" />
5 <Reagent Name="CMS" Description="Cleavage Mix" SelectorValvePosition="4" />
6 <Reagent Name="AMS1" Description="Amplification Mix 1" SelectorValvePosition="5" />
7 <Reagent Name="AMS2" Description="Amplification Mix 2" SelectorValvePosition="6" />
8 <Reagent Name="LPM" Description="Lin Pre Mix" SelectorValvePosition="7" />
9 <Reagent Name="LDR" Description="Formamide" SelectorValvePosition="8" />
10 <Reagent Name="LMX1" Description="Linearization Mix" SelectorValvePosition="9" />
11 <Reagent Name="LMX2" Description="R2 Lin Mix" SelectorValvePosition="10" />
12 <Reagent Name="RMF" Description="Resynthesis Mix" SelectorValvePosition="11" />
13 <Reagent Name="HP10" Description="R1 Primer Mix" SelectorValvePosition="12" />
14 <Reagent Name="HP12" Description="Index Primer Mix" SelectorValvePosition="13" />
15 <Reagent Name="HP11" Description="R2 Primer Mix" SelectorValvePosition="14" />
16 <Reagent Name="PW1" Description="Water" SelectorValvePosition="15" />
17 <Reagent Name="PW2" Description="Water" SelectorValvePosition="16" />
18 <Reagent Name="TMP" Description="Template" SelectorValvePosition="17" />
19 <Reagent Name="C1" Description="Custom 1 Primer Mix" SelectorValvePosition="18" />
20 <Reagent Name="C2" Description="Custom 2 Primer Mix" SelectorValvePosition="19" />
21 <Reagent Name="C3" Description="Custom 3 Primer Mix" SelectorValvePosition="20" />
22 <Reagent Name="PW3" Description="Water" SelectorValvePosition="21" />
23 </Reagents>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="LineWash_v0.3">
2
3 <Protocol Version="LineWash">
4 <ChemistryRef ChemistryName="LineWash" Repeat="1" />
5 </Protocol>
6
7 <ChemistryDefinitions Version="LineWash_v0.3">
8 <ChemistryDefinition Name="CleanSyringe">
9 <ChemistryStep Description="CleanSyringe" Repeat="1"> <!--run water through syringe to reduce carryover since about to backflush-->
10 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="1000" />
11 <Wait Duration="10000" />
12 <AspirateFromBypass ReagentName="PW1" AspirationRate="500" DispenseRate="1000" Volume="500" />
13 <Wait Duration="10000" />
14 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="500" />
15 </ChemistryStep>
16 </ChemistryDefinition>
17 <ChemistryDefinition Name="Oscillate">
18 <ChemistryStep Description="Oscillate" Repeat="1">
19 <!--add airbubble, fill syringe, and slowly pump back and forth increasing pressure-->
20 <PumpToFlowcell Solution="23" AspirationRate="1000" DispenseRate="2500" Volume="15" />
21 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
22 </ChemistryStep>
23 <ChemistryStep Description="OscillateSubStep" Repeat="49">
24 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="5"/>
25 <Wait Duration="1000" />
26 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="5" />
27 <Wait Duration="1000" />
28 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="10"/>
29 <Wait Duration="1000" />
30 <Aspirate ReagentName="PW1" AspirationRate="2000" Volume="5" />
31 <Wait Duration="6000" />
32 </ChemistryStep>
33 </ChemistryDefinition>
34 <ChemistryDefinition Name="Reprime">
35 <ChemistryStep Description="Reprime" Repeat="1"> <!--prime line with 500uL-->
36 <PumpToFlowcell ReagentName="PW1" AspirationRate="2000" DispenseRate="2500" Volume="500" />
37 </ChemistryStep>
38 </ChemistryDefinition>
39 <ChemistryDefinition Name="Flush">
40 <ChemistryStep Description="Flush" Repeat="1"> <!--empty tube and refill from bypass-->
41 <PumpToFlowcell ReagentName="PW1" AspirationRate="5000" DispenseRate="5000" Volume="3000" />
42 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
43 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
44 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
45 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
46 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
47 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
48 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
49 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
50 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
51 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
52 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
53 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
54 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
55 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
56 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
57 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
58 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
59 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
60 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
61 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
62 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
63 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
64 <AspirateFromBypass ReagentName="PW1" AspirationRate="2000" Volume="250" />
65 <DispenseToFlowcell ReagentName="PW1" DispenseRate="2000" Volume="250" />
66 </ChemistryStep>
67 </ChemistryDefinition>
68 <ChemistryDefinition Name="Wait180000">
69 <ChemistryStep Description="Wait180000" Repeat="1">
70 <Wait Duration="180000" />
71 </ChemistryStep>
72 </ChemistryDefinition>
73 </ChemistryDefinitions>
74
75 - <Reagents Name="ClogWashReagents" Version="Selector Valve Positions v2.2">
76 <Reagent Name="PW1" Description="Water" SelectorValvePosition="1" />
77 <Reagent Name="PW1" Description="Water" SelectorValvePosition="2" />
78 <Reagent Name="PW1" Description="Water" SelectorValvePosition="3" />
79 <Reagent Name="PW1" Description="Water" SelectorValvePosition="4" />
80 <Reagent Name="PW1" Description="Water" SelectorValvePosition="5" />
81 <Reagent Name="PW1" Description="Water" SelectorValvePosition="6" />
82 <Reagent Name="PW1" Description="Water" SelectorValvePosition="7" />
83 <Reagent Name="PW1" Description="Water" SelectorValvePosition="8" />
84 <Reagent Name="PW1" Description="Water" SelectorValvePosition="9" />
85 <Reagent Name="PW1" Description="Water" SelectorValvePosition="10" />
86 <Reagent Name="PW1" Description="Water" SelectorValvePosition="11" />
87 <Reagent Name="PW1" Description="Water" SelectorValvePosition="12" />
88 <Reagent Name="PW1" Description="Water" SelectorValvePosition="13" />
89 <Reagent Name="PW1" Description="Water" SelectorValvePosition="14" />
90 <Reagent Name="PW1" Description="Water" SelectorValvePosition="15" />
91 <Reagent Name="PW1" Description="Water" SelectorValvePosition="16" />
92 <Reagent Name="PW1" Description="Water" SelectorValvePosition="17" />
93 <Reagent Name="PW1" Description="Water" SelectorValvePosition="18" />
94 <Reagent Name="PW1" Description="Water" SelectorValvePosition="19" />
95 <Reagent Name="PW1" Description="Water" SelectorValvePosition="20" />
96 <Reagent Name="PW1" Description="Water" SelectorValvePosition="21" />
97 <Reagent Name="PW1" Description="Water" SelectorValvePosition="22" />
98 </Reagents>
99
100 <Name>LineWash_v0.3</Name>
101 </Recipe>
0 <?xml version="1.0" ?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="Maintenance Wash Recipe">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5 <ChemistryDefinitions>
6 <ChemistryDefinition Name="Wash">
7 <ChemistryStep Description="Wash">
8 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
10 <Dispense DispenseRate="2500" Volume="250" />
11 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
12 <Dispense DispenseRate="2500" Volume="250" />
13 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
14 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
15 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
18 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
19 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <Dispense DispenseRate="2500" Volume="250" />
40 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
41 <Dispense DispenseRate="2500" Volume="250" />
42 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
43 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
44 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
45 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
46 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
47 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
48 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
49 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
50 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
51 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
52 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
53 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
54 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
55 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
56 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
57 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
58 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
59 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
60 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
61 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
62 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
63 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
64 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
65 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
66 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
67 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
68 <Dispense DispenseRate="2500" Volume="250" />
69 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
70 <Dispense DispenseRate="2500" Volume="250" />
71 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
72 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
73 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
74 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
75 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
76 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
77 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
78 <Dispense DispenseRate="2500" Volume="250" />
79 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
80 <Dispense DispenseRate="2500" Volume="250" />
81 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
82 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
83 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
84 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
85 </ChemistryStep>
86 </ChemistryDefinition>
87 </ChemistryDefinitions>
88 <Reagents>
89 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
90 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
91 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
92 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
93 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
94 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
95 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
96 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
97 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
98 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
99 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
100 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
101 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
102 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
103 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
104 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
105 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
106 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
107 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
108 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
109 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
110 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
111
112 </Reagents>
113 <Name>PostRunWash_v1.0.1</Name>
114 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="PostRunWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5
6 <ChemistryDefinitions>
7 <ChemistryDefinition Name="Wash">
8 <ChemistryStep Description="TemplateNaOClAspirate">
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
10 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="1250" />
11 </ChemistryStep>
12 <ChemistryStep Description="Prime">
13 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
14 <Dispense DispenseRate="7500" />
15 </ChemistryStep>
16 <ChemistryStep Description="Wash1" Repeat="8">
17 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
18 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
19 </ChemistryStep>
20 <ChemistryStep Description="EmptyTube">
21 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
22 </ChemistryStep>
23 <ChemistryStep Description="Prime">
24 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
25 <Dispense DispenseRate="7500" />
26 </ChemistryStep>
27 <ChemistryStep Description="Wash2" Repeat="8">
28 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
29 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
30 </ChemistryStep>
31 <ChemistryStep Description="EmptyTube">
32 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="2000" />
33 </ChemistryStep>
34 <ChemistryStep Description="Prime">
35 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="1000" />
36 <Dispense DispenseRate="7500" />
37 </ChemistryStep>
38 <ChemistryStep Description="Wash3" Repeat="8">
39 <Aspirate Solution="3" AspirationRate="2000" Volume="250" />
40 <DispenseToFlowcell Solution="17" DispenseRate="2000" Volume="250" />
41 </ChemistryStep>
42 <ChemistryStep Description="Wash">
43 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
44 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
45 <Dispense DispenseRate="7500" Volume="250" />
46 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
47 <Dispense DispenseRate="7500" Volume="250" />
48 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
49 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
50 <Dispense DispenseRate="7500" />
51 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="7500" Volume="250" />
52 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="7500" Volume="250" />
53 <Dispense DispenseRate="7500" />
54 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="7500" Volume="250" />
55 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
56 <Dispense DispenseRate="7500" />
57 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
58 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
59 <Dispense DispenseRate="7500" />
60 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
61 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="7500" Volume="250" />
62 <Dispense DispenseRate="7500" />
63 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="7500" Volume="250" />
64 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="7500" Volume="250" />
65 <Dispense DispenseRate="7500" />
66 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="7500" Volume="250" />
67 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="7500" Volume="250" />
68 <Dispense DispenseRate="7500" />
69 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="7500" Volume="250" />
70 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="7500" Volume="250" />
71 <Dispense DispenseRate="7500" />
72 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
73 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
74 <Dispense DispenseRate="7500" />
75 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
76 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
77 <Dispense DispenseRate="7500" />
78 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="7500" Volume="250" />
79 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="7500" Volume="250" />
80 <Dispense DispenseRate="7500" />
81 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="7500" Volume="250" />
82 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="7500" Volume="250" />
83 <Dispense DispenseRate="7500" />
84 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
85 <Dispense DispenseRate="7500" Volume="250" />
86 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
87 <Dispense DispenseRate="7500" Volume="250" />
88 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
89 <Dispense DispenseRate="7500" Volume="250" />
90 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
91 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
92 <Dispense DispenseRate="7500" />
93 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="7500" Volume="250" />
94 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="7500" Volume="250" />
95 <Dispense DispenseRate="7500" />
96 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="7500" Volume="250" />
97 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
98 <Dispense DispenseRate="7500" />
99 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
100 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
101 <Dispense DispenseRate="7500" />
102 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
103 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="7500" Volume="250" />
104 <Dispense DispenseRate="7500" />
105 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="7500" Volume="250" />
106 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="7500" Volume="250" />
107 <Dispense DispenseRate="7500" />
108 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="7500" Volume="250" />
109 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="7500" Volume="250" />
110 <Dispense DispenseRate="7500" />
111 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="7500" Volume="250" />
112 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="7500" Volume="250" />
113 <Dispense DispenseRate="7500" />
114 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
115 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
116 <Dispense DispenseRate="7500" />
117 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
118 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
119 <Dispense DispenseRate="7500" />
120 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="7500" Volume="250" />
121 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
122 <Dispense DispenseRate="7500" />
123 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
124 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
125 <Dispense DispenseRate="7500" />
126 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
127 <Dispense DispenseRate="7500" Volume="250" />
128 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
129 <Dispense DispenseRate="7500" Volume="250" />
130 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
131 <Dispense DispenseRate="7500" Volume="250" />
132 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="7500" Volume="250" />
133 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="7500" Volume="250" />
134 <Dispense DispenseRate="7500" />
135 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="7500" Volume="250" />
136 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="7500" Volume="250" />
137 <Dispense DispenseRate="7500" />
138 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="7500" Volume="250" />
139 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="7500" Volume="250" />
140 <Dispense DispenseRate="7500" />
141 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="7500" Volume="250" />
142 <Dispense DispenseRate="7500" Volume="250" />
143 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
144 <Dispense DispenseRate="7500" Volume="250" />
145 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="7500" Volume="250" />
146 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="7500" Volume="250" />
147 <Dispense DispenseRate="7500" />
148 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="7500" Volume="250" />
149 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="7500" Volume="250" />
150 </ChemistryStep>
151 </ChemistryDefinition>
152 </ChemistryDefinitions>
153 <Reagents>
154 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
155 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
156 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
157 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
158 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
159 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
160 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
161 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
162 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
163 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
164 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
165 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
166 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
167 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
168 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
169 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
170 <Reagent Name="PW1" Description="DiluteNaOCl" ViciPosition="17" />
171 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
172 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
173 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
174 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
175 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
176
177 </Reagents>
178 <Name>PostRunWash_v1.0.1</Name>
179 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="PostRunWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="PostRun Wash" ChemistryName="Wash" />
4 </Protocol>
5 <ChemistryDefinitions>
6 <ChemistryDefinition Name="Wash">
7 <ChemistryStep Description="Wash">
8 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
9 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
10 <Dispense DispenseRate="2500" Volume="250" />
11 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
12 <Dispense DispenseRate="2500" Volume="250" />
13 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
14 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
15 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
18 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
19 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="8" AspirationRate="1000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <Dispense DispenseRate="2500" Volume="250" />
40 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
41 <Dispense DispenseRate="2500" Volume="250" />
42 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
43 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
44 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
45 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
46 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
47 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
48 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
49 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
50 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
51 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
52 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
53 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
54 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
55 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
56 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
57 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
58 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
59 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
60 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
61 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
62 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
63 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
64 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
65 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
66 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
67 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
68 <Dispense DispenseRate="2500" Volume="250" />
69 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
70 <Dispense DispenseRate="2500" Volume="250" />
71 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
72 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
73 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
74 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
75 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
76 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
77 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
78 <Dispense DispenseRate="2500" Volume="250" />
79 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
80 <Dispense DispenseRate="2500" Volume="250" />
81 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
82 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
83 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
84 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
85 </ChemistryStep>
86 </ChemistryDefinition>
87 </ChemistryDefinitions>
88 <Reagents>
89 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
90 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
91 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
92 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
93 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
94 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
95 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
96 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
97 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
98 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
99 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
100 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
101 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
102 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
103 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
104 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
105 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
106 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
107 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
108 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
109 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
110 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
111
112 </Reagents>
113 <Name>PostRunWash_v1.0.1</Name>
114 </Recipe>
0 <?xml version="1.0"?>
1 <Recipe xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="StandbyWash_v1.0.0">
2 <Protocol>
3 <ChemistryRef Description="Standby Wash 1 of 8" ChemistryName="Wash" />
4 <ChemistryRef Description="Standby Wash 2 of 8" ChemistryName="Wash" />
5 <ChemistryRef Description="Standby Wash 3 of 8" ChemistryName="Wash" />
6 <ChemistryRef Description="Standby Wash 4 of 8" ChemistryName="Wash" />
7 <ChemistryRef Description="Standby Wash 5 of 8" ChemistryName="Wash" />
8 <ChemistryRef Description="Standby Wash 6 of 8" ChemistryName="Wash" />
9 <ChemistryRef Description="Standby Wash 7 of 8" ChemistryName="Wash" />
10 <ChemistryRef Description="Standby Wash 8 of 8" ChemistryName="Wash" />
11 </Protocol>
12 <ChemistryDefinitions>
13 <ChemistryDefinition Name="Wash">
14 <ChemistryStep Description="Wash">
15 <PumpToFlowcell Solution="4" AspirationRate="2000" DispenseRate="2500" Volume="250" />
16 <PumpToFlowcell Solution="3" AspirationRate="2000" DispenseRate="2500" Volume="250" />
17 <Dispense DispenseRate="2500" Volume="250" />
18 <AspirateFromBypass ReagentName="PR2" AspirationRate="2000" Volume="250" />
19 <Dispense DispenseRate="2500" Volume="250" />
20 <PumpToFlowcell Solution="2" AspirationRate="2000" DispenseRate="2500" Volume="250" />
21 <PumpToFlowcell Solution="1" AspirationRate="2000" DispenseRate="2500" Volume="250" />
22 <PumpToFlowcell Solution="5" AspirationRate="2000" DispenseRate="2500" Volume="250" />
23 <PumpToFlowcell Solution="6" AspirationRate="2000" DispenseRate="2500" Volume="250" />
24 <PumpToFlowcell Solution="7" AspirationRate="2000" DispenseRate="2500" Volume="250" />
25 <PumpToFlowcell Solution="17" AspirationRate="2000" DispenseRate="2500" Volume="250" />
26 <PumpToFlowcell Solution="18" AspirationRate="2000" DispenseRate="2500" Volume="250" />
27 <PumpToFlowcell Solution="19" AspirationRate="2000" DispenseRate="2500" Volume="250" />
28 <PumpToFlowcell Solution="20" AspirationRate="2000" DispenseRate="2500" Volume="250" />
29 <PumpToFlowcell Solution="8" AspirationRate="2000" DispenseRate="2500" Volume="250" />
30 <PumpToFlowcell Solution="9" AspirationRate="2000" DispenseRate="2500" Volume="250" />
31 <PumpToFlowcell Solution="10" AspirationRate="2000" DispenseRate="2500" Volume="250" />
32 <PumpToFlowcell Solution="11" AspirationRate="2000" DispenseRate="2500" Volume="250" />
33 <PumpToFlowcell Solution="12" AspirationRate="2000" DispenseRate="2500" Volume="250" />
34 <PumpToFlowcell Solution="13" AspirationRate="2000" DispenseRate="2500" Volume="250" />
35 <PumpToFlowcell Solution="14" AspirationRate="2000" DispenseRate="2500" Volume="250" />
36 <PumpToFlowcell Solution="15" AspirationRate="2000" DispenseRate="2500" Volume="250" />
37 <PumpToFlowcell Solution="16" AspirationRate="2000" DispenseRate="2500" Volume="250" />
38 <PumpToFlowcell Solution="21" AspirationRate="2000" DispenseRate="2500" Volume="250" />
39 <PumpToFlowcell Solution="22" AspirationRate="2000" DispenseRate="2500" Volume="250" />
40 </ChemistryStep>
41 </ChemistryDefinition>
42 </ChemistryDefinitions>
43 <Reagents>
44 <Reagent Name="PW1" Description="Water" ViciPosition="1" />
45 <Reagent Name="PW1" Description="Water" ViciPosition="2" />
46 <Reagent Name="PW1" Description="Water" ViciPosition="3" />
47 <Reagent Name="PW1" Description="Water" ViciPosition="4" />
48 <Reagent Name="PW1" Description="Water" ViciPosition="5" />
49 <Reagent Name="PW1" Description="Water" ViciPosition="6" />
50 <Reagent Name="PW1" Description="Water" ViciPosition="7" />
51 <Reagent Name="PW1" Description="Water" ViciPosition="8" />
52 <Reagent Name="PW1" Description="Water" ViciPosition="9" />
53 <Reagent Name="PW1" Description="Water" ViciPosition="10" />
54 <Reagent Name="PW1" Description="Water" ViciPosition="11" />
55 <Reagent Name="PW1" Description="Water" ViciPosition="12" />
56 <Reagent Name="PW1" Description="Water" ViciPosition="13" />
57 <Reagent Name="PW1" Description="Water" ViciPosition="14" />
58 <Reagent Name="PW1" Description="Water" ViciPosition="15" />
59 <Reagent Name="PW1" Description="Water" ViciPosition="16" />
60 <Reagent Name="PW1" Description="Water" ViciPosition="17" />
61 <Reagent Name="PW1" Description="Water" ViciPosition="18" />
62 <Reagent Name="PW1" Description="Water" ViciPosition="19" />
63 <Reagent Name="PW1" Description="Water" ViciPosition="20" />
64 <Reagent Name="PW1" Description="Water" ViciPosition="21" />
65 <Reagent Name="PW1" Description="Water" ViciPosition="22" />
66
67 </Reagents>
68 <Name>StandbyWash_v1.0.0</Name>
69 </Recipe>
0 This software is Copyright (c) 2013 by Wellcome Trust Sanger Institute.
1
2 This is free software, licensed under:
3
4 The GNU General Public License, Version 3, June 2007
5
6 GNU GENERAL PUBLIC LICENSE
7 Version 3, 29 June 2007
8
9 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
10 Everyone is permitted to copy and distribute verbatim copies
11 of this license document, but changing it is not allowed.
12
13 Preamble
14
15 The GNU General Public License is a free, copyleft license for
16 software and other kinds of works.
17
18 The licenses for most software and other practical works are designed
19 to take away your freedom to share and change the works. By contrast,
20 the GNU General Public License is intended to guarantee your freedom to
21 share and change all versions of a program--to make sure it remains free
22 software for all its users. We, the Free Software Foundation, use the
23 GNU General Public License for most of our software; it applies also to
24 any other work released this way by its authors. You can apply it to
25 your programs, too.
26
27 When we speak of free software, we are referring to freedom, not
28 price. Our General Public Licenses are designed to make sure that you
29 have the freedom to distribute copies of free software (and charge for
30 them if you wish), that you receive source code or can get it if you
31 want it, that you can change the software or use pieces of it in new
32 free programs, and that you know you can do these things.
33
34 To protect your rights, we need to prevent others from denying you
35 these rights or asking you to surrender the rights. Therefore, you have
36 certain responsibilities if you distribute copies of the software, or if
37 you modify it: responsibilities to respect the freedom of others.
38
39 For example, if you distribute copies of such a program, whether
40 gratis or for a fee, you must pass on to the recipients the same
41 freedoms that you received. You must make sure that they, too, receive
42 or can get the source code. And you must show them these terms so they
43 know their rights.
44
45 Developers that use the GNU GPL protect your rights with two steps:
46 (1) assert copyright on the software, and (2) offer you this License
47 giving you legal permission to copy, distribute and/or modify it.
48
49 For the developers' and authors' protection, the GPL clearly explains
50 that there is no warranty for this free software. For both users' and
51 authors' sake, the GPL requires that modified versions be marked as
52 changed, so that their problems will not be attributed erroneously to
53 authors of previous versions.
54
55 Some devices are designed to deny users access to install or run
56 modified versions of the software inside them, although the manufacturer
57 can do so. This is fundamentally incompatible with the aim of
58 protecting users' freedom to change the software. The systematic
59 pattern of such abuse occurs in the area of products for individuals to
60 use, which is precisely where it is most unacceptable. Therefore, we
61 have designed this version of the GPL to prohibit the practice for those
62 products. If such problems arise substantially in other domains, we
63 stand ready to extend this provision to those domains in future versions
64 of the GPL, as needed to protect the freedom of users.
65
66 Finally, every program is threatened constantly by software patents.
67 States should not allow patents to restrict development and use of
68 software on general-purpose computers, but in those that do, we wish to
69 avoid the special danger that patents applied to a free program could
70 make it effectively proprietary. To prevent this, the GPL assures that
71 patents cannot be used to render the program non-free.
72
73 The precise terms and conditions for copying, distribution and
74 modification follow.
75
76 TERMS AND CONDITIONS
77
78 0. Definitions.
79
80 "This License" refers to version 3 of the GNU General Public License.
81
82 "Copyright" also means copyright-like laws that apply to other kinds of
83 works, such as semiconductor masks.
84
85 "The Program" refers to any copyrightable work licensed under this
86 License. Each licensee is addressed as "you". "Licensees" and
87 "recipients" may be individuals or organizations.
88
89 To "modify" a work means to copy from or adapt all or part of the work
90 in a fashion requiring copyright permission, other than the making of an
91 exact copy. The resulting work is called a "modified version" of the
92 earlier work or a work "based on" the earlier work.
93
94 A "covered work" means either the unmodified Program or a work based
95 on the Program.
96
97 To "propagate" a work means to do anything with it that, without
98 permission, would make you directly or secondarily liable for
99 infringement under applicable copyright law, except executing it on a
100 computer or modifying a private copy. Propagation includes copying,
101 distribution (with or without modification), making available to the
102 public, and in some countries other activities as well.
103
104 To "convey" a work means any kind of propagation that enables other
105 parties to make or receive copies. Mere interaction with a user through
106 a computer network, with no transfer of a copy, is not conveying.
107
108 An interactive user interface displays "Appropriate Legal Notices"
109 to the extent that it includes a convenient and prominently visible
110 feature that (1) displays an appropriate copyright notice, and (2)
111 tells the user that there is no warranty for the work (except to the
112 extent that warranties are provided), that licensees may convey the
113 work under this License, and how to view a copy of this License. If
114 the interface presents a list of user commands or options, such as a
115 menu, a prominent item in the list meets this criterion.
116
117 1. Source Code.
118
119 The "source code" for a work means the preferred form of the work
120 for making modifications to it. "Object code" means any non-source
121 form of a work.
122
123 A "Standard Interface" means an interface that either is an official
124 standard defined by a recognized standards body, or, in the case of
125 interfaces specified for a particular programming language, one that
126 is widely used among developers working in that language.
127
128 The "System Libraries" of an executable work include anything, other
129 than the work as a whole, that (a) is included in the normal form of
130 packaging a Major Component, but which is not part of that Major
131 Component, and (b) serves only to enable use of the work with that
132 Major Component, or to implement a Standard Interface for which an
133 implementation is available to the public in source code form. A
134 "Major Component", in this context, means a major essential component
135 (kernel, window system, and so on) of the specific operating system
136 (if any) on which the executable work runs, or a compiler used to
137 produce the work, or an object code interpreter used to run it.
138
139 The "Corresponding Source" for a work in object code form means all
140 the source code needed to generate, install, and (for an executable
141 work) run the object code and to modify the work, including scripts to
142 control those activities. However, it does not include the work's
143 System Libraries, or general-purpose tools or generally available free
144 programs which are used unmodified in performing those activities but
145 which are not part of the work. For example, Corresponding Source
146 includes interface definition files associated with source files for
147 the work, and the source code for shared libraries and dynamically
148 linked subprograms that the work is specifically designed to require,
149 such as by intimate data communication or control flow between those
150 subprograms and other parts of the work.
151
152 The Corresponding Source need not include anything that users
153 can regenerate automatically from other parts of the Corresponding
154 Source.
155
156 The Corresponding Source for a work in source code form is that
157 same work.
158
159 2. Basic Permissions.
160
161 All rights granted under this License are granted for the term of
162 copyright on the Program, and are irrevocable provided the stated
163 conditions are met. This License explicitly affirms your unlimited
164 permission to run the unmodified Program. The output from running a
165 covered work is covered by this License only if the output, given its
166 content, constitutes a covered work. This License acknowledges your
167 rights of fair use or other equivalent, as provided by copyright law.
168
169 You may make, run and propagate covered works that you do not
170 convey, without conditions so long as your license otherwise remains
171 in force. You may convey covered works to others for the sole purpose
172 of having them make modifications exclusively for you, or provide you
173 with facilities for running those works, provided that you comply with
174 the terms of this License in conveying all material for which you do
175 not control copyright. Those thus making or running the covered works
176 for you must do so exclusively on your behalf, under your direction
177 and control, on terms that prohibit them from making any copies of
178 your copyrighted material outside their relationship with you.
179
180 Conveying under any other circumstances is permitted solely under
181 the conditions stated below. Sublicensing is not allowed; section 10
182 makes it unnecessary.
183
184 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
185
186 No covered work shall be deemed part of an effective technological
187 measure under any applicable law fulfilling obligations under article
188 11 of the WIPO copyright treaty adopted on 20 December 1996, or
189 similar laws prohibiting or restricting circumvention of such
190 measures.
191
192 When you convey a covered work, you waive any legal power to forbid
193 circumvention of technological measures to the extent such circumvention
194 is effected by exercising rights under this License with respect to
195 the covered work, and you disclaim any intention to limit operation or
196 modification of the work as a means of enforcing, against the work's
197 users, your or third parties' legal rights to forbid circumvention of
198 technological measures.
199
200 4. Conveying Verbatim Copies.
201
202 You may convey verbatim copies of the Program's source code as you
203 receive it, in any medium, provided that you conspicuously and
204 appropriately publish on each copy an appropriate copyright notice;
205 keep intact all notices stating that this License and any
206 non-permissive terms added in accord with section 7 apply to the code;
207 keep intact all notices of the absence of any warranty; and give all
208 recipients a copy of this License along with the Program.
209
210 You may charge any price or no price for each copy that you convey,
211 and you may offer support or warranty protection for a fee.
212
213 5. Conveying Modified Source Versions.
214
215 You may convey a work based on the Program, or the modifications to
216 produce it from the Program, in the form of source code under the
217 terms of section 4, provided that you also meet all of these conditions:
218
219 a) The work must carry prominent notices stating that you modified
220 it, and giving a relevant date.
221
222 b) The work must carry prominent notices stating that it is
223 released under this License and any conditions added under section
224 7. This requirement modifies the requirement in section 4 to
225 "keep intact all notices".
226
227 c) You must license the entire work, as a whole, under this
228 License to anyone who comes into possession of a copy. This
229 License will therefore apply, along with any applicable section 7
230 additional terms, to the whole of the work, and all its parts,
231 regardless of how they are packaged. This License gives no
232 permission to license the work in any other way, but it does not
233 invalidate such permission if you have separately received it.
234
235 d) If the work has interactive user interfaces, each must display
236 Appropriate Legal Notices; however, if the Program has interactive
237 interfaces that do not display Appropriate Legal Notices, your
238 work need not make them do so.
239
240 A compilation of a covered work with other separate and independent
241 works, which are not by their nature extensions of the covered work,
242 and which are not combined with it such as to form a larger program,
243 in or on a volume of a storage or distribution medium, is called an
244 "aggregate" if the compilation and its resulting copyright are not
245 used to limit the access or legal rights of the compilation's users
246 beyond what the individual works permit. Inclusion of a covered work
247 in an aggregate does not cause this License to apply to the other
248 parts of the aggregate.
249
250 6. Conveying Non-Source Forms.
251
252 You may convey a covered work in object code form under the terms
253 of sections 4 and 5, provided that you also convey the
254 machine-readable Corresponding Source under the terms of this License,
255 in one of these ways:
256
257 a) Convey the object code in, or embodied in, a physical product
258 (including a physical distribution medium), accompanied by the
259 Corresponding Source fixed on a durable physical medium
260 customarily used for software interchange.
261
262 b) Convey the object code in, or embodied in, a physical product
263 (including a physical distribution medium), accompanied by a
264 written offer, valid for at least three years and valid for as
265 long as you offer spare parts or customer support for that product
266 model, to give anyone who possesses the object code either (1) a
267 copy of the Corresponding Source for all the software in the
268 product that is covered by this License, on a durable physical
269 medium customarily used for software interchange, for a price no
270 more than your reasonable cost of physically performing this
271 conveying of source, or (2) access to copy the
272 Corresponding Source from a network server at no charge.
273
274 c) Convey individual copies of the object code with a copy of the
275 written offer to provide the Corresponding Source. This
276 alternative is allowed only occasionally and noncommercially, and
277 only if you received the object code with such an offer, in accord
278 with subsection 6b.
279
280 d) Convey the object code by offering access from a designated
281 place (gratis or for a charge), and offer equivalent access to the
282 Corresponding Source in the same way through the same place at no
283 further charge. You need not require recipients to copy the
284 Corresponding Source along with the object code. If the place to
285 copy the object code is a network server, the Corresponding Source
286 may be on a different server (operated by you or a third party)
287 that supports equivalent copying facilities, provided you maintain
288 clear directions next to the object code saying where to find the
289 Corresponding Source. Regardless of what server hosts the
290 Corresponding Source, you remain obligated to ensure that it is
291 available for as long as needed to satisfy these requirements.
292
293 e) Convey the object code using peer-to-peer transmission, provided
294 you inform other peers where the object code and Corresponding
295 Source of the work are being offered to the general public at no
296 charge under subsection 6d.
297
298 A separable portion of the object code, whose source code is excluded
299 from the Corresponding Source as a System Library, need not be
300 included in conveying the object code work.
301
302 A "User Product" is either (1) a "consumer product", which means any
303 tangible personal property which is normally used for personal, family,
304 or household purposes, or (2) anything designed or sold for incorporation
305 into a dwelling. In determining whether a product is a consumer product,
306 doubtful cases shall be resolved in favor of coverage. For a particular
307 product received by a particular user, "normally used" refers to a
308 typical or common use of that class of product, regardless of the status
309 of the particular user or of the way in which the particular user
310 actually uses, or expects or is expected to use, the product. A product
311 is a consumer product regardless of whether the product has substantial
312 commercial, industrial or non-consumer uses, unless such uses represent
313 the only significant mode of use of the product.
314
315 "Installation Information" for a User Product means any methods,
316 procedures, authorization keys, or other information required to install
317 and execute modified versions of a covered work in that User Product from
318 a modified version of its Corresponding Source. The information must
319 suffice to ensure that the continued functioning of the modified object
320 code is in no case prevented or interfered with solely because
321 modification has been made.
322
323 If you convey an object code work under this section in, or with, or
324 specifically for use in, a User Product, and the conveying occurs as
325 part of a transaction in which the right of possession and use of the
326 User Product is transferred to the recipient in perpetuity or for a
327 fixed term (regardless of how the transaction is characterized), the
328 Corresponding Source conveyed under this section must be accompanied
329 by the Installation Information. But this requirement does not apply
330 if neither you nor any third party retains the ability to install
331 modified object code on the User Product (for example, the work has
332 been installed in ROM).
333
334 The requirement to provide Installation Information does not include a
335 requirement to continue to provide support service, warranty, or updates
336 for a work that has been modified or installed by the recipient, or for
337 the User Product in which it has been modified or installed. Access to a
338 network may be denied when the modification itself materially and
339 adversely affects the operation of the network or violates the rules and
340 protocols for communication across the network.
341
342 Corresponding Source conveyed, and Installation Information provided,
343 in accord with this section must be in a format that is publicly
344 documented (and with an implementation available to the public in
345 source code form), and must require no special password or key for
346 unpacking, reading or copying.
347
348 7. Additional Terms.
349
350 "Additional permissions" are terms that supplement the terms of this
351 License by making exceptions from one or more of its conditions.
352 Additional permissions that are applicable to the entire Program shall
353 be treated as though they were included in this License, to the extent
354 that they are valid under applicable law. If additional permissions
355 apply only to part of the Program, that part may be used separately
356 under those permissions, but the entire Program remains governed by
357 this License without regard to the additional permissions.
358
359 When you convey a copy of a covered work, you may at your option
360 remove any additional permissions from that copy, or from any part of
361 it. (Additional permissions may be written to require their own
362 removal in certain cases when you modify the work.) You may place
363 additional permissions on material, added by you to a covered work,
364 for which you have or can give appropriate copyright permission.
365
366 Notwithstanding any other provision of this License, for material you
367 add to a covered work, you may (if authorized by the copyright holders of
368 that material) supplement the terms of this License with terms:
369
370 a) Disclaiming warranty or limiting liability differently from the
371 terms of sections 15 and 16 of this License; or
372
373 b) Requiring preservation of specified reasonable legal notices or
374 author attributions in that material or in the Appropriate Legal
375 Notices displayed by works containing it; or
376
377 c) Prohibiting misrepresentation of the origin of that material, or
378 requiring that modified versions of such material be marked in
379 reasonable ways as different from the original version; or
380
381 d) Limiting the use for publicity purposes of names of licensors or
382 authors of the material; or
383
384 e) Declining to grant rights under trademark law for use of some
385 trade names, trademarks, or service marks; or
386
387 f) Requiring indemnification of licensors and authors of that
388 material by anyone who conveys the material (or modified versions of
389 it) with contractual assumptions of liability to the recipient, for
390 any liability that these contractual assumptions directly impose on
391 those licensors and authors.
392
393 All other non-permissive additional terms are considered "further
394 restrictions" within the meaning of section 10. If the Program as you
395 received it, or any part of it, contains a notice stating that it is
396 governed by this License along with a term that is a further
397 restriction, you may remove that term. If a license document contains
398 a further restriction but permits relicensing or conveying under this
399 License, you may add to a covered work material governed by the terms
400 of that license document, provided that the further restriction does
401 not survive such relicensing or conveying.
402
403 If you add terms to a covered work in accord with this section, you
404 must place, in the relevant source files, a statement of the
405 additional terms that apply to those files, or a notice indicating
406 where to find the applicable terms.
407
408 Additional terms, permissive or non-permissive, may be stated in the
409 form of a separately written license, or stated as exceptions;
410 the above requirements apply either way.
411
412 8. Termination.
413
414 You may not propagate or modify a covered work except as expressly
415 provided under this License. Any attempt otherwise to propagate or
416 modify it is void, and will automatically terminate your rights under
417 this License (including any patent licenses granted under the third
418 paragraph of section 11).
419
420 However, if you cease all violation of this License, then your
421 license from a particular copyright holder is reinstated (a)
422 provisionally, unless and until the copyright holder explicitly and
423 finally terminates your license, and (b) permanently, if the copyright
424 holder fails to notify you of the violation by some reasonable means
425 prior to 60 days after the cessation.
426
427 Moreover, your license from a particular copyright holder is
428 reinstated permanently if the copyright holder notifies you of the
429 violation by some reasonable means, this is the first time you have
430 received notice of violation of this License (for any work) from that
431 copyright holder, and you cure the violation prior to 30 days after
432 your receipt of the notice.
433
434 Termination of your rights under this section does not terminate the
435 licenses of parties who have received copies or rights from you under
436 this License. If your rights have been terminated and not permanently
437 reinstated, you do not qualify to receive new licenses for the same
438 material under section 10.
439
440 9. Acceptance Not Required for Having Copies.
441
442 You are not required to accept this License in order to receive or
443 run a copy of the Program. Ancillary propagation of a covered work
444 occurring solely as a consequence of using peer-to-peer transmission
445 to receive a copy likewise does not require acceptance. However,
446 nothing other than this License grants you permission to propagate or
447 modify any covered work. These actions infringe copyright if you do
448 not accept this License. Therefore, by modifying or propagating a
449 covered work, you indicate your acceptance of this License to do so.
450
451 10. Automatic Licensing of Downstream Recipients.
452
453 Each time you convey a covered work, the recipient automatically
454 receives a license from the original licensors, to run, modify and
455 propagate that work, subject to this License. You are not responsible
456 for enforcing compliance by third parties with this License.
457
458 An "entity transaction" is a transaction transferring control of an
459 organization, or substantially all assets of one, or subdividing an
460 organization, or merging organizations. If propagation of a covered
461 work results from an entity transaction, each party to that
462 transaction who receives a copy of the work also receives whatever
463 licenses to the work the party's predecessor in interest had or could
464 give under the previous paragraph, plus a right to possession of the
465 Corresponding Source of the work from the predecessor in interest, if
466 the predecessor has it or can get it with reasonable efforts.
467
468 You may not impose any further restrictions on the exercise of the
469 rights granted or affirmed under this License. For example, you may
470 not impose a license fee, royalty, or other charge for exercise of
471 rights granted under this License, and you may not initiate litigation
472 (including a cross-claim or counterclaim in a lawsuit) alleging that
473 any patent claim is infringed by making, using, selling, offering for
474 sale, or importing the Program or any portion of it.
475
476 11. Patents.
477
478 A "contributor" is a copyright holder who authorizes use under this
479 License of the Program or a work on which the Program is based. The
480 work thus licensed is called the contributor's "contributor version".
481
482 A contributor's "essential patent claims" are all patent claims
483 owned or controlled by the contributor, whether already acquired or
484 hereafter acquired, that would be infringed by some manner, permitted
485 by this License, of making, using, or selling its contributor version,
486 but do not include claims that would be infringed only as a
487 consequence of further modification of the contributor version. For
488 purposes of this definition, "control" includes the right to grant
489 patent sublicenses in a manner consistent with the requirements of
490 this License.
491
492 Each contributor grants you a non-exclusive, worldwide, royalty-free
493 patent license under the contributor's essential patent claims, to
494 make, use, sell, offer for sale, import and otherwise run, modify and
495 propagate the contents of its contributor version.
496
497 In the following three paragraphs, a "patent license" is any express
498 agreement or commitment, however denominated, not to enforce a patent
499 (such as an express permission to practice a patent or covenant not to
500 sue for patent infringement). To "grant" such a patent license to a
501 party means to make such an agreement or commitment not to enforce a
502 patent against the party.
503
504 If you convey a covered work, knowingly relying on a patent license,
505 and the Corresponding Source of the work is not available for anyone
506 to copy, free of charge and under the terms of this License, through a
507 publicly available network server or other readily accessible means,
508 then you must either (1) cause the Corresponding Source to be so
509 available, or (2) arrange to deprive yourself of the benefit of the
510 patent license for this particular work, or (3) arrange, in a manner
511 consistent with the requirements of this License, to extend the patent
512 license to downstream recipients. "Knowingly relying" means you have
513 actual knowledge that, but for the patent license, your conveying the
514 covered work in a country, or your recipient's use of the covered work
515 in a country, would infringe one or more identifiable patents in that
516 country that you have reason to believe are valid.
517
518 If, pursuant to or in connection with a single transaction or
519 arrangement, you convey, or propagate by procuring conveyance of, a
520 covered work, and grant a patent license to some of the parties
521 receiving the covered work authorizing them to use, propagate, modify
522 or convey a specific copy of the covered work, then the patent license
523 you grant is automatically extended to all recipients of the covered
524 work and works based on it.
525
526 A patent license is "discriminatory" if it does not include within
527 the scope of its coverage, prohibits the exercise of, or is
528 conditioned on the non-exercise of one or more of the rights that are
529 specifically granted under this License. You may not convey a covered
530 work if you are a party to an arrangement with a third party that is
531 in the business of distributing software, under which you make payment
532 to the third party based on the extent of your activity of conveying
533 the work, and under which the third party grants, to any of the
534 parties who would receive the covered work from you, a discriminatory
535 patent license (a) in connection with copies of the covered work
536 conveyed by you (or copies made from those copies), or (b) primarily
537 for and in connection with specific products or compilations that
538 contain the covered work, unless you entered into that arrangement,
539 or that patent license was granted, prior to 28 March 2007.
540
541 Nothing in this License shall be construed as excluding or limiting
542 any implied license or other defenses to infringement that may
543 otherwise be available to you under applicable patent law.
544
545 12. No Surrender of Others' Freedom.
546
547 If conditions are imposed on you (whether by court order, agreement or
548 otherwise) that contradict the conditions of this License, they do not
549 excuse you from the conditions of this License. If you cannot convey a
550 covered work so as to satisfy simultaneously your obligations under this
551 License and any other pertinent obligations, then as a consequence you may
552 not convey it at all. For example, if you agree to terms that obligate you
553 to collect a royalty for further conveying from those to whom you convey
554 the Program, the only way you could satisfy both those terms and this
555 License would be to refrain entirely from conveying the Program.
556
557 13. Use with the GNU Affero General Public License.
558
559 Notwithstanding any other provision of this License, you have
560 permission to link or combine any covered work with a work licensed
561 under version 3 of the GNU Affero General Public License into a single
562 combined work, and to convey the resulting work. The terms of this
563 License will continue to apply to the part which is the covered work,
564 but the special requirements of the GNU Affero General Public License,
565 section 13, concerning interaction through a network will apply to the
566 combination as such.
567
568 14. Revised Versions of this License.
569
570 The Free Software Foundation may publish revised and/or new versions of
571 the GNU General Public License from time to time. Such new versions will
572 be similar in spirit to the present version, but may differ in detail to
573 address new problems or concerns.
574
575 Each version is given a distinguishing version number. If the
576 Program specifies that a certain numbered version of the GNU General
577 Public License "or any later version" applies to it, you have the
578 option of following the terms and conditions either of that numbered
579 version or of any later version published by the Free Software
580 Foundation. If the Program does not specify a version number of the
581 GNU General Public License, you may choose any version ever published
582 by the Free Software Foundation.
583
584 If the Program specifies that a proxy can decide which future
585 versions of the GNU General Public License can be used, that proxy's
586 public statement of acceptance of a version permanently authorizes you
587 to choose that version for the Program.
588
589 Later license versions may give you additional or different
590 permissions. However, no additional obligations are imposed on any
591 author or copyright holder as a result of your choosing to follow a
592 later version.
593
594 15. Disclaimer of Warranty.
595
596 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
597 APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
598 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
599 OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
600 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
601 PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
602 IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
603 ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
604
605 16. Limitation of Liability.
606
607 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
608 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
609 THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
610 GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
611 USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
612 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
613 PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
614 EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
615 SUCH DAMAGES.
616
617 17. Interpretation of Sections 15 and 16.
618
619 If the disclaimer of warranty and limitation of liability provided
620 above cannot be given local legal effect according to their terms,
621 reviewing courts shall apply local law that most closely approximates
622 an absolute waiver of all civil liability in connection with the
623 Program, unless a warranty or assumption of liability accompanies a
624 copy of the Program in return for a fee.
625
626 END OF TERMS AND CONDITIONS
627
628 How to Apply These Terms to Your New Programs
629
630 If you develop a new program, and you want it to be of the greatest
631 possible use to the public, the best way to achieve this is to make it
632 free software which everyone can redistribute and change under these terms.
633
634 To do so, attach the following notices to the program. It is safest
635 to attach them to the start of each source file to most effectively
636 state the exclusion of warranty; and each file should have at least
637 the "copyright" line and a pointer to where the full notice is found.
638
639 <one line to give the program's name and a brief idea of what it does.>
640 Copyright (C) <year> <name of author>
641
642 This program is free software: you can redistribute it and/or modify
643 it under the terms of the GNU General Public License as published by
644 the Free Software Foundation, either version 3 of the License, or
645 (at your option) any later version.
646
647 This program is distributed in the hope that it will be useful,
648 but WITHOUT ANY WARRANTY; without even the implied warranty of
649 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
650 GNU General Public License for more details.
651
652 You should have received a copy of the GNU General Public License
653 along with this program. If not, see <http://www.gnu.org/licenses/>.
654
655 Also add information on how to contact you by electronic and paper mail.
656
657 If the program does terminal interaction, make it output a short
658 notice like this when it starts in an interactive mode:
659
660 <program> Copyright (C) <year> <name of author>
661 This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
662 This is free software, and you are welcome to redistribute it
663 under certain conditions; type `show c' for details.
664
665 The hypothetical commands `show w' and `show c' should show the appropriate
666 parts of the General Public License. Of course, your program's commands
667 might be different; for a GUI interface, you would use an "about box".
668
669 You should also get your employer (if you work as a programmer) or school,
670 if any, to sign a "copyright disclaimer" for the program, if necessary.
671 For more information on this, and how to apply and follow the GNU GPL, see
672 <http://www.gnu.org/licenses/>.
673
674 The GNU General Public License does not permit incorporating your program
675 into proprietary programs. If your program is a subroutine library, you
676 may consider it more useful to permit linking proprietary applications with
677 the library. If this is what you want to do, use the GNU Lesser General
678 Public License instead of this License. But first, please read
679 <http://www.gnu.org/philosophy/why-not-lgpl.html>.
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8 BEGIN {
9 use Test::Most;
10 use_ok('Bio::Tradis::AddTagsToSeq');
11 }
12 my $samtools_exec = 'samtools';
13
14 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
15 my $destination_directory = $destination_directory_obj->dirname();
16
17 my ( $bamfile, $obj );
18
19 $bamfile = "t/data/AddTags/sample_sm_tr.bam";
20
21 ok(
22 $obj = Bio::Tradis::AddTagsToSeq->new(
23 bamfile => $bamfile,
24 script_name => 'name_of_script',
25 outfile => 't/data/output.bam'
26 ),
27 'creating object'
28 );
29
30 is($obj->_output_switch, '-b', 'correctly select the bam output switch');
31
32 ok( $obj->add_tags_to_seq, 'testing output' );
33 ok( -e 't/data/output.bam', 'checking file existence' );
34 `$samtools_exec view -h -o t/data/output.sam t/data/output.bam`;
35 `$samtools_exec view -h -o t/data/AddTags/expected_tradis.sam t/data/AddTags/expected_tradis.bam`;
36 is(
37 read_file('t/data/output.sam'),
38 read_file('t/data/AddTags/expected_tradis.sam'),
39 'checking file contents'
40 );
41
42
43 $bamfile = "t/data/AddTags/sample_sm_no_tr.bam";
44 ok(
45 $obj = Bio::Tradis::AddTagsToSeq->new(
46 bamfile => $bamfile,
47 script_name => 'name_of_script',
48 outfile => 't/data/output.bam'
49 ),
50 'creating object'
51 );
52 ok( -e 't/data/output.bam', 'checking file existence' );
53 `$samtools_exec view -h -o t/data/output.sam t/data/output.bam`;
54 `$samtools_exec view -h -o t/data/AddTags/sample_sm_no_tr.sam t/data/AddTags/sample_sm_no_tr.bam`;
55 is(
56 read_file('t/data/AddTags/sample_sm_no_tr.sam'),
57 read_file('t/data/output.sam'),
58 'checking file contents'
59 );
60
61 is(
62 6,
63 $obj->_number_of_lines_in_bam_file('t/data/AddTags/sample_sm_no_tr.bam'),
64 'number of reads as expected'
65 );
66
67 my $cramfile = "t/data/AddTags/sample_sm_tr.cram";
68
69 ok(
70 $obj = Bio::Tradis::AddTagsToSeq->new(
71 bamfile => $cramfile,
72 script_name => 'name_of_script',
73 outfile => 't/data/output.cram'
74 ),
75 'creating object with cram file'
76 );
77
78 is($obj->_output_switch, '-C', 'correctly select the cram output switch');
79
80 ok( $obj->add_tags_to_seq, 'testing output' );
81 ok( -e 't/data/output.cram', 'checking file existence' );
82 `$samtools_exec view -h -o t/data/output.sam t/data/output.cram`;
83 `$samtools_exec view -h -o t/data/AddTags/expected_tradis.sam t/data/AddTags/expected_tradis.cram`;
84 is(
85 read_file('t/data/output.sam'),
86 read_file('t/data/AddTags/expected_tradis.sam'),
87 'checking file contents'
88 );
89
90
91 unlink('t/data/output.cram');
92 unlink('t/data/output.bam');
93 unlink('t/data/output.sam');
94 unlink('t/data/AddTags/expected_tradis.sam');
95 unlink('t/data/AddTags/sample_sm_no_tr.sam');
96 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use Data::Dumper;
4
5 BEGIN { unshift( @INC, './lib' ) }
6 BEGIN { unshift( @INC, '../lib' ) }
7
8 BEGIN {
9
10 use Test::Most;
11 use_ok('Bio::Tradis::Analysis::InsertSite');
12 }
13
14 ok my $insert_site_plots_from_bam = Bio::Tradis::Analysis::InsertSite->new(
15 filename => 't/data/InsertSite/small_multi_sequence.bam',
16 output_base_filename => 't/data/InsertSite/insert_site',
17 mapping_score => 0
18 );
19 ok $insert_site_plots_from_bam->create_plots();
20
21 # parse output files and check they are okay
22 ok is_input_string_found_on_given_line( "0 0", 1,
23 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
24 'check main sequence insert_site values first value';
25 ok is_input_string_found_on_given_line( "0 2", 7899,
26 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
27 'check main sequence insert_site value before site';
28 ok is_input_string_found_on_given_line( "0 12", 7915,
29 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
30 'check main sequence insert_site values for reverse reads only';
31 ok is_input_string_found_on_given_line( "0 0", 249,
32 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
33 'various values';
34 ok is_input_string_found_on_given_line( "1 0", 345,
35 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
36 'various values';
37 ok is_input_string_found_on_given_line( "3 0", 354,
38 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
39 'various values';
40 ok is_input_string_found_on_given_line( "1 0", 366,
41 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
42 'various values';
43 ok is_input_string_found_on_given_line( "0 0", 513,
44 't/data/InsertSite/insert_site.FN543502.insert_site_plot.gz' ),
45 'various values';
46 ok is_input_string_found_on_given_line( "0 0", 1,
47 't/data/InsertSite/insert_site.pCROD1.insert_site_plot.gz' ),
48 'check empty plasmid insert_site values first value';
49 ok is_input_string_found_on_given_line( "0 0", 59,
50 't/data/InsertSite/insert_site.pCROD1.insert_site_plot.gz' ),
51 'check empty plasmid insert_site values last value';
52 ok is_input_string_found_on_given_line( "0 0", 1,
53 't/data/InsertSite/insert_site.pCROD2.insert_site_plot.gz' ),
54 'check plasmid with 1 read insert_site values first value';
55 ok is_input_string_found_on_given_line( "0 1", 143,
56 't/data/InsertSite/insert_site.pCROD2.insert_site_plot.gz' ),
57 'check plasmid with 1 read insert_site values first base of read';
58 ok is_input_string_found_on_given_line( "0 0", 144,
59 't/data/InsertSite/insert_site.pCROD2.insert_site_plot.gz' ),
60 'check plasmid with 1 read insert_site values after last base of read';
61 ok is_input_string_found_on_given_line( "0 0", 1000,
62 't/data/InsertSite/insert_site.pCROD2.insert_site_plot.gz' ),
63 'check plasmid with 1 read insert_site values last value';
64 ok is_input_string_found_on_given_line( "0 0", 1,
65 't/data/InsertSite/insert_site.pCROD3.insert_site_plot.gz' ),
66 'check another empty plasmid insert_site values first value';
67 ok is_input_string_found_on_given_line( "0 0", 100,
68 't/data/InsertSite/insert_site.pCROD3.insert_site_plot.gz' ),
69 'check another empty plasmid insert_site values last value';
70
71 unlink("t/data/InsertSite/insert_site.FN543502.insert_site_plot.gz");
72 unlink("t/data/InsertSite/insert_site.pCROD1.insert_site_plot.gz");
73 unlink("t/data/InsertSite/insert_site.pCROD2.insert_site_plot.gz");
74 unlink("t/data/InsertSite/insert_site.pCROD3.insert_site_plot.gz");
75
76
77
78 ok $insert_site_plots_from_bam = Bio::Tradis::Analysis::InsertSite->new(
79 filename => 't/data/InsertSite/2_reads.bam',
80 output_base_filename => 't/data/InsertSite/2_reads_output',
81 mapping_score => 0
82 );
83 ok $insert_site_plots_from_bam->create_plots();
84 ok is_input_string_found_on_given_line( "1 0", 100,
85 't/data/InsertSite/2_reads_output.FN543502.insert_site_plot.gz' ),
86 'check forward read';
87 ok is_input_string_found_on_given_line( "0 1", 153,
88 't/data/InsertSite/2_reads_output.FN543502.insert_site_plot.gz' ),
89 'check reverse read';
90 unlink('t/data/InsertSite/2_reads_output.FN543502.insert_site_plot.gz');
91
92 done_testing();
93
94 sub is_input_string_found_on_given_line {
95 my ( $expected_string, $line_number, $filename ) = @_;
96 my $line_counter = 0;
97 open( IN, '-|', "gzip -dc " . $filename );
98 while (<IN>) {
99 chomp;
100 my $line = $_;
101 $line_counter++;
102 next unless ( $line_counter == $line_number );
103 last if ( $line_counter > $line_number );
104
105 if ( $expected_string eq $line ) { return 1; }
106 else {
107 print STDERR "Expected: "
108 . $expected_string
109 . "\t Got: "
110 . $line . "\n";
111 }
112 }
113 return 0;
114 }
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Slurp;
4 use Cwd;
5 use File::Path qw( remove_tree );
6
7 BEGIN { unshift( @INC, './lib' ) }
8 BEGIN { unshift( @INC, '../lib' ) }
9 BEGIN {
10 use Test::Most;
11 use Test::Files;
12 use_ok('Bio::Tradis::CombinePlots');
13 }
14
15 my ( $plotfile, $obj );
16
17 $plotfile = "t/data/CombinePlots/comb_sample.txt";
18
19 ok( $obj = Bio::Tradis::CombinePlots->new( plotfile => $plotfile ),
20 'creating object' );
21
22 ok( $obj->combine, 'combining plots' );
23 ok(
24 -e 'combined/first.insert_site_plot.gz',
25 'checking first combined plot file exists'
26 );
27 ok(
28 -e 'combined/second.insert_site_plot.gz',
29 'checking second combined plot file exists'
30 );
31 ok(
32 -e 'comb_sample.stats',
33 'checking stats file exists'
34 );
35
36 system("gunzip -c combined/first.insert_site_plot.gz > first.test.plot");
37 is(
38 read_file('first.test.plot'),
39 read_file('t/data/CombinePlots/first.expected.plot'),
40 'checking first file contents'
41 );
42 system("gunzip -c combined/second.insert_site_plot.gz > second.test.plot");
43 is(
44 read_file('second.test.plot'),
45 read_file('t/data/CombinePlots/second.expected.plot'),
46 'checking second file contents'
47 );
48 is(
49 read_file('comb_sample.stats'),
50 read_file('t/data/CombinePlots/comb_expected.stats'),
51 'checking stats file contents'
52 );
53
54 #check with gzipped plots
55 $plotfile = "t/data/CombinePlots/zip_comb_list.txt";
56
57 ok( $obj = Bio::Tradis::CombinePlots->new( plotfile => $plotfile ),
58 'creating object' );
59
60 ok( $obj->combine, 'combining plots' );
61 ok(
62 -e 'combined/zip_combined.insert_site_plot.gz',
63 'checking first combined plot file exists'
64 );
65 ok(
66 -e 'combined/tabix_sorted.insert_site_plot.gz',
67 'checking tabix sorted combined plot file exists'
68 );
69
70 ok(
71 -e 'combined/tabix_sorted.insert_site_plot.gz.tbi',
72 'checking tabix index file exists'
73 );
74
75
76 system("gunzip -c combined/zip_combined.insert_site_plot.gz > zip_combined.test.plot");
77 is(
78 read_file('zip_combined.test.plot'),
79 read_file('t/data/CombinePlots/zip_comb_exp.plot'),
80 'checking zipped file contents'
81 );
82 is(
83 read_file('zip_comb_list.stats'),
84 read_file('t/data/CombinePlots/zip_comb_exp.stats'),
85 'checking stats file contents'
86 );
87
88 # check custom directory name
89 $plotfile = "t/data/CombinePlots/comb_sample.txt";
90 ok( $obj = Bio::Tradis::CombinePlots->new(
91 plotfile => $plotfile,
92 combined_dir => 'comb_test'
93 ),
94 'creating object'
95 );
96
97 ok( $obj->combine, 'combining plots' );
98 ok( -d 'comb_test', 'checking directory exists' );
99 ok(
100 -e 'comb_test/first.insert_site_plot.gz',
101 'checking first combined plot file exists'
102 );
103 ok(
104 -e 'comb_test/second.insert_site_plot.gz',
105 'checking second combined plot file exists'
106 );
107
108 cleanup_files();
109 done_testing();
110
111 sub cleanup_files {
112 unlink('first.test.plot');
113 unlink('second.test.plot');
114 unlink('zip_combined.test.plot');
115 unlink('comb_sample.stats');
116 unlink('zip_comb_list.stats');
117 remove_tree('combined');
118 remove_tree('comb_test');
119 }
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use Cwd;
4 use File::Path 'rmtree';
5 use File::Temp;
6 use File::Slurp;
7
8 BEGIN { unshift( @INC, './lib' ) }
9 BEGIN { unshift( @INC, '../lib' ) }
10
11 BEGIN {
12 use Test::Most;
13 use Test::Exception;
14 use_ok('Bio::Tradis::CommandLine::TradisAnalysis');
15 }
16
17 # Tag which is found in both inputs
18 my $output_directory_obj = File::Temp->newdir( 'tmp_TradisAnalysis_tests_XXXXX',
19 CLEANUP => 0,
20 DIR => cwd() );
21 my $output_directory = $output_directory_obj->dirname;
22
23 ok(
24 my $obj = Bio::Tradis::CommandLine::TradisAnalysis->new(
25 args => ['-f', 't/data/CommandLine/fastq.list', '-t',
26 "TAAGAGTCAG", '-r', "t/data/RunTradis/smallref.fa"],
27 script_name => 'bacteria_tradis_test',
28 _output_directory => $output_directory
29 ),
30 'creating object'
31 );
32
33 ok( $obj->run, 'testing run' );
34
35 open(STATS, "$output_directory/fastq.stats") or die "Could not open stats file";
36 my $line_count = 0;
37 while (<STATS>) { $line_count++; }
38 is( $line_count, 3, "both files have reads with tag");
39 rmtree($output_directory);
40
41 # Only one file has a read with the given tag
42 $output_directory_obj = File::Temp->newdir( 'tmp_TradisAnalysis_tests_XXXXX',
43 CLEANUP => 0,
44 DIR => cwd() );
45 $output_directory = $output_directory_obj->dirname;
46
47 $obj = Bio::Tradis::CommandLine::TradisAnalysis->new(
48 args => ['-f', 't/data/CommandLine/fastq.list', '-t',
49 "CGCACAGCCG", '-r', "t/data/RunTradis/smallref.fa"],
50 script_name => 'bacteria_tradis_test',
51 _output_directory => $output_directory
52 );
53
54 {
55 my $warning_counter = 0;
56 local $SIG{'__WARN__'} = sub { $warning_counter++; };
57 ok( $obj->run, 'testing run with tag only found in one fastq' );
58 is( $warning_counter, 1, "one warning raised" );
59 }
60 open(STATS, "$output_directory/fastq.stats") or die "Could not open stats file";
61 $line_count = 0;
62 while (<STATS>) { $line_count++; }
63 is( $line_count, 2, "only one input fastq has reads with tag");
64 rmtree($output_directory);
65
66 # Neither fastq input has a read with the given tag
67 $output_directory_obj = File::Temp->newdir( 'tmp_TradisAnalysis_tests_XXXXX',
68 CLEANUP => 0,
69 DIR => cwd() );
70 $output_directory = $output_directory_obj->dirname;
71
72 $obj = Bio::Tradis::CommandLine::TradisAnalysis->new(
73 args => ['-f', 't/data/CommandLine/fastq.list', '-t',
74 "AAAAAAAAAA", '-r', "t/data/RunTradis/smallref.fa"],
75 script_name => 'bacteria_tradis_test',
76 _output_directory => $output_directory
77 );
78
79 {
80 my $warning_counter = 0;
81 local $SIG{'__WARN__'} = sub { $warning_counter++; };
82 throws_ok {$obj->run} 'Bio::Tradis::Exception::TagFilterError', 'testing run without tag in either fastq';
83 is( $warning_counter, 2, "two warnings raised" );
84 }
85 open(STATS, "$output_directory/fastq.stats") or die "Could not open stats file";
86 $line_count = 0;
87 while (<STATS>) { $line_count++; }
88 is( $line_count, 0, "neither input fastq has reads with tag");
89 rmtree($output_directory);
90
91 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4
5 BEGIN { unshift( @INC, './lib' ) }
6 BEGIN { unshift( @INC, '../lib' ) }
7
8 BEGIN {
9 use Test::Most;
10 use_ok('Bio::Tradis::DetectTags');
11 }
12
13 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
14 my $destination_directory = $destination_directory_obj->dirname();
15
16 my ( $bamfile, $obj );
17
18 $bamfile = "t/data/DetectTags/sample_sm_tr.bam";
19
20 ok(
21 $obj = Bio::Tradis::DetectTags->new(
22 bamfile => $bamfile,
23 script_name => 'name_of_script'
24 ),
25 'testing tag checker - tradis'
26 );
27 is( $obj->tags_present, 1, 'testing output' );
28
29
30 my $cramfile = "t/data/DetectTags/sample_sm_tr.cram";
31
32 ok(
33 $obj = Bio::Tradis::DetectTags->new(
34 bamfile => $cramfile,
35 script_name => 'name_of_script'
36 ),
37 'testing tag checker for cram- tradis'
38 );
39 is( $obj->tags_present, 1, 'testing output cram' );
40
41
42
43 $bamfile = "t/data/DetectTags/sample_sm_no_tr.bam";
44
45 ok(
46 $obj = Bio::Tradis::DetectTags->new(
47 bamfile => $bamfile,
48 script_name => 'name_of_script'
49 ),
50 'testing tag checker - no tradis'
51 );
52 is( $obj->tags_present, 0, 'testing output' );
53
54 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8 BEGIN {
9 use Test::Most;
10 use_ok('Bio::Tradis::FilterTags');
11 }
12
13 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
14 my $destination_directory = $destination_directory_obj->dirname();
15
16 my ( $fastqfile, $tag, $obj );
17
18 $fastqfile = "t/data/FilterTags/sample.fastq";
19 $tag = "CAACGTTTT";
20
21 ok(
22 $obj = Bio::Tradis::FilterTags->new(
23 fastqfile => $fastqfile,
24 tag => $tag,
25 mismatch => 0,
26 outfile => 'output.fastq'
27 ),
28 'creating object'
29 );
30 ok( $obj->filter_tags, 'testing output' );
31 ok( -e 'output.fastq', 'checking file existence' );
32 is(
33 read_file('output.fastq'),
34 read_file('t/data/FilterTags/expected.caa.fastq'),
35 'checking file contents'
36 );
37
38 # Test tag mismatch option
39 ok(
40 $obj = Bio::Tradis::FilterTags->new(
41 fastqfile => $fastqfile,
42 tag => $tag,
43 mismatch => 1,
44 outfile => 'output.fastq'
45 ),
46 'creating object'
47 );
48 ok( $obj->filter_tags, 'testing output' );
49 ok( -e 'output.fastq', 'checking file existence' );
50 is(
51 read_file('output.fastq'),
52 read_file('t/data/FilterTags/expected.1mm.caa.fastq'),
53 'checking file contents'
54 );
55
56 # Different tag
57 $tag = "TNAGAGACAG";
58
59 ok(
60 $obj = Bio::Tradis::FilterTags->new(
61 fastqfile => $fastqfile,
62 tag => $tag,
63 mismatch => 0,
64 outfile => 'output.fastq'
65 ),
66 'creating object'
67 );
68 ok( $obj->filter_tags, 'testing output' );
69 ok( -e 'output.fastq', 'checking file existence' );
70 is(
71 read_file('output.fastq'),
72 read_file('t/data/FilterTags/expected.tna.fastq'),
73 'checking file contents'
74 );
75
76 # Gzipped input
77 $fastqfile = "t/data/FilterTags/sample.fastq.gz";
78 $tag = "CAACGTTTT";
79
80 ok(
81 $obj = Bio::Tradis::FilterTags->new(
82 fastqfile => $fastqfile,
83 tag => $tag,
84 mismatch => 0,
85 outfile => 'output.fastq'
86 ),
87 'creating object'
88 );
89 ok( $obj->filter_tags, 'testing output' );
90 ok( -e 'output.fastq', 'checking file existence' );
91 is(
92 read_file('output.fastq'),
93 read_file('t/data/FilterTags/expected.caa.fastq'),
94 'checking file contents'
95 );
96
97 unlink('t/data/output.fastq');
98 unlink('t/data/FilterTags/expected.caa.fastq');
99 unlink('t/data/FilterTags/expected.tna.fastq');
100 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN {
7 unshift( @INC, '../lib' );
8 unshift( @INC, './lib' );
9 }
10
11 BEGIN {
12 use Test::Most;
13 use_ok('Bio::Tradis::Map');
14 }
15
16 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
17 my $destination_directory = $destination_directory_obj->dirname();
18
19 my ( $fastqfile, $ref, $obj, $refname, $outfile );
20
21 $fastqfile = "t/data/Map/test.fastq";
22 $ref = "t/data/Map/smallref.fa";
23 $refname = "t/data/Map/test.ref";
24 $outfile = "t/data/Map/mapped.out";
25
26 ok(
27 $obj = Bio::Tradis::Map->new(
28 fastqfile => $fastqfile,
29 reference => $ref,
30 refname => $refname,
31 outfile => $outfile
32 ),
33 'creating object'
34 );
35 ok( $obj->index_ref, 'testing reference indexing' );
36 ok( -e 't/data/Map/test.ref.sma', 'checking index file existence' );
37 ok( -e 't/data/Map/test.ref.smi', 'checking index file existence' );
38
39 ok( $obj->do_mapping, 'testing reference indexing' );
40 ok( -e 't/data/Map/mapped.out', 'checking index file existence' );
41 system("grep -v ^\@ t/data/Map/mapped.out > mapped.nohead.out");
42 system("grep -v ^\@ t/data/Map/expected.mapped > expected.nohead.mapped");
43 is(
44 read_file('mapped.nohead.out'),
45 read_file('expected.nohead.mapped'),
46 'checking file contents'
47 );
48
49 # test optional smalt parameters
50 ok(
51 $obj = Bio::Tradis::Map->new(
52 fastqfile => $fastqfile,
53 reference => $ref,
54 refname => $refname,
55 outfile => $outfile,
56 smalt_k => 10,
57 smalt_s => 10,
58 smalt_y => 0.9
59 ),
60 'creating object'
61 );
62
63 my $index_cmd = $obj->index_ref;
64 my $index_exp = "smalt index -k 10 -s 10 $refname $ref > /dev/null 2>&1";
65 is( $index_cmd, $index_exp, "indexing args correct" );
66
67 my $map_cmd = $obj->do_mapping;
68 my $map_exp = "smalt map -n 1 -x -r -1 -y 0.9 $refname $fastqfile 1> $outfile 2> smalt.stderr";
69 is( $map_cmd, $map_exp, "mapping args correct" );
70
71
72
73 unlink('t/data/Map/test.ref.sma');
74 unlink('t/data/Map/test.ref.smi');
75 unlink('t/data/Map/mapped.out');
76 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8
9 BEGIN {
10 use Test::Most;
11 use_ok('Bio::Tradis::Parser::Bam');
12 }
13
14 my ( $obj, $bamfile );
15
16 $bamfile = "t/data/Parsers/test.bam";
17
18 ok(
19 $obj = Bio::Tradis::Parser::Bam->new(
20 file => $bamfile,
21 ),
22 'creating object'
23 );
24 isa_ok $obj, 'Bio::Tradis::Parser::Bam';
25
26 # Test sequence info
27 my %si = $obj->seq_info;
28 is ref( \%si ), 'HASH', 'seq_info returns a hash';
29
30 # Test reading first result
31 is $obj->next_read, 1, 'first result detected';
32 my $read_info = $obj->read_info;
33 is_deeply $read_info,
34 {
35 QNAME => 'MS5_9521:1:1101:10072:14269#14',
36 FLAG => '16',
37 BINARY_FLAG => '10000',
38 RNAME => 'ENA|AE004091|AE004091.2',
39 POS => '5',
40 MAPQ => '37',
41 CIGAR => '50M',
42 RNEXT => '*',
43 PNEXT => '0',
44 TLEN => '0',
45 SEQ => 'AAGAGACCGGCGATTCTAGTGAAATCGAACGGGCAGGTCAATTTCCAACC',
46 QUAL => 'HHHGGGGGGGHHHHHHHHHHHGHHHGHHGGGGGGGGGGFFFBFFCBAABA',
47 X0 => '1',
48 X1 => '0',
49 BC => 'TCTCGGTT',
50 MD => '50',
51 RG => '1#14',
52 XG => '0',
53 NM => '0',
54 XM => '0',
55 XO => '0',
56 QT => 'BBCDECBC',
57 XT => 'U',
58 tq => 'CCCBBFFFFF',
59 tr => 'TAAGAGTCAG',
60 READ => 'MS5_9521:1:1101:10072:14269#14 16 ENA|AE004091|AE004091.2 5 37 50M * 0 0 AAGAGACCGGCGATTCTAGTGAAATCGAACGGGCAGGTCAATTTCCAACC HHHGGGGGGGHHHHHHHHHHHGHHHGHHGGGGGGGGGGFFFBFFCBAABA X0:i:1 X1:i:0 BC:Z:TCTCGGTT MD:Z:50 RG:Z:1#14 XG:i:0 NM:i:0 XM:i:0 XO:i:0 QT:Z:BBCDECBC XT:A:U tq:Z:CCCBBFFFFF tr:Z:TAAGAGTCAG'
61 },
62 'read_info contains correct info for first line';
63
64 is $obj->is_mapped, 1, 'testing flag parsing - mapped';
65 is $obj->is_reverse, 1, 'testing flag parsing - reverse complement';
66
67 # Test reading second/last result
68 is $obj->next_read, 1, 'last result detected';
69 $read_info = $obj->read_info;
70 is_deeply $read_info,
71 {
72 QNAME => 'MS5_9521:1:1103:26809:18585#14',
73 FLAG => '1040',
74 BINARY_FLAG => '10000010000',
75 RNAME => 'ENA|AE004091|AE004091.2',
76 POS => '23',
77 MAPQ => '37',
78 CIGAR => '50M',
79 RNEXT => '*',
80 PNEXT => '0',
81 TLEN => '0',
82 SEQ => 'GTGAAATCGAACGGGCAGGTCAATTTCCAACCAGCGATGACGTAATAGAT',
83 QUAL => '5FGGHHGEGHFEHHHHHGFHHGHGGHGFGGFCGEGBBAFC?DFFFBBBB3',
84 X0 => '1',
85 X1 => '0',
86 BC => 'TCTCGGTT',
87 MD => '50',
88 RG => '1#14',
89 XG => '0',
90 NM => '0',
91 XM => '0',
92 XO => '0',
93 QT => 'CCCCCCCC',
94 XT => 'U',
95 tq => 'BCCCCFFFFF',
96 tr => 'TAAGAGTCAG',
97 READ => 'MS5_9521:1:1103:26809:18585#14 1040 ENA|AE004091|AE004091.2 23 37 50M * 0 0 GTGAAATCGAACGGGCAGGTCAATTTCCAACCAGCGATGACGTAATAGAT 5FGGHHGEGHFEHHHHHGFHHGHGGHGFGGFCGEGBBAFC?DFFFBBBB3 X0:i:1 X1:i:0 BC:Z:TCTCGGTT MD:Z:50 RG:Z:1#14 XG:i:0 NM:i:0 XM:i:0 XO:i:0 QT:Z:CCCCCCCC XT:A:U tq:Z:BCCCCFFFFF tr:Z:TAAGAGTCAG'
98 },
99 'read_info contains correct info for last line';
100
101 # Ensure end of file is detected
102 is $obj->next_read, 0, 'EOF detected';
103
104 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8
9 BEGIN {
10 use Test::Most;
11 use_ok('Bio::Tradis::Parser::Cigar');
12 }
13
14 my ( $obj, $fastqfile );
15
16 my @cigar_tests = (
17 {
18 name => 'all matching',
19 cigar => '100M',
20 coord => 100,
21 start => 100,
22 end => 199,
23 },
24 {
25 name => 'nothing matching',
26 cigar => '*',
27 coord => 1000,
28 start => 0,
29 end => 0,
30 },
31 {
32 name => 'soft clipping at start',
33 cigar => '10S90M',
34 coord => 100,
35 start => 110,
36 end => 199,
37 },
38 {
39 name => 'soft clipping at end',
40 cigar => '90M10S',
41 coord => 100,
42 start => 100,
43 end => 189,
44 },
45 {
46 name => 'soft clipping at both ends',
47 cigar => '10S80M10S',
48 coord => 100,
49 start => 110,
50 end => 189,
51 },
52 {
53 name => 'deletion in middle',
54 'cigar' => '20M1D80M',
55 'coord' => 20,
56 'end' => 120,
57 'start' => 20
58 },
59 {
60 name => 'insertions and deletions',
61 'cigar' => '27M1I6M1D66M',
62 'coord' => 46,
63 'end' => 145,
64 'start' => 46
65 },
66 {
67 name => 'insertions in the middle',
68 'cigar' => '90M1I9M',
69 'coord' => 80,
70 'end' => 178,
71 'start' => 80
72 }
73
74 );
75
76 for my $cigar_test (@cigar_tests) {
77 ok( $obj = Bio::Tradis::Parser::Cigar->new( coordinate => $cigar_test->{coord}, cigar => $cigar_test->{cigar} ),
78 'initialise obj -' . $cigar_test->{name} );
79 is( $obj->start, $cigar_test->{start}, 'read start -' . $cigar_test->{name} );
80 is( $obj->end, $cigar_test->{end}, 'read end -' . $cigar_test->{name} );
81 }
82
83 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8
9 BEGIN {
10 use Test::Most;
11 use_ok('Bio::Tradis::Parser::Fastq');
12 }
13
14 my ( $obj, $fastqfile );
15
16 $fastqfile = "t/data/Parsers/test.fastq";
17
18 ok(
19 $obj = Bio::Tradis::Parser::Fastq->new(
20 file => $fastqfile,
21 ),
22 'creating object'
23 );
24 isa_ok $obj, 'Bio::Tradis::Parser::Fastq';
25
26 # Test reading first result
27 is $obj->next_read, 1, 'first result detected';
28 my @read_info = $obj->read_info;
29 is_deeply \@read_info,
30 [
31 'HS21_09876:1:1105:9650:48712#83',
32 'TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG',
33 'CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF'
34 ],
35 'read_info contains correct info for first line';
36
37 # Test reading second/last result
38 is $obj->next_read, 1, 'last result detected';
39 @read_info = $obj->read_info;
40 is_deeply \@read_info,
41 [
42 'HS21_09876:1:1106:8638:38957#83',
43 'TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG',
44 'B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD'
45 ],
46 'read_info contains correct info for last line';
47
48 # Ensure end of file is detected
49 is $obj->next_read, 0, 'EOF detected';
50
51 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5
6 BEGIN { unshift( @INC, './lib' ) }
7 BEGIN { unshift( @INC, '../lib' ) }
8
9 BEGIN {
10 use Test::Most;
11 use_ok('Bio::Tradis::RemoveTags');
12 }
13
14 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
15 my $destination_directory = $destination_directory_obj->dirname();
16
17 my ( $fastqfile, $tag, $obj );
18
19 $fastqfile = "t/data/RemoveTags/sample.caa.fastq";
20 $tag = "CAACGTTTT";
21
22 # Test without mismatch option
23 ok(
24 $obj = Bio::Tradis::RemoveTags->new(
25 fastqfile => $fastqfile,
26 tag => $tag,
27 mismatch => 0,
28 outfile => 't/data/output.fastq'
29 ),
30 'creating object'
31 );
32 ok( $obj->remove_tags, 'testing output' );
33 ok( -e 't/data/output.fastq', 'checking file existence' );
34 is(
35 read_file('t/data/output.fastq'),
36 read_file('t/data/RemoveTags/expected.rm.caa.fastq'),
37 'checking file contents'
38 );
39
40 # Test with 1 mismatch allowed
41 ok(
42 $obj = Bio::Tradis::RemoveTags->new(
43 fastqfile => $fastqfile,
44 tag => $tag,
45 mismatch => 1,
46 outfile => 't/data/output.fastq'
47 ),
48 'creating object'
49 );
50 ok( $obj->remove_tags, 'testing output' );
51 ok( -e 't/data/output.fastq', 'checking file existence' );
52 is(
53 read_file('t/data/output.fastq'),
54 read_file('t/data/RemoveTags/expected.rm.1mm.caa.fastq'),
55 'checking file contents'
56 );
57
58 $fastqfile = "t/data/RemoveTags/sample.tna.fastq";
59 $tag = "TNAGAGACAG";
60
61 ok(
62 $obj = Bio::Tradis::RemoveTags->new(
63 fastqfile => $fastqfile,
64 tag => $tag,
65 mismatch => 0,
66 outfile => 't/data/output.fastq'
67 ),
68 'creating object'
69 );
70 ok( $obj->remove_tags, 'testing output' );
71 ok( -e 't/data/output.fastq', 'checking file existence' );
72 is(
73 read_file('t/data/output.fastq'),
74 read_file('t/data/RemoveTags/expected.rm.tna.fastq'),
75 'checking file contents'
76 );
77
78 unlink('t/data/output.fastq');
79 unlink('t/data/RemoveTags/expected.rm.caa.fastq');
80 unlink('t/data/RemoveTags/expected.rm.tna.fastq');
81 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use Cwd;
4 use File::Path 'rmtree';
5 use File::Temp;
6 use File::Slurp;
7
8 BEGIN { unshift( @INC, './lib' ) }
9 BEGIN { unshift( @INC, '../lib' ) }
10
11 BEGIN {
12 use Test::Most;
13 use Test::Exception;
14 use_ok('Bio::Tradis::RunTradis');
15 }
16
17 my $output_directory_obj = File::Temp->newdir( 'tmp_run_tradis_tests_XXXXX',
18 CLEANUP => 0,
19 DIR => cwd() );
20 my $output_directory = $output_directory_obj->dirname;
21 my $temp_directory_obj = File::Temp->newdir( CLEANUP => 0,
22 DIR => $output_directory );
23 my $temp_directory = $temp_directory_obj->dirname();
24
25 my ( $obj, $fastqfile, $stats_handle, $ref, $tag, $outfile );
26
27 # First, test all parts and complete pipeline without mismatch
28
29 $fastqfile = "t/data/RunTradis/test.tagged.fastq";
30 $ref = "t/data/RunTradis/smallref.fa";
31 $tag = "TAAGAGTCAG";
32 $outfile = "test.plot";
33 open( $stats_handle, '>', "$output_directory/test.stats" );
34
35 ok(
36 $obj = Bio::Tradis::RunTradis->new(
37 fastqfile => $fastqfile,
38 reference => $ref,
39 tag => $tag,
40 outfile => $outfile,
41 output_directory => $output_directory,
42 _temp_directory => $temp_directory,
43 _stats_handle => $stats_handle
44 ),
45 'creating object - Normal files, no mismatch'
46 );
47
48 # Filtering step
49 ok( $obj->_filter, 'testing filtering step' );
50 ok(
51 -e "$temp_directory/filter.fastq",
52 'checking filtered file existence - Normal files, no mismatch'
53 );
54 is(
55 read_file("$temp_directory/filter.fastq"),
56 read_file('t/data/RunTradis/filtered.fastq'),
57 'checking filtered file contents - Normal files, no mismatch'
58 );
59
60 # Check filtering step
61 ok( $obj->_check_filter, 'testing check filtering step' );
62 system("mv $temp_directory/filter.fastq $temp_directory/filter.fastq.bak");
63 throws_ok {$obj->_check_filter} 'Bio::Tradis::Exception::TagFilterError', 'complain if no filtered reads';
64 system("touch $temp_directory/filter.fastq");
65 throws_ok {$obj->_check_filter} 'Bio::Tradis::Exception::TagFilterError', 'complain if filtered reads are empty';
66 system("echo foo > $temp_directory/filter.fastq");
67 throws_ok {$obj->_check_filter} 'Bio::Tradis::Exception::TagFilterError', 'complain if filtered reads has less than 4 lines';
68 system("echo 'foo\nbar\nbaz\nquux' > $temp_directory/filter.fastq");
69 throws_ok {$obj->_check_filter} 'Bio::Tradis::Exception::TagFilterError', 'complain if filtered reads do not look like a fastq';
70 system("echo 'foo\nbar\n+' > $temp_directory/filter.fastq");
71 throws_ok {$obj->_check_filter} 'Bio::Tradis::Exception::TagFilterError', 'complain if filtered reads are too short';
72 system("echo 'foo\nbar\n+\nquux' > $temp_directory/filter.fastq");
73 ok( $obj->_check_filter, 'check very basic filtered reads validation');
74 system("mv $temp_directory/filter.fastq.bak $temp_directory/filter.fastq");
75
76 # Tag removal
77 ok( $obj->_remove, 'testing tag removal' );
78 ok( -e "$temp_directory/tags_removed.fastq",
79 'checking de-tagged file existence - Normal files, no mismatch' );
80 is(
81 read_file("$temp_directory/tags_removed.fastq"),
82 read_file('t/data/RunTradis/notags.fastq'),
83 'checking de-tagged file contents - Normal files, no mismatch'
84 );
85
86 # Mapping
87 ok( $obj->_map, 'testing mapping' );
88 ok( -e "$temp_directory/mapped.sam", 'checking SAM existence' );
89 `grep -v "\@PG" $temp_directory/mapped.sam > $output_directory/tmp1.sam`;
90 `grep -v "\@PG" t/data/RunTradis/mapped.sam > $output_directory/tmp2.sam`;
91 is( read_file("$output_directory/tmp1.sam"), read_file("$output_directory/tmp2.sam"),
92 'checking mapped file contents' );
93
94 # Conversion
95 ok( $obj->_sam2bam, 'testing SAM/BAM conversion' );
96 ok( -e "$temp_directory/mapped.bam", 'checking BAM existence' );
97
98 # Sorting
99 ok( $obj->_sort_bam, 'testing BAM sorting' );
100 ok( -e "$temp_directory/mapped.sort.bam",
101 'checking sorted BAM existence - Normal files, no mismatch' );
102 ok( -e "$temp_directory/mapped.sort.bam.bai",
103 'checking indexed BAM existence - Normal files, no mismatch' );
104
105 #Bamcheck
106 ok( $obj->_bamcheck, 'testing bamcheck' );
107 ok( -e "$temp_directory/mapped.bamcheck",
108 'checking bamcheck file existence - Normal files, no mismatch' );
109
110 # Plot
111 ok( $obj->_make_plot, 'testing plotting' );
112 ok( -e "$temp_directory/test.plot.AE004091.insert_site_plot.gz",
113 'checking plot file existence - Normal files, no mismatch' );
114 system(
115 "gunzip -c $temp_directory/test.plot.AE004091.insert_site_plot.gz > $output_directory/test.plot.unzipped"
116 );
117 system("gunzip -c t/data/RunTradis/expected.plot.gz > $output_directory/expected.plot.unzipped");
118 is(
119 read_file("$output_directory/test.plot.unzipped"),
120 read_file("$output_directory/expected.plot.unzipped"),
121 'checking plot file contents - Normal files, no mismatch'
122 );
123
124
125 # Complete pipeline
126 ok( $obj->run_tradis, 'testing complete analysis - Normal files, no mismatch' );
127 ok( -e "$output_directory/test.plot.AE004091.insert_site_plot.gz",
128 'checking plot file existence - Normal files, no mismatch' );
129 system("gunzip -c $output_directory/test.plot.AE004091.insert_site_plot.gz > $output_directory/test.plot.unzipped");
130 system("gunzip -c t/data/RunTradis/expected.plot.gz > $output_directory/expected.plot.unzipped");
131 is(
132 read_file("$output_directory/test.plot.unzipped"),
133 read_file("$output_directory/expected.plot.unzipped"),
134 'checking completed pipeline file contents - Normal files, no mismatch'
135 );
136
137 unlink("$temp_directory/filter.fastq");
138 unlink("$temp_directory/tags_removed.fastq");
139
140 unlink("$output_directory/test.plot.AE004091.insert_site_plot.gz");
141 unlink("$output_directory/expected.plot.unzipped");
142 unlink("$output_directory/test.plot.unzipped");
143
144 # Test complete pipeline with 1 mismatch allowed
145
146 $temp_directory_obj = File::Temp->newdir( CLEANUP => 0,
147 DIR => $output_directory );
148 $temp_directory = $temp_directory_obj->dirname();
149
150 ok(
151 $obj = Bio::Tradis::RunTradis->new(
152 fastqfile => $fastqfile,
153 reference => $ref,
154 tag => $tag,
155 outfile => $outfile,
156 mismatch => 1,
157 output_directory => $output_directory,
158 _temp_directory => $temp_directory,
159 _stats_handle => $stats_handle
160 ),
161 'creating object - Normal files one mismatch'
162 );
163
164 ok( $obj->run_tradis, 'testing complete analysis with mismatch' );
165 ok( -e "$output_directory/test.plot.AE004091.insert_site_plot.gz",
166 'checking plot file existence - Normal files one mismatch' );
167 system("gunzip -c $output_directory/test.plot.AE004091.insert_site_plot.gz > $output_directory/test.plot.unzipped");
168 system(
169 "gunzip -c t/data/RunTradis/expected.1mm.plot.gz > $output_directory/expected.plot.unzipped");
170 is(
171 read_file("$output_directory/test.plot.unzipped"),
172 read_file("$output_directory/expected.plot.unzipped"),
173 'checking completed pipeline with mismatch file contents - Normal files one mismatch'
174 );
175
176 unlink("$output_directory/tmp1.sam");
177 unlink("$output_directory/tmp2.sam");
178 unlink("$output_directory/test.plot.AE004091.insert_site_plot.gz");
179 unlink("$output_directory/expected.plot.unzipped");
180 unlink("$output_directory/test.plot.unzipped");
181
182 # Test pipeline with gzipped input
183 $temp_directory_obj = File::Temp->newdir( CLEANUP => 0,
184 DIR => $output_directory );
185 $temp_directory = $temp_directory_obj->dirname();
186 $fastqfile = "t/data/RunTradis/test.tagged.fastq.gz";
187 ok(
188 $obj = Bio::Tradis::RunTradis->new(
189 fastqfile => $fastqfile,
190 reference => $ref,
191 tag => $tag,
192 outfile => $outfile,
193 output_directory => $output_directory,
194 _temp_directory => $temp_directory,
195 _stats_handle => $stats_handle
196 ),
197 'creating object with gzipped data - Normal files one mismatch'
198 );
199
200 ok( $obj->run_tradis, 'testing complete analysis with gzipped data' );
201 ok(
202 -e "$output_directory/test.plot.AE004091.insert_site_plot.gz",
203 'checking plot file existence (gzipped data) - Normal files one mismatch'
204 );
205 ok( -e "$output_directory/test.plot.mapped.bam", 'checking mapped bam existence - Normal files one mismatch');
206 ok( -e "$output_directory/test.plot.mapped.bam.bai", 'checking indexed bam file - Normal files one mismatch');
207
208 system("gunzip -c $output_directory/test.plot.AE004091.insert_site_plot.gz > $output_directory/test.plot.unzipped");
209 system("gunzip -c t/data/RunTradis/expected.plot.gz > $output_directory/expected.plot.unzipped");
210 is(
211 read_file("$output_directory/test.plot.unzipped"),
212 read_file("$output_directory/expected.plot.unzipped"),
213 'checking completed pipeline with gzipped data file contents - Normal files one mismatch'
214 );
215
216 # Test mapping stage with custom smalt parameters
217 $temp_directory_obj = File::Temp->newdir( CLEANUP => 0,
218 DIR => $output_directory );
219 $temp_directory = $temp_directory_obj->dirname();
220 ok(
221 $obj = Bio::Tradis::RunTradis->new(
222 fastqfile => $fastqfile,
223 reference => $ref,
224 tag => $tag,
225 outfile => $outfile,
226 output_directory => $output_directory,
227 _temp_directory => $temp_directory,
228 _stats_handle => $stats_handle,
229 smalt_k => 10,
230 smalt_s => 2
231 ),
232 'creating object with custom smalt parameters'
233 );
234 # Filtering step
235 $obj->_filter;
236 $obj->_remove;
237 ok( $obj->_map, 'mapping with custom parameters fine' );
238
239 # Check die if ref is not found
240 $temp_directory_obj = File::Temp->newdir( CLEANUP => 0,
241 DIR => $output_directory );
242 $temp_directory = $temp_directory_obj->dirname();
243 ok(
244 $obj = Bio::Tradis::RunTradis->new(
245 fastqfile => $fastqfile,
246 reference => "not_really_a_ref.fa",
247 tag => $tag,
248 outfile => $outfile,
249 output_directory => $output_directory,
250 _temp_directory => $temp_directory,
251 _stats_handle => $stats_handle,
252 smalt_k => 10,
253 smalt_s => 2
254 ),
255 'creating object with custom smalt parameters'
256 );
257 throws_ok {$obj->run_tradis} 'Bio::Tradis::Exception::RefNotFound', 'correct error thrown';
258
259 rmtree($output_directory);
260 done_testing();
0 #!/usr/bin/env perl
1 use strict;
2 use warnings;
3 use File::Temp;
4 use File::Slurp;
5 use Test::Files;
6
7 BEGIN { unshift( @INC, './lib' ) }
8 BEGIN { unshift( @INC, '../lib' ) }
9
10 BEGIN {
11 use Test::Most;
12 use_ok('Bio::Tradis::TradisPlot');
13 }
14
15 my $destination_directory_obj = File::Temp->newdir( CLEANUP => 1 );
16 my $destination_directory = $destination_directory_obj->dirname();
17
18 my ( $mappedfile, $obj, $outfile );
19
20 $mappedfile = "t/data/TradisPlot/test.mapped.bam";
21 $outfile = "test.plot";
22
23 ok(
24 $obj = Bio::Tradis::TradisPlot->new(
25 mappedfile => $mappedfile,
26 outfile => $outfile,
27 mapping_score => 30
28 ),
29 'creating object'
30 );
31
32 ok( $obj->plot, 'testing plotting' );
33 ok( -e 'test.plot.AE004091.insert_site_plot.gz',
34 'checking plot file existence' );
35
36 system("gunzip -c test.plot.AE004091.insert_site_plot.gz > test.plot.unzipped");
37 system("gunzip -c t/data/TradisPlot/expected.plot.gz > expected.plot.unzipped");
38 compare_ok('test.plot.unzipped','expected.plot.unzipped','checking file contents');
39
40 unlink('test.plot.AE004091.insert_site_plot.gz');
41 unlink('expected.plot.unzipped');
42 done_testing();
0 ID,Sequence Length,Unique Insertion Sites,Seq Len/UIS
1 first,20,10,2
2 second,25,5,5
0 first test1.plot test2.plot
1 second test3.plot test4.plot
0 0 1
1 3 0
2 0 0
3 0 0
4 0 4
5 1 0
6 0 0
7 0 6
8 0 0
9 3 0
10 0 0
11 0 0
12 2 0
13 1 0
14 0 0
15 0 7
16 0 0
17 0 0
18 0 0
19 10 1
0 0 0
1 0 0
2 0 0
3 2 0
4 0 0
5 0 0
6 0 1
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 7
13 1 0
14 0 0
15 0 0
16 0 0
17 0 0
18 0 0
19 0 0
20 0 0
21 9 0
22 0 0
23 0 0
24 0 0
0 0 0
1 1 0
2 0 0
3 0 0
4 0 2
5 0 0
6 0 0
7 0 0
8 0 0
9 3 0
10 0 0
11 0 0
12 1 0
13 1 0
14 0 0
15 0 7
16 0 0
17 0 0
18 0 0
19 10 0
0 0 1
1 2 0
2 0 0
3 0 0
4 0 2
5 1 0
6 0 0
7 0 6
8 0 0
9 0 0
10 0 0
11 0 0
12 1 0
13 0 0
14 0 0
15 0 0
16 0 0
17 0 0
18 0 0
19 0 1
0 0 0
1 0 0
2 0 0
3 1 0
4 0 0
5 0 0
6 0 1
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 2
13 1 0
14 0 0
15 0 0
16 0 0
17 0 0
18 0 0
19 0 0
20 0 0
21 0 0
22 0 0
23 0 0
24 0 0
0 0 0
1 0 0
2 0 0
3 1 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 5
13 0 0
14 0 0
15 0 0
16 0 0
17 0 0
18 0 0
19 0 0
20 0 0
21 9 0
22 0 0
23 0 0
24 0 0
0 0 0
1 0 0
2 0 0
3 4 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0
13 0 0
14 0 0
15 0 5
16 0 0
17 0 0
18 0 0
19 0 0
20 0 0
21 0 0
22 0 0
23 0 0
24 0 0
25 0 0
26 0 0
27 0 0
28 0 0
29 0 0
30 0 0
31 4 0
32 0 0
33 0 0
34 0 0
35 0 0
36 0 0
37 0 0
38 0 0
39 0 0
40 0 0
41 0 0
42 0 0
43 0 0
44 0 0
45 0 0
46 0 0
47 0 0
48 0 0
49 0 0
50 0 0
51 0 0
52 0 0
53 0 0
54 0 0
55 0 0
56 0 0
57 0 0
58 0 0
59 0 0
60 0 0
61 0 0
62 0 0
63 1 5
64 0 0
65 0 0
66 0 0
67 0 0
68 0 0
69 0 0
70 0 0
71 0 0
72 0 0
73 0 0
74 0 0
75 0 0
76 0 0
77 0 0
78 0 0
79 0 0
80 0 0
81 0 0
82 0 0
83 0 0
84 0 0
85 0 0
86 0 0
87 0 0
88 0 0
89 0 0
90 0 0
91 0 0
92 0 0
93 0 0
94 0 0
95 0 0
96 0 0
97 0 0
98 0 0
99 0 0
0 ID,Sequence Length,Unique Insertion Sites,Seq Len/UIS
1 zip_combined,100,4,25
0 zip_combined sample1.sm.plot.gz sample2.sm.plot.gz
0 test_1.fastq
1 test_2.fastq
0 @HS21_09876:1:1105:9650:48712#84
1 TAAGATTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#84
5 TGAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
8 @HS21_09876:1:1105:9650:48712#83
9 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
10 +
11 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
12 @HS21_09876:1:1106:8638:38957#83
13 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
14 +
15 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
16 @HS21_09876:1:1204:19746:42237#83
17 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
18 +
19 CCCFFFFFHHHHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF
20 @HS21_09876:1:2210:2408:11148#83
21 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
22 +
23 BBCFFFFFHHHHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF
24 @HS21_09876:1:2210:16541:84795#83
25 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
26 +
27 BCCFFFFFHHFDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE
28 @HS21_09876:1:1201:6607:66324#83
29 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
30 +
31 BCCDFBDEHHHHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD
32 @HS21_09876:1:2102:12312:75235#83
33 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
34 +
35 BCCDFFFFHHHHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE
36 @HS21_09876:1:1106:16061:54950#83
37 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
38 +
39 BBBDFFFFHHFHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF
40 @HS21_09876:1:2101:14032:85058#83
41 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
42 +
43 BCCDFFFFHHHHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF
44 @HS21_09876:1:2111:11125:6617#83
45 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG
46 +
47 BCCDDDDDFHHG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF
48 @HS21_09876:1:2202:3163:76297#83
49 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
50 +
51 BCCDFDDDHHHHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF
52 @HS21_09876:1:2205:20175:3703#83
53 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
54 +
55 BCCDFFFEHHH>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE
0 @HS21_09876:1:2205:6527:34286#83
1 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
2 +
3 BCCDFFFFHHHGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF
4 @HS21_09876:1:1201:10071:48582#83
5 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
6 +
7 CCCDFFFFHHHHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE
8 @HS21_09876:1:2107:20205:78513#83
9 TAAGAGTCAGGCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
10 +
11 BCCFFFFFHHHHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD
12 @HS21_09876:1:2207:12005:97464#83
13 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
14 +
15 BCCDFFFFHHHGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D
16 @HS21_09876:1:1208:12319:4648#83
17 TAAGAGTCAGCAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC
18 +
19 B=BDFFFDH>AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E
20 @HS21_09876:1:2209:14024:59451#83
21 TAAGAGTCAGCCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA
22 +
23 BCCDFFFFHHFHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF
24 @HS21_09876:2:1211:5990:82312#83
25 TAAGAGTCAGTTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC
26 +
27 BCCFFFFFHHHGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE
28 @HS21_09876:2:2103:19946:55809#83
29 TAAGAGTCAGGGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC
30 +
31 BBCFDEFFHHHHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE
32 @HS21_09876:2:1104:10740:37072#83
33 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
34 +
35 BBBDDFFFHHHHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C
36 @HS21_09876:2:2201:4547:41892#83
37 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
38 +
39 BCCDFFFFHHGGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE
40 @HS21_09876:2:2213:12056:100809#83
41 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
42 +
43 BBCDDDDDHDBFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF
44 @HS21_09876:1:1115:10349:43433#83
45 TTTTCGACAACCTTTTGCCTGCCGGAGAAACACGCAGTTGCTACCNNACNCTNN
46 +
47 8,(,*A<A2;DGE4B>HGFEDDCFG8CE=FF8BB7ED?FEEE522!!<2!:0!!
48 @HS21_09876:1:1211:4356:84410#83
49 TTCTCGACAACCTTTTGCCTGCCGGAGAAACACGCAGTTGCTACCTGACTCTTA
50 +
51 >E52EHFGFFGGFFFGHGHEEEGFGEGFGFGFGCGGFGFGFDHHHHFFFFFCCC
52 @HS21_09876:1:1101:19209:27276#83
53 CGCACAGCCGTGTGGAAAAAACCGCTGTGGATAACCATCTCGGCCTGACTCTTA
54 +
55 CEF4GHFDFFEEIFECHFGEFFGFEFGFGFFFGDHGHGFEFFHHHHFFFFFCCC
0 @IL2_4334:7:5:6843:6843
1 CGACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 =8>;A<@>=B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CACCGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <8:=B>=B(B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CAACGTTTTCTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 9AA9:17<988@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <===?;=@<<>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =B?=<>ACB=@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 <7=B8@B=;8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 =B<7<:9B@:@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 ;A:7A;CBFBFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:7:82:17494:18362
33 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
34 +
35 <79:<9;7<>8=CB@:C:AB=7410=C-46;,75>>F
36 @IL2_4334:7:84:7230:17356
37 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 DADFDFFDDD>8:=>=?@48@87A4@F6>??BF??B@
0 @IL2_4334:7:15:5608:3756
1 CAACGTTTTCTGCGTGTTGCCGATATTTTGGAAAGCA
2 +
3 9AA9:17<988@=@AB6=:?;:-08C=&,6C@:8A4=
4 @IL2_4334:7:18:16351:15714
5 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <===?;=@<<>FCBFF=:B7?A+4/A>(22@?64?5@
8 @IL2_4334:7:39:12877:7020
9 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
10 +
11 =B?=<>ACB=@;FFF=FFA<AC071??/84C=;3?75
12 @IL2_4334:7:42:14437:19550
13 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <7=B8@B=;8;DF;CF;F;8A?2<6;:18;81;<;8C
16 @IL2_4334:7:53:4426:3757
17 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =B<7<:9B@:@AF@A>?F@<F=47.@A,11D<45D9<
20 @IL2_4334:7:79:9021:16833
21 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 ;A:7A;CBFBFA?ABCC>86@B:C?A>6=:6<CB:>C
24 @IL2_4334:7:82:17494:18362
25 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 <79:<9;7<>8=CB@:C:AB=7410=C-46;,75>>F
28 @IL2_4334:7:84:7230:17356
29 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 DADFDFFDDD>8:=>=?@48@87A4@F6>??BF??B@
0 @IL2_4334:6:120:19845:10197
1 TNAGAGACAGGTATTACTCTGCATCANTNAANNGAGA
2 +
3 :)::9:9;BA;1CB7F:BCC==7@5A)=%76%%0B67
4 @IL2_4334:6:120:19846:21043
5 TNAGAGACAGTGTCTAGGGCATCACTNANGGNNGAGG
6 +
7 <)72:19:?>:A>C?@@??CC@?:6;)5%>9%%;;;<
8 @IL2_4334:6:120:19846:19594
9 TNAGAGACAGATCCTATGGGGCTGAANTNTNNNGTGA
10 +
11 :)7:782?=AC<;@=5444@:B;>?*%)%4%%%?161
0 @IL2_4334:7:5:6843:6843
1 CGACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 =8>;A<@>=B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CACCGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <8:=B>=B(B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CAACGTTTTCTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 9AA9:17<988@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <===?;=@<<>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =B?=<>ACB=@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 <7=B8@B=;8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 =B<7<:9B@:@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 ;A:7A;CBFBFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:6:120:19845:10197
33 TNAGAGACAGGTATTACTCTGCATCANTNAANNGAGA
34 +
35 :)::9:9;BA;1CB7F:BCC==7@5A)=%76%%0B67
36 @IL2_4334:7:82:17494:18362
37 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 <79:<9;7<>8=CB@:C:AB=7410=C-46;,75>>F
40 @IL2_4334:7:84:7230:17356
41 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
42 +
43 DADFDFFDDD>8:=>=?@48@87A4@F6>??BF??B@
44 @IL2_4334:6:120:19846:21043
45 TNAGAGACAGTGTCTAGGGCATCACTNANGGNNGAGG
46 +
47 <)72:19:?>:A>C?@@??CC@?:6;)5%>9%%;;;<
48 @IL2_4334:6:120:19846:19594
49 TNAGAGACAGATCCTATGGGGCTGAANTNTNNNGTGA
50 +
51 :)7:782?=AC<;@=5444@:B;>?*%)%4%%%?161
0 @HD VN:1.3 SO:unknown
1 @SQ SN:AE004091 LN:9840
2 @PG ID:smalt PN:smalt VN:0.7.4 CL:smalt map -x -r -1 -y 0.96 test.ref.index /Users/cc21/Development/repos/Bio-Tradis/t/data/Map/test.fastq
3 HS21_09876:1:1105:9650:48712#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF NM:i:0 AS:i:43
4 HS21_09876:1:1106:8638:38957#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD NM:i:0 AS:i:43
5 HS21_09876:1:1204:19746:42237#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF NM:i:0 AS:i:43
6 HS21_09876:1:2210:2408:11148#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF NM:i:0 AS:i:43
7 HS21_09876:1:2210:16541:84795#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG FDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE NM:i:0 AS:i:43
8 HS21_09876:1:1201:6607:66324#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD NM:i:0 AS:i:43
9 HS21_09876:1:2102:12312:75235#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE NM:i:0 AS:i:43
10 HS21_09876:1:1106:16061:54950#83 0 AE004091 7059 54 1S43M * 0 0 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC FHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF NM:i:0 AS:i:43
11 HS21_09876:1:2101:14032:85058#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF NM:i:0 AS:i:42
12 HS21_09876:1:2111:11125:6617#83 4 * 0 0 * * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG HG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF NM:i:0 AS:i:0
13 HS21_09876:1:2202:3163:76297#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF NM:i:0 AS:i:42
14 HS21_09876:1:2205:20175:3703#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG H>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE NM:i:0 AS:i:42
15 HS21_09876:1:2205:6527:34286#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF NM:i:0 AS:i:42
16 HS21_09876:1:1201:10071:48582#83 0 AE004091 9265 54 2S42M * 0 0 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE NM:i:0 AS:i:42
17 HS21_09876:1:2107:20205:78513#83 4 * 0 0 * * 0 0 GCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD NM:i:0 AS:i:0
18 HS21_09876:1:2207:12005:97464#83 0 AE004091 9265 54 2S42M * 0 0 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D NM:i:0 AS:i:42
19 HS21_09876:1:1208:12319:4648#83 0 AE004091 9274 54 2S42M * 0 0 CAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E NM:i:0 AS:i:42
20 HS21_09876:1:2209:14024:59451#83 0 AE004091 9391 54 1S43M * 0 0 CCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA FHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF NM:i:1 AS:i:40
21 HS21_09876:2:1211:5990:82312#83 0 AE004091 3185 54 1S43M * 0 0 TTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC HGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE NM:i:0 AS:i:43
22 HS21_09876:2:2103:19946:55809#83 0 AE004091 3958 54 1S43M * 0 0 GGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC HHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE NM:i:0 AS:i:43
23 HS21_09876:2:1104:10740:37072#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C NM:i:0 AS:i:43
24 HS21_09876:2:2201:4547:41892#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT GGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE NM:i:0 AS:i:43
25 HS21_09876:2:2213:12056:100809#83 0 AE004091 7059 54 1S43M * 0 0 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC BFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF NM:i:0 AS:i:43
0 >AE004091 AE004091.2 Pseudomonas aeruginosa PAO1, complete genome.
1 tttaaagagaccggcgattctagtgaaatcgaacgggcaggtcaatttccaaccagcgat
2 gacgtaatagatagatacaaggaagtcatttttcttttaaaggatagaaacggttaatgc
3 tcttgggacggcgcttttctgtgcataactcgatgaagcccagcaattgcgtgtttctcc
4 ggcaggcaaaaggttgtcgagaaccggtgtcgaggctgtttccttcctgagcgaagcctg
5 gggatgaacgagatggttatccacagcggttttttccacacggctgtgcgcagggatgta
6 cccccttcaaagcaagggttatccacaaagtccaggacgaccgtccgtcggcctgcctgc
7 ttttattaaggtcttgatttgcttggggcctcagcgcatcggcatgtggataagtccggc
8 ccgtccggctacaataggcgcttatttcgttgtgccgcctttccaatctttgggggatat
9 ccgtgtccgtggaactttggcagcagtgcgtggatcttctccgcgatgagctgccgtccc
10 aacaattcaacacctggatccgtcccttgcaggtcgaagccgaaggcgacgaattgcgtg
11 tgtatgcacccaaccgtttcgtcctcgattgggtgaacgagaaatacctcggtcggcttc
12 tggaactgctcggtgaacgcggcgagggtcagttgcccgcgctttccttattaataggca
13 gcaagcgtagccgtacgccgcgcgccgccatcgtcccatcgcagacccacgtggctcccc
14 cgcctccggttgctccgccgccggcgccagtgcagccggtatcggccgcgcccgtggtag
15 tgccacgtgaagagctgccgccagtgacgacggctcccagcgtgtcgagcgatccctacg
16 agccggaagaacccagcatcgatccgctggccgccgccatgccggctggagcagcgcctg
17 cggtgcgcaccgagcgcaacgtccaggtcgaaggtgcgctgaagcacaccagctatctca
18 accgtaccttcaccttcgagaacttcgtcgagggcaagtccaaccagttggcccgcgccg
19 ccgcctggcaggtggcggacaacctcaagcacggctacaacccgctgttcctctacggtg
20 gcgtcggtctgggcaagacccacctgatgcatgcggtgggcaaccacctgctgaagaaga
21 acccgaacgccaaggtggtctacctgcattcggaacgtttcgtcgcggacatggtgaagg
22 ccttgcagctcaacgccatcaacgaattcaagcgcttctaccgctcggtggacgcactgt
23 tgatcgacgacatccagttcttcgcccgtaaggagcgctcccaggaggagttcttccaca
24 ccttcaatgcccttctcgaaggcggccagcaggtgatcctcaccagcgaccgctatccga
25 aggaaatcgaaggcctggaagagcggctgaaatcccgcttcggctggggcctgacggtgg
26 ccgtcgagccgccggaactggaaacccgggtggcgatcctgatgaagaaggccgagcagg
27 cgaagatcgagctgccgcacgatgcggccttcttcatcgcccagcgcatccgttccaacg
28 tgcgtgaactggaaggtgcgctgaagcgggtgatcgcccactcgcacttcatgggccggc
29 cgatcaccatcgagctgattcgcgagtcgctgaaggacctgttggcccttcaggacaagc
30 tggtcagcatcgacaacatccagcgcaccgtcgccgagtactacaagatcaagatatccg
31 atctgttgtccaagcggcgttcgcgctcggtggcgcgcccgcgccaggtggccatggcgc
32 tctccaaggagctgaccaaccacagcctgccggagatcggcgtggccttcggcggtcggg
33 atcacaccacggtgttgcacgcctgtcgtaagatcgctcaacttagggaatccgacgcgg
34 atatccgcgaggactacaagaacctgctgcgtaccctgacaacctgacgcagcccacgag
35 gcaagggactagaccatgcatttcaccattcaacgcgaagccctgttgaaaccgctgcaa
36 ctggtcgccggcgtcgtggaacgccgccagacattgccggttctctccaacgtcctgctg
37 gtggtcgaaggccagcaactgtcgctgaccggcaccgacctcgaagtcgagctggttggt
38 cgcgtggtactggaagatgccgccgaacccggcgagatcaccgtaccggcgcgcaagctg
39 atggacatctgcaagagcctgccgaacgacgtgctgatcgacatccgtgtcgaagagcag
40 aaacttctggtgaaggccgggcgtagccgcttcaccctgtccaccctgccggccaacgat
41 ttccccaccgtagaggaaggtcccggctcgctgaacttcagcattgcccagagcaagctg
42 cgtcgcctgatcgaccgcaccagcttcgccatggcccagcaggacgtgcgttactacctc
43 aacggcatgctgctggaagtgaacggcggcaccctgcgctccgtcgccaccgacggccac
44 cgactggccatgtgctcgctggatgcgcagatcccgtcgcaggaccgccaccaggtgatc
45 gtgccgcgcaaaggcatcctcgaactggctcgtctgctcaccgagcaggacggcgaagtc
46 ggcatcgtcctgggccagcaccatatccgtgccaccactggcgaattcaccttcacttcg
47 aagctggtggacggcaagttcccggactacgagcgtgtactgccgcgcggtggcgacaag
48 ctggtggtcggtgaccgccagcaactgcgcgaagccttcagccgtaccgcgatcctctcc
49 aacgagaagtaccgcggcattcgcctgcagctttccaacggtttgctgaaaatccaggcg
50 aacaacccggagcaggaagaggccgaggaagaagtgcaggtcgagtacaacggcggcaac
51 ctggagataggcttcaacgtcagttacctgctcgacgtgctgggtgtgatcggtaccgag
52 caggtccgcttcatcctttccgattccaacagcagcgccctggtccacgaggccgacaat
53 gacgattctgcctatgtcgtcatgccgatgcgcctctaaacatactgaatgtccctgacc
54 cgcgtttcggtcaccgcggtgcgcaacctgcacccggtgaccctctccccctccccccgc
55 atcaacatcctctacggcgacaacggcagcggcaagaccagcgtgctcgaagccatccac
56 ctgctgggcctggcgcgttcattccgcagtgcgcgcttgcagccggtgatccagtatgag
57 gaagcggcctgcaccgtattcggccaggtgatgttggccaacggcatcgccagcaacctg
58 gggatttcccgtgagcgccagggcgagttcaccatccgcatcgatgggcagaacgcccgg
59 agtgcggctcaattggcggaaactctcccactgcaactgatcaacccggacagctttcgg
60 ttgctcgagggagcgccgaagatccggcgacagttcctcgattggggagtgttccacgtg
61 gaacctcggtttctgcccgtctggcagcgcctgcagaaggcgctgcgccagcggaactcc
62 tggctccggcatggtaaactggaccccgcgtcgcaagcggcctgggaccgggaattgagc
63 ctggccagcgatgagatcgatgcctaccgcagaagctatatccaggcgttgaaaccggta
64 ttcgaggaaacactcgccgaattggtttcactggatgacctgacccttagctactaccga
65 ggctgggacaaggaccgggacctcctggaggttctggcttccagcctgttgcgcgaccag
66 cagatgggccacacccaggcgggaccgcagcgtgcggatcttcgcatacggttggcaggt
67 cataacgccgcggagattctctcgcgcggtcagcagaagctggtggtatgcgccctgcgc
68 atcgcccaaggccatctgatcaatcgcgccaagcgcggacagtgcgtctacctggtggac
69 gacctgccctcggaactggatgagcagcatcgaatggctctttgccgcttgcttgaagat
70 ttgggttgccaggtattcatcacctgcgtggacccgcaactattgaaagacggctggcgc
71 acggatacgccggtatccatgttccacgtggaacatggaaaagtctctcagaccacgacc
72 atcgggagtgaagcatgagcgagaacaacacgtacgactcttccagcatcaaggtgctga
73 aggggctggatgccgtacgcaagcgccccggcatgtacatcggcgacaccgacgatggca
74 ccggtctgcaccacatggtgttcgaggtggtggataactccatcgacgaagcgctggccg
75 gttactgcagcgaaatcagcatcaccatccatacggatgagtcgatcactgtccgcgaca
76 atggacgcggtattccggtggatatccacaaggaagaaggggtttctgcggcggaagtga
77 tcatgaccgtcctccacgccggcggcaagttcgacgacaacacctacaaggtgtccggcg
78 gcttgcacggtgtgggcgtctcggtggtgaacgcgctgtcccatgaactacgcctgacca
79 tccgtcgccacaacaaggtctgggaacaggtctaccaccacggcgttccgcagttcccac
80 tgcgcgaagtgggcgagaccgatggctccggcaccgaagttcacttcaagccgtccccgg
81 agaccttcagcaacatccacttcagttgggacatcctggccaagcgcatccgcgagctgt
82 ccttcctcaactccggcgtcggcatcctgctgcgcgacgagcgtaccggcaaggaggagc
83 tgttcaagtacgaaggcggtctgaaggccttcgtcgagtacctgaacaccaacaagaccg
84 cggtgaacgaggtattccacttcaacgtccagcgtgaagaggacggcgtgggtgtggaag
85 tcgccttgcagtggaacgacagcttcaacgagaacctgctctgcttcaccaacaacatcc
86 cgcagcgtgacggcggcacccacctggccggtttccgttcggcgctgacgcgtaacctga
87 acaactacatcgaggccgaaggcctggcgaagaagttcaagatcgccaccaccggcgacg
88 atgcccgcgaaggcctcaccgcgatcatctcggtgaaggtaccggacccgaagttcagct
89 cgcagaccaaggacaagctggtctcctccgaggtgaagactgcggtggaacaggagatgg
90 gcaagtacttcgccgacttcctgctggagaatcccaacgaagccaaggccgtggtcggca
91 agatgatcgacgccgcccgtgcccgcgaggccgcgcgcaaggcgcgcgagatgacccgcc
92 gcaagggcgcgctggacatcgccggcctgcccggcaaactggccgattgccaggaaaagg
93 acccggcgctctccgaactgtacatcgtggagggtgactccgcgggcggttccgccaagc
94 agggccgcaatcgccggacccaggcgatcctgccgctcaagggcaagatcctcaacgtcg
95 aaaaggcgcgcttcgacaagatgctctcctcccaggaggtcggtacgctgatcaccgccc
96 tgggctgtggcatcggccgcgaggaatacaacatcgacaagctgcgctaccacaacatca
97 tcatcatgaccgatgctgacgtcgacggttcgcacatccgcaccctgctgttgaccttct
98 tcttccgccagatgcccgagctgatcgagcgtggctacatctacatcgcccagcccccgt
99 tgtacaaggtcaagcgcggcaagcaggagcagtacatcaaggacgaccaggccatggaag
100 agtacatgacccagtcggccctggaagacgccagcctgcacgtcaacgagcacgctccgg
101 gcctgtccggggcggcgctggagaaactggtcaacgagtatcgcggggtgatcgccaccc
102 tcaagcgcctgtcgcgcctgtacccccaggagctgaccgagcacttcatctacctgccta
103 ccgtgtcggtggacgacctggctaacgagtcggccatgcagggctggttggagaagttcc
104 aggcgcgcctgaccgccgccgagaagtccggcctgacctacaaggccagcctgcgcgaag
105 accgcgagcgccacctgtggctgcccgaggtggaactggtggcccacggcctgtccagct
106 acgtcaccttcaaccgtgacttcttcgccagcaatgactaccgctcggtgtcgctgctcg
107 gcgaccagctgaacagcctgctggaagacggcgcctacgtgcagaagggtgagcgcaagc
108 gcccgatcagcgccttcaaggacggcctggactggctgatggccgaaggtaccaagcgcc
109 acagcatccagcgatacaaggggctgggcgagatgaaccctgagcagctgtgggaaacca
110 ccatggatccgaacgtccggcgcatgctcaaggtgaccatcgaggatgccatcgccgccg
111 accagatcttcaacaccctgatgggcgatgccgtggagccgcgccgcgacttcatcgaaa
112 gcaacgcgctggcggtgtcgaacctggacgtgtgacaggtcggcagaccgaccctcatgg
113 aaaccccggcctggcgccggggttttctttttgcgccaggtagcctggatacgggcgcca
114 ggggtgccttgccaaggtgtggccgagccccggttactcgccggcattggcaccctggac
115 ccgggcctcctggcggcgtggcaccgcttctgtgggcagcggtcgccggtcggttcggtc
116 gatcgttgccagccggccttgctttgcgcctcgcgtgaaaacaagaagccccgctatggc
117 ggggcttcttttatcgaatcggcgcacagtacgccttgcagggggctttgcggcccttca
118 cgagaccaccgacggctccggatggctgacccgctgctggatggggctgatctcggccat
119 ggtctcgctgacccaggcttcggcgcgctggtttagctcggcgatggcgcgcgggccttc
120 gccttcggcgtgcatggccgggccgatcaccacctggatggtgcccgggtacttggccca
121 gccggccttgggccaatactgcccggcgttgtgggcgatcggcagtaccggtagcccggc
122 gttgaccgccagggcggtgccgccgcgggagaacttgcccatctgccccaccggaatacg
123 cgtgccttccgggaagatcagcacccaggcgcctttcttcaggcactcgtcgccctgctt
124 ggccagttgcttgagggccagcttgggctggctgcggtcgatggcgatgggcttgagcag
125 ggccagggcccagccgaagaacggcacgtagagcagctcgcgcttgagtacctggctgag
126 tggctcgaagaagccggagaggaagaaggtttcccaggtgctctggtgcttggagaggat
127 cacgcagggcttttccgggatgttctccagtccgcgcacctcgtagcggatgccggcgac
128 cacgcgggtcagccagatcgcgaagcggcaccagttctgtaccacgaagcggtagcgggc
129 gcggaacggcaggatcggcgcgatgaagaagctgagggtgccccagacgaacgcgctggc
130 ggacagcagcaggtaaaagaggacggttctgatggcctgcactgtcgacatgtattctga
131 ccttactgaagtaatgcgctggcgactgccgccagatcgtcgaatatcagggtgccctct
132 ggcaagggcttgcccagcgtacgtacaccttttccggtctttaccaataccggctgacaa
133 tcgacggcccgcgccgcctccaggtcaccgatgctgtcgccgacgaaccagatacccgac
134 agatcgaccccgtagtgctcgccgatctgccgcagcatacccggcttcggcttgcggcag
135 tcgcaaccgtcgtccggtccatgcggacaatagacgatgaggccgacctcgccgccctgc
136 tccgcgaccagttcgcgcaagcgcgcatgcatggcctcgagcactgccaggtcgtaatag
137 ccacgggcgatgccggactggttggtagccaccgcgacggtccagccggcctggctcagg
138 cgggcgatggcctcgatcgagctggggatggggatccactcgtcgagggtcttgatgtaa
139 tcgtcggagtcgaggttgatgactccatcgcggtcgagaatcagcagggaacgggacatc
140 gatgcgcagttggccatgaacggaaaggatcgattctacctcagccagccggagcatcgc
141 ggatggatcgacgagccccctacgctggacaatctgtactagattcaataatggcaatgg
142 aatggcaatcccaggccagggagtcatttggcacgcagcagtgggtgtctcggagtacgt
143 gcgaaccccttggcgggtggatcaccggagtaacgcagtaagcgcctatcgcatgccagc
144 acggccgaccggccgtgtttccaccacaggtggagcgggcgtgacgacggggagttccgg
145 ggcgtctgcccgttcccaaggacggtaaccgtgaaacgcctgaaaaagacactgcacctt
146 tcaagcttgtccctcgcttccctggctctttcttccgccgccctggcggccgctccggtc
147 atgctcgaccagggcaaggaatggaccgaaagccaccgccaggacttctacagccgcgac
148 cagggctcgcaggtgatgcccctgccctggctcaaggcgttgcgacagccggatggaacg
149 cctttcctcgccgacagcctggcccgctacggctatttgcccaaccccaaggcgcccgcg
150 gaaggcctgccggtgggcttcaccgtagccggcacgggcgcccggcagatggtcggcatg
151 acctgttcggcctgccatacccggcagatcgaggtgaagggcactgcctatcggatcgac
152 ggcggtccggcgatcgtcgacttccaggcattcctcgccgacctcgatcgggccgtggga
153 ccgctgaccagcgatgacgccgccttcgacgccttcgccaagccgatcctcggggccaat
154 ccgcctcccggtgcgcgcgacgctctgctcgcggcggtgaaggaatggtacgagccctat
155 cacacgctgatcgagcgcgcgctgcccaaggacacctggggaccggcgcggctggacgcg
156 gtatcgatgatcttcaaccgccttaccgggctggatatcggcaccgcgccgccctacctg
157 attcccgacaacatcaaggcggccgatgcgccggtgcgctatccgttcctgtggaacgcg
158 gcgcggcagaacaagacccagtggcccggcttcgccgccaacggcaacgacctgctcggc
159 ctggcgcgcaatgtcggcgaggtctacggggtgttcgccaccttccacccgcagaagagc
160 aagttccacctgctgggcatggactacctgaagatcaactcggccaacttccacgggctg
161 ggcaagctggaagacctgatcaagaagatcggcccgccgaagtggccctgggcggtggac
162 aagcacctggccaggaaaggcgcgctgatcttcgcccgcaagaccgacgaaggtggctgc
163 gtggagtgccacggcatccggatcaaggacctggtgctttgggacactccgctgagggac
164 gtcggcagcgacagccgccagcacgccatcctcgatggccaggtgcagaccggcgtgatg
0 @HS21_09876:1:1105:9650:48712#83
1 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 HHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#83
5 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 HHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
8 @HS21_09876:1:1204:19746:42237#83
9 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
10 +
11 HHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF
12 @HS21_09876:1:2210:2408:11148#83
13 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
14 +
15 HHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF
16 @HS21_09876:1:2210:16541:84795#83
17 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
18 +
19 FDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE
20 @HS21_09876:1:1201:6607:66324#83
21 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
22 +
23 HHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD
24 @HS21_09876:1:2102:12312:75235#83
25 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
26 +
27 HHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE
28 @HS21_09876:1:1106:16061:54950#83
29 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
30 +
31 FHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF
32 @HS21_09876:1:2101:14032:85058#83
33 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
34 +
35 HHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF
36 @HS21_09876:1:2111:11125:6617#83
37 GAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG
38 +
39 HG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF
40 @HS21_09876:1:2202:3163:76297#83
41 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
42 +
43 HHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF
44 @HS21_09876:1:2205:20175:3703#83
45 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
46 +
47 H>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE
48 @HS21_09876:1:2205:6527:34286#83
49 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
50 +
51 HGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF
52 @HS21_09876:1:1201:10071:48582#83
53 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
54 +
55 HHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE
56 @HS21_09876:1:2107:20205:78513#83
57 GCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
58 +
59 HHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD
60 @HS21_09876:1:2207:12005:97464#83
61 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
62 +
63 HGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D
64 @HS21_09876:1:1208:12319:4648#83
65 CAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC
66 +
67 AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E
68 @HS21_09876:1:2209:14024:59451#83
69 CCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA
70 +
71 FHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF
72 @HS21_09876:2:1211:5990:82312#83
73 TTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC
74 +
75 HGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE
76 @HS21_09876:2:2103:19946:55809#83
77 GGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC
78 +
79 HHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE
80 @HS21_09876:2:1104:10740:37072#83
81 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
82 +
83 HHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C
84 @HS21_09876:2:2201:4547:41892#83
85 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
86 +
87 GGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE
88 @HS21_09876:2:2213:12056:100809#83
89 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
90 +
91 BFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF
Binary diff not shown
0 @HS21_09876:1:1105:9650:48712#83
1 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#83
5 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
0 @IL2_4334:7:5:6843:6843
1 CTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 88@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 :@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 BFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:7:82:17494:18362
33 CTGCGTGTTGCCGATATTCTGGAAAGCA
34 +
35 >8=CB@:C:AB=7410=C-46;,75>>F
36 @IL2_4334:7:84:7230:17356
37 CTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 D>8:=>=?@48@87A4@F6>??BF??B@
0 @IL2_4334:7:5:6843:6843
1 CGACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 =8>;A<@>=B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CACCGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <8:=B>=B(B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 88@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 :@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 BFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:7:82:17494:18362
33 CTGCGTGTTGCCGATATTCTGGAAAGCA
34 +
35 >8=CB@:C:AB=7410=C-46;,75>>F
36 @IL2_4334:7:84:7230:17356
37 CTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 D>8:=>=?@48@87A4@F6>??BF??B@
0 @IL2_4334:6:120:19845:10197
1 GTATTACTCTGCATCANTNAANNGAGA
2 +
3 ;1CB7F:BCC==7@5A)=%76%%0B67
4 @IL2_4334:6:120:19846:21043
5 TGTCTAGGGCATCACTNANGGNNGAGG
6 +
7 :A>C?@@??CC@?:6;)5%>9%%;;;<
8 @IL2_4334:6:120:19846:19594
9 ATCCTATGGGGCTGAANTNTNNNGTGA
10 +
11 C<;@=5444@:B;>?*%)%4%%%?161
0 @IL2_4334:7:5:6843:6843
1 CGACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 =8>;A<@>=B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CACCGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <8:=B>=B(B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CAACGTTTTCTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 9AA9:17<988@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <===?;=@<<>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =B?=<>ACB=@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 <7=B8@B=;8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 =B<7<:9B@:@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 ;A:7A;CBFBFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:7:82:17494:18362
33 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
34 +
35 <79:<9;7<>8=CB@:C:AB=7410=C-46;,75>>F
36 @IL2_4334:7:84:7230:17356
37 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 DADFDFFDDD>8:=>=?@48@87A4@F6>??BF??B@
0 @IL2_4334:6:120:19845:10197
1 TNAGAGACAGGTATTACTCTGCATCANTNAANNGAGA
2 +
3 :)::9:9;BA;1CB7F:BCC==7@5A)=%76%%0B67
4 @IL2_4334:6:120:19846:21043
5 TNAGAGACAGTGTCTAGGGCATCACTNANGGNNGAGG
6 +
7 <)72:19:?>:A>C?@@??CC@?:6;)5%>9%%;;;<
8 @IL2_4334:6:120:19846:19594
9 TNAGAGACAGATCCTATGGGGCTGAANTNTNNNGTGA
10 +
11 :)7:782?=AC<;@=5444@:B;>?*%)%4%%%?161
0 test.tagged.fastq
1 test2.tagged.fastq
0 @HS21_09876:1:1105:9650:48712#83
1 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#83
5 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
8 @HS21_09876:1:1204:19746:42237#83
9 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
10 +
11 CCCFFFFFHHHHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF
12 @HS21_09876:1:2210:2408:11148#83
13 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
14 +
15 BBCFFFFFHHHHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF
16 @HS21_09876:1:2210:16541:84795#83
17 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
18 +
19 BCCFFFFFHHFDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE
20 @HS21_09876:1:1201:6607:66324#83
21 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
22 +
23 BCCDFBDEHHHHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD
24 @HS21_09876:1:2102:12312:75235#83
25 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
26 +
27 BCCDFFFFHHHHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE
28 @HS21_09876:1:1106:16061:54950#83
29 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
30 +
31 BBBDFFFFHHFHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF
32 @HS21_09876:1:2101:14032:85058#83
33 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
34 +
35 BCCDFFFFHHHHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF
36 @HS21_09876:1:2111:11125:6617#83
37 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG
38 +
39 BCCDDDDDFHHG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF
40 @HS21_09876:1:2202:3163:76297#83
41 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
42 +
43 BCCDFDDDHHHHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF
44 @HS21_09876:1:2205:20175:3703#83
45 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
46 +
47 BCCDFFFEHHH>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE
48 @HS21_09876:1:2205:6527:34286#83
49 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
50 +
51 BCCDFFFFHHHGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF
52 @HS21_09876:1:1201:10071:48582#83
53 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
54 +
55 CCCDFFFFHHHHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE
56 @HS21_09876:1:2107:20205:78513#83
57 TAAGAGTCAGGCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
58 +
59 BCCFFFFFHHHHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD
60 @HS21_09876:1:2207:12005:97464#83
61 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
62 +
63 BCCDFFFFHHHGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D
64 @HS21_09876:1:1208:12319:4648#83
65 TAAGAGTCAGCAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC
66 +
67 B=BDFFFDH>AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E
68 @HS21_09876:1:2209:14024:59451#83
69 TAAGAGTCAGCCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA
70 +
71 BCCDFFFFHHFHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF
72 @HS21_09876:2:1211:5990:82312#83
73 TAAGAGTCAGTTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC
74 +
75 BCCFFFFFHHHGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE
76 @HS21_09876:2:2103:19946:55809#83
77 TAAGAGTCAGGGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC
78 +
79 BBCFDEFFHHHHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE
80 @HS21_09876:2:1104:10740:37072#83
81 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
82 +
83 BBBDDFFFHHHHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C
84 @HS21_09876:2:2201:4547:41892#83
85 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
86 +
87 BCCDFFFFHHGGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE
88 @HS21_09876:2:2213:12056:100809#83
89 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
90 +
91 BBCDDDDDHDBFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF
0 @HD VN:1.3 SO:unknown
1 @SQ SN:AE004091 LN:9840
2 @PG ID:smalt PN:smalt VN:0.7.4 CL:smalt map -x -r -1 -y 0.96 ref.index /Users/cc21/Development/repos/Bio-Tradis/t/data/RunTradis/notags.fastq
3 HS21_09876:1:1105:9650:48712#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF NM:i:0 AS:i:43
4 HS21_09876:1:1106:8638:38957#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD NM:i:0 AS:i:43
5 HS21_09876:1:1204:19746:42237#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF NM:i:0 AS:i:43
6 HS21_09876:1:2210:2408:11148#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG HHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF NM:i:0 AS:i:43
7 HS21_09876:1:2210:16541:84795#83 0 AE004091 6698 54 1S43M * 0 0 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG FDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE NM:i:0 AS:i:43
8 HS21_09876:1:1201:6607:66324#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD NM:i:0 AS:i:43
9 HS21_09876:1:2102:12312:75235#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE NM:i:0 AS:i:43
10 HS21_09876:1:1106:16061:54950#83 0 AE004091 7059 54 1S43M * 0 0 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC FHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF NM:i:0 AS:i:43
11 HS21_09876:1:2101:14032:85058#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF NM:i:0 AS:i:42
12 HS21_09876:1:2111:11125:6617#83 4 * 0 0 * * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG HG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF NM:i:0 AS:i:0
13 HS21_09876:1:2202:3163:76297#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF NM:i:0 AS:i:42
14 HS21_09876:1:2205:20175:3703#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG H>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE NM:i:0 AS:i:42
15 HS21_09876:1:2205:6527:34286#83 0 AE004091 9250 54 2S42M * 0 0 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG HGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF NM:i:0 AS:i:42
16 HS21_09876:1:1201:10071:48582#83 0 AE004091 9265 54 2S42M * 0 0 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE NM:i:0 AS:i:42
17 HS21_09876:1:2107:20205:78513#83 4 * 0 0 * * 0 0 GCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD NM:i:0 AS:i:0
18 HS21_09876:1:2207:12005:97464#83 0 AE004091 9265 54 2S42M * 0 0 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG HGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D NM:i:0 AS:i:42
19 HS21_09876:1:1208:12319:4648#83 0 AE004091 9274 54 2S42M * 0 0 CAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E NM:i:0 AS:i:42
20 HS21_09876:1:2209:14024:59451#83 0 AE004091 9391 54 1S43M * 0 0 CCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA FHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF NM:i:1 AS:i:40
21 HS21_09876:2:1211:5990:82312#83 0 AE004091 3185 54 1S43M * 0 0 TTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC HGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE NM:i:0 AS:i:43
22 HS21_09876:2:2103:19946:55809#83 0 AE004091 3958 54 1S43M * 0 0 GGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC HHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE NM:i:0 AS:i:43
23 HS21_09876:2:1104:10740:37072#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT HHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C NM:i:0 AS:i:43
24 HS21_09876:2:2201:4547:41892#83 0 AE004091 7026 54 1S43M * 0 0 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT GGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE NM:i:0 AS:i:43
25 HS21_09876:2:2213:12056:100809#83 0 AE004091 7059 54 1S43M * 0 0 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC BFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF NM:i:0 AS:i:43
0 @HS21_09876:1:1105:9650:48712#83
1 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 HHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#83
5 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 HHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
8 @HS21_09876:1:1204:19746:42237#83
9 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
10 +
11 HHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF
12 @HS21_09876:1:2210:2408:11148#83
13 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
14 +
15 HHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF
16 @HS21_09876:1:2210:16541:84795#83
17 GGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
18 +
19 FDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE
20 @HS21_09876:1:1201:6607:66324#83
21 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
22 +
23 HHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD
24 @HS21_09876:1:2102:12312:75235#83
25 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
26 +
27 HHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE
28 @HS21_09876:1:1106:16061:54950#83
29 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
30 +
31 FHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF
32 @HS21_09876:1:2101:14032:85058#83
33 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
34 +
35 HHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF
36 @HS21_09876:1:2111:11125:6617#83
37 GAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG
38 +
39 HG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF
40 @HS21_09876:1:2202:3163:76297#83
41 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
42 +
43 HHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF
44 @HS21_09876:1:2205:20175:3703#83
45 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
46 +
47 H>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE
48 @HS21_09876:1:2205:6527:34286#83
49 GAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
50 +
51 HGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF
52 @HS21_09876:1:1201:10071:48582#83
53 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
54 +
55 HHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE
56 @HS21_09876:1:2107:20205:78513#83
57 GCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
58 +
59 HHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD
60 @HS21_09876:1:2207:12005:97464#83
61 GCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
62 +
63 HGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D
64 @HS21_09876:1:1208:12319:4648#83
65 CAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC
66 +
67 AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E
68 @HS21_09876:1:2209:14024:59451#83
69 CCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA
70 +
71 FHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF
72 @HS21_09876:2:1211:5990:82312#83
73 TTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC
74 +
75 HGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE
76 @HS21_09876:2:2103:19946:55809#83
77 GGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC
78 +
79 HHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE
80 @HS21_09876:2:1104:10740:37072#83
81 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
82 +
83 HHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C
84 @HS21_09876:2:2201:4547:41892#83
85 CCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
86 +
87 GGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE
88 @HS21_09876:2:2213:12056:100809#83
89 GGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
90 +
91 BFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF
0 >AE004091 AE004091.2 Pseudomonas aeruginosa PAO1, complete genome.
1 tttaaagagaccggcgattctagtgaaatcgaacgggcaggtcaatttccaaccagcgat
2 gacgtaatagatagatacaaggaagtcatttttcttttaaaggatagaaacggttaatgc
3 tcttgggacggcgcttttctgtgcataactcgatgaagcccagcaattgcgtgtttctcc
4 ggcaggcaaaaggttgtcgagaaccggtgtcgaggctgtttccttcctgagcgaagcctg
5 gggatgaacgagatggttatccacagcggttttttccacacggctgtgcgcagggatgta
6 cccccttcaaagcaagggttatccacaaagtccaggacgaccgtccgtcggcctgcctgc
7 ttttattaaggtcttgatttgcttggggcctcagcgcatcggcatgtggataagtccggc
8 ccgtccggctacaataggcgcttatttcgttgtgccgcctttccaatctttgggggatat
9 ccgtgtccgtggaactttggcagcagtgcgtggatcttctccgcgatgagctgccgtccc
10 aacaattcaacacctggatccgtcccttgcaggtcgaagccgaaggcgacgaattgcgtg
11 tgtatgcacccaaccgtttcgtcctcgattgggtgaacgagaaatacctcggtcggcttc
12 tggaactgctcggtgaacgcggcgagggtcagttgcccgcgctttccttattaataggca
13 gcaagcgtagccgtacgccgcgcgccgccatcgtcccatcgcagacccacgtggctcccc
14 cgcctccggttgctccgccgccggcgccagtgcagccggtatcggccgcgcccgtggtag
15 tgccacgtgaagagctgccgccagtgacgacggctcccagcgtgtcgagcgatccctacg
16 agccggaagaacccagcatcgatccgctggccgccgccatgccggctggagcagcgcctg
17 cggtgcgcaccgagcgcaacgtccaggtcgaaggtgcgctgaagcacaccagctatctca
18 accgtaccttcaccttcgagaacttcgtcgagggcaagtccaaccagttggcccgcgccg
19 ccgcctggcaggtggcggacaacctcaagcacggctacaacccgctgttcctctacggtg
20 gcgtcggtctgggcaagacccacctgatgcatgcggtgggcaaccacctgctgaagaaga
21 acccgaacgccaaggtggtctacctgcattcggaacgtttcgtcgcggacatggtgaagg
22 ccttgcagctcaacgccatcaacgaattcaagcgcttctaccgctcggtggacgcactgt
23 tgatcgacgacatccagttcttcgcccgtaaggagcgctcccaggaggagttcttccaca
24 ccttcaatgcccttctcgaaggcggccagcaggtgatcctcaccagcgaccgctatccga
25 aggaaatcgaaggcctggaagagcggctgaaatcccgcttcggctggggcctgacggtgg
26 ccgtcgagccgccggaactggaaacccgggtggcgatcctgatgaagaaggccgagcagg
27 cgaagatcgagctgccgcacgatgcggccttcttcatcgcccagcgcatccgttccaacg
28 tgcgtgaactggaaggtgcgctgaagcgggtgatcgcccactcgcacttcatgggccggc
29 cgatcaccatcgagctgattcgcgagtcgctgaaggacctgttggcccttcaggacaagc
30 tggtcagcatcgacaacatccagcgcaccgtcgccgagtactacaagatcaagatatccg
31 atctgttgtccaagcggcgttcgcgctcggtggcgcgcccgcgccaggtggccatggcgc
32 tctccaaggagctgaccaaccacagcctgccggagatcggcgtggccttcggcggtcggg
33 atcacaccacggtgttgcacgcctgtcgtaagatcgctcaacttagggaatccgacgcgg
34 atatccgcgaggactacaagaacctgctgcgtaccctgacaacctgacgcagcccacgag
35 gcaagggactagaccatgcatttcaccattcaacgcgaagccctgttgaaaccgctgcaa
36 ctggtcgccggcgtcgtggaacgccgccagacattgccggttctctccaacgtcctgctg
37 gtggtcgaaggccagcaactgtcgctgaccggcaccgacctcgaagtcgagctggttggt
38 cgcgtggtactggaagatgccgccgaacccggcgagatcaccgtaccggcgcgcaagctg
39 atggacatctgcaagagcctgccgaacgacgtgctgatcgacatccgtgtcgaagagcag
40 aaacttctggtgaaggccgggcgtagccgcttcaccctgtccaccctgccggccaacgat
41 ttccccaccgtagaggaaggtcccggctcgctgaacttcagcattgcccagagcaagctg
42 cgtcgcctgatcgaccgcaccagcttcgccatggcccagcaggacgtgcgttactacctc
43 aacggcatgctgctggaagtgaacggcggcaccctgcgctccgtcgccaccgacggccac
44 cgactggccatgtgctcgctggatgcgcagatcccgtcgcaggaccgccaccaggtgatc
45 gtgccgcgcaaaggcatcctcgaactggctcgtctgctcaccgagcaggacggcgaagtc
46 ggcatcgtcctgggccagcaccatatccgtgccaccactggcgaattcaccttcacttcg
47 aagctggtggacggcaagttcccggactacgagcgtgtactgccgcgcggtggcgacaag
48 ctggtggtcggtgaccgccagcaactgcgcgaagccttcagccgtaccgcgatcctctcc
49 aacgagaagtaccgcggcattcgcctgcagctttccaacggtttgctgaaaatccaggcg
50 aacaacccggagcaggaagaggccgaggaagaagtgcaggtcgagtacaacggcggcaac
51 ctggagataggcttcaacgtcagttacctgctcgacgtgctgggtgtgatcggtaccgag
52 caggtccgcttcatcctttccgattccaacagcagcgccctggtccacgaggccgacaat
53 gacgattctgcctatgtcgtcatgccgatgcgcctctaaacatactgaatgtccctgacc
54 cgcgtttcggtcaccgcggtgcgcaacctgcacccggtgaccctctccccctccccccgc
55 atcaacatcctctacggcgacaacggcagcggcaagaccagcgtgctcgaagccatccac
56 ctgctgggcctggcgcgttcattccgcagtgcgcgcttgcagccggtgatccagtatgag
57 gaagcggcctgcaccgtattcggccaggtgatgttggccaacggcatcgccagcaacctg
58 gggatttcccgtgagcgccagggcgagttcaccatccgcatcgatgggcagaacgcccgg
59 agtgcggctcaattggcggaaactctcccactgcaactgatcaacccggacagctttcgg
60 ttgctcgagggagcgccgaagatccggcgacagttcctcgattggggagtgttccacgtg
61 gaacctcggtttctgcccgtctggcagcgcctgcagaaggcgctgcgccagcggaactcc
62 tggctccggcatggtaaactggaccccgcgtcgcaagcggcctgggaccgggaattgagc
63 ctggccagcgatgagatcgatgcctaccgcagaagctatatccaggcgttgaaaccggta
64 ttcgaggaaacactcgccgaattggtttcactggatgacctgacccttagctactaccga
65 ggctgggacaaggaccgggacctcctggaggttctggcttccagcctgttgcgcgaccag
66 cagatgggccacacccaggcgggaccgcagcgtgcggatcttcgcatacggttggcaggt
67 cataacgccgcggagattctctcgcgcggtcagcagaagctggtggtatgcgccctgcgc
68 atcgcccaaggccatctgatcaatcgcgccaagcgcggacagtgcgtctacctggtggac
69 gacctgccctcggaactggatgagcagcatcgaatggctctttgccgcttgcttgaagat
70 ttgggttgccaggtattcatcacctgcgtggacccgcaactattgaaagacggctggcgc
71 acggatacgccggtatccatgttccacgtggaacatggaaaagtctctcagaccacgacc
72 atcgggagtgaagcatgagcgagaacaacacgtacgactcttccagcatcaaggtgctga
73 aggggctggatgccgtacgcaagcgccccggcatgtacatcggcgacaccgacgatggca
74 ccggtctgcaccacatggtgttcgaggtggtggataactccatcgacgaagcgctggccg
75 gttactgcagcgaaatcagcatcaccatccatacggatgagtcgatcactgtccgcgaca
76 atggacgcggtattccggtggatatccacaaggaagaaggggtttctgcggcggaagtga
77 tcatgaccgtcctccacgccggcggcaagttcgacgacaacacctacaaggtgtccggcg
78 gcttgcacggtgtgggcgtctcggtggtgaacgcgctgtcccatgaactacgcctgacca
79 tccgtcgccacaacaaggtctgggaacaggtctaccaccacggcgttccgcagttcccac
80 tgcgcgaagtgggcgagaccgatggctccggcaccgaagttcacttcaagccgtccccgg
81 agaccttcagcaacatccacttcagttgggacatcctggccaagcgcatccgcgagctgt
82 ccttcctcaactccggcgtcggcatcctgctgcgcgacgagcgtaccggcaaggaggagc
83 tgttcaagtacgaaggcggtctgaaggccttcgtcgagtacctgaacaccaacaagaccg
84 cggtgaacgaggtattccacttcaacgtccagcgtgaagaggacggcgtgggtgtggaag
85 tcgccttgcagtggaacgacagcttcaacgagaacctgctctgcttcaccaacaacatcc
86 cgcagcgtgacggcggcacccacctggccggtttccgttcggcgctgacgcgtaacctga
87 acaactacatcgaggccgaaggcctggcgaagaagttcaagatcgccaccaccggcgacg
88 atgcccgcgaaggcctcaccgcgatcatctcggtgaaggtaccggacccgaagttcagct
89 cgcagaccaaggacaagctggtctcctccgaggtgaagactgcggtggaacaggagatgg
90 gcaagtacttcgccgacttcctgctggagaatcccaacgaagccaaggccgtggtcggca
91 agatgatcgacgccgcccgtgcccgcgaggccgcgcgcaaggcgcgcgagatgacccgcc
92 gcaagggcgcgctggacatcgccggcctgcccggcaaactggccgattgccaggaaaagg
93 acccggcgctctccgaactgtacatcgtggagggtgactccgcgggcggttccgccaagc
94 agggccgcaatcgccggacccaggcgatcctgccgctcaagggcaagatcctcaacgtcg
95 aaaaggcgcgcttcgacaagatgctctcctcccaggaggtcggtacgctgatcaccgccc
96 tgggctgtggcatcggccgcgaggaatacaacatcgacaagctgcgctaccacaacatca
97 tcatcatgaccgatgctgacgtcgacggttcgcacatccgcaccctgctgttgaccttct
98 tcttccgccagatgcccgagctgatcgagcgtggctacatctacatcgcccagcccccgt
99 tgtacaaggtcaagcgcggcaagcaggagcagtacatcaaggacgaccaggccatggaag
100 agtacatgacccagtcggccctggaagacgccagcctgcacgtcaacgagcacgctccgg
101 gcctgtccggggcggcgctggagaaactggtcaacgagtatcgcggggtgatcgccaccc
102 tcaagcgcctgtcgcgcctgtacccccaggagctgaccgagcacttcatctacctgccta
103 ccgtgtcggtggacgacctggctaacgagtcggccatgcagggctggttggagaagttcc
104 aggcgcgcctgaccgccgccgagaagtccggcctgacctacaaggccagcctgcgcgaag
105 accgcgagcgccacctgtggctgcccgaggtggaactggtggcccacggcctgtccagct
106 acgtcaccttcaaccgtgacttcttcgccagcaatgactaccgctcggtgtcgctgctcg
107 gcgaccagctgaacagcctgctggaagacggcgcctacgtgcagaagggtgagcgcaagc
108 gcccgatcagcgccttcaaggacggcctggactggctgatggccgaaggtaccaagcgcc
109 acagcatccagcgatacaaggggctgggcgagatgaaccctgagcagctgtgggaaacca
110 ccatggatccgaacgtccggcgcatgctcaaggtgaccatcgaggatgccatcgccgccg
111 accagatcttcaacaccctgatgggcgatgccgtggagccgcgccgcgacttcatcgaaa
112 gcaacgcgctggcggtgtcgaacctggacgtgtgacaggtcggcagaccgaccctcatgg
113 aaaccccggcctggcgccggggttttctttttgcgccaggtagcctggatacgggcgcca
114 ggggtgccttgccaaggtgtggccgagccccggttactcgccggcattggcaccctggac
115 ccgggcctcctggcggcgtggcaccgcttctgtgggcagcggtcgccggtcggttcggtc
116 gatcgttgccagccggccttgctttgcgcctcgcgtgaaaacaagaagccccgctatggc
117 ggggcttcttttatcgaatcggcgcacagtacgccttgcagggggctttgcggcccttca
118 cgagaccaccgacggctccggatggctgacccgctgctggatggggctgatctcggccat
119 ggtctcgctgacccaggcttcggcgcgctggtttagctcggcgatggcgcgcgggccttc
120 gccttcggcgtgcatggccgggccgatcaccacctggatggtgcccgggtacttggccca
121 gccggccttgggccaatactgcccggcgttgtgggcgatcggcagtaccggtagcccggc
122 gttgaccgccagggcggtgccgccgcgggagaacttgcccatctgccccaccggaatacg
123 cgtgccttccgggaagatcagcacccaggcgcctttcttcaggcactcgtcgccctgctt
124 ggccagttgcttgagggccagcttgggctggctgcggtcgatggcgatgggcttgagcag
125 ggccagggcccagccgaagaacggcacgtagagcagctcgcgcttgagtacctggctgag
126 tggctcgaagaagccggagaggaagaaggtttcccaggtgctctggtgcttggagaggat
127 cacgcagggcttttccgggatgttctccagtccgcgcacctcgtagcggatgccggcgac
128 cacgcgggtcagccagatcgcgaagcggcaccagttctgtaccacgaagcggtagcgggc
129 gcggaacggcaggatcggcgcgatgaagaagctgagggtgccccagacgaacgcgctggc
130 ggacagcagcaggtaaaagaggacggttctgatggcctgcactgtcgacatgtattctga
131 ccttactgaagtaatgcgctggcgactgccgccagatcgtcgaatatcagggtgccctct
132 ggcaagggcttgcccagcgtacgtacaccttttccggtctttaccaataccggctgacaa
133 tcgacggcccgcgccgcctccaggtcaccgatgctgtcgccgacgaaccagatacccgac
134 agatcgaccccgtagtgctcgccgatctgccgcagcatacccggcttcggcttgcggcag
135 tcgcaaccgtcgtccggtccatgcggacaatagacgatgaggccgacctcgccgccctgc
136 tccgcgaccagttcgcgcaagcgcgcatgcatggcctcgagcactgccaggtcgtaatag
137 ccacgggcgatgccggactggttggtagccaccgcgacggtccagccggcctggctcagg
138 cgggcgatggcctcgatcgagctggggatggggatccactcgtcgagggtcttgatgtaa
139 tcgtcggagtcgaggttgatgactccatcgcggtcgagaatcagcagggaacgggacatc
140 gatgcgcagttggccatgaacggaaaggatcgattctacctcagccagccggagcatcgc
141 ggatggatcgacgagccccctacgctggacaatctgtactagattcaataatggcaatgg
142 aatggcaatcccaggccagggagtcatttggcacgcagcagtgggtgtctcggagtacgt
143 gcgaaccccttggcgggtggatcaccggagtaacgcagtaagcgcctatcgcatgccagc
144 acggccgaccggccgtgtttccaccacaggtggagcgggcgtgacgacggggagttccgg
145 ggcgtctgcccgttcccaaggacggtaaccgtgaaacgcctgaaaaagacactgcacctt
146 tcaagcttgtccctcgcttccctggctctttcttccgccgccctggcggccgctccggtc
147 atgctcgaccagggcaaggaatggaccgaaagccaccgccaggacttctacagccgcgac
148 cagggctcgcaggtgatgcccctgccctggctcaaggcgttgcgacagccggatggaacg
149 cctttcctcgccgacagcctggcccgctacggctatttgcccaaccccaaggcgcccgcg
150 gaaggcctgccggtgggcttcaccgtagccggcacgggcgcccggcagatggtcggcatg
151 acctgttcggcctgccatacccggcagatcgaggtgaagggcactgcctatcggatcgac
152 ggcggtccggcgatcgtcgacttccaggcattcctcgccgacctcgatcgggccgtggga
153 ccgctgaccagcgatgacgccgccttcgacgccttcgccaagccgatcctcggggccaat
154 ccgcctcccggtgcgcgcgacgctctgctcgcggcggtgaaggaatggtacgagccctat
155 cacacgctgatcgagcgcgcgctgcccaaggacacctggggaccggcgcggctggacgcg
156 gtatcgatgatcttcaaccgccttaccgggctggatatcggcaccgcgccgccctacctg
157 attcccgacaacatcaaggcggccgatgcgccggtgcgctatccgttcctgtggaacgcg
158 gcgcggcagaacaagacccagtggcccggcttcgccgccaacggcaacgacctgctcggc
159 ctggcgcgcaatgtcggcgaggtctacggggtgttcgccaccttccacccgcagaagagc
160 aagttccacctgctgggcatggactacctgaagatcaactcggccaacttccacgggctg
161 ggcaagctggaagacctgatcaagaagatcggcccgccgaagtggccctgggcggtggac
162 aagcacctggccaggaaaggcgcgctgatcttcgcccgcaagaccgacgaaggtggctgc
163 gtggagtgccacggcatccggatcaaggacctggtgctttgggacactccgctgagggac
164 gtcggcagcgacagccgccagcacgccatcctcgatggccaggtgcagaccggcgtgatg
0 @HS21_09876:1:1105:9650:48712#84
1 TAAGATTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
2 +
3 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
4 @HS21_09876:1:1106:8638:38957#84
5 TGAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
6 +
7 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
8 @HS21_09876:1:1105:9650:48712#83
9 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
10 +
11 CCCFFFFFHHHHCEE8EEFGFFGFIFGGFGEEHFFFGGGFGFGEGEEEFGFGFF
12 @HS21_09876:1:1106:8638:38957#83
13 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
14 +
15 B@CFFFFFHHHHCEF7FHFFFFGFEGEFFEHEGEGFGGGEGFGFGGFEHGFEFD
16 @HS21_09876:1:1204:19746:42237#83
17 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
18 +
19 CCCFFFFFHHHHCBF2GGFFEFGEEFFFEEHEEHFFFFGFGFFFGGGGHGFEFF
20 @HS21_09876:1:2210:2408:11148#83
21 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
22 +
23 BBCFFFFFHHHHCBF,GGFF<FEHFFEGFGFEEEGFGGGFGFFFGGGFHGFEFF
24 @HS21_09876:1:2210:16541:84795#83
25 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
26 +
27 BCCFFFFFHHFDB@F%GEFDCFGHE<FD>GEEEGFFGGFFGFFBG8FGFGFEEE
28 @HS21_09876:1:1201:6607:66324#83
29 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
30 +
31 BCCDFBDEHHHHCDF8EHFEGFAGIFEDEGFEFFGFEGFEGFGFGEGGHGFEFD
32 @HS21_09876:1:2102:12312:75235#83
33 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
34 +
35 BCCDFFFFHHHHCDH8EHFFGFAGDFIEEEGEFFGFFGFFGFFEGEFFFGFEFE
36 @HS21_09876:1:1106:16061:54950#83
37 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
38 +
39 BBBDFFFFHHFHCBD4GHFFGFEEC<FCGEFEGHGFFEGFGFFFGDFGDGFDFF
40 @HS21_09876:1:2101:14032:85058#83
41 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
42 +
43 BCCDFFFFHHHHCEH5GHFFFFGEDC;GHFFEHGGFFGFEGFFJGDGFHGFGFF
44 @HS21_09876:1:2111:11125:6617#83
45 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCCGGGGACCGGCGCGG
46 +
47 BCCDDDDDFHHG2BH8HEFGFFGH;EFGHFGEGGGFEGGFGFFGGDGEHGFEFF
48 @HS21_09876:1:2202:3163:76297#83
49 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
50 +
51 BCCDFDDDHHHHCEH8EGFEGFGEIFDGHFGEHECFFGGFGFFDGEGGHGFEFF
52 @HS21_09876:1:2205:20175:3703#83
53 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
54 +
55 BCCDFFFEHHH>8BI2A<FEFFGCE<EDFDDEHH?F=GFFGF3FGEGGHGDDFE
56 @HS21_09876:1:2205:6527:34286#83
57 TAAGAGTCAGGAATCGAGCGCGCGCTGCCCAAGGACACCTGGGGACCGGCGCGG
58 +
59 BCCDFFFFHHHGBDH4HHFGFFGFDFDGHEGEHGGFEGFJGFGGGEGFHGFFFF
60 @HS21_09876:1:1201:10071:48582#83
61 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
62 +
63 CCCDFFFFHHHHCDI8EHFGFFGEFFFGGFGEFGGFFGGFGFG8G8ECFGFFAE
64 @HS21_09876:1:2107:20205:78513#83
65 TAAGAGTCAGGCCCCGAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
66 +
67 BCCFFFFFHHHHCEI%EGFFEFEGIFGDGFE>GDGFFGFEBFGDGEGEH;EFDD
68 @HS21_09876:1:2207:12005:97464#83
69 TAAGAGTCAGGCCCCAAGGACACCTGGGGACCGGCGCGGCTGGACGCGGTATCG
70 +
71 BCCDFFFFHHHGBBH0EG?<FFEHCBGEE>DEDF?FFGFE1FE89EEGD;;@?D
72 @HS21_09876:1:1208:12319:4648#83
73 TAAGAGTCAGCAACCTGGGGACCGGCGCGGCTGGACGCGGTATCGATGATCTTC
74 +
75 B=BDFFFDH>AA>EF8EIFFGFGEC<F;FEEEG3?FFG/E=F?DG89C=GAD?E
76 @HS21_09876:1:2209:14024:59451#83
77 TAAGAGTCAGCCCGGTGCGCTACCCGTTCCTGTGGAACGCGGCGCGGCAGAACA
78 +
79 BCCDFFFFHHFHCBF.E<FEFFGHHGE;H>GEFHFFFGFFGFFFGEFGFGFGFF
80 @HS21_09876:2:1211:5990:82312#83
81 TAAGAGTCAGTTTTCGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTC
82 +
83 BCCFFFFFHHHGFEH0FFDDDGCF7GFD1GCFGFGGFGFFGHEFF?FFFEEDEE
84 @HS21_09876:2:2103:19946:55809#83
85 TAAGAGTCAGGGGTCATAACGCCGCGGAGATTCTCTCGCGCGGTCAGCAGAAGC
86 +
87 BBCFDEFFHHHHEAE'EFFEGGGFHEFAHGFHG@GEFHFEGFGFFF<FGEEDCE
88 @HS21_09876:2:1104:10740:37072#83
89 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
90 +
91 BBBDDFFFHHHHFAE,FIGDEG;FHFFHH>FAGGFFF;><GHA9<F<FGE=F@C
92 @HS21_09876:2:2201:4547:41892#83
93 TAAGAGTCAGCCCACCGACGGCTCCGGATGGCTGACCCGCTGCTGGATGGGGCT
94 +
95 BCCDFFFFHHGGEEE7EFGEDGEDHGGAHFGHGFDGFCFEGFAFFFDFBEEEDE
96 @HS21_09876:2:2213:12056:100809#83
97 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
98 +
99 BBCDDDDDHDBFEE?,B>DFG=EDF:GHHEG6GGDGFFFFGGF6FFEFGC1BFF
100 @HS21_09876:1:1115:10349:43433#83
101 TTTTCGACAACCTTTTGCCTGCCGGAGAAACACGCAGTTGCTACCNNACNCTNN
102 +
103 8,(,*A<A2;DGE4B>HGFEDDCFG8CE=FF8BB7ED?FEEE522!!<2!:0!!
104 @HS21_09876:1:1211:4356:84410#83
105 TTCTCGACAACCTTTTGCCTGCCGGAGAAACACGCAGTTGCTACCTGACTCTTA
106 +
107 >E52EHFGFFGGFFFGHGHEEEGFGEGFGFGFGCGGFGFGFDHHHHFFFFFCCC
108 @HS21_09876:1:1101:19209:27276#83
109 CGCACAGCCGTGTGGAAAAAACCGCTGTGGATAACCATCTCGGCCTGACTCTTA
110 +
111 CEF4GHFDFFEEIFECHFGEFFGFEFGFGFFFGDHGHGFEFFHHHHFFFFFCCC
0 @HS21_09876:1:1207:4978:63940#75
1 TAAGAGTCAGGGGATAGAAACGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGC
2 +
3 CCCFFFFFHHGHC7E4EEFGFFGGFFFCEG@EHGFFEGFEGFFEGEHFFGFGFE
4 @HS21_09876:1:1203:13201:16985#75
5 TAAGAGTCAGCGGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGCATAACTCGA
6 +
7 BCCFFFFFGHHHCED9GEFDEFGFIFEGCEFEHGGFGGFFGFFGGEFGHGEGFF
8 @HS21_09876:1:1105:14817:70208#75
9 TAAGAGTCAGGCCTCTTGGGACGGCGCTTTTCTGTGCATAACTCGACGAAGCCC
10 +
11 CCCFFFFFHHHHCEF8HHFGCFGGEFEFEGGEFFGFFGFFGFGFGEGGHGFEFE
12 @HS21_09876:1:1101:1155:30938#75
13 TAAGAGTCAGGTTGCATAACTCGACGAAGCCCAGCAACTGCGTGTTTCTCCGGC
14 +
15 B=?DDDEFHCFHBDD,AEFEGDGGCFFGE>DEAHEFFFCFGFFFDEGEFGFFFE
16 @HS21_09876:1:2204:6930:62477#75
17 TAAGAGTCAGGGGCAAAAGGTTGTCGAGAACCGGTGTCGAGGCTGTTTCCTTCC
18 +
19 BBCFFFFFHHHHCEF5GHFFCFDGEFBCHFFEFFGFFGFFGFFDGEEGFGFGFE
20 @HS21_09876:1:2211:14592:36752#75
21 TAAGAGTCAGGGGTCACCGCGGTGCGCAACCTGCACCCGGTGACCCTCTCCCCC
22 +
23 CCCFFFFFHFHH9BF%GGFFEFDGFFF;EFFEHGGFEGFFGFFEGDEFHGFGFE
24 @HS21_09876:1:1101:1117:56616#75
25 TAAGAGTCAGGGGCCTGCACCGTATTCGGCCAGGTGATGTTGGCCAACGGCATC
26 +
27 =:=DADDDFFHHCDF8EEFGGFGEEFDGHEEEGGCFFFFFGFGFGCGGFGE@ED
28 @HS21_09876:1:1106:9993:12675#75
29 TAAGAGTCAGGGGCCTGCACCGTATTCGGCCAGGTGATGTTGGCCAACGGCATC
30 +
31 BBBFFFFFHHFHCBI2DEFGGFGEFFFGHGIEHHGFFGFFGFFJGEHFFGFDFE
32 @HS21_09876:1:2205:12308:83747#75
33 TAAGAGTCAGGGGCCTGCACCGTATTCGGCCAGGTGATGTTGGCCAACGGCATC
34 +
35 BCCFFFFFHHHHC@F7EEFGFFGFEFGGGFHEGEFFFGFFGFFECDEGHGFFFF
36 @HS21_09876:1:2211:5325:48675#75
37 TAAGAGTCAGGGGCCTGCACCGTATTCGGCCAGGTGATGTTGGCCAACGGCATC
38 +
39 1:B4A2AD2ACF57<'GE4EEFG9@FDDGGIEE?F:=8FEGFGDGACGFGEDA:
40 @HS21_09876:1:1202:13852:46659#75
41 TAAGAGTCAGGGGCCAACGGCATCGCCAGCAACCTGGGGATTTCCCGTGAGCGC
42 +
43 CCCFFFFFHHHHCEH8EEFGFFDG7FG;EFFEAHEFGGFFBFGEGEGGFGEGFF
44 @HS21_09876:1:1110:4160:49896#75
45 TAAGAGTCAGAAACTCTCCCACTGCAACTGATCAACCCGGACAGCTTTCGGTTG
46 +
47 BCBFFFFDHHHHCDF8AEFGCFGHDFGCHGDEFFGFFGGFGFGFG8GGHGFFFE
48 @HS21_09876:1:2205:9754:20814#75
49 TAAGAGTCAGAAACTCTCCCACTGCAACTGATCAACCCGGACAGCTTTCGGTTG
50 +
51 BBCFDEFEHHHHCEE4EIFGGFAFEFGGHFFEGEFFGGFEGFFFGEFEHGFEFF
52 @HS21_09876:1:1104:13063:60859#75
53 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
54 +
55 CCCFFFFFHHH>0@F,GEFE3CHEEFDC2FEEAG?FCEFED=F8CEEEH;;EDE
56 @HS21_09876:1:1107:8692:25384#75
57 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
58 +
59 @@CFFFFFHHHHA@E7EIFEEFGE-<FF>F@EHDCFF8G>GFFBGCCCHGF:AD
60 @HS21_09876:1:1109:11137:7630#75
61 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
62 +
63 BCCFFFFFHHGHCBF8EEFDEFGEEFGG>GFEGGCFFGGFGFFEGGFFHGFEFF
64 @HS21_09876:1:1110:7663:40978#75
65 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
66 +
67 BB@=DADDHDFH?7D9EGFFEFGFEFF;>FDED?FFEGGEGFGFACFFFGFFFE
68 @HS21_09876:1:1201:5332:2719#75
69 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
70 +
71 BCCFFFFFHHHHADF4EHFEEFGFEFEGCG@EEFCFFGFFGFGFGEEGHGFFFD
72 @HS21_09876:1:1204:12364:36595#75
73 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
74 +
75 CCCFFFFFHHHHCBD2EGFF<FGEIFFD>FFEDFEFFGFFGFGEGEGEHGFGFF
76 @HS21_09876:1:2102:4320:20528#75
77 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
78 +
79 BBBFFFDDFFHHCEF2EEFGCFGEEGED>G@EEGEFGGGEGFGEBCEGHGFEED
80 @HS21_09876:1:2102:17907:93005#75
81 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
82 +
83 CCCFFFFFHHHHCEE5EEFFEFGEEFEGFEEEDFCFGGFFGFFGGGFGHGFEFF
84 @HS21_09876:1:2104:19430:56353#75
85 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
86 +
87 BBCDFFFEHHHHCBH5FGFEEFGEDEFG>EHEEEEFFGGEGFFEGDGGFGFGFE
88 @HS21_09876:1:2106:8768:77924#75
89 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
90 +
91 BBCFFFFFHHHHCBE7EGFFEFG87CEDFEFEFHCFFGFFGFFEGEGEHGFEDF
92 @HS21_09876:1:2109:3560:75405#75
93 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
94 +
95 B@@DFDDFHHHHCBD,FGFE<FGEIEEG>FIEGGFFGGGFGFFEGEFGFGFEFD
96 @HS21_09876:1:2201:7109:15683#75
97 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
98 +
99 BBCFFFFFHHHHCBF5GHFECFGEFFEGEGEEEFFFEGFFGFFGGGEFHGFEFF
100 @HS21_09876:1:2204:5779:59154#75
101 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
102 +
103 CCCFFFFEHHHHCEF7EEFF<DGHIEFD>E@EHGFFFGGEGFFDCEEGHGEFFE
104 @HS21_09876:1:2210:14908:13619#75
105 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
106 +
107 BBCFFFFFHFHHC7H,EEFG<FGC7CDD>DEEAFGF=GA>GFG8GCGGHGFDFD
108 @HS21_09876:1:2210:1263:58662#75
109 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
110 +
111 BBBFFFFFHHHGBBH4HE?FE@GC7GFDFEDEAHCFFG;>GFGFG8EEHGF@DD
112 @HS21_09876:1:2211:14421:77160#75
113 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
114 +
115 CCCFFFFFHFFF;EE-HEFFCFGCDFGDFFHEDFFFGGFEGFGEGEGGHGFGEF
116 @HS21_09876:1:1107:18833:61679#75
117 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
118 +
119 CCCFFFFFHHHH87E,G24E<9<F@<F;2>IE-FGFFG/1GFFFGEGE=;FGFC
120 @HS21_09876:1:1201:13166:59616#75
121 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
122 +
123 BCCFFFFFHHHHCDF5GEFFEFEFEFFDEGGEHGEFEEFFGFGFGDEGHGFGFD
124 @HS21_09876:1:1205:1312:68078#75
125 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
126 +
127 B@@FFFFFHHHHCDE,GEFCEFEFEFDGCGFEGGGFFEFEGFFEGECEHGFFFE
128 @HS21_09876:1:2101:9743:73722#75
129 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
130 +
131 BCCFFFFFHHHHCDF7EEFFEFGFEFBDFEHEEFGFFFFFGFGFGEEEFGFEFE
132 @HS21_09876:1:2112:4406:21609#75
133 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
134 +
135 BBCDFFFFHHHD-<<+8=F<EADG7FFBEGFEEFG9F4FEGF?FGGEEHGFEEE
136 @HS21_09876:1:2207:15792:48961#75
137 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
138 +
139 BCCFFFFFHHHGCEF,AGFCCFDEEFD;CGIEAECFF8GFGFF8GEGGFGFEFE
140 @HS21_09876:1:1102:3356:32350#75
141 TAAGAGTCAGGGGACATCGATGCGCAGTTGGCCATGAACGGAAAGGATCGATTC
142 +
143 CCCFFFFFHHHHC@F8EHFEEFGEIFDDEGGEGGFFFGFFGFFEGEFGHGFEFE
144 @HS21_09876:1:1108:19283:13217#75
145 TAAGAGTCAGGGGACATCGATGCGCAGTTGGCCATGAACGGAAAGGATCGATTC
146 +
147 B@CBDDBDHHHH8BF2EHFF<FGHFFDCGFFEGEGFEGFFGFFDGDGFHGFDFD
148 @HS21_09876:1:1201:19929:5101#75
149 TAAGAGTCAGCCCCCTACGCTGGACAATCTGTACTAGATTCAATAATGGCAATG
150 +
151 BCCDFFFFHHHHCEH7GHFFFFGGEFGFFFFEDHGFGGFEGFFGGEGFHGFDFF
152 @HS21_09876:1:2105:4638:75190#75
153 TAAGAGTCAGCCCCCTACGCTGGACAATCTGTACTAGATTCAATAATGGCAATG
154 +
155 BBCDFFFFHCFHCEH7GEFGFFGEEFDEFFFEGHGFGGFFGFGDGEGFHGFEFE
156 @HS21_09876:1:2207:17913:29384#75
157 TAAGAGTCAGCCCCCTACGCTGGACAATCTGTACTAGATTCAATAATGGCAATG
158 +
159 BCCDFFFFHHHHCDH9EHFGGFGHDFGDHGEEHGGFGGGFGFFEGEGFHGDEFF
160 @HS21_09876:1:2112:7251:38022#75
161 TAAGAGTCAGTTTCCCAAGGACGGTAACCGTGAAACGCCTGAAAAAGACACTGC
162 +
163 BBCFFFFDFFHF-7())EF=F8GE+EE2FF5+EEF7=/AF=F/FGDCE=G;@AD
164 @HS21_09876:1:1104:16812:95781#75
165 TAAGAGTCAGGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGC
166 +
167 BCBFFFFFHHHHCDH%GEFGGCGEEFFGHGGEDFGFFGFFGFGFGCFGFGFGFD
168 @HS21_09876:1:2107:10172:88839#75
169 TAAGAGTCAGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGCC
170 +
171 CCCFFFFFHHHHCBE-GIFEE@GECFFDHEIEFHGFFGGFAFGEGDFFHGFDFF
172 @HS21_09876:1:2101:13178:6874#75
173 TAAGAGTCAGGGGTGATGCCCCTGCCCTGGCTCAAGGCGTTGCGACAGCCGGAT
174 +
175 BCCDFFFFHA?FC7<7E2FDFF<EDFFEEEF>HEGFGGFEGFE?GDGG=GDFBE
176 @HS21_09876:1:2207:5093:25809#75
177 TAAGAGTCAGCCCCCTGCCCTGGCTCAAGGCGTTGCGACAGCCGGATGGAACGC
178 +
179 BBCDDEFDHHFFCBF,FEFECFGFFFF;HGGEFFEFEGFFGFGDGEGGHGFFBE
180 @HS21_09876:1:1105:3593:46102#75
181 TAAGAGTCAGGGGCTCAAGGCGTTGCGACAGCCGGATGGAACGCCTTTCCTCGC
182 +
183 CCCFFFFFHHHHCDE4EGFGECGFEFFEGFEEGFEFEGGEGFFJGFFGHGFGFF
184 @HS21_09876:1:1214:11162:39342#75
185 TAAGAGTCAGGGGCTCAAGGCGTTGCGACAGCCGGATGGAACGCCTTTCCTCGC
186 +
187 BCCDDFFFHHHHCB<&3GFEFFGGEFFDFGDEHGECGGGFGFFFGEEGFDFEFD
188 @HS21_09876:1:2103:18144:97839#75
189 TAAGAGTCAGGGGCTCAAGGCGTTGCGACAGCCGGATGGAACGCCTTTCCTCGC
190 +
191 CCCFFFFFHHGFCEE'EIFFGFDFDFECGGHEFGGFFCGFGFGDGEGEHGFEFD
192 @HS21_09876:1:1109:10864:56828#75
193 TAAGAGTCAGCCCGCTGACCAGCGATGACGCCGCCTTCGACGCCTTCGCCAAGC
194 +
195 BCCDFFFFHHHFABE2EHFGCFEEE<FCHGFEHEGFEGFE=FGFGEECHGFFFE
196 @HS21_09876:1:2102:16237:67170#75
197 TAAGAGTCAGGGGACAAGCACCTGGCCAGGAAAGGCGCGCTGATCTTCGCCCGC
198 +
199 B@CFFFFFHHHHCBF8GEFEGFGECFFEFEIEFEGFGGGFGFFGGEGEHGFGFD
200 @HS21_09876:1:1107:14911:52768#75
201 TAAGAGTCAGGGGGACACTCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCA
202 +
203 CCCFFFFFHHA?8B<48<?<E9EEI<B;>DFEAF?FEGAD==GE98EG=G@@ED
204 @HS21_09876:1:2108:6881:4925#75
205 TAAGAGTCAGGGGGACACTCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCA
206 +
207 CCCFFFEEHHHHCEE0EEFGFFGGEFDGHEFEEFGFGFGFGFGDGDEEHGDEFE
208 @HS21_09876:1:1111:18499:9859#75
209 TAAGAGTCAGCCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCACGCCATCC
210 +
211 BBCFFFFFHHHHCEF0GEFDEFEFIFFGGGFEHDGFFGGFGFFEGEGFHGFGFF
212 @HS21_09876:1:1210:19511:97335#75
213 TAAGAGTCAGCCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCACGCCATCC
214 +
215 CCCFFFFDHFFHCDH7HGFGGFGEIFFGHGHEFFGFFGFEGFFGGGGEHGFEFD
216 @HS21_09876:1:1103:13218:78186#75
217 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
218 +
219 CCCFFFFFHHHHCDF7EEFDC9GEFFECEEFEHGGFGGFFGFFFGGFGFGFFFC
220 @HS21_09876:1:2107:11891:7630#75
221 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
222 +
223 @CCFFDDDHFFHCED0GIFDEFGEEFFDEFIEEFEFFEFEGFFBGEFGFGFEFD
224 @HS21_09876:1:2201:9833:67072#75
225 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
226 +
227 CCCFFFFFHHHHCEE5GHFDEFGHDFEDFEGEEHGFGGFFGFGFGDGGFGFEFC
228 @HS21_09876:2:2101:20921:89053#75
229 TAAGAGTCAGGGGATAGAAACGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGC
230 +
231 CCCFFFFFHHHHD9E0FEFEGGGFHFFHHGGFGCFGFHFFGGGFFFFFGFEEEF
232 @HS21_09876:2:2205:9713:92092#75
233 TAAGAGTCAGGGGATAGAAACGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGC
234 +
235 CCCFFFFFHHHGED<6?EFEDG;:EEC;=GEAG@GFF;FGGCA9F>DFDFCE@E
236 @HS21_09876:2:2208:11577:65116#75
237 TAAGAGTCAGGGGATAGAAACGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGC
238 +
239 BBCFFDFFDFFA@AE3F3@D:GGFD:FHD>=FGFGD<A>1GDAGF?<FG?EBFC
240 @HS21_09876:2:2210:17556:49545#75
241 TAAGAGTCAGGGGATAGAAACGGTTAATGCTCTTGGGACGGCGCTTTTCTGTGC
242 +
243 B@BFFFFFHHHHF9E1FDGEE=GDDEFAH>FEGGDEFGFFGDG9FF<FEFH:FB
244 @HS21_09876:2:1203:11706:53883#75
245 TAAGAGTCAGGGGCAAAAGGTTGTCGAGAACCGGTGTCGAGGCTGTTTCCTTCC
246 +
247 B@CFFFFFHHHHEDE,FFFEGG;:HEFDHGG6GC=>FFFCG;AFFFFFGFEF9E
248 @HS21_09876:2:2103:7357:48165#75
249 TAAGAGTCAGCCCATCCACCTGCTGGGCCTGGCGCGTTCATTCCGCAGTGCGCG
250 +
251 CCCFFFFFHHHHDEE3GEDFGGGFEGGFHGFFGGGEFHFFGGGFFFFFDFHFEF
252 @HS21_09876:2:1102:4592:99056#75
253 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
254 +
255 BBCFFFFFHHHHDDE,FFGFFGGF-GIFCFGFGHDDFGFFGGEFFFFFEFFFED
256 @HS21_09876:2:1105:18701:63246#75
257 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
258 +
259 BBCFFFFFHHHHFDE3FFFEFGGDDFFFDEHEGHGFFFFF>GFFFFFFGFEFED
260 @HS21_09876:2:1107:9181:47786#75
261 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
262 +
263 CCCFFFFFHFHHEDE1FFF4GGGEEFGFFGFHGHGFFHFFGEGFFFEFEFEFCE
264 @HS21_09876:2:2101:7072:68459#75
265 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
266 +
267 CCCFFFFFHHHHDEE3FFFFDGGF7EFHAFFGGFGEFHFFGGGFFFFFGFHFFD
268 @HS21_09876:2:2104:11024:92879#75
269 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
270 +
271 CCCFFFFFHHHHDDE7FFDG:GGDEEFF=GGFAHFFFFFGGEEFFFFFGFEFEF
272 @HS21_09876:2:2106:9334:51625#75
273 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
274 +
275 BB@FBDADFHHFEA<1FFG::=GFH0=;1>=FA@D>FAF<>;A9FFFFG?=B9E
276 @HS21_09876:2:2107:14640:85151#75
277 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
278 +
279 BB@BDDFFHHFHFEE,FIDFDGGDFFGF=GHGGHFFFHFHGEGFFF@FGEEEDD
280 @HS21_09876:2:2201:18727:56295#75
281 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
282 +
283 B=BDFFFFHHD>EAE3GDFCD=GEEDGH1>C6GGD>FG3FGHEFFF0F7EEDDC
284 @HS21_09876:2:2203:20492:60041#75
285 TAAGAGTCAGGGGTCGGCAGACCGACCCTCATGGAAACCCCGGCCTGGCGCCGG
286 +
287 CCCFFFFEHFFFCEE'FFFFDGGEEGGFAFFFGHGDFHFFGHGFFFFFGEEEEF
288 @HS21_09876:2:1102:1602:23426#75
289 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
290 +
291 BBCFFFFFHHFHDAE6FFDEGGGDC:FDHEGHA@GGFGFFGEGFFFFFGEFBFE
292 @HS21_09876:2:1104:6936:48990#75
293 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
294 +
295 CCCFFFFFHHHHDEE,FFFEGGGDF:F;HFGFGFGEFGFFGGEGFFFFGFFFEF
296 @HS21_09876:2:2101:9813:71457#75
297 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
298 +
299 BCCDFFFFHHHHEEE3FIDEGGGDEDFAHGGGGGGGFFFFGHEFFFFFEFHDEF
300 @HS21_09876:2:2201:13960:2115#75
301 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
302 +
303 BCCFFFFFHHHHFEE4FFGEGGGDFAGDHGHGGGGFFGFFGEDFFFFFDFHDED
304 @HS21_09876:2:2202:14819:44089#75
305 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
306 +
307 CCCFFFFFHHHHD9E4GFFFIGGDF:GDHGGGGHGFFFFFGEEGFFFFEFEEEG
308 @HS21_09876:2:2203:10287:44498#75
309 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
310 +
311 BCCFFFFFHHHHDEE6GIFEGGGDDDGHHGGFGFGFFFFEGFFGFFFFGFEEEF
312 @HS21_09876:2:2206:9622:55348#75
313 TAAGAGTCAGGGGATGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTC
314 +
315 BBCFFFFFHHHHDDE,FFFEGGGDFAGHHGGFGHFDFFFFGGDFFFFFDEHEEE
316 @HS21_09876:2:1101:1182:4708#75
317 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
318 +
319 BBBFFFFFHHGHF=E6EFFEEGGGFDGGEGFAGFGFFCFFGHEFFFEFFGFEED
320 @HS21_09876:2:2207:16105:64688#75
321 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
322 +
323 BCCFFFFFHHHHFEE1FFDDDGBFEGCFAFFEGHDEFCFEGDF9F;<FDFHF@F
324 @HS21_09876:2:2208:6290:56164#75
325 TAAGAGTCAGGGGGCTGATCTCGGCCATGGTCTCGCTGACCCAGGCTTCGGCGC
326 +
327 BCCFFFFFHHHHFEE7FEFDEGCFFGFHHEFHGFGGFAFFGGGGFF@FGEEFCG
328 @HS21_09876:2:1103:10943:7841#75
329 TAAGAGTCAGGGGACATCGATGCGCAGTTGGCCATGAACGGAAAGGATCGATTC
330 +
331 BCBFFFFFHHHHFDE8FFFFDGGFEECFHGHFGFFDFFFFGGFFFFFFGFEDEF
332 @HS21_09876:2:2105:16580:94645#75
333 TAAGAGTCAGGGGACATCGATGCGCAGTTGGCCATGAACGGAAAGGATCGATTC
334 +
335 CCCDFFFFHHHGEDE3GEFGGGG6FGGHHFHFGFGFFGFEGFEFFFFFGFEFCG
336 @HS21_09876:2:2201:10169:48549#75
337 TAAGAGTCAGGGGACATCGATGCGCAGTTGGCCATGAACGGAAAGGATCGATTC
338 +
339 CCCFFFFFHHHHFEE6GFFDEGGFHEFFHFHFGGGDFFFFGFGFFFFFGFEECC
340 @HS21_09876:2:1206:3642:93629#75
341 TAAGAGTCAGCCCCCTACGCTGGACAATCTGTACTAGATTCAATAATGGCAATG
342 +
343 BCCDFFFFHHFBEA<'F>@EFGG:EEFH=FCEG3FF<;FFGHFFFFDFGECEDF
344 @HS21_09876:2:1212:2848:49763#75
345 TAAGAGTCAGCCCCCTACGCTGGACAATCTGTACTAGATTCAATAATGGCAATG
346 +
347 BCCDDEFFHGGHFDE,DDEDHG;E;FG;HFGEGFGDFF3FGEGFFFFF7FFF9D
348 @HS21_09876:2:2101:18079:59533#75
349 TAAGAGTCAGCCCGTGAAACGCCTGAAAAAGACACTGCACCTTTCAAGCTTGTC
350 +
351 @@@DDDDDHHA+9AB1F>G01AG:CD1H=>CEA3F3FA><G;GF</CFBEC/B8
352 @HS21_09876:2:2203:9677:46062#75
353 TAAGAGTCAGGAAAAAAGACACTGCACCTTTCAAGCTTGTCCCTCGTTTCCCTG
354 +
355 BCCFFFFFHHHHFDE1FEDEGGCGHGFHHGGFGHGFFHFFGEGFFFFFGFEEED
356 @HS21_09876:2:1205:13947:81320#75
357 TAAGAGTCAGGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGC
358 +
359 CCCFFFFFHHHHDEE6FFGEGGGFHGGFHGGGGGGFFFFFGFGFFFFFEFEDEG
360 @HS21_09876:2:1208:6932:10738#75
361 TAAGAGTCAGGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGC
362 +
363 B@CDDEFFHDHHCEE7FFGEGGGEDEGFHFHEGFGGFHFFGFGEFFFFGEEFDE
364 @HS21_09876:2:2106:12096:83091#75
365 TAAGAGTCAGGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGC
366 +
367 BCCFFFFFHHHHDEE0GFDEIGGGEGGGHGGFGHGFFFFFGFGFFFFFDEEECE
368 @HS21_09876:2:2106:9969:96661#75
369 TAAGAGTCAGGGGGCAAGGAATGGACCGAAAGCCACCGCCAGGACTTCTACAGC
370 +
371 BBBFFADDAF?D1AE6FFFGEGGEDGCDHGGAG@D>FAFEGEGFFFEFGFEEEE
372 @HS21_09876:2:1111:18613:97316#75
373 TAAGAGTCAGCCCCCTGCCCTGGCTCAAGGCGTTGCGACAGCCGGATGGAACGC
374 +
375 BBCBDFFFHHHHDAE,EFFFGGGEEEGADEHFGCGDFGFFGGGFFFFFDGEFCE
376 @HS21_09876:2:2112:7311:2729#75
377 TAAGAGTCAGCCCCCTGCCCTGGCTCAAGGCGTTGCGACAGCCGGATGGAACGC
378 +
379 BCCDFEFEHFFH7EE)GEGFFGGGCEI;HGGFGFGFFHFEGEG6FFDFECC76D
380 @HS21_09876:2:2209:5184:70364#75
381 TAAGAGTCAGCCCCCTGCCCTGGCTCAAGGCGTTGCGACAGCCGGATGGAACGC
382 +
383 CCCFFFFFHFFHDEE7FFFGFGGGDGGHHGGFGFGDFCFFGEEGFFFFEFFFEF
384 @HS21_09876:2:2206:10363:37150#75
385 TAAGAGTCAGGGGGCTTCACCGTAGCCGGCACGGGCGCCCGGCAGATGGTCGGC
386 +
387 BBBFFFFFHHHHDDE1FF@HIGGE?GGFHFEFGHGEFFFFGFGFFFFFGEEFBE
388 @HS21_09876:2:1211:8018:71514#75
389 TAAGAGTCAGCCCGCTGACCAGCGATGACGCCGCCTTCGACGCCTTCGCCAAGC
390 +
391 BBCDDEDFHHGHDAE,FEDE:2;ECF=H=>GF5@G>FGFH3CGFFF@FDEEF9E
392 @HS21_09876:2:2207:12305:87719#75
393 TAAGAGTCAGCCCGCTGACCAGCGATGACGCCGCCTTCGACGCCTTCGCCAAGC
394 +
395 @@CADAADFFFFFEE6FEGFGGGFEFFHHGGFGHGFFHFEGHEFFFEFGFEDEB
396 @HS21_09876:2:1109:4620:60950#75
397 TAAGAGTCAGAAAGCAGATCCTCGGGGCCAATCCGCCTCCCGGTGCGCGCGACG
398 +
399 CCCFFFFFHHHHDEE4FFFEGGGHFGGFHFCFGFGEFHFFGGEGFFFFDFEFCE
400 @HS21_09876:2:1108:17674:57476#75
401 TAAGAGTCAGCCCTTCCACCCGCAGAAGAGCAAGTTCCACCTGCTGGGCATGGA
402 +
403 CCCFFFFFHHHHFEE4FFDGIGGGFGGFHGGFGGGFFFFFGFFFFFFFDFHFEC
404 @HS21_09876:2:1208:4027:38154#75
405 TAAGAGTCAGCCCTTCCACCCGCAGAAGAGCAAGTTCCACCTGCTGGGCATGGA
406 +
407 BCCFFFFFHHHHFEE6GFFEIGGGCGFFHGGFGGGEFGFFGFGFFFFFDFHFFE
408 @HS21_09876:2:2104:21108:77778#75
409 TAAGAGTCAGCCCTTCCACCCGCAGAAGAGCAAGTTCCACCTGCTGGGCATGGA
410 +
411 CCCFFFFFHHHHDEE,EFFGFGGDEEGHHGGFGCGFFCFFGFEFFFDFGCHFE8
412 @HS21_09876:2:1105:10717:93499#75
413 TAAGAGTCAGGGGGACACTCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCA
414 +
415 CCCFFFFFHHHHDEB6DFFFDG;EEFFFAGHFGFGFFAFFGEGFFFFFGCH:9F
416 @HS21_09876:2:2107:17307:90872#75
417 TAAGAGTCAGCCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCACGCCATCC
418 +
419 BCCDFEFDHHFHDAE7FFFFFGGFHGGHHGFFGGGEFFFFGGEFFFFFDFHEEG
420 @HS21_09876:2:2108:10562:66996#75
421 TAAGAGTCAGCCCGCTGAGGGACGTCGGCAGCGACAGCCGCCAGCACGCCATCC
422 +
423 CCCFFFFEHHFFDEE6FFDIGGGF>GFHHGFFGFGFFFFFGEGFFFFFDFFFCD
424 @HS21_09876:2:1204:3124:19338#75
425 TAAGAGTCAGGGGTGCAGACCGGCGTGATGGAGGGCGCGCGGATGCCGTTCGGC
426 +
427 CCCFFFFFHHHHDAE6FFGEIGGEHDGHHGGFGFDEFFFEGEEFFFFFDEEFFF
428 @HS21_09876:2:1104:8314:51088#75
429 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
430 +
431 CCCFFFFFHGDFFEE1GFGEFGGEDDGDH>GAGFGFFHFFGGECFFFFGFHBDC
432 @HS21_09876:2:1205:9430:9196#75
433 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
434 +
435 BBCDFFFFHHHHDEE7FFFGDGGEHEFHHFHFGFGDFFFFGGGFFFFFDFEFCC
436 @HS21_09876:2:1211:6841:16284#75
437 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
438 +
439 BCCFFFFFHHHHDDE1FEDEE=GEFGFHHGGEGFG>FFFCGCG@FF@FDGF@DE
440 @HS21_09876:2:2101:5488:100342#75
441 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
442 +
443 CCCFFFDDHHHHDEE3FFGCD=GFEGFHHEGEGFFDFGFEGDEFFFFFGFEFB8
444 @HS21_09876:2:2109:9412:27195#75
445 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
446 +
447 BCCFFFFEHGBCC@<,D>GF:CGFDGGD=GG6ACDDF@FFGDECFFFF7EEDE.
448 @HS21_09876:2:2208:5757:63730#75
449 TAAGAGTCAGCCCGTAGCGGTGGCCGGTTCGATCCTGCAGCACTTCGTGCCGAT
450 +
451 BCCDDEFFHFHHFEE6FIFEEGGFEFIF=GHGGHGFFH>FGEG9FFEFDFHFEB
0 @IL2_4334:7:5:6843:6843
1 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
2 +
3 =8>;A<@>=B;FF8>CCF:=CC-7(C>/22C:4;<=;
4 @IL2_4334:7:5:18259:13400
5 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
6 +
7 <8:=B>=B(B88A?C@@A;;B@+21AA/38><8=C;>
8 @IL2_4334:7:15:5608:3756
9 CAACGTTTTCTGCGTGTTGCCGATATTTTGGAAAGCA
10 +
11 9AA9:17<988@=@AB6=:?;:-08C=&,6C@:8A4=
12 @IL2_4334:7:18:16351:15714
13 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
14 +
15 <===?;=@<<>FCBFF=:B7?A+4/A>(22@?64?5@
16 @IL2_4334:7:39:12877:7020
17 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
18 +
19 =B?=<>ACB=@;FFF=FFA<AC071??/84C=;3?75
20 @IL2_4334:7:42:14437:19550
21 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
22 +
23 <7=B8@B=;8;DF;CF;F;8A?2<6;:18;81;<;8C
24 @IL2_4334:7:53:4426:3757
25 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
26 +
27 =B<7<:9B@:@AF@A>?F@<F=47.@A,11D<45D9<
28 @IL2_4334:7:79:9021:16833
29 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
30 +
31 ;A:7A;CBFBFA?ABCC>86@B:C?A>6=:6<CB:>C
32 @IL2_4334:6:120:19845:10197
33 TNAGAGACAGGTATTACTCTGCATCANTNAANNGAGA
34 +
35 :)::9:9;BA;1CB7F:BCC==7@5A)=%76%%0B67
36 @IL2_4334:7:82:17494:18362
37 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
38 +
39 <79:<9;7<>8=CB@:C:AB=7410=C-46;,75>>F
40 @IL2_4334:7:84:7230:17356
41 CAACGTTTTCTGCGTGTTGCCGATATTCTGGAAAGCA
42 +
43 DADFDFFDDD>8:=>=?@48@87A4@F6>??BF??B@
44 @IL2_4334:6:120:19846:21043
45 TNAGAGACAGTGTCTAGGGCATCACTNANGGNNGAGG
46 +
47 <)72:19:?>:A>C?@@??CC@?:6;)5%>9%%;;;<
48 @IL2_4334:6:120:19846:19594
49 TNAGAGACAGATCCTATGGGGCTGAANTNTNNNGTGA
50 +
51 :)7:782?=AC<;@=5444@:B;>?*%)%4%%%?161